Built with Alectryon, running Coq+SerAPI v8.19.0+0.19.3. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+โCtrl+โ to navigate, Ctrl+๐ฑ๏ธ to focus. On Mac, use โ instead of Ctrl.
(** * The functor [แตแต : cat โ cat] *)
[Loading ML file number_string_notation_plugin.cmxs (using legacy method) ... done]
H: Funext P: PreCategory -> Type H0: forallC : PreCategory, IsHProp (P C) HF: forallCD : PreCategory,
P C -> P D -> IsHSet (Functor C D) cat:= sub_pre_cat P: PreCategory has_op: forallC : cat, P (C.1)^op opposite_functor_involutive_helper:= funx : cat =>
path_sigma_uncurried
P
(((x.1)^op)^op%category;
has_op
((x.1)^op%category;
has_op x)) x
(Category.Dual.opposite_involutive
x.1;
path_ishprop
(transport P
(Category.Dual.opposite_involutive
x.1)
(((x.1)^op)^op%category;
has_op
(
(x.1)^op%category;
has_op x)).2)
x.2): forallx : cat,
(((x.1)^op)^op%category;
has_op
((x.1)^op%category;
has_op x)) = x x, x0: {C : PreCategory & P C} x1: Functor x.1 x0.1
transport
(funy : {C : PreCategory & P C} => Functor x.1 y.1)
(path_sigma_uncurried P
(((x0.1)^op)^op%category;
has_op ((x0.1)^op%category; has_op x0)) x0
(Category.Dual.opposite_involutive x0.1;
path_ishprop
(transport P
(Category.Dual.opposite_involutive x0.1)
(((x0.1)^op)^op%category;
has_op ((x0.1)^op%category; has_op x0)).2)
x0.2))
(transport
(funy : {C : PreCategory & P C} =>
Functor y.1
(((x0.1)^op)^op%category;
has_op ((x0.1)^op%category; has_op x0)).1)
(path_sigma_uncurried P
(((x.1)^op)^op%category;
has_op ((x.1)^op%category; has_op x)) x
(Category.Dual.opposite_involutive x.1;
path_ishprop
(transport P
(Category.Dual.opposite_involutive x.1)
(((x.1)^op)^op%category;
has_op ((x.1)^op%category; has_op x)).2)
x.2)) (x1^op)^op) = x1
H: Funext P: PreCategory -> Type H0: forallC : PreCategory, IsHProp (P C) HF: forallCD : PreCategory,
P C -> P D -> IsHSet (Functor C D) cat:= sub_pre_cat P: PreCategory has_op: forallC : cat, P (C.1)^op opposite_functor_involutive_helper:= funx : cat =>
path_sigma_uncurried
P
(((x.1)^op)^op%category;
has_op
((x.1)^op%category;
has_op x)) x
(Category.Dual.opposite_involutive
x.1;
path_ishprop
(transport P
(Category.Dual.opposite_involutive
x.1)
(((x.1)^op)^op%category;
has_op
(
(x.1)^op%category;
has_op x)).2)
x.2): forallx : cat,
(((x.1)^op)^op%category;
has_op
((x.1)^op%category;
has_op x)) = x x, x0: {C : PreCategory & P C} x1: Functor x.1 x0.1
transport (Functor x.1)
(Category.Dual.opposite_involutive x0.1;
path_ishprop
(transport P
(Category.Dual.opposite_involutive x0.1)
(((x0.1)^op)^op%category;
has_op ((x0.1)^op%category; has_op x0)).2) x0.2).1
(transport
(funy : {C : PreCategory & P C} =>
Functor y.1
(((x0.1)^op)^op%category;
has_op ((x0.1)^op%category; has_op x0)).1)
(path_sigma_uncurried P
(((x.1)^op)^op%category;
has_op ((x.1)^op%category; has_op x)) x
(Category.Dual.opposite_involutive x.1;
path_ishprop
(transport P
(Category.Dual.opposite_involutive x.1)
(((x.1)^op)^op%category;
has_op ((x.1)^op%category; has_op x)).2)
x.2)) (x1^op)^op) = x1
H: Funext P: PreCategory -> Type H0: forallC : PreCategory, IsHProp (P C) HF: forallCD : PreCategory,
P C -> P D -> IsHSet (Functor C D) cat:= sub_pre_cat P: PreCategory has_op: forallC : {C : PreCategory & P C},
P (C.1)^op opposite_functor_involutive_helper:= funx : {C
: PreCategory
& P C} =>
path_sigma_uncurried
P
(((x.1)^op)^op%category;
has_op
((x.1)^op%category;
has_op x)) x
(Category.Dual.opposite_involutive
x.1;
path_ishprop
(has_op
((x.1)^op%category;
has_op x))
x.2): forallx : {C
: PreCategory
& P C},
(((x.1)^op)^op%category;
has_op
((x.1)^op%category;
has_op x)) = x x, x0: {C : PreCategory & P C} x1: Functor x.1 x0.1
transport
(funy : {C : PreCategory & P C} =>
Functor y.1 ((x0.1)^op)^op)
(path_sigma_uncurried P
(((x.1)^op)^op%category;
has_op ((x.1)^op%category; has_op x)) x
(Category.Dual.opposite_involutive x.1;
path_ishprop
(has_op ((x.1)^op%category; has_op x)) x.2))
(x1^op)^op = x1
H: Funext P: PreCategory -> Type H0: forallC : PreCategory, IsHProp (P C) HF: forallCD : PreCategory,
P C -> P D -> IsHSet (Functor C D) cat:= sub_pre_cat P: PreCategory has_op: forallC : {x : _ & P x}, P (C.1)^op opposite_functor_involutive_helper:= funx : {x : _ &
P x} =>
path_sigma_uncurried
P
(((x.1)^op)^op%category;
has_op
((x.1)^op%category;
has_op x)) x
(Category.Dual.opposite_involutive
x.1;
path_ishprop
(has_op
((x.1)^op%category;
has_op x))
x.2): forallx : {x : _ & P x},
(((x.1)^op)^op%category;
has_op
((x.1)^op%category;
has_op x)) = x x, x0: {x : _ & P x} x1: Functor x.1 x0.1
transport
(funy : {x : _ & P x} => Functor y.1 ((x0.1)^op)^op)
(path_sigma_uncurried P
(((x.1)^op)^op%category;
has_op ((x.1)^op%category; has_op x)) x
(Category.Dual.opposite_involutive x.1;
path_ishprop
(has_op ((x.1)^op%category; has_op x)) x.2))
(x1^op)^op = x1
H: Funext P: PreCategory -> Type H0: forallC : PreCategory, IsHProp (P C) HF: forallCD : PreCategory,
P C -> P D -> IsHSet (Functor C D) cat:= sub_pre_cat P: PreCategory has_op: forallC : {x : _ & P x}, P (C.1)^op opposite_functor_involutive_helper:= funx : {x : _ &
P x} =>
path_sigma_uncurried
P
(((x.1)^op)^op%category;
has_op
((x.1)^op%category;
has_op x)) x
(Category.Dual.opposite_involutive
x.1;
path_ishprop
(has_op
((x.1)^op%category;
has_op x))
x.2): forallx : {x : _ & P x},
(((x.1)^op)^op%category;
has_op
((x.1)^op%category;
has_op x)) = x x, x0: {x : _ & P x} x1: Functor x.1 x0.1
transport
(funx : PreCategory => Functor x ((x0.1)^op)^op)
(Category.Dual.opposite_involutive x.1;
path_ishprop (has_op ((x.1)^op%category; has_op x))
x.2).1 (x1^op)^op = x1
H: Funext P: PreCategory -> Type H0: forallC : PreCategory, IsHProp (P C) HF: forallCD : PreCategory,
P C -> P D -> IsHSet (Functor C D) cat:= sub_pre_cat P: PreCategory has_op: forallC : {x : _ & P x}, P (C.1)^op opposite_functor_involutive_helper:= funx : {x : _ &
P x} =>
path_sigma_uncurried
P
(((x.1)^op)^op%category;
has_op
((x.1)^op%category;
has_op x)) x
(Category.Dual.opposite_involutive
x.1;
path_ishprop
(has_op
((x.1)^op%category;
has_op x))
x.2): forallx : {x : _ & P x},
(((x.1)^op)^op%category;
has_op
((x.1)^op%category;
has_op x)) = x x, x0: {x : _ & P x} x1: Functor x.1 x0.1
(x1^op)^op = x1
H: Funext P: PreCategory -> Type H0: forallC : PreCategory, IsHProp (P C) HF: forallCD : PreCategory,
P C -> P D -> IsHSet (Functor C D) cat:= {|
object := {C : PreCategory & P C};
morphism :=
fun (C : {C : PreCategory & P C})
(D : {C0 : PreCategory & P C0}) =>
Functor C.1 D.1;
Core.identity :=
funC : {C : PreCategory & P C} => 1;
Category.Core.compose :=
fun (sdd' : {C : PreCategory & P C})
(F : Functor d.1 d'.1)
(G : Functor s.1 d.1) => F o G;
associativity :=
fun (x1x2x3x4 : {C : PreCategory & P C})
(m1 : Functor x1.1 x2.1)
(m2 : Functor x2.1 x3.1)
(m3 : Functor x3.1 x4.1) =>
Laws.associativity m1 m2 m3;
associativity_sym :=
fun (x1x2x3x4 : {C : PreCategory & P C})
(m1 : Functor x1.1 x2.1)
(m2 : Functor x2.1 x3.1)
(m3 : Functor x3.1 x4.1) =>
symmetry (m3 o m2 o m1) (m3 o (m2 o m1))
(Laws.associativity m1 m2 m3);
left_identity :=
fun (ab : {C : PreCategory & P C})
(f : Functor a.1 b.1) =>
Laws.left_identity f;
right_identity :=
fun (ab : {C : PreCategory & P C})
(f : Functor a.1 b.1) =>
Laws.right_identity f;
identity_identity :=
funx : {C : PreCategory & P C} =>
Laws.left_identity 1;
trunc_morphism :=
funsd : {C : PreCategory & P C} =>
HF s.2 d.2
|}: PreCategory has_op: forallC : {x : _ & P x}, P (C.1)^op opposite_functor_involutive_helper:= funx : {x : _ &
P x} =>
path_sigma_uncurried
P
(((x.1)^op)^op%category;
has_op
((x.1)^op%category;
has_op x)) x
(Category.Dual.opposite_involutive
x.1;
path_ishprop
(has_op
((x.1)^op%category;
has_op x))
x.2): forallx : {x : _ & P x},
(((x.1)^op)^op%category;
has_op
((x.1)^op%category;
has_op x)) = x x, x0: {x : _ & P x} x1: Functor x.1 x0.1
(x1^op)^op = x1
H: Funext P: PreCategory -> Type H0: forallC : PreCategory, IsHProp (P C) HF: forallCD : PreCategory,
P C -> P D -> IsHSet (Functor C D) has_op: forallC : {x : _ & P x}, P (C.1)^op x, x0: {x : _ & P x} x1: Functor x.1 x0.1
(x1^op)^op = x1
H: Funext P: PreCategory -> Type H0: forallC : PreCategory, IsHProp (P C) HF: forallCD : PreCategory,
P C -> P D -> IsHSet (Functor C D) has_op: forallC : {x : _ & P x}, P (C.1)^op proj0: PreCategory proj3: P proj0 proj1: PreCategory proj2: P proj1 x1: Functor proj0 proj1
(x1^op)^op = x1
H: Funext P: PreCategory -> Type H0: forallC : PreCategory, IsHProp (P C) HF: forallCD : PreCategory,
P C -> P D -> IsHSet (Functor C D) has_op: forallC : {x : _ & P x}, P (C.1)^op proj0: PreCategory proj3: P proj0 proj1: PreCategory proj2: P proj1 object_of: proj0 -> proj1 morphism_of: forallsd : proj0,
morphism proj0 s d ->
morphism proj1 (object_of s)
(object_of d) composition_of: forall (sdd' : proj0)
(m1 : morphism proj0 s d)
(m2 : morphism proj0 d d'),
morphism_of s d' (m2 o m1)%morphism =
(morphism_of d d' m2
o morphism_of s d m1)%morphism identity_of: forallx : proj0,
morphism_of x x 1%morphism = 1%morphism