l: try erewrite IHA; eauto.
  all: simpl in H.
  all: try erewrite H; eauto.
Qed.

Corollary erase_subst_constraint phi1 phi2 a x :erase_constraint (tm_subst_tm_constraint a x phi1) =
    erase_constraint (tm_subst_tm_constraint a x phi2).
Proof. move: (erase_subst_mutual a x) => ?; split_hyp; auto. Qed.erase_tm A = erase_tm B ->
  erase_tm (tm_subst_tm_tm a x A) = erase_tm (tm_subst_tm_tm a x B).
Proof. move: (erase_subst_mutual a x) => ?; split_hyp; auto. Qed.l: try simpl in H0.
  all: try inversion H0; subst.
  all: try erewrite IHB; eauto.
  all: try erewrite IHA; eauto.
  all: simpl in H.
  all: try erewrite H; eauto.Corollary erase_co_subst_constraint phi1 phi2 a x :
  erase_constraint phi1 = erase_constraint phi2 ->
    erase_constraint (co_subst_co_constraint a x phi1) =Proof. move: (erase_co_subst_co_mutual a x) => ?; split_hyp; auto. Qed.

Corollary erase_co_subst_tm A B a x :
  erase_tm A = erase_tm B ->

(* ----- local closure ---------- *)