(* --------------------------------------- *)

(* Specifications: *)
Lemma subst_rho: forall L G a A x y b rho
(T : AnnTyping G a A)
(Neq: x <> y)
(Fr: y `notin` fv_tm_tm_tm (erase_tm a))
(Fr2: y `notin` L)
(K : (forall x, x `notin` L -> RhoCheck rho x (erase_tm (open_tm_wrt_tm b (a_Var_f x))))),
RhoCheck rho y (erase_tm (open_tm_wrt_tm (tm_subst_tm_tm a x b) (a_Var_f y))).
Lemma co_subst_rho: forall L x y a rho g
(LC: lc_co g)
(Neq: x <> y)
(Fr2: x `notin` L)
(K : (forall x, x `notin` L -> RhoCheck rho x (erase_tm (open_tm_wrt_tm a (a_Var_f x))))),
RhoCheck rho x (erase_tm (open_tm_wrt_tm (co_subst_co_tm g y a) (a_Var_f x))).