(*************************************)
(* the automation of the PtUn lemmas *)
(*************************************)

(* First, the mechanism for search-and-replace for the overloaded lemas, *)
(* pattern-matching on heap expressions.                                 *)

Structure tagged_heap := Tag {untag :> heap}.(*************************************)
(* the automation of the PtUn lemmas *)
(*************************************)

(* First, the mechanism for search-and-replace for the overloaded lemas, *)
(* pattern-matching on heap expressions.                                 *)

Structure tagged_heap := Tag {untag :> heap}.(*************************************)
(* the automation of the PtUn lemmas *)
(*************************************)

(* First, the mechanism for search-and-replace for the overloaded lemas, *)
(* pattern-matching on heap expressions.                                 *)

Structure tagged_heap := Tag {untag :> heap}.Definition right_tag := Tag.Definition left_tag := right_tag.Canonical found_tag i := left_tag i.Structure partition (k r : heap) :=
  Partition {heap_of :> tagged_heap; 
             _ : partition_axiom k r heap_of}.Structure partition (k r : heap) :=
  Partition {heap_of :> tagged_heap; 
             _ : partition_axiom k r heap_of}.Structure partition (k r : heap) :=
  Partition {heap_of :> tagged_heap; 
             _ : partition_axiom k r heap_of}.

Lemma found_pf k : partition_axiom k Unit (found_tag k).