Hint Extern 1 (lc_co (g_AbsCong _ _ _)) =>
  let x1 := fresh in
  pick_fresh x1;
  apply (lc_g_AbsCong_exists x1).Hint Extern 1 (lc_co (g_CAbsCong _ _ _)) =>
  let c1 := fresh in
  pick_fresh c1;
  apply (lc_g_CAbsCong_exists c1).

(* Specifications: *)
Lemma lc_body_tm_wrt_tm : forall a1 a2, body_tm_wrt_tm a1 -> lc_tm a2 -> lc_tm (open_tm_wrt_tm a1 a2).
Lemma lc_body_brs_wrt_tm : forall brs1 a1, body_brs_wrt_tm brs1 -> lc_tm a1 -> lc_brs (open_brs_wrt_tm brs1 a1).
Lemma lc_body_co_wrt_tm : forall g1 a1, body_co_wrt_tm g1 -> lc_tm a1 -> lc_co (open_co_wrt_tm g1 a1).
Lemma lc_body_constraint_wrt_tm : forall phi1 a1, body_constraint_wrt_tm phi1 -> lc_tm a1 -> lc_constraint (open_constraint_wrt_tm phi1 a1).
Lemma lc_body_tm_wrt_co : forall a1 g1, body_tm_wrt_co a1 -> lc_co g1 -> lc_tm (open_tm_wrt_co a1 g1).
Lemma lc_body_brs_wrt_co : forall brs1 g1, body_brs_wrt_co brs1 -> lc_co g1 -> lc_brs (open_brs_wrt_co brs1 g1).
Lemma lc_body_co_wrt_co : forall g1 g2, body_co_wrt_co g1 -> lc_co g2 -> lc_co (open_co_wrt_co g1 g2).
Lemma lc_body_constraint_wrt_co : forall phi1 g1, body_constraint_wrt_co phi1 -> lc_co g1 -> lc_constraint (open_constraint_wrt_co phi1 g1).
Lemma lc_body_a_Abs_3 : forall rho1 A1 b1, lc_tm (a_Abs rho1 A1 b1) -> body_tm_wrt_tm b1.
Lemma lc_body_a_UAbs_2 : forall rho1 b1, lc_tm (a_UAbs rho1 b1) -> body_tm_wrt_tm b1.
Lemma lc_body_a_Pi_3 : forall rho1 A1 B1, lc_tm (a_Pi rho1 A1 B1) -> body_tm_wrt_tm B1.
Lemma lc_body_a_CPi_2 : forall phi1 B1, lc_tm (a_CPi phi1 B1) -> body_tm_wrt_co B1.
Lemma lc_body_a_CAbs_2 : forall phi1 b1, lc_tm (a_CAbs phi1 b1) -> body_tm_wrt_co b1.
Lemma lc_body_a_UCAbs_1 : forall b1, lc_tm (a_UCAbs b1) -> body_tm_wrt_co b1.
Lemma lc_body_g_PiCong_3 : forall rho1 g1 g2, lc_co (g_PiCong rho1 g1 g2) -> body_co_wrt_tm g2.
Lemma lc_body_g_AbsCong_3 : forall rho1 g1 g2, lc_co (g_AbsCong rho1 g1 g2) -> body_co_wrt_tm g2.
Lemma lc_body_g_CPiCong_2 : forall g1 g2, lc_co (g_CPiCong g1 g2) -> body_co_wrt_co g2.
Lemma lc_body_g_CAbsCong_2 : forall g1 g2 g3, lc_co (g_CAbsCong g1 g2 g3) -> body_co_wrt_co g2.
Lemma lc_tm_unique_lc_brs_unique_lc_co_unique_lc_constraint_unique_mutual : (forall a1 (proof2 proof3 : lc_tm a1), proof2 = proof3) /\ (forall brs1 (proof2 proof3 : lc_brs brs1), proof2 = proof3) /\ (forall g1 (proof2 proof3 : lc_co g1), proof2 = proof3) /\ (forall phi1 (proof2 proof3 : lc_constraint phi1), proof2 = proof3).
Lemma lc_tm_unique : forall a1 (proof2 proof3 : lc_tm a1), proof2 = proof3.
Lemma lc_brs_unique : forall brs1 (proof2 proof3 : lc_brs brs1), proof2 = proof3.
Lemma lc_co_unique : forall g1 (proof2 proof3 : lc_co g1), proof2 = proof3.
Lemma lc_constraint_unique : forall phi1 (proof2 proof3 : lc_constraint phi1), proof2 = proof3.
Lemma lc_tm_of_lc_set_tm_lc_brs_of_lc_set_brs_lc_co_of_lc_set_co_lc_constraint_of_lc_set_constraint_mutual : (forall a1, lc_set_tm a1 -> lc_tm a1) /\ (forall brs1, lc_set_brs brs1 -> lc_brs brs1) /\ (forall g1, lc_set_co g1 -> lc_co g1) /\ (forall phi1, lc_set_constraint phi1 -> lc_constraint phi1).
Lemma lc_tm_of_lc_set_tm : forall a1, lc_set_tm a1 -> lc_tm a1.
Lemma lc_brs_of_lc_set_brs : forall brs1, lc_set_brs brs1 -> lc_brs brs1.
Lemma lc_co_of_lc_set_co : forall g1, lc_set_co g1 -> lc_co g1.
Lemma lc_constraint_of_lc_set_constraint : forall phi1, lc_set_constraint phi1 -> lc_constraint phi1.
Lemma lc_set_tm_of_lc_tm_lc_set_brs_of_lc_brs_lc_set_co_of_lc_co_lc_set_constraint_of_lc_constraint_size_mutual : forall i1, (forall a1, size_tm a1 = i1 -> lc_tm a1 -> lc_set_tm a1) * (forall brs1, size_brs brs1 = i1 -> lc_brs brs1 -> lc_set_brs brs1) * (forall g1, size_co g1 = i1 -> lc_co g1 -> lc_set_co g1) * (forall phi1, size_constraint phi1 = i1 -> lc_constraint phi1 -> lc_set_constraint phi1).
Lemma lc_set_tm_of_lc_tm : forall a1, lc_tm a1 -> lc_set_tm a1.
Lemma lc_set_brs_of_lc_brs : forall brs1, lc_brs brs1 -> lc_set_brs brs1.
Lemma lc_set_co_of_lc_co : forall g1, lc_co g1 -> lc_set_co g1.
Lemma lc_set_constraint_of_lc_constraint : forall phi1, lc_constraint phi1 -> lc_set_constraint phi1.
Lemma open_tm_wrt_tm_rec_degree_tm_wrt_tm_open_brs_wrt_tm_rec_degree_brs_wrt_tm_open_co_wrt_tm_rec_degree_co_wrt_tm_open_constraint_wrt_tm_rec_degree_constraint_wrt_tm_mutual : (forall a2 a1 n1, degree_tm_wrt_tm n1 a2 -> open_tm_wrt_tm_rec n1 a1 a2 = a2) /\ (forall brs1 a1 n1, degree_brs_wrt_tm n1 brs1 -> open_brs_wrt_tm_rec n1 a1 brs1 = brs1) /\ (forall g1 a1 n1, degree_co_wrt_tm n1 g1 -> open_co_wrt_tm_rec n1 a1 g1 = g1) /\ (forall phi1 a1 n1, degree_constraint_wrt_tm n1 phi1 -> open_constraint_wrt_tm_rec n1 a1 phi1 = phi1).
Lemma open_tm_wrt_tm_rec_degree_tm_wrt_tm : forall a2 a1 n1, degree_tm_wrt_tm n1 a2 -> open_tm_wrt_tm_rec n1 a1 a2 = a2.
Lemma open_brs_wrt_tm_rec_degree_brs_wrt_tm : forall brs1 a1 n1, degree_brs_wrt_tm n1 brs1 -> open_brs_wrt_tm_rec n1 a1 brs1 = brs1.
Lemma open_co_wrt_tm_rec_degree_co_wrt_tm : forall g1 a1 n1, degree_co_wrt_tm n1 g1 -> open_co_wrt_tm_rec n1 a1 g1 = g1.
Lemma open_constraint_wrt_tm_rec_degree_constraint_wrt_tm : forall phi1 a1 n1, degree_constraint_wrt_tm n1 phi1 -> open_constraint_wrt_tm_rec n1 a1 phi1 = phi1.
Lemma open_tm_wrt_co_rec_degree_tm_wrt_co_open_brs_wrt_co_rec_degree_brs_wrt_co_open_co_wrt_co_rec_degree_co_wrt_co_open_constraint_wrt_co_rec_degree_constraint_wrt_co_mutual : (forall a1 g1 n1, degree_tm_wrt_co n1 a1 -> open_tm_wrt_co_rec n1 g1 a1 = a1) /\ (forall brs1 g1 n1, degree_brs_wrt_co n1 brs1 -> open_brs_wrt_co_rec n1 g1 brs1 = brs1) /\ (forall g2 g1 n1, degree_co_wrt_co n1 g2 -> open_co_wrt_co_rec n1 g1 g2 = g2) /\ (forall phi1 g1 n1, degree_constraint_wrt_co n1 phi1 -> open_constraint_wrt_co_rec n1 g1 phi1 = phi1).
Lemma open_tm_wrt_co_rec_degree_tm_wrt_co : forall a1 g1 n1, degree_tm_wrt_co n1 a1 -> open_tm_wrt_co_rec n1 g1 a1 = a1.
Lemma open_brs_wrt_co_rec_degree_brs_wrt_co : forall brs1 g1 n1, degree_brs_wrt_co n1 brs1 -> open_brs_wrt_co_rec n1 g1 brs1 = brs1.
Lemma open_co_wrt_co_rec_degree_co_wrt_co : forall g2 g1 n1, degree_co_wrt_co n1 g2 -> open_co_wrt_co_rec n1 g1 g2 = g2.
Lemma open_constraint_wrt_co_rec_degree_constraint_wrt_co : forall phi1 g1 n1, degree_constraint_wrt_co n1 phi1 -> open_constraint_wrt_co_rec n1 g1 phi1 = phi1.
Lemma open_tm_wrt_tm_lc_tm : forall a2 a1, lc_tm a2 -> open_tm_wrt_tm a2 a1 = a2.
Lemma open_brs_wrt_tm_lc_brs : forall brs1 a1, lc_brs brs1 -> open_brs_wrt_tm brs1 a1 = brs1.
Lemma open_co_wrt_tm_lc_co : forall g1 a1, lc_co g1 -> open_co_wrt_tm g1 a1 = g1.
Lemma open_constraint_wrt_tm_lc_constraint : forall phi1 a1, lc_constraint phi1 -> open_constraint_wrt_tm phi1 a1 = phi1.
Lemma open_tm_wrt_co_lc_tm : forall a1 g1, lc_tm a1 -> open_tm_wrt_co a1 g1 = a1.
Lemma open_brs_wrt_co_lc_brs : forall brs1 g1, lc_brs brs1 -> open_brs_wrt_co brs1 g1 = brs1.
Lemma open_co_wrt_co_lc_co : forall g2 g1, lc_co g2 -> open_co_wrt_co g2 g1 = g2.
Lemma open_constraint_wrt_co_lc_constraint : forall phi1 g1, lc_constraint phi1 -> open_constraint_wrt_co phi1 g1 = phi1.
Lemma tm_subst_tm_tm_degree_tm_wrt_tm_tm_subst_tm_brs_degree_brs_wrt_tm_tm_subst_tm_co_degree_co_wrt_tm_tm_subst_tm_constraint_degree_constraint_wrt_tm_mutual : (forall a1 a2 x1 n1, degree_tm_wrt_tm n1 a1 -> degree_tm_wrt_tm n1 a2 -> degree_tm_wrt_tm n1 (tm_subst_tm_tm a2 x1 a1)) /\ (forall brs1 a1 x1 n1, degree_brs_wrt_tm n1 brs1 -> degree_tm_wrt_tm n1 a1 -> degree_brs_wrt_tm n1 (tm_subst_tm_brs a1 x1 brs1)) /\ (forall g1 a1 x1 n1, degree_co_wrt_tm n1 g1 -> degree_tm_wrt_tm n1 a1 -> degree_co_wrt_tm n1 (tm_subst_tm_co a1 x1 g1)) /\ (forall phi1 a1 x1 n1, degree_constraint_wrt_tm n1 phi1 -> degree_tm_wrt_tm n1 a1 -> degree_constraint_wrt_tm n1 (tm_subst_tm_constraint a1 x1 phi1)).
Lemma tm_subst_tm_tm_degree_tm_wrt_tm : forall a1 a2 x1 n1, degree_tm_wrt_tm n1 a1 -> degree_tm_wrt_tm n1 a2 -> degree_tm_wrt_tm n1 (tm_subst_tm_tm a2 x1 a1).
Lemma tm_subst_tm_brs_degree_brs_wrt_tm : forall brs1 a1 x1 n1, degree_brs_wrt_tm n1 brs1 -> degree_tm_wrt_tm n1 a1 -> degree_brs_wrt_tm n1 (tm_subst_tm_brs a1 x1 brs1).
Lemma tm_subst_tm_co_degree_co_wrt_tm : forall g1 a1 x1 n1, degree_co_wrt_tm n1 g1 -> degree_tm_wrt_tm n1 a1 -> degree_co_wrt_tm n1 (tm_subst_tm_co a1 x1 g1).
Lemma tm_subst_tm_constraint_degree_constraint_wrt_tm : forall phi1 a1 x1 n1, degree_constraint_wrt_tm n1 phi1 -> degree_tm_wrt_tm n1 a1 -> degree_constraint_wrt_tm n1 (tm_subst_tm_constraint a1 x1 phi1).
Lemma tm_subst_tm_tm_degree_tm_wrt_co_tm_subst_tm_brs_degree_brs_wrt_co_tm_subst_tm_co_degree_co_wrt_co_tm_subst_tm_constraint_degree_constraint_wrt_co_mutual : (forall a1 a2 x1 n1, degree_tm_wrt_co n1 a1 -> degree_tm_wrt_co n1 a2 -> degree_tm_wrt_co n1 (tm_subst_tm_tm a2 x1 a1)) /\ (forall brs1 a1 x1 n1, degree_brs_wrt_co n1 brs1 -> degree_tm_wrt_co n1 a1 -> degree_brs_wrt_co n1 (tm_subst_tm_brs a1 x1 brs1)) /\ (forall g1 a1 x1 n1, degree_co_wrt_co n1 g1 -> degree_tm_wrt_co n1 a1 -> degree_co_wrt_co n1 (tm_subst_tm_co a1 x1 g1)) /\ (forall phi1 a1 x1 n1, degree_constraint_wrt_co n1 phi1 -> degree_tm_wrt_co n1 a1 -> degree_constraint_wrt_co n1 (tm_subst_tm_constraint a1 x1 phi1)).
Lemma tm_subst_tm_tm_degree_tm_wrt_co : forall a1 a2 x1 n1, degree_tm_wrt_co n1 a1 -> degree_tm_wrt_co n1 a2 -> degree_tm_wrt_co n1 (tm_subst_tm_tm a2 x1 a1).
Lemma tm_subst_tm_brs_degree_brs_wrt_co : forall brs1 a1 x1 n1, degree_brs_wrt_co n1 brs1 -> degree_tm_wrt_co n1 a1 -> degree_brs_wrt_co n1 (tm_subst_tm_brs a1 x1 brs1).
Lemma tm_subst_tm_co_degree_co_wrt_co : forall g1 a1 x1 n1, degree_co_wrt_co n1 g1 -> degree_tm_wrt_co n1 a1 -> degree_co_wrt_co n1 (tm_subst_tm_co a1 x1 g1).
Lemma tm_subst_tm_constraint_degree_constraint_wrt_co : forall phi1 a1 x1 n1, degree_constraint_wrt_co n1 phi1 -> degree_tm_wrt_co n1 a1 -> degree_constraint_wrt_co n1 (tm_subst_tm_constraint a1 x1 phi1).
Lemma co_subst_co_tm_degree_tm_wrt_tm_co_subst_co_brs_degree_brs_wrt_tm_co_subst_co_co_degree_co_wrt_tm_co_subst_co_constraint_degree_constraint_wrt_tm_mutual : (forall a1 g1 c1 n1, degree_tm_wrt_tm n1 a1 -> degree_co_wrt_tm n1 g1 -> degree_tm_wrt_tm n1 (co_subst_co_tm g1 c1 a1)) /\ (forall brs1 g1 c1 n1, degree_brs_wrt_tm n1 brs1 -> degree_co_wrt_tm n1 g1 -> degree_brs_wrt_tm n1 (co_subst_co_brs g1 c1 brs1)) /\ (forall g1 g2 c1 n1, degree_co_wrt_tm n1 g1 -> degree_co_wrt_tm n1 g2 -> degree_co_wrt_tm n1 (co_subst_co_co g2 c1 g1)) /\ (forall phi1 g1 c1 n1, degree_constraint_wrt_tm n1 phi1 -> degree_co_wrt_tm n1 g1 -> degree_constraint_wrt_tm n1 (co_subst_co_constraint g1 c1 phi1)).
Lemma co_subst_co_tm_degree_tm_wrt_tm : forall a1 g1 c1 n1, degree_tm_wrt_tm n1 a1 -> degree_co_wrt_tm n1 g1 -> degree_tm_wrt_tm n1 (co_subst_co_tm g1 c1 a1).
Lemma co_subst_co_brs_degree_brs_wrt_tm : forall brs1 g1 c1 n1, degree_brs_wrt_tm n1 brs1 -> degree_co_wrt_tm n1 g1 -> degree_brs_wrt_tm n1 (co_subst_co_brs g1 c1 brs1).
Lemma co_subst_co_co_degree_co_wrt_tm : forall g1 g2 c1 n1, degree_co_wrt_tm n1 g1 -> degree_co_wrt_tm n1 g2 -> degree_co_wrt_tm n1 (co_subst_co_co g2 c1 g1).
Lemma co_subst_co_constraint_degree_constraint_wrt_tm : forall phi1 g1 c1 n1, degree_constraint_wrt_tm n1 phi1 -> degree_co_wrt_tm n1 g1 -> degree_constraint_wrt_tm n1 (co_subst_co_constraint g1 c1 phi1).
Lemma co_subst_co_tm_degree_tm_wrt_co_co_subst_co_brs_degree_brs_wrt_co_co_subst_co_co_degree_co_wrt_co_co_subst_co_constraint_degree_constraint_wrt_co_mutual : (forall a1 g1 c1 n1, degree_tm_wrt_co n1 a1 -> degree_co_wrt_co n1 g1 -> degree_tm_wrt_co n1 (co_subst_co_tm g1 c1 a1)) /\ (forall brs1 g1 c1 n1, degree_brs_wrt_co n1 brs1 -> degree_co_wrt_co n1 g1 -> degree_brs_wrt_co n1 (co_subst_co_brs g1 c1 brs1)) /\ (forall g1 g2 c1 n1, degree_co_wrt_co n1 g1 -> degree_co_wrt_co n1 g2 -> degree_co_wrt_co n1 (co_subst_co_co g2 c1 g1)) /\ (forall phi1 g1 c1 n1, degree_constraint_wrt_co n1 phi1 -> degree_co_wrt_co n1 g1 -> degree_constraint_wrt_co n1 (co_subst_co_constraint g1 c1 phi1)).
Lemma co_subst_co_tm_degree_tm_wrt_co : forall a1 g1 c1 n1, degree_tm_wrt_co n1 a1 -> degree_co_wrt_co n1 g1 -> degree_tm_wrt_co n1 (co_subst_co_tm g1 c1 a1).
Lemma co_subst_co_brs_degree_brs_wrt_co : forall brs1 g1 c1 n1, degree_brs_wrt_co n1 brs1 -> degree_co_wrt_co n1 g1 -> degree_brs_wrt_co n1 (co_subst_co_brs g1 c1 brs1).
Lemma co_subst_co_co_degree_co_wrt_co : forall g1 g2 c1 n1, degree_co_wrt_co n1 g1 -> degree_co_wrt_co n1 g2 -> degree_co_wrt_co n1 (co_subst_co_co g2 c1 g1).
Lemma co_subst_co_constraint_degree_constraint_wrt_co : forall phi1 g1 c1 n1, degree_constraint_wrt_co n1 phi1 -> degree_co_wrt_co n1 g1 -> degree_constraint_wrt_co n1 (co_subst_co_constraint g1 c1 phi1).
Lemma tm_subst_tm_tm_lc_tm : forall a1 a2 x1, lc_tm a1 -> lc_tm a2 -> lc_tm (tm_subst_tm_tm a2 x1 a1).
Lemma tm_subst_tm_brs_lc_brs : forall brs1 a1 x1, lc_brs brs1 -> lc_tm a1 -> lc_brs (tm_subst_tm_brs a1 x1 brs1).
Lemma tm_subst_tm_co_lc_co : forall g1 a1 x1, lc_co g1 -> lc_tm a1 -> lc_co (tm_subst_tm_co a1 x1 g1).
Lemma tm_subst_tm_constraint_lc_constraint : forall phi1 a1 x1, lc_constraint phi1 -> lc_tm a1 -> lc_constraint (tm_subst_tm_constraint a1 x1 phi1).
Lemma co_subst_co_tm_lc_tm : forall a1 g1 c1, lc_tm a1 -> lc_co g1 -> lc_tm (co_subst_co_tm g1 c1 a1).
Lemma co_subst_co_brs_lc_brs : forall brs1 g1 c1, lc_brs brs1 -> lc_co g1 -> lc_brs (co_subst_co_brs g1 c1 brs1).
Lemma co_subst_co_co_lc_co : forall g1 g2 c1, lc_co g1 -> lc_co g2 -> lc_co (co_subst_co_co g2 c1 g1).
Lemma co_subst_co_constraint_lc_constraint : forall phi1 g1 c1, lc_constraint phi1 -> lc_co g1 -> lc_constraint (co_subst_co_constraint g1 c1 phi1).
Lemma tm_subst_tm_tm_open_tm_wrt_tm_rec_tm_subst_tm_brs_open_brs_wrt_tm_rec_tm_subst_tm_co_open_co_wrt_tm_rec_tm_subst_tm_constraint_open_constraint_wrt_tm_rec_mutual : (forall a3 a1 a2 x1 n1, lc_tm a1 -> tm_subst_tm_tm a1 x1 (open_tm_wrt_tm_rec n1 a2 a3) = open_tm_wrt_tm_rec n1 (tm_subst_tm_tm a1 x1 a2) (tm_subst_tm_tm a1 x1 a3)) /\ (forall brs1 a1 a2 x1 n1, lc_tm a1 -> tm_subst_tm_brs a1 x1 (open_brs_wrt_tm_rec n1 a2 brs1) = open_brs_wrt_tm_rec n1 (tm_subst_tm_tm a1 x1 a2) (tm_subst_tm_brs a1 x1 brs1)) /\ (forall g1 a1 a2 x1 n1, lc_tm a1 -> tm_subst_tm_co a1 x1 (open_co_wrt_tm_rec n1 a2 g1) = open_co_wrt_tm_rec n1 (tm_subst_tm_tm a1 x1 a2) (tm_subst_tm_co a1 x1 g1)) /\ (forall phi1 a1 a2 x1 n1, lc_tm a1 -> tm_subst_tm_constraint a1 x1 (open_constraint_wrt_tm_rec n1 a2 phi1) = open_constraint_wrt_tm_rec n1 (tm_subst_tm_tm a1 x1 a2) (tm_subst_tm_constraint a1 x1 phi1)).
Lemma tm_subst_tm_tm_open_tm_wrt_tm_rec : forall a3 a1 a2 x1 n1, lc_tm a1 -> tm_subst_tm_tm a1 x1 (open_tm_wrt_tm_rec n1 a2 a3) = open_tm_wrt_tm_rec n1 (tm_subst_tm_tm a1 x1 a2) (tm_subst_tm_tm a1 x1 a3).
Lemma tm_subst_tm_brs_open_brs_wrt_tm_rec : forall brs1 a1 a2 x1 n1, lc_tm a1 -> tm_subst_tm_brs a1 x1 (open_brs_wrt_tm_rec n1 a2 brs1) = open_brs_wrt_tm_rec n1 (tm_subst_tm_tm a1 x1 a2) (tm_subst_tm_brs a1 x1 brs1).
Lemma tm_subst_tm_co_open_co_wrt_tm_rec : forall g1 a1 a2 x1 n1, lc_tm a1 -> tm_subst_tm_co a1 x1 (open_co_wrt_tm_rec n1 a2 g1) = open_co_wrt_tm_rec n1 (tm_subst_tm_tm a1 x1 a2) (tm_subst_tm_co a1 x1 g1).
Lemma tm_subst_tm_constraint_open_constraint_wrt_tm_rec : forall phi1 a1 a2 x1 n1, lc_tm a1 -> tm_subst_tm_constraint a1 x1 (open_constraint_wrt_tm_rec n1 a2 phi1) = open_constraint_wrt_tm_rec n1 (tm_subst_tm_tm a1 x1 a2) (tm_subst_tm_constraint a1 x1 phi1).
Lemma tm_subst_tm_tm_open_tm_wrt_co_rec_tm_subst_tm_brs_open_brs_wrt_co_rec_tm_subst_tm_co_open_co_wrt_co_rec_tm_subst_tm_constraint_open_constraint_wrt_co_rec_mutual : (forall a2 a1 g1 x1 n1, lc_tm a1 -> tm_subst_tm_tm a1 x1 (open_tm_wrt_co_rec n1 g1 a2) = open_tm_wrt_co_rec n1 (tm_subst_tm_co a1 x1 g1) (tm_subst_tm_tm a1 x1 a2)) /\ (forall brs1 a1 g1 x1 n1, lc_tm a1 -> tm_subst_tm_brs a1 x1 (open_brs_wrt_co_rec n1 g1 brs1) = open_brs_wrt_co_rec n1 (tm_subst_tm_co a1 x1 g1) (tm_subst_tm_brs a1 x1 brs1)) /\ (forall g2 a1 g1 x1 n1, lc_tm a1 -> tm_subst_tm_co a1 x1 (open_co_wrt_co_rec n1 g1 g2) = open_co_wrt_co_rec n1 (tm_subst_tm_co a1 x1 g1) (tm_subst_tm_co a1 x1 g2)) /\ (forall phi1 a1 g1 x1 n1, lc_tm a1 -> tm_subst_tm_constraint a1 x1 (open_constraint_wrt_co_rec n1 g1 phi1) = open_constraint_wrt_co_rec n1 (tm_subst_tm_co a1 x1 g1) (tm_subst_tm_constraint a1 x1 phi1)).
Lemma tm_subst_tm_tm_open_tm_wrt_co_rec : forall a2 a1 g1 x1 n1, lc_tm a1 -> tm_subst_tm_tm a1 x1 (open_tm_wrt_co_rec n1 g1 a2) = open_tm_wrt_co_rec n1 (tm_subst_tm_co a1 x1 g1) (tm_subst_tm_tm a1 x1 a2).
Lemma tm_subst_tm_brs_open_brs_wrt_co_rec : forall brs1 a1 g1 x1 n1, lc_tm a1 -> tm_subst_tm_brs a1 x1 (open_brs_wrt_co_rec n1 g1 brs1) = open_brs_wrt_co_rec n1 (tm_subst_tm_co a1 x1 g1) (tm_subst_tm_brs a1 x1 brs1).
Lemma tm_subst_tm_co_open_co_wrt_co_rec : forall g2 a1 g1 x1 n1, lc_tm a1 -> tm_subst_tm_co a1 x1 (open_co_wrt_co_rec n1 g1 g2) = open_co_wrt_co_rec n1 (tm_subst_tm_co a1 x1 g1) (tm_subst_tm_co a1 x1 g2).
Lemma tm_subst_tm_constraint_open_constraint_wrt_co_rec : forall phi1 a1 g1 x1 n1, lc_tm a1 -> tm_subst_tm_constraint a1 x1 (open_constraint_wrt_co_rec n1 g1 phi1) = open_constraint_wrt_co_rec n1 (tm_subst_tm_co a1 x1 g1) (tm_subst_tm_constraint a1 x1 phi1).
Lemma co_subst_co_tm_open_tm_wrt_tm_rec_co_subst_co_brs_open_brs_wrt_tm_rec_co_subst_co_co_open_co_wrt_tm_rec_co_subst_co_constraint_open_constraint_wrt_tm_rec_mutual : (forall a2 g1 a1 c1 n1, lc_co g1 -> co_subst_co_tm g1 c1 (open_tm_wrt_tm_rec n1 a1 a2) = open_tm_wrt_tm_rec n1 (co_subst_co_tm g1 c1 a1) (co_subst_co_tm g1 c1 a2)) /\ (forall brs1 g1 a1 c1 n1, lc_co g1 -> co_subst_co_brs g1 c1 (open_brs_wrt_tm_rec n1 a1 brs1) = open_brs_wrt_tm_rec n1 (co_subst_co_tm g1 c1 a1) (co_subst_co_brs g1 c1 brs1)) /\ (forall g2 g1 a1 c1 n1, lc_co g1 -> co_subst_co_co g1 c1 (open_co_wrt_tm_rec n1 a1 g2) = open_co_wrt_tm_rec n1 (co_subst_co_tm g1 c1 a1) (co_subst_co_co g1 c1 g2)) /\ (forall phi1 g1 a1 c1 n1, lc_co g1 -> co_subst_co_constraint g1 c1 (open_constraint_wrt_tm_rec n1 a1 phi1) = open_constraint_wrt_tm_rec n1 (co_subst_co_tm g1 c1 a1) (co_subst_co_constraint g1 c1 phi1)).
Lemma co_subst_co_tm_open_tm_wrt_tm_rec : forall a2 g1 a1 c1 n1, lc_co g1 -> co_subst_co_tm g1 c1 (open_tm_wrt_tm_rec n1 a1 a2) = open_tm_wrt_tm_rec n1 (co_subst_co_tm g1 c1 a1) (co_subst_co_tm g1 c1 a2).
Lemma co_subst_co_brs_open_brs_wrt_tm_rec : forall brs1 g1 a1 c1 n1, lc_co g1 -> co_subst_co_brs g1 c1 (open_brs_wrt_tm_rec n1 a1 brs1) = open_brs_wrt_tm_rec n1 (co_subst_co_tm g1 c1 a1) (co_subst_co_brs g1 c1 brs1).
Lemma co_subst_co_co_open_co_wrt_tm_rec : forall g2 g1 a1 c1 n1, lc_co g1 -> co_subst_co_co g1 c1 (open_co_wrt_tm_rec n1 a1 g2) = open_co_wrt_tm_rec n1 (co_subst_co_tm g1 c1 a1) (co_subst_co_co g1 c1 g2).
Lemma co_subst_co_constraint_open_constraint_wrt_tm_rec : forall phi1 g1 a1 c1 n1, lc_co g1 -> co_subst_co_constraint g1 c1 (open_constraint_wrt_tm_rec n1 a1 phi1) = open_constraint_wrt_tm_rec n1 (co_subst_co_tm g1 c1 a1) (co_subst_co_constraint g1 c1 phi1).
Lemma co_subst_co_tm_open_tm_wrt_co_rec_co_subst_co_brs_open_brs_wrt_co_rec_co_subst_co_co_open_co_wrt_co_rec_co_subst_co_constraint_open_constraint_wrt_co_rec_mutual : (forall a1 g1 g2 c1 n1, lc_co g1 -> co_subst_co_tm g1 c1 (open_tm_wrt_co_rec n1 g2 a1) = open_tm_wrt_co_rec n1 (co_subst_co_co g1 c1 g2) (co_subst_co_tm g1 c1 a1)) /\ (forall brs1 g1 g2 c1 n1, lc_co g1 -> co_subst_co_brs g1 c1 (open_brs_wrt_co_rec n1 g2 brs1) = open_brs_wrt_co_rec n1 (co_subst_co_co g1 c1 g2) (co_subst_co_brs g1 c1 brs1)) /\ (forall g3 g1 g2 c1 n1, lc_co g1 -> co_subst_co_co g1 c1 (open_co_wrt_co_rec n1 g2 g3) = open_co_wrt_co_rec n1 (co_subst_co_co g1 c1 g2) (co_subst_co_co g1 c1 g3)) /\ (forall phi1 g1 g2 c1 n1, lc_co g1 -> co_subst_co_constraint g1 c1 (open_constraint_wrt_co_rec n1 g2 phi1) = open_constraint_wrt_co_rec n1 (co_subst_co_co g1 c1 g2) (co_subst_co_constraint g1 c1 phi1)).
Lemma co_subst_co_tm_open_tm_wrt_co_rec : forall a1 g1 g2 c1 n1, lc_co g1 -> co_subst_co_tm g1 c1 (open_tm_wrt_co_rec n1 g2 a1) = open_tm_wrt_co_rec n1 (co_subst_co_co g1 c1 g2) (co_subst_co_tm g1 c1 a1).
Lemma co_subst_co_brs_open_brs_wrt_co_rec : forall brs1 g1 g2 c1 n1, lc_co g1 -> co_subst_co_brs g1 c1 (open_brs_wrt_co_rec n1 g2 brs1) = open_brs_wrt_co_rec n1 (co_subst_co_co g1 c1 g2) (co_subst_co_brs g1 c1 brs1).
Lemma co_subst_co_co_open_co_wrt_co_rec : forall g3 g1 g2 c1 n1, lc_co g1 -> co_subst_co_co g1 c1 (open_co_wrt_co_rec n1 g2 g3) = open_co_wrt_co_rec n1 (co_subst_co_co g1 c1 g2) (co_subst_co_co g1 c1 g3).
Lemma co_subst_co_constraint_open_constraint_wrt_co_rec : forall phi1 g1 g2 c1 n1, lc_co g1 -> co_subst_co_constraint g1 c1 (open_constraint_wrt_co_rec n1 g2 phi1) = open_constraint_wrt_co_rec n1 (co_subst_co_co g1 c1 g2) (co_subst_co_constraint g1 c1 phi1).
Lemma tm_subst_tm_tm_open_tm_wrt_tm : forall a3 a1 a2 x1, lc_tm a1 -> tm_subst_tm_tm a1 x1 (open_tm_wrt_tm a3 a2) = open_tm_wrt_tm (tm_subst_tm_tm a1 x1 a3) (tm_subst_tm_tm a1 x1 a2).
Lemma tm_subst_tm_brs_open_brs_wrt_tm : forall brs1 a1 a2 x1, lc_tm a1 -> tm_subst_tm_brs a1 x1 (open_brs_wrt_tm brs1 a2) = open_brs_wrt_tm (tm_subst_tm_brs a1 x1 brs1) (tm_subst_tm_tm a1 x1 a2).
Lemma tm_subst_tm_co_open_co_wrt_tm : forall g1 a1 a2 x1, lc_tm a1 -> tm_subst_tm_co a1 x1 (open_co_wrt_tm g1 a2) = open_co_wrt_tm (tm_subst_tm_co a1 x1 g1) (tm_subst_tm_tm a1 x1 a2).
Lemma tm_subst_tm_constraint_open_constraint_wrt_tm : forall phi1 a1 a2 x1, lc_tm a1 -> tm_subst_tm_constraint a1 x1 (open_constraint_wrt_tm phi1 a2) = open_constraint_wrt_tm (tm_subst_tm_constraint a1 x1 phi1) (tm_subst_tm_tm a1 x1 a2).
Lemma tm_subst_tm_tm_open_tm_wrt_co : forall a2 a1 g1 x1, lc_tm a1 -> tm_subst_tm_tm a1 x1 (open_tm_wrt_co a2 g1) = open_tm_wrt_co (tm_subst_tm_tm a1 x1 a2) (tm_subst_tm_co a1 x1 g1).
Lemma tm_subst_tm_brs_open_brs_wrt_co : forall brs1 a1 g1 x1, lc_tm a1 -> tm_subst_tm_brs a1 x1 (open_brs_wrt_co brs1 g1) = open_brs_wrt_co (tm_subst_tm_brs a1 x1 brs1) (tm_subst_tm_co a1 x1 g1).
Lemma tm_subst_tm_co_open_co_wrt_co : forall g2 a1 g1 x1, lc_tm a1 -> tm_subst_tm_co a1 x1 (open_co_wrt_co g2 g1) = open_co_wrt_co (tm_subst_tm_co a1 x1 g2) (tm_subst_tm_co a1 x1 g1).
Lemma tm_subst_tm_constraint_open_constraint_wrt_co : forall phi1 a1 g1 x1, lc_tm a1 -> tm_subst_tm_constraint a1 x1 (open_constraint_wrt_co phi1 g1) = open_constraint_wrt_co (tm_subst_tm_constraint a1 x1 phi1) (tm_subst_tm_co a1 x1 g1).
Lemma co_subst_co_tm_open_tm_wrt_tm : forall a2 g1 a1 c1, lc_co g1 -> co_subst_co_tm g1 c1 (open_tm_wrt_tm a2 a1) = open_tm_wrt_tm (co_subst_co_tm g1 c1 a2) (co_subst_co_tm g1 c1 a1).
Lemma co_subst_co_brs_open_brs_wrt_tm : forall brs1 g1 a1 c1, lc_co g1 -> co_subst_co_brs g1 c1 (open_brs_wrt_tm brs1 a1) = open_brs_wrt_tm (co_subst_co_brs g1 c1 brs1) (co_subst_co_tm g1 c1 a1).
Lemma co_subst_co_co_open_co_wrt_tm : forall g2 g1 a1 c1, lc_co g1 -> co_subst_co_co g1 c1 (open_co_wrt_tm g2 a1) = open_co_wrt_tm (co_subst_co_co g1 c1 g2) (co_subst_co_tm g1 c1 a1).
Lemma co_subst_co_constraint_open_constraint_wrt_tm : forall phi1 g1 a1 c1, lc_co g1 -> co_subst_co_constraint g1 c1 (open_constraint_wrt_tm phi1 a1) = open_constraint_wrt_tm (co_subst_co_constraint g1 c1 phi1) (co_subst_co_tm g1 c1 a1).
Lemma co_subst_co_tm_open_tm_wrt_co : forall a1 g1 g2 c1, lc_co g1 -> co_subst_co_tm g1 c1 (open_tm_wrt_co a1 g2) = open_tm_wrt_co (co_subst_co_tm g1 c1 a1) (co_subst_co_co g1 c1 g2).
Lemma co_subst_co_brs_open_brs_wrt_co : forall brs1 g1 g2 c1, lc_co g1 -> co_subst_co_brs g1 c1 (open_brs_wrt_co brs1 g2) = open_brs_wrt_co (co_subst_co_brs g1 c1 brs1) (co_subst_co_co g1 c1 g2).
Lemma co_subst_co_co_open_co_wrt_co : forall g3 g1 g2 c1, lc_co g1 -> co_subst_co_co g1 c1 (open_co_wrt_co g3 g2) = open_co_wrt_co (co_subst_co_co g1 c1 g3) (co_subst_co_co g1 c1 g2).
Lemma co_subst_co_constraint_open_constraint_wrt_co : forall phi1 g1 g2 c1, lc_co g1 -> co_subst_co_constraint g1 c1 (open_constraint_wrt_co phi1 g2) = open_constraint_wrt_co (co_subst_co_constraint g1 c1 phi1) (co_subst_co_co g1 c1 g2).
Lemma tm_subst_tm_tm_open_tm_wrt_tm_var : forall a2 a1 x1 x2, x1 <> x2 -> lc_tm a1 -> open_tm_wrt_tm (tm_subst_tm_tm a1 x1 a2) (a_Var_f x2) = tm_subst_tm_tm a1 x1 (open_tm_wrt_tm a2 (a_Var_f x2)).
Lemma tm_subst_tm_brs_open_brs_wrt_tm_var : forall brs1 a1 x1 x2, x1 <> x2 -> lc_tm a1 -> open_brs_wrt_tm (tm_subst_tm_brs a1 x1 brs1) (a_Var_f x2) = tm_subst_tm_brs a1 x1 (open_brs_wrt_tm brs1 (a_Var_f x2)).
Lemma tm_subst_tm_co_open_co_wrt_tm_var : forall g1 a1 x1 x2, x1 <> x2 -> lc_tm a1 -> open_co_wrt_tm (tm_subst_tm_co a1 x1 g1) (a_Var_f x2) = tm_subst_tm_co a1 x1 (open_co_wrt_tm g1 (a_Var_f x2)).
Lemma tm_subst_tm_constraint_open_constraint_wrt_tm_var : forall phi1 a1 x1 x2, x1 <> x2 -> lc_tm a1 -> open_constraint_wrt_tm (tm_subst_tm_constraint a1 x1 phi1) (a_Var_f x2) = tm_subst_tm_constraint a1 x1 (open_constraint_wrt_tm phi1 (a_Var_f x2)).
Lemma tm_subst_tm_tm_open_tm_wrt_co_var : forall a2 a1 x1 c1, lc_tm a1 -> open_tm_wrt_co (tm_subst_tm_tm a1 x1 a2) (g_Var_f c1) = tm_subst_tm_tm a1 x1 (open_tm_wrt_co a2 (g_Var_f c1)).
Lemma tm_subst_tm_brs_open_brs_wrt_co_var : forall brs1 a1 x1 c1, lc_tm a1 -> open_brs_wrt_co (tm_subst_tm_brs a1 x1 brs1) (g_Var_f c1) = tm_subst_tm_brs a1 x1 (open_brs_wrt_co brs1 (g_Var_f c1)).
Lemma tm_subst_tm_co_open_co_wrt_co_var : forall g1 a1 x1 c1, lc_tm a1 -> open_co_wrt_co (tm_subst_tm_co a1 x1 g1) (g_Var_f c1) = tm_subst_tm_co a1 x1 (open_co_wrt_co g1 (g_Var_f c1)).
Lemma tm_subst_tm_constraint_open_constraint_wrt_co_var : forall phi1 a1 x1 c1, lc_tm a1 -> open_constraint_wrt_co (tm_subst_tm_constraint a1 x1 phi1) (g_Var_f c1) = tm_subst_tm_constraint a1 x1 (open_constraint_wrt_co phi1 (g_Var_f c1)).
Lemma co_subst_co_tm_open_tm_wrt_tm_var : forall a1 g1 c1 x1, lc_co g1 -> open_tm_wrt_tm (co_subst_co_tm g1 c1 a1) (a_Var_f x1) = co_subst_co_tm g1 c1 (open_tm_wrt_tm a1 (a_Var_f x1)).
Lemma co_subst_co_brs_open_brs_wrt_tm_var : forall brs1 g1 c1 x1, lc_co g1 -> open_brs_wrt_tm (co_subst_co_brs g1 c1 brs1) (a_Var_f x1) = co_subst_co_brs g1 c1 (open_brs_wrt_tm brs1 (a_Var_f x1)).
Lemma co_subst_co_co_open_co_wrt_tm_var : forall g2 g1 c1 x1, lc_co g1 -> open_co_wrt_tm (co_subst_co_co g1 c1 g2) (a_Var_f x1) = co_subst_co_co g1 c1 (open_co_wrt_tm g2 (a_Var_f x1)).
Lemma co_subst_co_constraint_open_constraint_wrt_tm_var : forall phi1 g1 c1 x1, lc_co g1 -> open_constraint_wrt_tm (co_subst_co_constraint g1 c1 phi1) (a_Var_f x1) = co_subst_co_constraint g1 c1 (open_constraint_wrt_tm phi1 (a_Var_f x1)).
Lemma co_subst_co_tm_open_tm_wrt_co_var : forall a1 g1 c1 c2, c1 <> c2 -> lc_co g1 -> open_tm_wrt_co (co_subst_co_tm g1 c1 a1) (g_Var_f c2) = co_subst_co_tm g1 c1 (open_tm_wrt_co a1 (g_Var_f c2)).
Lemma co_subst_co_brs_open_brs_wrt_co_var : forall brs1 g1 c1 c2, c1 <> c2 -> lc_co g1 -> open_brs_wrt_co (co_subst_co_brs g1 c1 brs1) (g_Var_f c2) = co_subst_co_brs g1 c1 (open_brs_wrt_co brs1 (g_Var_f c2)).
Lemma co_subst_co_co_open_co_wrt_co_var : forall g2 g1 c1 c2, c1 <> c2 -> lc_co g1 -> open_co_wrt_co (co_subst_co_co g1 c1 g2) (g_Var_f c2) = co_subst_co_co g1 c1 (open_co_wrt_co g2 (g_Var_f c2)).
Lemma co_subst_co_constraint_open_constraint_wrt_co_var : forall phi1 g1 c1 c2, c1 <> c2 -> lc_co g1 -> open_constraint_wrt_co (co_subst_co_constraint g1 c1 phi1) (g_Var_f c2) = co_subst_co_constraint g1 c1 (open_constraint_wrt_co phi1 (g_Var_f c2)).
Lemma tm_subst_tm_tm_spec_rec_tm_subst_tm_brs_spec_rec_tm_subst_tm_co_spec_rec_tm_subst_tm_constraint_spec_rec_mutual : (forall a1 a2 x1 n1, tm_subst_tm_tm a2 x1 a1 = open_tm_wrt_tm_rec n1 a2 (close_tm_wrt_tm_rec n1 x1 a1)) /\ (forall brs1 a1 x1 n1, tm_subst_tm_brs a1 x1 brs1 = open_brs_wrt_tm_rec n1 a1 (close_brs_wrt_tm_rec n1 x1 brs1)) /\ (forall g1 a1 x1 n1, tm_subst_tm_co a1 x1 g1 = open_co_wrt_tm_rec n1 a1 (close_co_wrt_tm_rec n1 x1 g1)) /\ (forall phi1 a1 x1 n1, tm_subst_tm_constraint a1 x1 phi1 = open_constraint_wrt_tm_rec n1 a1 (close_constraint_wrt_tm_rec n1 x1 phi1)).
Lemma tm_subst_tm_tm_spec_rec : forall a1 a2 x1 n1, tm_subst_tm_tm a2 x1 a1 = open_tm_wrt_tm_rec n1 a2 (close_tm_wrt_tm_rec n1 x1 a1).
Lemma tm_subst_tm_brs_spec_rec : forall brs1 a1 x1 n1, tm_subst_tm_brs a1 x1 brs1 = open_brs_wrt_tm_rec n1 a1 (close_brs_wrt_tm_rec n1 x1 brs1).
Lemma tm_subst_tm_co_spec_rec : forall g1 a1 x1 n1, tm_subst_tm_co a1 x1 g1 = open_co_wrt_tm_rec n1 a1 (close_co_wrt_tm_rec n1 x1 g1).
Lemma tm_subst_tm_constraint_spec_rec : forall phi1 a1 x1 n1, tm_subst_tm_constraint a1 x1 phi1 = open_constraint_wrt_tm_rec n1 a1 (close_constraint_wrt_tm_rec n1 x1 phi1).
Lemma co_subst_co_tm_spec_rec_co_subst_co_brs_spec_rec_co_subst_co_co_spec_rec_co_subst_co_constraint_spec_rec_mutual : (forall a1 g1 c1 n1, co_subst_co_tm g1 c1 a1 = open_tm_wrt_co_rec n1 g1 (close_tm_wrt_co_rec n1 c1 a1)) /\ (forall brs1 g1 c1 n1, co_subst_co_brs g1 c1 brs1 = open_brs_wrt_co_rec n1 g1 (close_brs_wrt_co_rec n1 c1 brs1)) /\ (forall g1 g2 c1 n1, co_subst_co_co g2 c1 g1 = open_co_wrt_co_rec n1 g2 (close_co_wrt_co_rec n1 c1 g1)) /\ (forall phi1 g1 c1 n1, co_subst_co_constraint g1 c1 phi1 = open_constraint_wrt_co_rec n1 g1 (close_constraint_wrt_co_rec n1 c1 phi1)).
Lemma co_subst_co_tm_spec_rec : forall a1 g1 c1 n1, co_subst_co_tm g1 c1 a1 = open_tm_wrt_co_rec n1 g1 (close_tm_wrt_co_rec n1 c1 a1).
Lemma co_subst_co_brs_spec_rec : forall brs1 g1 c1 n1, co_subst_co_brs g1 c1 brs1 = open_brs_wrt_co_rec n1 g1 (close_brs_wrt_co_rec n1 c1 brs1).
Lemma co_subst_co_co_spec_rec : forall g1 g2 c1 n1, co_subst_co_co g2 c1 g1 = open_co_wrt_co_rec n1 g2 (close_co_wrt_co_rec n1 c1 g1).
Lemma co_subst_co_constraint_spec_rec : forall phi1 g1 c1 n1, co_subst_co_constraint g1 c1 phi1 = open_constraint_wrt_co_rec n1 g1 (close_constraint_wrt_co_rec n1 c1 phi1).
Lemma tm_subst_tm_tm_spec : forall a1 a2 x1, tm_subst_tm_tm a2 x1 a1 = open_tm_wrt_tm (close_tm_wrt_tm x1 a1) a2.
Lemma tm_subst_tm_brs_spec : forall brs1 a1 x1, tm_subst_tm_brs a1 x1 brs1 = open_brs_wrt_tm (close_brs_wrt_tm x1 brs1) a1.
Lemma tm_subst_tm_co_spec : forall g1 a1 x1, tm_subst_tm_co a1 x1 g1 = open_co_wrt_tm (close_co_wrt_tm x1 g1) a1.
Lemma tm_subst_tm_constraint_spec : forall phi1 a1 x1, tm_subst_tm_constraint a1 x1 phi1 = open_constraint_wrt_tm (close_constraint_wrt_tm x1 phi1) a1.
Lemma co_subst_co_tm_spec : forall a1 g1 c1, co_subst_co_tm g1 c1 a1 = open_tm_wrt_co (close_tm_wrt_co c1 a1) g1.
Lemma co_subst_co_brs_spec : forall brs1 g1 c1, co_subst_co_brs g1 c1 brs1 = open_brs_wrt_co (close_brs_wrt_co c1 brs1) g1.
Lemma co_subst_co_co_spec : forall g1 g2 c1, co_subst_co_co g2 c1 g1 = open_co_wrt_co (close_co_wrt_co c1 g1) g2.
Lemma co_subst_co_constraint_spec : forall phi1 g1 c1, co_subst_co_constraint g1 c1 phi1 = open_constraint_wrt_co (close_constraint_wrt_co c1 phi1) g1.