Qed.

(* Specifications: *)
Lemma CoercedValue_lc : forall A, CoercedValue A -> lc_tm A.
destruct (CoercedValue_Value_lc_mutual); auto.
Lemma AnnIso_lc1 : forall G D g p1 p2, AnnIso G D g p1 p2 -> lc_constraint p1.
Lemma binds_to_PropWff: forall G0 A B T c,
Ctx G0 ->
binds c (Co (Eq A B T)) G0 -> PropWff G0 (Eq A B T).
Lemma tm_subst_fresh_1 :
forall G a A a0 x s,
Typing G a A -> Ctx ((x ~ s) ++ G) -> tm_subst_tm_tm a0 x A = A.
Lemma tm_subst_co_fresh_1 :
forall G a A a0 c s,
Typing G a A -> Ctx ((c ~ s) ++ G) -> co_subst_co_tm a0 c A = A.
Lemma tm_subst_fresh_2 :
forall G a A a0 x s,
Typing G a A -> Ctx ((x ~ s) ++ G) -> tm_subst_tm_tm a0 x a = a.
Lemma co_subst_fresh :
forall G phi a0 x s,
PropWff G phi -> Ctx ((x ~ s) ++ G) -> tm_subst_tm_constraint a0 x phi = phi.
Lemma bind_map_tm_subst_tm_sort: forall c F A B T x a,
binds c (Co (Eq A B T)) F ->
binds c (Co (Eq (tm_subst_tm_tm a x A)
(tm_subst_tm_tm a x B) (tm_subst_tm_tm a x T))) (map (tm_subst_tm_sort a x) F).
Lemma binds_map_4: forall x A F c0,
binds x (Tm A) F ->
binds x (Tm (co_subst_co_tm g_Triv c0 A)) (map (co_subst_co_sort g_Triv c0) F).
Lemma binds_map_5: forall c A B T F c1 ,
binds c (Co (Eq A B T) ) F ->
binds c (Co (Eq (co_subst_co_tm g_Triv c1 A) (co_subst_co_tm g_Triv c1 B) (co_subst_co_tm g_Triv c1 T)) ) (map (co_subst_co_sort g_Triv c1) F).
Lemma tm_subst_tm_tm_dom_invariance: forall x a F, dom F = dom (map (tm_subst_tm_sort a x) F).
Lemma subst_rho: forall L G a A x y b rho
(T : Typing G a A)
(Neq: x <> y)
(Fr: y `notin` fv_tm_tm_tm a)
(Fr2: y `notin` L)
(K : (forall x, x `notin` L -> RhoCheck rho x (open_tm_wrt_tm b (a_Var_f x)))),
RhoCheck rho y  (tm_subst_tm_tm a x (open_tm_wrt_tm b (a_Var_f y))).