Canonical Structure var_struct hs1 hs2 xs n (f : xfind hs1 hs2 n) :=
Ast (Context hs1 xs) (Context hs2 xs) _
(var_tag (xuntag f))
(var_pf xs f).
End HeapReflection.

(* The main lemma *)
Theorem cancelR j k t1 t2 (f1 : ast empc j t1) (f2 : ast j k t2) :
def (untag (heap_of f1)) ->
untag (heap_of f1) = untag (heap_of f2) ->
eval k (cancel k t1 t2).