Module invert := fc_invert wf weak subst.Module consist := ext_consist e_invert wf.Module erase' := erase wf weak subst e_invert.Module head := fc_head_reduction  e_invert weak wf subst.Module pres := fc_preservation wf weak subst e_subst.

(* Specifications: *)
Lemma erased_tm_erase_mutual : (forall G0 a B (H : AnnTyping G0 a B), erased_tm (erase a) /\ erased_tm (erase B)) /\ (forall G0 phi (H : AnnPropWff G0 phi), forall a b A, phi = (Eq a b A) -> erased_tm (erase a) /\ erased_tm (erase b) /\ erased_tm (erase A)) /\ (forall G0 D g p1 p2 (H : AnnIso G0 D g p1 p2), True) /\ (forall G0 D g A B (H : AnnDefEq G0 D g A B), True) /\ (forall G0 (H : AnnCtx G0), forall x A, binds x (Tm A) G0 -> erased_tm (erase_tm A) ).
Lemma erased_tm_erase : forall G0 a B, AnnTyping G0 a B -> erased_tm (erase a).
Lemma erased_tm_erase_type : forall G0 a B, AnnTyping G0 a B -> erased_tm (erase B).