Module unique := fc_unique wf subst.
Set Bullet Behavior "Strict Subproofs".
Set Implicit Arguments.
(* ------------------------------------------------------------- *)
(* -------------------------------------------------------------- *)
(*  Interlude: some lemmas about how erasure and typing interact. *)
(* -------------------------------------------------------------- *)
(* Lemma erase_abs : forall AB0 rho B, erase AB0 = (a_UAbs rho B) -> exists A1 B0, erase AB0 = erase (a_Abs rho A1 B0) /\ erase B0 = B. *)
(* Lemma erase_capp : forall AB0 A C G, erase AB0 = (a_CApp A g_Triv) -> AnnTyping G AB0 C -> exists A1 g0 g D, erase AB0 = erase (a_CApp A1 g0) /\ erase A1 = A /\ AnnTyping G (a_CApp A1 g0) D /\ AnnDefEq G (dom G) g C D. *)
(* -------------------------------------------------------------- *)

Lemma erasure_compatible : forall G a A (H1 :AnnTyping G a A),
forall b B (H2 : AnnTyping G b B)
(E : erase a = erase b)
(F : erase A = erase B),
exists g1, AnnDefEq G (dom G) g1 a b.