Structure pack_heap := PackHeap { pack_h :> heap }.Structure pack_heap := PackHeap { pack_h :> heap }.Structure pack_heap := PackHeap { pack_h :> heap }.Definition pack_found := PackHeap.Definition pack_right := pack_found.Canonical pack_left h := pack_right h.Program
Canonical heap_found h :=
  AbsHeap h empty (pack_found h) _.Structure trigger := Pack { unpack :> unit }.Structure trigger := Pack { unpack :> unit }.Structure trigger := Pack { unpack :> unit }.Definition pack10 := Pack.Definition pack09 := pack10.Definition pack08 := pack09.Definition pack07 := pack08.Definition pack06 := pack07.Definition pack05 := pack06.Definition pack04 := pack05.Definition pack03 := pack04.Definition pack02 := pack03.Definition pack01 := pack02.Canonical pack00  := pack01 tt.Program
Canonical ins1 :=
  @HeapEq empty empty empty def0 _ pack00 _ I.

(* Specifications: *)
Lemma cancel1 : forall h1 h2 : heap, def h1 -> h1 = h2 -> def h2.
Lemma cancel (h1 h2 : heap) (D : def h1) (H : h1 = h2) (c : @heapeq h1 h2 empty (cancel1 D H) (cancel2 H)) : tt = dummy c -> prop c.