Library ConCaT.CATEGORY_THEORY.LIMIT_CONSTRUCTIONS.SET_Complete



Require Export SET.
Require Export Single.
Require Export Limit.
Require Export Map0_dup1.

Set Implicit Arguments.
Unset Strict Implicit.

Section set_c.

Variables (J : Category) (F : Functor J SET).

Definition SET_lim := Cones Single F.

 Section set_lcone_tau_def.

 Variable i : J.

 Definition SET_lcone_tau_fun (sigma : SET_lim) := sigma i Elt.

 Lemma SET_lcone_tau_map_law : Map_law''0 SET_lcone_tau_fun.
 Proof.
 unfold Map_law''0 in |- *; intros s1 s2 H.
 unfold SET_lcone_tau_fun in |- ×.
 apply (H i Elt).
 Qed.

 Canonical Structure SET_lcone_tau := Build_Map''0 SET_lcone_tau_map_law.

 End set_lcone_tau_def.

Lemma SET_lcone_cone_law :
  (i j : J) (g : i --> j) (tau : SET_lim),
 SET_lcone_tau j tau =_S FMor F g (SET_lcone_tau i tau).
Proof.
intros i j g sigma.
unfold SET_lcone_tau in |- *; simpl in |- *; unfold SET_lcone_tau_fun in |- ×.
apply (EqC sigma g Elt).
Qed.


 Section set_diese.

 Variables (X : SET) (tau : Cones X F).

  Section set_diese1_def.

  Variable x : X.

   Section set_diese1_tau_def.

   Variable i : J.


   Definition SET_diese1_tau_fun (a : Single) :=
     match a with
     | Elttau i x
     end.

   Lemma SET_diese1_tau_map_law : Map_law SET_diese1_tau_fun.
   Proof.
   unfold Map_law in |- ×.
   intros a b; elim a; elim b; simpl in |- *; intro H.
   apply Refl.
   Qed.

   Canonical Structure SET_diese1_tau := Build_Map SET_diese1_tau_map_law.

   End set_diese1_tau_def.


  Lemma SET_diese1_tau_cone_law : Cone_law SET_diese1_tau.
  Proof.
  unfold Cone_law in |- *; intros i j g; simpl in |- ×.
  unfold Ext in |- *; simpl in |- ×.
  intro a; elim a; simpl in |- ×.
  unfold Comp_fun in |- *; simpl in |- ×.
  apply (EqC tau g x).
  Qed.

  Definition SET_diese1 : SET_lim := Build_Cone SET_diese1_tau_cone_law.

  End set_diese1_def.

 Lemma SET_diese_map_law : Map_law0'' SET_diese1.
 Proof.
 unfold Map_law0'' in |- *; intros x y H; simpl in |- ×.
 unfold Equal_NT, SET_diese1 in |- *; simpl in |- ×.
 unfold Ext in |- *; simpl in |- *; intros i a.
 elim a; simpl in |- ×.
 apply Pres1; trivial.
 Qed.

 Canonical Structure SET_diese := Build_Map0'' SET_diese_map_law.

 End set_diese.


Lemma SET_coUAlaw1 :
  (X : SET) (tau : Cone X F) (i : J) (x : X),
 tau i x =_S SET_lcone_tau i (SET_diese tau x).
Proof.
simpl in |- *; intros X tau i x.
unfold SET_lcone_tau_fun, SET_diese1 in |- *; simpl in |- ×.
apply Refl.
Qed.

Lemma SET_coUAlaw2 :
  (X : SET) (tau : Cone X F) (g : Map0'' X SET_lim),
 ( (i : J) (x : X), tau i x =_S SET_lcone_tau i (g x)) →
  x : X, g x =_S'' SET_diese tau x.
Proof.
intros X tau g H x; simpl in |- ×.
unfold Equal_NT in |- *; simpl in |- *; intro i; simpl in |- *;
 unfold Ext in |- *; simpl in |- ×.
intro e; elim e; simpl in |- ×.
apply Sym; apply (H i x).
Qed.

End set_c.