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.
(** * ∑-categories on morphisms - a category with the same objects, but a ∑ type for morphisms *)
[Loading ML file number_string_notation_plugin.cmxs (using legacy method) ... done]
Require Import Category.Core Functor.Core Category.Sigma.Core.Require Functor.Composition.Core Functor.Identity.Require Import Functor.Paths.Import Functor.Identity.FunctorIdentityNotations.Import Functor.Composition.Core.FunctorCompositionCoreNotations.Set Universe Polymorphism.Set Implicit Arguments.Generalizable All Variables.Set Asymmetric Patterns.Local Notationsig_type := Overture.sig.Local Notationpr1_type := Overture.pr1.LocalOpen Scope morphism_scope.LocalOpen Scope functor_scope.Sectionsig_mor.VariableA : PreCategory.VariablePmor : forallsd, morphism A s d -> Type.Local Notationmor s d := (sig_type (Pmor s d)).Context `(HPmor : forallsd, IsHSet (mor s d)).VariablePidentity : forallx, @Pmor x x (@identity A _).VariablePcompose : forallsdd'm1m2,
@Pmor d d' m1
-> @Pmor s d m2
-> @Pmor s d' (m1 o m2).Local Notationidentity x := (@identity A x; @Pidentity x).Local Notationcompose m1 m2 := (m1.1 o m2.1; @Pcompose _ _ _ m1.1 m2.1 m1.2 m2.2)%morphism.HypothesisP_associativity
: forallx1x2x3x4 (m1 : mor x1 x2) (m2 : mor x2 x3) (m3 : mor x3 x4),
compose (compose m3 m2) m1 = compose m3 (compose m2 m1).HypothesisP_left_identity
: forallab (f : mor a b),
compose (identity b) f = f.HypothesisP_right_identity
: forallab (f : mor a b),
compose f (identity a) = f.(** ** Definition of [sig_mor]-precategory *)
A: PreCategory Pmor: forallsd : A, morphism A s d -> Type HPmor: forallsd : A, IsHSet (mor s d) Pidentity: forallx : A, Pmor x x 1 Pcompose: forall (sdd' : A) (m1 : morphism A d d')
(m2 : morphism A s d),
Pmor d d' m1 ->
Pmor s d m2 -> Pmor s d' (m1 o m2) P_associativity: forall (x1x2x3x4 : A)
(m1 : mor x1 x2) (m2 : mor x2 x3)
(m3 : mor x3 x4),
compose (compose m3 m2) m1 =
compose m3 (compose m2 m1) P_left_identity: forall (ab : A) (f : mor a b),
compose (identity b) f = f P_right_identity: forall (ab : A) (f : mor a b),
compose f (identity a) = f
PreCategory
A: PreCategory Pmor: forallsd : A, morphism A s d -> Type HPmor: forallsd : A, IsHSet (mor s d) Pidentity: forallx : A, Pmor x x 1 Pcompose: forall (sdd' : A) (m1 : morphism A d d')
(m2 : morphism A s d),
Pmor d d' m1 ->
Pmor s d m2 -> Pmor s d' (m1 o m2) P_associativity: forall (x1x2x3x4 : A)
(m1 : mor x1 x2) (m2 : mor x2 x3)
(m3 : mor x3 x4),
compose (compose m3 m2) m1 =
compose m3 (compose m2 m1) P_left_identity: forall (ab : A) (f : mor a b),
compose (identity b) f = f P_right_identity: forall (ab : A) (f : mor a b),
compose f (identity a) = f
PreCategory
refine (@Build_PreCategory
(object A)
(funsd => mor s d)
(funx => identity x)
(funsdd'm1m2 => compose m1 m2)
_
_
_
_);
assumption.Defined.(** ** First projection functor *)Definitionpr1_mor : Functor sig_mor' A
:= Build_Functor
sig_mor' A
idmap
(fun__ => @pr1_type _ _)
(fun_____ => idpath)
(fun_ => idpath).
A: PreCategory Pmor: forallsd : A, morphism A s d -> Type HPmor: forallsd : A, IsHSet (mor s d) Pidentity: forallx : A, Pmor x x 1 Pcompose: forall (sdd' : A) (m1 : morphism A d d')
(m2 : morphism A s d),
Pmor d d' m1 ->
Pmor s d m2 -> Pmor s d' (m1 o m2) P_associativity: forall (x1x2x3x4 : A)
(m1 : mor x1 x2) (m2 : mor x2 x3)
(m3 : mor x3 x4),
compose (compose m3 m2) m1 =
compose m3 (compose m2 m1) P_left_identity: forall (ab : A) (f : mor a b),
compose (identity b) f = f P_right_identity: forall (ab : A) (f : mor a b),
compose f (identity a) = f
PreCategory
A: PreCategory Pmor: forallsd : A, morphism A s d -> Type HPmor: forallsd : A, IsHSet (mor s d) Pidentity: forallx : A, Pmor x x 1 Pcompose: forall (sdd' : A) (m1 : morphism A d d')
(m2 : morphism A s d),
Pmor d d' m1 ->
Pmor s d m2 -> Pmor s d' (m1 o m2) P_associativity: forall (x1x2x3x4 : A)
(m1 : mor x1 x2) (m2 : mor x2 x3)
(m3 : mor x3 x4),
compose (compose m3 m2) m1 =
compose m3 (compose m2 m1) P_left_identity: forall (ab : A) (f : mor a b),
compose (identity b) f = f P_right_identity: forall (ab : A) (f : mor a b),
compose f (identity a) = f
A: PreCategory Pmor: forallsd : A, morphism A s d -> Type HPmor: forallsd : A, IsHSet (mor s d) Pidentity: forallx : A, Pmor x x 1 Pcompose: forall (sdd' : A) (m1 : morphism A d d')
(m2 : morphism A s d),
Pmor d d' m1 ->
Pmor s d m2 -> Pmor s d' (m1 o m2) P_associativity: forall (x1x2x3x4 : A)
(m1 : mor x1 x2) (m2 : mor x2 x3)
(m3 : mor x3 x4),
compose (compose m3 m2) m1 =
compose m3 (compose m2 m1) P_left_identity: forall (ab : A) (f : mor a b),
compose (identity b) f = f P_right_identity: forall (ab : A) (f : mor a b),
compose f (identity a) = f H: Funext
(sig_functor_mor o sig_functor_mor_inv = 1) *
(sig_functor_mor_inv o sig_functor_mor = 1)
A: PreCategory Pmor: forallsd : A, morphism A s d -> Type HPmor: forallsd : A, IsHSet (mor s d) Pidentity: forallx : A, Pmor x x 1 Pcompose: forall (sdd' : A) (m1 : morphism A d d')
(m2 : morphism A s d),
Pmor d d' m1 ->
Pmor s d m2 -> Pmor s d' (m1 o m2) P_associativity: forall (x1x2x3x4 : A)
(m1 : mor x1 x2) (m2 : mor x2 x3)
(m3 : mor x3 x4),
compose (compose m3 m2) m1 =
compose m3 (compose m2 m1) P_left_identity: forall (ab : A) (f : mor a b),
compose (identity b) f = f P_right_identity: forall (ab : A) (f : mor a b),
compose f (identity a) = f H: Funext
(sig_functor_mor o sig_functor_mor_inv = 1) *
(sig_functor_mor_inv o sig_functor_mor = 1)
A: PreCategory Pmor: forallsd : A, morphism A s d -> Type HPmor: forallsd : A, IsHSet (mor s d) Pidentity: forallx : A, Pmor x x 1 Pcompose: forall (sdd' : A) (m1 : morphism A d d')
(m2 : morphism A s d),
Pmor d d' m1 ->
Pmor s d m2 -> Pmor s d' (m1 o m2) P_associativity: forall (x1x2x3x4 : A)
(m1 : mor x1 x2) (m2 : mor x2 x3)
(m3 : mor x3 x4),
compose (compose m3 m2) m1 =
compose m3 (compose m2 m1) P_left_identity: forall (ab : A) (f : mor a b),
compose (identity b) f = f P_right_identity: forall (ab : A) (f : mor a b),
compose f (identity a) = f H: Funext
sig_type
(funHO : (func : sig_type (fun_ : A => Unit) =>
(pr1_type c; tt)) = idmap =>
transport
(funGO : sig_type (fun_ : A => Unit) ->
sig_type (fun_ : A => Unit) =>
forallsd : sig_type (fun_ : A => Unit),
mor (pr1_type s) (pr1_type d) ->
mor (pr1_type (GO s)) (pr1_type (GO d))) HO
(funsd : sig_type (fun_ : A => Unit) => idmap) =
(funsd : sig_type (fun_ : A => Unit) => idmap))
A: PreCategory Pmor: forallsd : A, morphism A s d -> Type HPmor: forallsd : A, IsHSet (mor s d) Pidentity: forallx : A, Pmor x x 1 Pcompose: forall (sdd' : A) (m1 : morphism A d d')
(m2 : morphism A s d),
Pmor d d' m1 ->
Pmor s d m2 -> Pmor s d' (m1 o m2) P_associativity: forall (x1x2x3x4 : A)
(m1 : mor x1 x2) (m2 : mor x2 x3)
(m3 : mor x3 x4),
compose (compose m3 m2) m1 =
compose m3 (compose m2 m1) P_left_identity: forall (ab : A) (f : mor a b),
compose (identity b) f = f P_right_identity: forall (ab : A) (f : mor a b),
compose f (identity a) = f H: Funext
transport
(funGO : sig_type (fun_ : A => Unit) ->
sig_type (fun_ : A => Unit) =>
forallsd : sig_type (fun_ : A => Unit),
mor (pr1_type s) (pr1_type d) ->
mor (pr1_type (GO s)) (pr1_type (GO d)))
(path_forall
(funx : sig_type (fun_ : A => Unit) =>
(pr1_type x; tt)) idmap
(funx : sig_type (fun_ : A => Unit) =>
letx0 := x inletproj1 := pr1_type x0 inletproj2 := x0.2inmatch
proj2 as proj3
return
((pr1_type (proj1; proj3); tt) =
(proj1; proj3))
with
| tt => 1%path
end))
(funsd : sig_type (fun_ : A => Unit) => idmap) =
(funsd : sig_type (fun_ : A => Unit) => idmap)
A: PreCategory Pmor: forallsd : A, morphism A s d -> Type HPmor: forallsd : A, IsHSet (mor s d) Pidentity: forallx : A, Pmor x x 1 Pcompose: forall (sdd' : A) (m1 : morphism A d d')
(m2 : morphism A s d),
Pmor d d' m1 ->
Pmor s d m2 -> Pmor s d' (m1 o m2) P_associativity: forall (x1x2x3x4 : A)
(m1 : mor x1 x2) (m2 : mor x2 x3)
(m3 : mor x3 x4),
compose (compose m3 m2) m1 =
compose m3 (compose m2 m1) P_left_identity: forall (ab : A) (f : mor a b),
compose (identity b) f = f P_right_identity: forall (ab : A) (f : mor a b),
compose f (identity a) = f H: Funext x, x0: sig_type (fun_ : A => Unit) x1: mor (pr1_type x) (pr1_type x0)
transport
(funGO : sig_type (fun_ : A => Unit) ->
sig_type (fun_ : A => Unit) =>
forallsd : sig_type (fun_ : A => Unit),
mor (pr1_type s) (pr1_type d) ->
mor (pr1_type (GO s)) (pr1_type (GO d)))
(path_forall
(funx : sig_type (fun_ : A => Unit) =>
(pr1_type x; tt)) idmap
(funx : sig_type (fun_ : A => Unit) =>
letx0 := x inletproj1 := pr1_type x0 inletproj2 := x0.2inmatch
proj2 as proj3
return
((pr1_type (proj1; proj3); tt) =
(proj1; proj3))
with
| tt => 1%path
end))
(funsd : sig_type (fun_ : A => Unit) => idmap) x
x0 x1 = x1
A: PreCategory Pmor: forallsd : A, morphism A s d -> Type HPmor: forallsd : A, IsHSet (mor s d) Pidentity: forallx : A, Pmor x x 1 Pcompose: forall (sdd' : A) (m1 : morphism A d d')
(m2 : morphism A s d),
Pmor d d' m1 ->
Pmor s d m2 -> Pmor s d' (m1 o m2) P_associativity: forall (x1x2x3x4 : A)
(m1 : mor x1 x2) (m2 : mor x2 x3)
(m3 : mor x3 x4),
((pr1_type m3 o pr1_type m2
o pr1_type m1)%morphism;
Pcompose (Pcompose m3.2 m2.2) m1.2) =
((pr1_type m3
o (pr1_type m2 o pr1_type m1))%morphism;
Pcompose m3.2 (Pcompose m2.2 m1.2)) P_left_identity: forall (ab : A) (f : mor a b),
((1 o pr1_type f)%morphism;
Pcompose (Pidentity b) f.2) = f P_right_identity: forall (ab : A) (f : mor a b),
((pr1_type f o 1)%morphism;
Pcompose f.2 (Pidentity a)) = f H: Funext proj4: A proj5: Unit proj0: A proj3: Unit proj1: morphism A proj4 proj0 proj2: Pmor proj4 proj0 proj1
transport
(funGO : sig_type (fun_ : A => Unit) ->
sig_type (fun_ : A => Unit) =>
forallsd : sig_type (fun_ : A => Unit),
mor (pr1_type s) (pr1_type d) ->
mor (pr1_type (GO s)) (pr1_type (GO d)))
(path_forall
(funx : sig_type (fun_ : A => Unit) =>
(pr1_type x; tt)) idmap
(funx : sig_type (fun_ : A => Unit) =>
match
x.2as proj2
return
((pr1_type x; tt) = (pr1_type x; proj2))
with
| tt => 1%path
end))
(funsd : sig_type (fun_ : A => Unit) => idmap)
(proj4; proj5) (proj0; proj3) (proj1; proj2) =
(proj1; proj2)
A: PreCategory Pmor: forallsd : A, morphism A s d -> Type HPmor: forallsd : A, IsHSet (mor s d) Pidentity: forallx : A, Pmor x x 1 Pcompose: forall (sdd' : A) (m1 : morphism A d d')
(m2 : morphism A s d),
Pmor d d' m1 ->
Pmor s d m2 -> Pmor s d' (m1 o m2) P_associativity: forall (x1x2x3x4 : A)
(m1 : mor x1 x2) (m2 : mor x2 x3)
(m3 : mor x3 x4),
((pr1_type m3 o pr1_type m2
o pr1_type m1)%morphism;
Pcompose (Pcompose m3.2 m2.2) m1.2) =
((pr1_type m3
o (pr1_type m2 o pr1_type m1))%morphism;
Pcompose m3.2 (Pcompose m2.2 m1.2)) P_left_identity: forall (ab : A) (f : mor a b),
((1 o pr1_type f)%morphism;
Pcompose (Pidentity b) f.2) = f P_right_identity: forall (ab : A) (f : mor a b),
((pr1_type f o 1)%morphism;
Pcompose f.2 (Pidentity a)) = f H: Funext proj4, proj0: A proj1: morphism A proj4 proj0 proj2: Pmor proj4 proj0 proj1
transport
(funGO : sig_type (fun_ : A => Unit) ->
sig_type (fun_ : A => Unit) =>
forallsd : sig_type (fun_ : A => Unit),
mor (pr1_type s) (pr1_type d) ->
mor (pr1_type (GO s)) (pr1_type (GO d)))
(path_forall
(funx : sig_type (fun_ : A => Unit) =>
(pr1_type x; tt)) idmap
(funx : sig_type (fun_ : A => Unit) =>
match
x.2as proj2
return
((pr1_type x; tt) = (pr1_type x; proj2))
with
| tt => 1%path
end))
(funsd : sig_type (fun_ : A => Unit) => idmap)
(proj4; tt) (proj0; tt) (proj1; proj2) =
(proj1; proj2)
A: PreCategory Pmor: forallsd : A, morphism A s d -> Type HPmor: forallsd : A, IsHSet (mor s d) Pidentity: forallx : A, Pmor x x 1 Pcompose: forall (sdd' : A) (m1 : morphism A d d')
(m2 : morphism A s d),
Pmor d d' m1 ->
Pmor s d m2 -> Pmor s d' (m1 o m2) P_associativity: forall (x1x2x3x4 : A)
(m1 : mor x1 x2) (m2 : mor x2 x3)
(m3 : mor x3 x4),
((pr1_type m3 o pr1_type m2
o pr1_type m1)%morphism;
Pcompose (Pcompose m3.2 m2.2) m1.2) =
((pr1_type m3
o (pr1_type m2 o pr1_type m1))%morphism;
Pcompose m3.2 (Pcompose m2.2 m1.2)) P_left_identity: forall (ab : A) (f : mor a b),
((1 o pr1_type f)%morphism;
Pcompose (Pidentity b) f.2) = f P_right_identity: forall (ab : A) (f : mor a b),
((pr1_type f o 1)%morphism;
Pcompose f.2 (Pidentity a)) = f H: Funext proj4, proj0: A proj1: morphism A proj4 proj0 proj2: Pmor proj4 proj0 proj1
transport
(funx : sig_type (fun_ : A => Unit) ->
sig_type (fun_ : A => Unit) =>
mor (pr1_type (x (proj4; tt)))
(pr1_type (x (proj0; tt))))
(path_forall
(funx : sig_type (fun_ : A => Unit) =>
(pr1_type x; tt)) idmap
(funx : sig_type (fun_ : A => Unit) =>
match
x.2as proj2
return
((pr1_type x; tt) = (pr1_type x; proj2))
with
| tt => 1%path
end)) (proj1; proj2) = (proj1; proj2)
A: PreCategory Pmor: forallsd : A, morphism A s d -> Type HPmor: forallsd : A, IsHSet (mor s d) Pidentity: forallx : A, Pmor x x 1 Pcompose: forall (sdd' : A) (m1 : morphism A d d')
(m2 : morphism A s d),
Pmor d d' m1 ->
Pmor s d m2 -> Pmor s d' (m1 o m2) P_associativity: forall (x1x2x3x4 : A)
(m1 : mor x1 x2) (m2 : mor x2 x3)
(m3 : mor x3 x4),
((pr1_type m3 o pr1_type m2
o pr1_type m1)%morphism;
Pcompose (Pcompose m3.2 m2.2) m1.2) =
((pr1_type m3
o (pr1_type m2 o pr1_type m1))%morphism;
Pcompose m3.2 (Pcompose m2.2 m1.2)) P_left_identity: forall (ab : A) (f : mor a b),
((1 o pr1_type f)%morphism;
Pcompose (Pidentity b) f.2) = f P_right_identity: forall (ab : A) (f : mor a b),
((pr1_type f o 1)%morphism;
Pcompose f.2 (Pidentity a)) = f H: Funext proj4, proj0: A proj1: morphism A proj4 proj0 proj2: Pmor proj4 proj0 proj1
transport
(funy : sig_type (fun_ : A => Unit) =>
mor (pr1_type (proj4; tt)) (pr1_type y)) 1
(transport
(funy : sig_type (fun_ : A => Unit) =>
mor (pr1_type y)
(pr1_type (pr1_type (proj0; tt); tt))) 1
(proj1; proj2)) = (proj1; proj2)
reflexivity.Qed.Definitionsig_mor_compat : pr1_mor o sig_functor_mor = pr1'
:= idpath.Endsig_mor.Arguments pr1_mor {A Pmor _ Pidentity Pcompose P_associativity P_left_identity P_right_identity}.Sectionsig_mor_hProp.VariableA : PreCategory.VariablePmor : forallsd, morphism A s d -> Type.Local Notationmor s d := (sig_type (Pmor s d)).Context `(HPmor : forallsdm, IsHProp (Pmor s d m)).VariablePidentity : forallx, @Pmor x x (@identity A _).VariablePcompose : forallsdd'm1m2,
@Pmor d d' m1
-> @Pmor s d m2
-> @Pmor s d' (m1 o m2).Local Notationidentity x := (@identity A x; @Pidentity x).Local Notationcompose m1 m2 := (m1.1 o m2.1; @Pcompose _ _ _ m1.1 m2.1 m1.2 m2.2)%morphism.Local Ltact ex_tac :=
intros;
simpl;
apply path_sigma_uncurried;
simpl;
ex_tac;
apply path_ishprop.
A: PreCategory Pmor: forallsd : A, morphism A s d -> Type HPmor: forall (sd : A) (m : morphism A s d),
IsHProp (Pmor s d m) Pidentity: forallx : A, Pmor x x 1 Pcompose: forall (sdd' : A) (m1 : morphism A d d')
(m2 : morphism A s d),
Pmor d d' m1 ->
Pmor s d m2 -> Pmor s d' (m1 o m2)
forall (x1x2x3x4 : A) (m1 : mor x1 x2)
(m2 : mor x2 x3) (m3 : mor x3 x4),
compose (compose m3 m2) m1 =
compose m3 (compose m2 m1)
A: PreCategory Pmor: forallsd : A, morphism A s d -> Type HPmor: forall (sd : A) (m : morphism A s d),
IsHProp (Pmor s d m) Pidentity: forallx : A, Pmor x x 1 Pcompose: forall (sdd' : A) (m1 : morphism A d d')
(m2 : morphism A s d),
Pmor d d' m1 ->
Pmor s d m2 -> Pmor s d' (m1 o m2)
forall (x1x2x3x4 : A) (m1 : mor x1 x2)
(m2 : mor x2 x3) (m3 : mor x3 x4),
compose (compose m3 m2) m1 =
compose m3 (compose m2 m1)
abstract t ltac:(exists (associativity________))
using P_associativity_on_morphisms_subproof.Defined.
A: PreCategory Pmor: forallsd : A, morphism A s d -> Type HPmor: forall (sd : A) (m : morphism A s d),
IsHProp (Pmor s d m) Pidentity: forallx : A, Pmor x x 1 Pcompose: forall (sdd' : A) (m1 : morphism A d d')
(m2 : morphism A s d),
Pmor d d' m1 ->
Pmor s d m2 -> Pmor s d' (m1 o m2) P_associativity:= P_associativity_on_morphisms_subproof: forall (x1x2x3x4 : A)
(m1 : mor x1 x2) (m2 : mor x2 x3)
(m3 : mor x3 x4),
compose (compose m3 m2) m1 =
compose m3 (compose m2 m1)
forall (ab : A) (f : mor a b),
compose (identity b) f = f
A: PreCategory Pmor: forallsd : A, morphism A s d -> Type HPmor: forall (sd : A) (m : morphism A s d),
IsHProp (Pmor s d m) Pidentity: forallx : A, Pmor x x 1 Pcompose: forall (sdd' : A) (m1 : morphism A d d')
(m2 : morphism A s d),
Pmor d d' m1 ->
Pmor s d m2 -> Pmor s d' (m1 o m2) P_associativity:= P_associativity_on_morphisms_subproof: forall (x1x2x3x4 : A)
(m1 : mor x1 x2) (m2 : mor x2 x3)
(m3 : mor x3 x4),
compose (compose m3 m2) m1 =
compose m3 (compose m2 m1)
forall (ab : A) (f : mor a b),
compose (identity b) f = f
A: PreCategory Pmor: forallsd : A, morphism A s d -> Type HPmor: forall (sd : A) (m : morphism A s d),
IsHProp (Pmor s d m) Pidentity: forallx : A, Pmor x x 1 Pcompose: forall (sdd' : A) (m1 : morphism A d d')
(m2 : morphism A s d),
Pmor d d' m1 ->
Pmor s d m2 -> Pmor s d' (m1 o m2)
forall (ab : A) (f : mor a b),
compose (identity b) f = f
abstract t ltac:(exists (left_identity____))
using P_left_identity_on_morphisms_subproof.Defined.
A: PreCategory Pmor: forallsd : A, morphism A s d -> Type HPmor: forall (sd : A) (m : morphism A s d),
IsHProp (Pmor s d m) Pidentity: forallx : A, Pmor x x 1 Pcompose: forall (sdd' : A) (m1 : morphism A d d')
(m2 : morphism A s d),
Pmor d d' m1 ->
Pmor s d m2 -> Pmor s d' (m1 o m2) P_associativity:= P_associativity_on_morphisms_subproof: forall (x1x2x3x4 : A)
(m1 : mor x1 x2) (m2 : mor x2 x3)
(m3 : mor x3 x4),
compose (compose m3 m2) m1 =
compose m3 (compose m2 m1) P_left_identity:= P_left_identity_on_morphisms_subproof: forall (ab : A) (f : mor a b),
compose (identity b) f = f
forall (ab : A) (f : mor a b),
compose f (identity a) = f
A: PreCategory Pmor: forallsd : A, morphism A s d -> Type HPmor: forall (sd : A) (m : morphism A s d),
IsHProp (Pmor s d m) Pidentity: forallx : A, Pmor x x 1 Pcompose: forall (sdd' : A) (m1 : morphism A d d')
(m2 : morphism A s d),
Pmor d d' m1 ->
Pmor s d m2 -> Pmor s d' (m1 o m2) P_associativity:= P_associativity_on_morphisms_subproof: forall (x1x2x3x4 : A)
(m1 : mor x1 x2) (m2 : mor x2 x3)
(m3 : mor x3 x4),
compose (compose m3 m2) m1 =
compose m3 (compose m2 m1) P_left_identity:= P_left_identity_on_morphisms_subproof: forall (ab : A) (f : mor a b),
compose (identity b) f = f
forall (ab : A) (f : mor a b),
compose f (identity a) = f
A: PreCategory Pmor: forallsd : A, morphism A s d -> Type HPmor: forall (sd : A) (m : morphism A s d),
IsHProp (Pmor s d m) Pidentity: forallx : A, Pmor x x 1 Pcompose: forall (sdd' : A) (m1 : morphism A d d')
(m2 : morphism A s d),
Pmor d d' m1 ->
Pmor s d m2 -> Pmor s d' (m1 o m2)
forall (ab : A) (f : mor a b),
compose f (identity a) = f
abstract t ltac:(exists (right_identity____))
using P_right_identity_on_morphisms_subproof.Defined.(** ** Definition of [sig_mor]-precategory *)Definitionsig_mor : PreCategory
:= Evalcbv delta [P_associativity P_left_identity P_right_identity]
in @sig_mor' A Pmor _ Pidentity Pcompose P_associativity P_left_identity P_right_identity.(** ** First projection functor *)Definitionproj1_sig_mor : Functor sig_mor A
:= pr1_mor.Endsig_mor_hProp.Arguments proj1_sig_mor {A Pmor HPmor Pidentity Pcompose}.