Section equalizer_limit_def.
Variables (C : Category) (a b : C) (I : Type) (k : I -> (a --> b)).
Definition FPA_ob (x : PA k) := match x with
| PA1 => a
| PA2 => b
end.
Definition FPA_mor (x y : PA k) (f : x --> y) :=
match f in (PA_mor _ x' y') return (Carrier (FPA_ob x' --> FPA_ob y')) with
| PA_I1 => Id a
| PA_I2 => Id b
| PA_f i => k i
end.
Canonical Structure FPA_map (x y : PA k) :=
Build_Map (FPA_map_law (x:=x) (y:=y)).
Canonical Structure FPA := Build_Functor FPA_comp_law FPA_id_law.
SubClass Equalizer1 := Limit FPA.
(* The Type I must be non empty *)
Structure Equalizer2 : Type :=  {Prf_equalizer1 :> Equalizer1; Witness : I}.
Variable l : Equalizer2.
Definition E1_ob := Lim l.
Definition E1_mor : E1_ob --> a := Limiting_cone l PA1.

Lemma Prf_E1_law1 : Equalizer_law1 k E1_mor.