Qed.
Hint Resolve erased_lc : lc.

(* Specifications: *)
Lemma subst_tm_erased : forall x b, erased_tm b -> forall a , erased_tm a -> erased_tm (tm_subst_tm_tm b x a).
Lemma erased_a_Abs_exists : ∀  (rho : relflag) (a : tm) x,
x `notin` fv_tm_tm_tm a
→ erased_tm (open_tm_wrt_tm a (a_Var_f x))
→ RhoCheck rho x (open_tm_wrt_tm a (a_Var_f x))
→ erased_tm (a_UAbs rho a).
Lemma erased_a_Abs_inversion : forall rho a,
erased_tm (a_UAbs rho a) -> forall x, x `notin` fv_tm_tm_tm a
-> erased_tm (open_tm_wrt_tm a (a_Var_f x)) /\ RhoCheck rho x (open_tm_wrt_tm a (a_Var_f x)).
Lemma subst_co_erased : forall c g a , lc_co g -> erased_tm a -> erased_tm (co_subst_co_tm g c a).
Hint Resolve subst_tm_erased subst_co_erased : erased.
Lemma erased_a_CAbs_inversion : forall b,
erased_tm (a_UCAbs b) -> forall c, c `notin` fv_co_co_tm b
-> erased_tm (open_tm_wrt_co b (g_Var_f c)).
Lemma Par_lc1 : forall G D a a' , Par G D a a' -> lc_tm a.
intros.  induction H; auto. all: lc_solve.