Definition rmap_unage (k:rmap) : rmap :=
match unsquash k with
| (n,x) => squash (S n, x)
end.
Program Definition approx (n:nat) (p: pred rmap) : pred rmap :=
fun w => level w < n /\ p w.
Next Obligation.
destruct H0.
split.
apply age_level in H. omega.
apply pred_hereditary with a; auto.
Qed.

(* Specifications: *)
Axiom squash_unsquash : forall phi, squash (unsquash phi) = phi.
Axiom unsquash_squash : forall n rm, unsquash (squash (n,rm)) = (n,rmap_fmap (approx n) rm).
End RMAPS.
Axiom squash_unsquash : forall phi, squash (unsquash phi) = phi.
Axiom unsquash_squash : forall n rm, unsquash (squash (n,rm)) = (n,rmap_fmap (approx n) (approx n) rm).
Axiom ghost_of_core : forall phi, ghost_of (core phi) = core (ghost_of phi).
End RMAPS.