Definition perm_max (p1 p2 : option permission) : option permission :=
match p1,p2 with
| Some Freeable, _ => p1
| _, Some Freeable => p2
| Some Writable, _ => p1
| _, Some Writable => p2
| Some Readable, _ => p1
| _, Some Readable => p2
| Some Nonempty, _ => p1
| _, Some Nonempty => p2
| None, None => None
end.

(* Specifications: *)
Lemma perm_max_comm :
forall p1 p2,
perm_max p1 p2 = perm_max p2 p1.
Lemma getMaxPerm_correct :
forall m b ofs,
Maps.PMap.get b (getMaxPerm m) ofs = permission_at m b ofs Max.
Lemma getCurPerm_correct :
forall m b ofs,
Maps.PMap.get b (getCurPerm m) ofs = permission_at m b ofs Cur.