Structure SSC1 : Type := 
  {SSC1_I : Type;
   SSC1_k : SSC1_I -> D;
   SSC1_p : forall d : D, Cond1 SSC1_k d}.Structure SSC1 : Type := 
  {SSC1_I : Type;
   SSC1_k : SSC1_I -> D;
   SSC1_p : forall d : D, Cond1 SSC1_k d}.Structure SSC1 : Type := 
  {SSC1_I : Type;
   SSC1_k : SSC1_I -> D;
   SSC1_p : forall d : D, Cond1 SSC1_k d}.Structure SSC1 : Type := 
  {SSC1_I : Type;
   SSC1_k : SSC1_I -> D;
   SSC1_p : forall d : D, Cond1 SSC1_k d}.Definition SSC1_i (s : SSC1) (d : D) := Cond1_i (SSC1_p s d).Definition SSC1_f (s : SSC1) (d : D) := Cond1_f (SSC1_p s d).Definition Thi1_d1 := Initial_ob D_initial.(* trouver I qui verifie SSC1 *)

Definition Thi1_I := UnitType.Definition Thi1_k (i : Thi1_I) := match i with
                                  | Elt => Thi1_d1
                                  end.(* pour tout d, Ex i et f : ki -> d *)
(* prendre Elt pour i, on a ki qui est d1, donc on cherche *)
(* f : d1 -> d, prendre le morphisme d'initialite' *)

Definition Thi1_verif_Cond1 (d : D) :=
  Build_Cond1 (k:=Thi1_k) (Cond1_i:=Elt) (MorI D_initial d).Canonical Structure Thi1_SSC1 := Build_SSC1 Thi1_verif_Cond1.(* comme D est complet, elle admet aussi les produits *)

Definition Thi2_D_prod : Product1 (SSC1_k (s:=SSC1_D)) :=
  D_complete (FunDiscr (SSC1_k (s:=SSC1_D))).Definition Thi2_w := Pi1 Thi2_D_prod.(* D admet aussi tous les equalizers *)
(* soit v l'equalizer de (Hom w w) *)

Definition Thi2_D_E_hom :=
  Build_Equalizer2 (D_complete (F_hom Thi2_w Thi2_w)) (Id Thi2_w).Definition Thi2_v := E1_ob Thi2_D_E_hom.Definition Thi2_e := E1_mor Thi2_D_E_hom.Definition Thi2_p_i := Proj1 Thi2_D_prod (SSC1_i SSC1_D d).Definition Thi2_f_d := SSC1_f SSC1_D d.Definition Thi2_mor_d := (Thi2_e o Thi2_p_i) o Thi2_f_d.(* equalizer de f et g *) 

 Definition Thi2_D_E_fg := Build_Equalizer2 (D_complete (F_fg f g)) Elt1.Definition Thi2_c := E1_ob Thi2_D_E_fg.Definition Thi2_e1 := E1_mor Thi2_D_E_fg.(* s : w -> c *) 

 Definition Thi2_p_j := Proj1 Thi2_D_prod (SSC1_i SSC1_D Thi2_c).Definition Thi2_f_c := SSC1_f SSC1_D Thi2_c.Definition Thi2_s := Thi2_p_j o Thi2_f_c.

(* Specifications: *)
Lemma Thi2_e1_RightInv : RIso_law Thi2_e1 (Thi2_e o Thi2_s).
Lemma Eq_fg : f =_S g.
Lemma Thi2_isInitial : IsInitial Thi2_mor_d.