Library ConCaT.CATEGORY_THEORY.ADJUNCTION.CCC.Diagonal
Require Export PROD.
Require Export Functor.
Set Implicit Arguments.
Unset Strict Implicit.
Section diag.
Variable C : Category.
Definition Diag_ob (c : C) := Build_POb c c.
Section diag_map_def.
Variable a b : C.
Definition Diag_mor (f : a --> b) :=
Build_Pmor (u:=Diag_ob a) (t:=Diag_ob b) f f.
Lemma Diag_map_law : Map_law Diag_mor.
Proof.
unfold Map_law, Diag_mor in |- *; simpl in |- ×.
intros f g H; unfold Equal_Pmor in |- *; simpl in |- ×.
split; trivial.
Qed.
Canonical Structure Diag_map := Build_Map Diag_map_law.
End diag_map_def.
Lemma Diag_comp_law : Fcomp_law Diag_map.
Proof.
unfold Fcomp_law, Diag_map, Diag_mor in |- *; simpl in |- ×.
unfold Equal_Pmor in |- *; simpl in |- ×.
intros a b c f g; split; apply Refl.
Qed.
Lemma Diag_id_law : Fid_law Diag_map.
Proof.
unfold Fid_law, Diag_map, Diag_mor in |- *; simpl in |- ×.
unfold Equal_Pmor, Id_PROD in |- *; simpl in |- ×.
intro a; split; apply Refl.
Qed.
Canonical Structure Diag := Build_Functor Diag_comp_law Diag_id_law.
End diag.
