Definition Iso_respects_atoms_eq   := third  respects_atoms_eq_mutual.Definition DefEq_respects_atoms_eq := fourth respects_atoms_eq_mutual.

(* Specifications: *)
Lemma strengthen_available_noncovar: (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 x, not (exists phi, binds x (Co phi) G1) -> Iso G1 (remove x D) p1 p2) /\ (forall G1 D A B A1,DefEq G1 D A B A1 -> forall x, not (exists phi, binds x (Co phi) G1) -> DefEq G1 (remove x D) A B A1) /\ (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).
Lemma DefEq_weaken_available : forall G D A B T, DefEq G D A B T -> DefEq G (dom G) A B T.
Lemma Iso_weaken_available : forall G D A B, Iso G D A B -> Iso G (dom G) A B.
Lemma typing_weakening_mutual: (forall G0 a A, Typing G0 a A -> forall E F G, (G0 = F ++ G) -> Ctx (F ++ E ++ G) -> Typing (F ++ E ++ G) a A) /\ (forall G0 phi, PropWff G0 phi -> forall E F G, (G0 = F ++ G) -> Ctx (F ++ E ++ G) -> PropWff (F ++ E ++ G) phi) /\ (forall G0 D p1 p2, Iso G0 D p1 p2 -> forall E F G, (G0 = F ++ G) -> Ctx (F ++ E ++ G) -> Iso (F ++ E ++ G) D p1 p2) /\ (forall G0 D A B T, DefEq G0 D A B T -> forall E F G, (G0 = F ++ G) -> Ctx (F ++ E ++ G) -> DefEq (F ++ E ++ G) D A B T) /\ (forall G0, Ctx G0 -> forall E F G, (G0 = F ++ G) -> Ctx (F ++ E ++ G) -> Ctx (F ++ E ++ G)).