Require Export FcEtt.ett_inf_cs.
Require Export FcEtt.fc_invert.
Module fc_dec_fun (wf : fc_wf_sig) (weak : fc_weak_sig) (subst : fc_subst_sig) (unique: fc_unique_sig).
Module invert := fc_invert wf weak subst.
Module fuel := fc_dec_fuel wf weak subst unique.
Module aux := fc_dec_aux wf weak subst unique.
Module get := fc_get wf weak subst unique.
Unset Implicit Arguments.
Ltac obtacpre :=
intros; simpl in *.
Ltac obtacsolve :=
intros; simpl in *; try solve [ok].

(* Specifications: *)
Lemma An_IsoConv': ∀ (G : context) (D : available_props)
(a1 a2 A a1' a2' B : tm) phi1 phi2 (g : co),
phi1 =  (Eq a1 a2 A)  →
phi2 = (Eq a1' a2' B) →
AnnDefEq G D g A B  →
AnnPropWff G phi1 →
AnnPropWff G phi2 →
erase_tm a1 = erase_tm a1' →
erase_tm a2 = erase_tm a2' →
AnnIso G D (g_IsoConv phi1 phi2 g) phi1 phi2.
(* More pratical version of these lemma (both forms are useful, though) *)
Lemma get_tpg_correct' : ∀ {G : context} {a A : tm},
AnnTyping G a A → A = get_tpg G a.