End Fpullback_limit_def.
Coercion Pullback1_to_Pullback : Fpullback1 >-> Pullback.
(* Functor PULB -> C *)
Section pullback_limit_def.
Variables (C : Category) (a b c : C) (f : a --> b) (g : c --> b).
Definition Fpulb_ob (x : PULB) :=
match x return (Ob C) with
| P1 => a
| P2 => b
| P3 => c
end.
Definition Fpulb_mor (x y : PULB) (h : PULB_mor_setoid x y) :=
match
h in (PULB_mor x' y') return (Carrier (Fpulb_ob x' --> Fpulb_ob y'))
with
| IP1 => Id a
| IP2 => Id b
| IP3 => Id c
| F12 => f
| F32 => g
end.

(* Specifications: *)
Lemma Fpulb_map_law : forall x y : PULB_ob, Map_law (Fpulb_mor (x:=x) (y:=y)).
Canonical Structure Fpulb_map (x y : PULB) :=
Build_Map (Fpulb_map_law (x:=x) (y:=y)).
Lemma Fpulb_comp_law : Fcomp_law Fpulb_map.
Lemma Fpulb_id_law : Fid_law Fpulb_map.
Canonical Structure Fpulb := Build_Functor Fpulb_comp_law Fpulb_id_law.