Built with Alectryon. 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 *)Require Import HoTT.Tactics Types.Forall Types.Sigma Basics.Trunc.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 Implicit Arguments.Generalizable All Variables.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 proj0
return ((pr1_type (proj1; proj0); tt) = (proj1; proj0))
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: forallx2 : A, Pmor x2 x2 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 (x2x3x4x5 : A) (m1 : mor x2 x3) (m2 : mor x3 x4)
(m3 : mor x4 x5), 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 (funx2 : sig_type (fun_ : A => Unit) => (pr1_type x2; tt))
idmap
(funx2 : sig_type (fun_ : A => Unit) =>
letx3 := x2 inletproj1 := pr1_type x3 inletproj2 := x3.2inmatch
proj2 as proj0
return ((pr1_type (proj1; proj0); tt) = (proj1; proj0))
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 proj6 return ((pr1_type x; tt) = (pr1_type x; proj6)) 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 proj3 return ((pr1_type x; tt) = (pr1_type x; proj3)) 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 proj3 return ((pr1_type x; tt) = (pr1_type x; proj3)) 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:= letP_associativity_on_morphisms_subproof0 :=
P_associativity_on_morphisms_subproof in
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:= letP_associativity_on_morphisms_subproof0 :=
P_associativity_on_morphisms_subproof in
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:= letP_associativity_on_morphisms_subproof0 :=
P_associativity_on_morphisms_subproof in
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:= letP_left_identity_on_morphisms_subproof0 :=
P_left_identity_on_morphisms_subproof in
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:= letP_associativity_on_morphisms_subproof0 :=
P_associativity_on_morphisms_subproof in
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:= letP_left_identity_on_morphisms_subproof0 :=
P_left_identity_on_morphisms_subproof in
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}.