(* ----- *)

(* Specifications: *)
Lemma co_subst_co_tm_Value_mutual :
(forall v,  CoercedValue v -> forall b x,  lc_co b -> CoercedValue (co_subst_co_tm b x v)) /\
(forall v, Value v -> forall b x,  lc_co b -> Value (co_subst_co_tm b x v)).
Lemma Value_co_subst_co_tm :
(forall v b x, Value v -> lc_co b -> Value (co_subst_co_tm b x v)).
Lemma CoercedValue_co_subst_co_tm :
(forall v b x, CoercedValue v -> lc_co b -> CoercedValue (co_subst_co_tm b x v)).
Lemma weaken_available_mutual:
(forall G1  a A,   Typing G1 a A -> True) /\
(forall G1  phi,   PropWff G1 phi -> True) /\
(forall G1 D p1 p2, Iso G1 D p1 p2 -> forall D', D [<=] D' -> Iso G1 D' p1 p2) /\
(forall G1 D A B T,   DefEq G1 D A B T -> forall D', D [<=] D' -> DefEq G1 D' A B T) /\
(forall G1 ,       Ctx G1 -> True).
Lemma remove_available_mutual:
(forall G1  a A,   Typing G1 a A -> True) /\
(forall G1  phi,   PropWff G1 phi -> True) /\
(forall G1 D p1 p2, Iso G1 D p1 p2 ->
Iso G1 (AtomSetImpl.inter D (dom G1)) p1 p2) /\
(forall G1 D A B T,   DefEq G1 D A B T ->
DefEq G1 (AtomSetImpl.inter D (dom G1)) A B T) /\
(forall G1 ,       Ctx G1 -> True).