Corollary no_co_in_erased_tm : forall B g,
 open_tm_wrt_co (erase B) g = erase B.Definition close_tm_rec_erase_tm := fun x => proj1 (close_tm_erase_all x).Definition close_co_rec_erase_tm := fun x => proj1 (close_co_erase_all x).

(* Specifications: *)
Lemma close_co_erase_tm2 : forall x a, close_tm_wrt_co x (erase a) = erase a.
Lemma subst_tm_erase : forall a x, (forall b, tm_subst_tm_tm (erase a) x (erase b) = erase (tm_subst_tm_tm a x b)) /\ (forall b, tm_subst_tm_brs (erase a) x (erase b) = erase (tm_subst_tm_brs a x b)) /\ (forall g:co, True) /\ (forall p, tm_subst_tm_constraint (erase a) x (erase p) = erase (tm_subst_tm_constraint a x p)).
Lemma subst_co_erase : forall a x, (forall b, (erase b) = erase (co_subst_co_tm a x b)) /\ (forall b, (erase b) = erase (co_subst_co_brs a x b)) /\ (forall g:co, True) /\ (forall p, (erase p) = erase (co_subst_co_constraint a x p)).
Lemma subst_tm_erase_tm: forall a x b, tm_subst_tm_tm (erase a) x (erase b) = erase (tm_subst_tm_tm a x b).
Lemma subst_co_erase_tm : forall a x b, (erase b) = erase (co_subst_co_tm a x b).