Definition ptr_ordMixin := OrdMixin ltn_ptr_irr ltn_ptr_trans ltn_ptr_total.Canonical ptr_ordType := OrdType ptr ptr_ordMixin.Inductive heap := 
  Undef | Def (finmap : {finMap ptr -> dynamic id}) of 
               null \notin supp finmap.Inductive heap := 
  Undef | Def (finmap : {finMap ptr -> dynamic id}) of 
               null \notin supp finmap.Inductive heap := 
  Undef | Def (finmap : {finMap ptr -> dynamic id}) of 
               null \notin supp finmap.

(* Specifications: *)
Lemma free_nullP : null \notin supp f -> null \notin supp (rem x f).
Lemma un_nullP : null \notin supp f -> null \notin supp g -> null \notin supp (fcat f g).
Lemma filt_nullP (q : pred ptr) : null \notin supp f -> null \notin supp (kfilter q f).
Lemma heapE (h1 h2 : heap) : h1 = h2 <-> match h1, h2 with Def f' pf, Def g' pg => f' = g' | Undef, Undef => true | _, _ => false end.