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.
From HoTT Require Import Basics.From HoTT Require Import Basics.Require Import Types.Require Import Diagrams.Diagram.Require Import Diagrams.Graph.Require Import Diagrams.Cocone.Require Import Colimits.Colimit.(** * Colimit of the dependent sum of a family of diagrams *)(** Given a family of diagrams [D y], and a colimit [Q y] of each diagram, one can consider the diagram of the sigmas of the types of the [D y]s. Then, a colimit of such a diagram is the sigma of the [Q y]s. *)SectionColimitSigma.Context `{Funext} {G : Graph} {Y : Type} (D : Y -> Diagram G).(** The diagram of the sigmas. *)
H: Funext G: Graph Y: Type D: Y -> Diagram G
Diagram G
H: Funext G: Graph Y: Type D: Y -> Diagram G
Diagram G
H: Funext G: Graph Y: Type D: Y -> Diagram G
G -> Type
H: Funext G: Graph Y: Type D: Y -> Diagram G
forallij : G, G i j -> ?obj i -> ?obj j
H: Funext G: Graph Y: Type D: Y -> Diagram G
G -> Type
exact (funi => {y: Y & D y i}).
H: Funext G: Graph Y: Type D: Y -> Diagram G
forallij : G,
G i j ->
(funi0 : G => {y : Y & D y i0}) i -> (funi0 : G => {y : Y & D y i0}) j
H: Funext G: Graph Y: Type D: Y -> Diagram G i, j: G g: G i j x: {y : Y & D y i}
{y : Y & D y j}
exact (x.1; D x.1 _f g x.2).Defined.(** The embedding, for a particular [y], of [D(y)] in the sigma diagram. *)
H: Funext G: Graph Y: Type D: Y -> Diagram G y: Y
DiagramMap (D y) sigma_diagram
H: Funext G: Graph Y: Type D: Y -> Diagram G y: Y
DiagramMap (D y) sigma_diagram
H: Funext G: Graph Y: Type D: Y -> Diagram G y: Y
foralli : G, D y i -> sigma_diagram i
H: Funext G: Graph Y: Type D: Y -> Diagram G y: Y
forall (ij : G) (g : G i j) (x : D y i),
(sigma_diagram _f g) (?DiagramMap_obj i x) =
?DiagramMap_obj j (((D y) _f g) x)
H: Funext G: Graph Y: Type D: Y -> Diagram G y: Y
forall (ij : G) (g : G i j) (x : D y i),
(sigma_diagram _f g) ((fun (i0 : G) (x0 : D y i0) => (y; x0)) i x) =
(fun (i0 : G) (x0 : D y i0) => (y; x0)) j (((D y) _f g) x)
reflexivity.Defined.Context {Q : Y -> Type}.(** The sigma of a family of cocones. *)
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type C: forally : Y, Cocone (D y) (Q y)
Cocone sigma_diagram {x : _ & Q x}
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type C: forally : Y, Cocone (D y) (Q y)
Cocone sigma_diagram {x : _ & Q x}
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type C: forally : Y, Cocone (D y) (Q y) i: G x: {y : Y & D y i}
{x : _ & Q x}
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type C: forally : Y, Cocone (D y) (Q y) i, x: G
forallg : G i x,
(funx0 : {y : Y & D y i} =>
(fun (i0 : G) (x1 : {y : Y & D y i0}) => ?Goal@{i:=i0; x:=x1}) x
(x0.1; ((D x0.1) _f g) x0.2)) ==
(fun (i0 : G) (x0 : {y : Y & D y i0}) => ?Goal@{i:=i0; x:=x0}) i
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type C: forally : Y, Cocone (D y) (Q y) i, x: G
forallg : G i x,
(funx0 : {y : Y & D y i} =>
(fun (i0 : G) (x1 : {y : Y & D y i0}) => (x1.1; C x1.1 i0 x1.2)) x
(x0.1; ((D x0.1) _f g) x0.2)) ==
(fun (i0 : G) (x0 : {y : Y & D y i0}) => (x0.1; C x0.1 i0 x0.2)) i
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type C: forally : Y, Cocone (D y) (Q y) i, x: G g: G i x x': {y : Y & D y i}
(x'.1; C x'.1 x (((D x'.1) _f g) x'.2)) = (x'.1; C x'.1 i x'.2)
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type C: forally : Y, Cocone (D y) (Q y) i, x: G g: G i x x': {y : Y & D y i}
x'.1 = x'.1
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type C: forally : Y, Cocone (D y) (Q y) i, x: G g: G i x x': {y : Y & D y i}
transport Q ?p (C x'.1 x (((D x'.1) _f g) x'.2)) = C x'.1 i x'.2
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type C: forally : Y, Cocone (D y) (Q y) i, x: G g: G i x x': {y : Y & D y i}
transport Q 1 (C x'.1 x (((D x'.1) _f g) x'.2)) = C x'.1 i x'.2
apply legs_comm.Defined.(** The main result: [sig Q] is a colimit of the diagram of sigma types. *)
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally : Y, IsColimit (D y) (Q y)
IsColimit sigma_diagram {x : _ & Q x}
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally : Y, IsColimit (D y) (Q y)
IsColimit sigma_diagram {x : _ & Q x}
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally : Y, IsColimit (D y) (Q y) SigmaC:= sigma_cocone (funy : Y => HQ y): Cocone sigma_diagram {x : _ & Q x}
IsColimit sigma_diagram {x : _ & Q x}
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally : Y, IsColimit (D y) (Q y) SigmaC:= sigma_cocone (funy : Y => HQ y): Cocone sigma_diagram {x : _ & Q x}
UniversalCocone SigmaC
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally : Y, IsColimit (D y) (Q y) SigmaC:= sigma_cocone (funy : Y => HQ y): Cocone sigma_diagram {x : _ & Q x}
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally : Y, IsColimit (D y) (Q y) SigmaC:= sigma_cocone (funy : Y => HQ y): Cocone sigma_diagram {x : _ & Q x} X: Type CX: Cocone sigma_diagram X CXy:= funy : Y => cocone_precompose (sigma_diagram_map y) CX: forally : Y, Cocone (D y) X
foralli : G,
(funx : {y : Y & D y i} =>
cocone_postcompose_inv (HQ x.1) (CXy x.1) (HQ x.1 i x.2)) ==
CX i
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally : Y, IsColimit (D y) (Q y) SigmaC:= sigma_cocone (funy : Y => HQ y): Cocone sigma_diagram {x : _ & Q x} X: Type CX: Cocone sigma_diagram X CXy:= funy : Y => cocone_precompose (sigma_diagram_map y) CX: forally : Y, Cocone (D y) X
forall (ij : G) (g : G i j) (x : {y : Y & D y i}),
ap
(funx0 : {x : _ & Q x} => cocone_postcompose_inv (HQ x0.1) (CXy x0.1) x0.2)
(path_sigma' Q 1 (legs_comm (HQ x.1) i j g x.2)) @
?Goal i x = ?Goal j (x.1; ((D x.1) _f g) x.2) @ legs_comm CX i j g x
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally : Y, IsColimit (D y) (Q y) SigmaC:= sigma_cocone (funy : Y => HQ y): Cocone sigma_diagram {x : _ & Q x} X: Type CX: Cocone sigma_diagram X CXy:= funy : Y => cocone_precompose (sigma_diagram_map y) CX: forally : Y, Cocone (D y) X
foralli : G,
(funx : {y : Y & D y i} =>
cocone_postcompose_inv (HQ x.1) (CXy x.1) (HQ x.1 i x.2)) ==
CX i
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally : Y, IsColimit (D y) (Q y) SigmaC:= sigma_cocone (funy : Y => HQ y): Cocone sigma_diagram {x : _ & Q x} X: Type CX: Cocone sigma_diagram X CXy:= funy : Y => cocone_precompose (sigma_diagram_map y) CX: forally : Y, Cocone (D y) X i: G x: {y : Y & D y i}
cocone_postcompose_inv (HQ x.1) (CXy x.1) (HQ x.1 i x.2) = CX i x
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally : Y, IsColimit (D y) (Q y) SigmaC:= sigma_cocone (funy : Y => HQ y): Cocone sigma_diagram {x : _ & Q x} X: Type CX: Cocone sigma_diagram X CXy:= funy : Y => cocone_precompose (sigma_diagram_map y) CX: forally : Y, Cocone (D y) X i: G x: {y : Y & D y i}
cocone_postcompose (HQ x.1) (cocone_postcompose_inv (HQ x.1) (CXy x.1)) i x.2 =
CX i x
exact (ap10 (apD10 (ap legs (eisretr
(cocone_postcompose (HQ x.1)) (CXy _))) i) x.2).
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally : Y, IsColimit (D y) (Q y) SigmaC:= sigma_cocone (funy : Y => HQ y): Cocone sigma_diagram {x : _ & Q x} X: Type CX: Cocone sigma_diagram X CXy:= funy : Y => cocone_precompose (sigma_diagram_map y) CX: forally : Y, Cocone (D y) X
forall (ij : G) (g : G i j) (x : {y : Y & D y i}),
ap
(funx0 : {x : _ & Q x} => cocone_postcompose_inv (HQ x0.1) (CXy x0.1) x0.2)
(path_sigma' Q 1 (legs_comm (HQ x.1) i j g x.2)) @
(funi0 : G =>
(funx0 : {y : Y & D y i0} =>
ap10
(apD10 (ap legs (eisretr (cocone_postcompose (HQ x0.1)) (CXy x0.1))) i0)
x0.2)
:
(funx0 : {y : Y & D y i0} =>
cocone_postcompose_inv (HQ x0.1) (CXy x0.1) (HQ x0.1 i0 x0.2)) ==
CX i0) i x =
(funi0 : G =>
(funx0 : {y : Y & D y i0} =>
ap10
(apD10 (ap legs (eisretr (cocone_postcompose (HQ x0.1)) (CXy x0.1))) i0)
x0.2)
:
(funx0 : {y : Y & D y i0} =>
cocone_postcompose_inv (HQ x0.1) (CXy x0.1) (HQ x0.1 i0 x0.2)) ==
CX i0) j (x.1; ((D x.1) _f g) x.2) @
legs_comm CX i j g x
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally0 : Y, IsColimit (D y0) (Q y0) SigmaC:= sigma_cocone (funy0 : Y => HQ y0): Cocone sigma_diagram {x : _ & Q x} X: Type CX: Cocone sigma_diagram X CXy:= funy0 : Y => cocone_precompose (sigma_diagram_map y0) CX: forally0 : Y, Cocone (D y0) X i, j: G g: G i j y: Y x: D y i
ap
(funx0 : {x : _ & Q x} => cocone_postcompose_inv (HQ x0.1) (CXy x0.1) x0.2)
(path_sigma' Q 1 (legs_comm (HQ y) i j g x)) @
ap10 (apD10 (ap legs (eisretr (cocone_postcompose (HQ y)) (CXy y))) i) x =
ap10 (apD10 (ap legs (eisretr (cocone_postcompose (HQ y)) (CXy y))) j)
(((D y) _f g) x) @
legs_comm CX i j g (y; x)
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally0 : Y, IsColimit (D y0) (Q y0) SigmaC:= sigma_cocone (funy0 : Y => HQ y0): Cocone sigma_diagram {x : _ & Q x} X: Type CX: Cocone sigma_diagram X CXy:= funy0 : Y => cocone_precompose (sigma_diagram_map y0) CX: forally0 : Y, Cocone (D y0) X i, j: G g: G i j y: Y x: D y i py:= eisretr (cocone_postcompose (HQ y)) (CXy y): (cocone_postcompose (HQ y) o (cocone_postcompose (HQ y))^-1) (CXy y) =
idmap (CXy y)
ap
(funx0 : {x : _ & Q x} => cocone_postcompose_inv (HQ x0.1) (CXy x0.1) x0.2)
(path_sigma' Q 1 (legs_comm (HQ y) i j g x)) @
ap10 (apD10 (ap legs py) i) x =
ap10 (apD10 (ap legs py) j) (((D y) _f g) x) @ legs_comm CX i j g (y; x)
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally0 : Y, IsColimit (D y0) (Q y0) SigmaC:= sigma_cocone (funy0 : Y => HQ y0): Cocone sigma_diagram {x : _ & Q x} X: Type CX: Cocone sigma_diagram X CXy:= funy0 : Y => cocone_precompose (sigma_diagram_map y0) CX: forally0 : Y, Cocone (D y0) X i, j: G g: G i j y: Y x: D y i py:= eisretr (cocone_postcompose (HQ y)) (CXy y): (cocone_postcompose (HQ y) o (cocone_postcompose (HQ y))^-1) (CXy y) =
idmap (CXy y) py1:= ap legs py: cocone_postcompose (HQ y) ((cocone_postcompose (HQ y))^-1 (CXy y)) = CXy y
ap
(funx0 : {x : _ & Q x} => cocone_postcompose_inv (HQ x0.1) (CXy x0.1) x0.2)
(path_sigma' Q 1 (legs_comm (HQ y) i j g x)) @
ap10 (apD10 py1 i) x =
ap10 (apD10 py1 j) (((D y) _f g) x) @ legs_comm CX i j g (y; x)
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally0 : Y, IsColimit (D y0) (Q y0) SigmaC:= sigma_cocone (funy0 : Y => HQ y0): Cocone sigma_diagram {x : _ & Q x} X: Type CX: Cocone sigma_diagram X CXy:= funy0 : Y => cocone_precompose (sigma_diagram_map y0) CX: forally0 : Y, Cocone (D y0) X i, j: G g: G i j y: Y x: D y i py:= eisretr (cocone_postcompose (HQ y)) (CXy y): (cocone_postcompose (HQ y) o (cocone_postcompose (HQ y))^-1) (CXy y) =
idmap (CXy y) py1:= ap legs py: cocone_postcompose (HQ y) ((cocone_postcompose (HQ y))^-1 (CXy y)) = CXy y py2: transport
(funC : Cocone (D y) X =>
forall (i0j0 : G) (g0 : G i0 j0), C j0 o (D y) _f g0 == C i0)
py
(legs_comm
(cocone_postcompose (HQ y) ((cocone_postcompose (HQ y))^-1 (CXy y)))) =
legs_comm (CXy y)
ap
(funx0 : {x : _ & Q x} => cocone_postcompose_inv (HQ x0.1) (CXy x0.1) x0.2)
(path_sigma' Q 1 (legs_comm (HQ y) i j g x)) @
ap10 (apD10 py1 i) x =
ap10 (apD10 py1 j) (((D y) _f g) x) @ legs_comm CX i j g (y; x)
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally0 : Y, IsColimit (D y0) (Q y0) SigmaC:= sigma_cocone (funy0 : Y => HQ y0): Cocone sigma_diagram {x : _ & Q x} X: Type CX: Cocone sigma_diagram X CXy:= funy0 : Y => cocone_precompose (sigma_diagram_map y0) CX: forally0 : Y, Cocone (D y0) X i, j: G g: G i j y: Y x: D y i py:= eisretr (cocone_postcompose (HQ y)) (CXy y): cocone_postcompose (HQ y) ((cocone_postcompose (HQ y))^-1 (CXy y)) = CXy y py1:= ap legs py: (fun (i0 : G) (x0 : D y i0) =>
(cocone_postcompose (HQ y))^-1 (CXy y) (HQ y i0 x0)) =
(fun (i0 : G) (x0 : D y i0) => CX i0 (y; x0)) py2: transport
(funC : Cocone (D y) X =>
forall (i0j0 : G) (g0 : G i0 j0),
(funx0 : D y i0 => C j0 (((D y) _f g0) x0)) == C i0)
py
(fun (i0j0 : G) (g0 : G i0 j0) (x0 : D y i0) =>
ap ((cocone_postcompose (HQ y))^-1 (CXy y)) (legs_comm (HQ y) i0 j0 g0 x0)) =
(fun (i0j0 : G) (g0 : G i0 j0) (x0 : D y i0) =>
1 @ legs_comm CX i0 j0 g0 (y; x0))
ap
(funx0 : {x : _ & Q x} => cocone_postcompose_inv (HQ x0.1) (CXy x0.1) x0.2)
(path_sigma' Q 1 (legs_comm (HQ y) i j g x)) @
ap10 (apD10 py1 i) x =
ap10 (apD10 py1 j) (((D y) _f g) x) @ legs_comm CX i j g (y; x)
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally0 : Y, IsColimit (D y0) (Q y0) SigmaC:= sigma_cocone (funy0 : Y => HQ y0): Cocone sigma_diagram {x : _ & Q x} X: Type CX: Cocone sigma_diagram X CXy:= funy0 : Y => cocone_precompose (sigma_diagram_map y0) CX: forally0 : Y, Cocone (D y0) X i, j: G g: G i j y: Y x: D y i py:= eisretr (cocone_postcompose (HQ y)) (CXy y): cocone_postcompose (HQ y) ((cocone_postcompose (HQ y))^-1 (CXy y)) = CXy y py1:= ap legs py: (fun (i0 : G) (x0 : D y i0) =>
(cocone_postcompose (HQ y))^-1 (CXy y) (HQ y i0 x0)) =
(fun (i0 : G) (x0 : D y i0) => CX i0 (y; x0)) py2: (funy0 : G =>
transport
(funx0 : Cocone (D y) X =>
forall (j0 : G) (g0 : G y0 j0),
(funx1 : D y y0 => x0 j0 (((D y) _f g0) x1)) == x0 y0)
py
(fun (j0 : G) (g0 : G y0 j0) (x0 : D y y0) =>
ap ((cocone_postcompose (HQ y))^-1 (CXy y))
(legs_comm (HQ y) y0 j0 g0 x0))) =
(fun (i0j0 : G) (g0 : G i0 j0) (x0 : D y i0) =>
1 @ legs_comm CX i0 j0 g0 (y; x0))
ap
(funx0 : {x : _ & Q x} => cocone_postcompose_inv (HQ x0.1) (CXy x0.1) x0.2)
(path_sigma' Q 1 (legs_comm (HQ y) i j g x)) @
ap10 (apD10 py1 i) x =
ap10 (apD10 py1 j) (((D y) _f g) x) @ legs_comm CX i j g (y; x)
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally0 : Y, IsColimit (D y0) (Q y0) SigmaC:= sigma_cocone (funy0 : Y => HQ y0): Cocone sigma_diagram {x : _ & Q x} X: Type CX: Cocone sigma_diagram X CXy:= funy0 : Y => cocone_precompose (sigma_diagram_map y0) CX: forally0 : Y, Cocone (D y0) X i, j: G g: G i j y: Y x: D y i py:= eisretr (cocone_postcompose (HQ y)) (CXy y): cocone_postcompose (HQ y) ((cocone_postcompose (HQ y))^-1 (CXy y)) = CXy y py1:= ap legs py: (fun (i0 : G) (x0 : D y i0) =>
(cocone_postcompose (HQ y))^-1 (CXy y) (HQ y i0 x0)) =
(fun (i0 : G) (x0 : D y i0) => CX i0 (y; x0)) py2: transport
(funx0 : Cocone (D y) X =>
forall (j0 : G) (g0 : G i j0),
(funx1 : D y i => x0 j0 (((D y) _f g0) x1)) == x0 i)
py
(fun (j0 : G) (g0 : G i j0) (x0 : D y i) =>
ap ((cocone_postcompose (HQ y))^-1 (CXy y)) (legs_comm (HQ y) i j0 g0 x0)) =
(fun (j0 : G) (g0 : G i j0) (x0 : D y i) => 1 @ legs_comm CX i j0 g0 (y; x0))
ap
(funx0 : {x : _ & Q x} => cocone_postcompose_inv (HQ x0.1) (CXy x0.1) x0.2)
(path_sigma' Q 1 (legs_comm (HQ y) i j g x)) @
ap10 (apD10 py1 i) x =
ap10 (apD10 py1 j) (((D y) _f g) x) @ legs_comm CX i j g (y; x)
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally0 : Y, IsColimit (D y0) (Q y0) SigmaC:= sigma_cocone (funy0 : Y => HQ y0): Cocone sigma_diagram {x : _ & Q x} X: Type CX: Cocone sigma_diagram X CXy:= funy0 : Y => cocone_precompose (sigma_diagram_map y0) CX: forally0 : Y, Cocone (D y0) X i, j: G g: G i j y: Y x: D y i py:= eisretr (cocone_postcompose (HQ y)) (CXy y): cocone_postcompose (HQ y) ((cocone_postcompose (HQ y))^-1 (CXy y)) = CXy y py1:= ap legs py: (fun (i0 : G) (x0 : D y i0) =>
(cocone_postcompose (HQ y))^-1 (CXy y) (HQ y i0 x0)) =
(fun (i0 : G) (x0 : D y i0) => CX i0 (y; x0)) py2: (funy0 : G =>
transport
(funx0 : Cocone (D y) X =>
forallg0 : G i y0, (funx1 : D y i => x0 y0 (((D y) _f g0) x1)) == x0 i)
py
(fun (g0 : G i y0) (x0 : D y i) =>
ap ((cocone_postcompose (HQ y))^-1 (CXy y)) (legs_comm (HQ y) i y0 g0 x0))) =
(fun (j0 : G) (g0 : G i j0) (x0 : D y i) => 1 @ legs_comm CX i j0 g0 (y; x0))
ap
(funx0 : {x : _ & Q x} => cocone_postcompose_inv (HQ x0.1) (CXy x0.1) x0.2)
(path_sigma' Q 1 (legs_comm (HQ y) i j g x)) @
ap10 (apD10 py1 i) x =
ap10 (apD10 py1 j) (((D y) _f g) x) @ legs_comm CX i j g (y; x)
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally0 : Y, IsColimit (D y0) (Q y0) SigmaC:= sigma_cocone (funy0 : Y => HQ y0): Cocone sigma_diagram {x : _ & Q x} X: Type CX: Cocone sigma_diagram X CXy:= funy0 : Y => cocone_precompose (sigma_diagram_map y0) CX: forally0 : Y, Cocone (D y0) X i, j: G g: G i j y: Y x: D y i py:= eisretr (cocone_postcompose (HQ y)) (CXy y): cocone_postcompose (HQ y) ((cocone_postcompose (HQ y))^-1 (CXy y)) = CXy y py1:= ap legs py: (fun (i0 : G) (x0 : D y i0) =>
(cocone_postcompose (HQ y))^-1 (CXy y) (HQ y i0 x0)) =
(fun (i0 : G) (x0 : D y i0) => CX i0 (y; x0)) py2: transport
(funx0 : Cocone (D y) X =>
forallg0 : G i j, (funx1 : D y i => x0 j (((D y) _f g0) x1)) == x0 i)
py
(fun (g0 : G i j) (x0 : D y i) =>
ap ((cocone_postcompose (HQ y))^-1 (CXy y)) (legs_comm (HQ y) i j g0 x0)) =
(fun (g0 : G i j) (x0 : D y i) => 1 @ legs_comm CX i j g0 (y; x0))
ap
(funx0 : {x : _ & Q x} => cocone_postcompose_inv (HQ x0.1) (CXy x0.1) x0.2)
(path_sigma' Q 1 (legs_comm (HQ y) i j g x)) @
ap10 (apD10 py1 i) x =
ap10 (apD10 py1 j) (((D y) _f g) x) @ legs_comm CX i j g (y; x)
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally0 : Y, IsColimit (D y0) (Q y0) SigmaC:= sigma_cocone (funy0 : Y => HQ y0): Cocone sigma_diagram {x : _ & Q x} X: Type CX: Cocone sigma_diagram X CXy:= funy0 : Y => cocone_precompose (sigma_diagram_map y0) CX: forally0 : Y, Cocone (D y0) X i, j: G g: G i j y: Y x: D y i py:= eisretr (cocone_postcompose (HQ y)) (CXy y): cocone_postcompose (HQ y) ((cocone_postcompose (HQ y))^-1 (CXy y)) = CXy y py1:= ap legs py: (fun (i0 : G) (x0 : D y i0) =>
(cocone_postcompose (HQ y))^-1 (CXy y) (HQ y i0 x0)) =
(fun (i0 : G) (x0 : D y i0) => CX i0 (y; x0)) py2: (funy0 : G i j =>
transport
(funx0 : Cocone (D y) X =>
(funx1 : D y i => x0 j (((D y) _f y0) x1)) == x0 i)
py
(funx0 : D y i =>
ap ((cocone_postcompose (HQ y))^-1 (CXy y)) (legs_comm (HQ y) i j y0 x0))) =
(fun (g0 : G i j) (x0 : D y i) => 1 @ legs_comm CX i j g0 (y; x0))
ap
(funx0 : {x : _ & Q x} => cocone_postcompose_inv (HQ x0.1) (CXy x0.1) x0.2)
(path_sigma' Q 1 (legs_comm (HQ y) i j g x)) @
ap10 (apD10 py1 i) x =
ap10 (apD10 py1 j) (((D y) _f g) x) @ legs_comm CX i j g (y; x)
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally0 : Y, IsColimit (D y0) (Q y0) SigmaC:= sigma_cocone (funy0 : Y => HQ y0): Cocone sigma_diagram {x : _ & Q x} X: Type CX: Cocone sigma_diagram X CXy:= funy0 : Y => cocone_precompose (sigma_diagram_map y0) CX: forally0 : Y, Cocone (D y0) X i, j: G g: G i j y: Y x: D y i py:= eisretr (cocone_postcompose (HQ y)) (CXy y): cocone_postcompose (HQ y) ((cocone_postcompose (HQ y))^-1 (CXy y)) = CXy y py1:= ap legs py: (fun (i0 : G) (x0 : D y i0) =>
(cocone_postcompose (HQ y))^-1 (CXy y) (HQ y i0 x0)) =
(fun (i0 : G) (x0 : D y i0) => CX i0 (y; x0)) py2: transport
(funx0 : Cocone (D y) X =>
(funx1 : D y i => x0 j (((D y) _f g) x1)) == x0 i)
py
(funx0 : D y i =>
ap ((cocone_postcompose (HQ y))^-1 (CXy y)) (legs_comm (HQ y) i j g x0)) =
(funx0 : D y i => 1 @ legs_comm CX i j g (y; x0))
ap
(funx0 : {x : _ & Q x} => cocone_postcompose_inv (HQ x0.1) (CXy x0.1) x0.2)
(path_sigma' Q 1 (legs_comm (HQ y) i j g x)) @
ap10 (apD10 py1 i) x =
ap10 (apD10 py1 j) (((D y) _f g) x) @ legs_comm CX i j g (y; x)
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally0 : Y, IsColimit (D y0) (Q y0) SigmaC:= sigma_cocone (funy0 : Y => HQ y0): Cocone sigma_diagram {x : _ & Q x} X: Type CX: Cocone sigma_diagram X CXy:= funy0 : Y => cocone_precompose (sigma_diagram_map y0) CX: forally0 : Y, Cocone (D y0) X i, j: G g: G i j y: Y x: D y i py:= eisretr (cocone_postcompose (HQ y)) (CXy y): cocone_postcompose (HQ y) ((cocone_postcompose (HQ y))^-1 (CXy y)) = CXy y py1:= ap legs py: (fun (i0 : G) (x0 : D y i0) =>
(cocone_postcompose (HQ y))^-1 (CXy y) (HQ y i0 x0)) =
(fun (i0 : G) (x0 : D y i0) => CX i0 (y; x0)) py2: (funy0 : D y i =>
transport (funx0 : Cocone (D y) X => x0 j (((D y) _f g) y0) = x0 i y0) py
(ap ((cocone_postcompose (HQ y))^-1 (CXy y)) (legs_comm (HQ y) i j g y0))) =
(funx0 : D y i => 1 @ legs_comm CX i j g (y; x0))
ap
(funx0 : {x : _ & Q x} => cocone_postcompose_inv (HQ x0.1) (CXy x0.1) x0.2)
(path_sigma' Q 1 (legs_comm (HQ y) i j g x)) @
ap10 (apD10 py1 i) x =
ap10 (apD10 py1 j) (((D y) _f g) x) @ legs_comm CX i j g (y; x)
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally0 : Y, IsColimit (D y0) (Q y0) SigmaC:= sigma_cocone (funy0 : Y => HQ y0): Cocone sigma_diagram {x : _ & Q x} X: Type CX: Cocone sigma_diagram X CXy:= funy0 : Y => cocone_precompose (sigma_diagram_map y0) CX: forally0 : Y, Cocone (D y0) X i, j: G g: G i j y: Y x: D y i py:= eisretr (cocone_postcompose (HQ y)) (CXy y): cocone_postcompose (HQ y) ((cocone_postcompose (HQ y))^-1 (CXy y)) = CXy y py1:= ap legs py: (fun (i0 : G) (x0 : D y i0) =>
(cocone_postcompose (HQ y))^-1 (CXy y) (HQ y i0 x0)) =
(fun (i0 : G) (x0 : D y i0) => CX i0 (y; x0)) py2: transport (funx0 : Cocone (D y) X => x0 j (((D y) _f g) x) = x0 i x) py
(ap ((cocone_postcompose (HQ y))^-1 (CXy y)) (legs_comm (HQ y) i j g x)) =
1 @ legs_comm CX i j g (y; x)
ap
(funx0 : {x : _ & Q x} => cocone_postcompose_inv (HQ x0.1) (CXy x0.1) x0.2)
(path_sigma' Q 1 (legs_comm (HQ y) i j g x)) @
ap10 (apD10 py1 i) x =
ap10 (apD10 py1 j) (((D y) _f g) x) @ legs_comm CX i j g (y; x)
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally0 : Y, IsColimit (D y0) (Q y0) SigmaC:= sigma_cocone (funy0 : Y => HQ y0): Cocone sigma_diagram {x : _ & Q x} X: Type CX: Cocone sigma_diagram X CXy:= funy0 : Y => cocone_precompose (sigma_diagram_map y0) CX: forally0 : Y, Cocone (D y0) X i, j: G g: G i j y: Y x: D y i py:= eisretr (cocone_postcompose (HQ y)) (CXy y): cocone_postcompose (HQ y) ((cocone_postcompose (HQ y))^-1 (CXy y)) = CXy y py1:= ap legs py: (fun (i0 : G) (x0 : D y i0) =>
(cocone_postcompose (HQ y))^-1 (CXy y) (HQ y i0 x0)) =
(fun (i0 : G) (x0 : D y i0) => CX i0 (y; x0)) py2: ((ap (funx0 : Cocone (D y) X => x0 j (((D y) _f g) x)) py)^ @
ap ((cocone_postcompose (HQ y))^-1 (CXy y)) (legs_comm (HQ y) i j g x)) @
ap (funx0 : Cocone (D y) X => x0 i x) py = 1 @ legs_comm CX i j g (y; x)
ap
(funx0 : {x : _ & Q x} => cocone_postcompose_inv (HQ x0.1) (CXy x0.1) x0.2)
(path_sigma' Q 1 (legs_comm (HQ y) i j g x)) @
ap10 (apD10 py1 i) x =
ap10 (apD10 py1 j) (((D y) _f g) x) @ legs_comm CX i j g (y; x)
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally0 : Y, IsColimit (D y0) (Q y0) SigmaC:= sigma_cocone (funy0 : Y => HQ y0): Cocone sigma_diagram {x : _ & Q x} X: Type CX: Cocone sigma_diagram X CXy:= funy0 : Y => cocone_precompose (sigma_diagram_map y0) CX: forally0 : Y, Cocone (D y0) X i, j: G g: G i j y: Y x: D y i py:= eisretr (cocone_postcompose (HQ y)) (CXy y): cocone_postcompose (HQ y) ((cocone_postcompose (HQ y))^-1 (CXy y)) = CXy y py1:= ap legs py: (fun (i0 : G) (x0 : D y i0) =>
(cocone_postcompose (HQ y))^-1 (CXy y) (HQ y i0 x0)) =
(fun (i0 : G) (x0 : D y i0) => CX i0 (y; x0)) py2: (ap (funx0 : Cocone (D y) X => x0 j (((D y) _f g) x)) py)^ @
(ap ((cocone_postcompose (HQ y))^-1 (CXy y)) (legs_comm (HQ y) i j g x) @
ap (funx0 : Cocone (D y) X => x0 i x) py) =
legs_comm CX i j g (y; x)
ap
(funx0 : {x : _ & Q x} => cocone_postcompose_inv (HQ x0.1) (CXy x0.1) x0.2)
(path_sigma' Q 1 (legs_comm (HQ y) i j g x)) @
ap10 (apD10 py1 i) x =
ap10 (apD10 py1 j) (((D y) _f g) x) @ legs_comm CX i j g (y; x)
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally0 : Y, IsColimit (D y0) (Q y0) SigmaC:= sigma_cocone (funy0 : Y => HQ y0): Cocone sigma_diagram {x : _ & Q x} X: Type CX: Cocone sigma_diagram X CXy:= funy0 : Y => cocone_precompose (sigma_diagram_map y0) CX: forally0 : Y, Cocone (D y0) X i, j: G g: G i j y: Y x: D y i py:= eisretr (cocone_postcompose (HQ y)) (CXy y): cocone_postcompose (HQ y) ((cocone_postcompose (HQ y))^-1 (CXy y)) = CXy y py1:= ap legs py: (fun (i0 : G) (x0 : D y i0) =>
(cocone_postcompose (HQ y))^-1 (CXy y) (HQ y i0 x0)) =
(fun (i0 : G) (x0 : D y i0) => CX i0 (y; x0)) py2: ap ((cocone_postcompose (HQ y))^-1 (CXy y)) (legs_comm (HQ y) i j g x) @
ap (funx0 : Cocone (D y) X => x0 i x) py =
ap (funx0 : Cocone (D y) X => x0 j (((D y) _f g) x)) py @
legs_comm CX i j g (y; x)
ap
(funx0 : {x : _ & Q x} => cocone_postcompose_inv (HQ x0.1) (CXy x0.1) x0.2)
(path_sigma' Q 1 (legs_comm (HQ y) i j g x)) @
ap10 (apD10 py1 i) x =
ap10 (apD10 py1 j) (((D y) _f g) x) @ legs_comm CX i j g (y; x)
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally0 : Y, IsColimit (D y0) (Q y0) SigmaC:= sigma_cocone (funy0 : Y => HQ y0): Cocone sigma_diagram {x : _ & Q x} X: Type CX: Cocone sigma_diagram X CXy:= funy0 : Y => cocone_precompose (sigma_diagram_map y0) CX: forally0 : Y, Cocone (D y0) X i, j: G g: G i j y: Y x: D y i py:= eisretr (cocone_postcompose (HQ y)) (CXy y): cocone_postcompose (HQ y) ((cocone_postcompose (HQ y))^-1 (CXy y)) = CXy y py1:= ap legs py: (fun (i0 : G) (x0 : D y i0) =>
(cocone_postcompose (HQ y))^-1 (CXy y) (HQ y i0 x0)) =
(fun (i0 : G) (x0 : D y i0) => CX i0 (y; x0)) py2: ap ((cocone_postcompose (HQ y))^-1 (CXy y)) (legs_comm (HQ y) i j g x) @
ap (funx0 : Cocone (D y) X => x0 i x) py =
ap (funx0 : Cocone (D y) X => x0 j (((D y) _f g) x)) py @
legs_comm CX i j g (y; x)
ap (funz : Q y => cocone_postcompose_inv (HQ y) (CXy y) z)
(legs_comm (HQ y) i j g x) @
ap10 (apD10 py1 i) x =
ap10 (apD10 py1 j) (((D y) _f g) x) @ legs_comm CX i j g (y; x)
(* Set Printing Coercions. (* to understand what happens *) *)
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally0 : Y, IsColimit (D y0) (Q y0) SigmaC:= sigma_cocone (funy0 : Y => HQ y0): Cocone sigma_diagram {x : _ & Q x} X: Type CX: Cocone sigma_diagram X CXy:= funy0 : Y => cocone_precompose (sigma_diagram_map y0) CX: forally0 : Y, Cocone (D y0) X i, j: G g: G i j y: Y x: D y i py:= eisretr (cocone_postcompose (HQ y)) (CXy y): cocone_postcompose (HQ y) ((cocone_postcompose (HQ y))^-1 (CXy y)) = CXy y py2: ap ((cocone_postcompose (HQ y))^-1 (CXy y)) (legs_comm (HQ y) i j g x) @
ap (funx0 : Cocone (D y) X => x0 i x) py =
ap (funx0 : Cocone (D y) X => x0 j (((D y) _f g) x)) py @
legs_comm CX i j g (y; x)
ap (funz : Q y => cocone_postcompose_inv (HQ y) (CXy y) z)
(legs_comm (HQ y) i j g x) @
ap10 (apD10 (ap legs py) i) x =
ap10 (apD10 (ap legs py) j) (((D y) _f g) x) @ legs_comm CX i j g (y; x)
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally0 : Y, IsColimit (D y0) (Q y0) SigmaC:= sigma_cocone (funy0 : Y => HQ y0): Cocone sigma_diagram {x : _ & Q x} X: Type CX: Cocone sigma_diagram X CXy:= funy0 : Y => cocone_precompose (sigma_diagram_map y0) CX: forally0 : Y, Cocone (D y0) X i, j: G g: G i j y: Y x: D y i py:= eisretr (cocone_postcompose (HQ y)) (CXy y): cocone_postcompose (HQ y) ((cocone_postcompose (HQ y))^-1 (CXy y)) = CXy y py2: ap ((cocone_postcompose (HQ y))^-1 (CXy y)) (legs_comm (HQ y) i j g x) @
ap (funx0 : Cocone (D y) X => x0 i x) py =
ap (funx0 : Cocone (D y) X => x0 j (((D y) _f g) x)) py @
legs_comm CX i j g (y; x)
ap (funz : Q y => cocone_postcompose_inv (HQ y) (CXy y) z)
(legs_comm (HQ y) i j g x) @
ap10 (apD10 (ap legs py) i) x = ?Goal
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally0 : Y, IsColimit (D y0) (Q y0) SigmaC:= sigma_cocone (funy0 : Y => HQ y0): Cocone sigma_diagram {x : _ & Q x} X: Type CX: Cocone sigma_diagram X CXy:= funy0 : Y => cocone_precompose (sigma_diagram_map y0) CX: forally0 : Y, Cocone (D y0) X i, j: G g: G i j y: Y x: D y i py:= eisretr (cocone_postcompose (HQ y)) (CXy y): cocone_postcompose (HQ y) ((cocone_postcompose (HQ y))^-1 (CXy y)) = CXy y py2: ap ((cocone_postcompose (HQ y))^-1 (CXy y)) (legs_comm (HQ y) i j g x) @
ap (funx0 : Cocone (D y) X => x0 i x) py =
ap (funx0 : Cocone (D y) X => x0 j (((D y) _f g) x)) py @
legs_comm CX i j g (y; x)
?Goal =
ap10 (apD10 (ap legs py) j) (((D y) _f g) x) @ legs_comm CX i j g (y; x)
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally0 : Y, IsColimit (D y0) (Q y0) SigmaC:= sigma_cocone (funy0 : Y => HQ y0): Cocone sigma_diagram {x : _ & Q x} X: Type CX: Cocone sigma_diagram X CXy:= funy0 : Y => cocone_precompose (sigma_diagram_map y0) CX: forally0 : Y, Cocone (D y0) X i, j: G g: G i j y: Y x: D y i py:= eisretr (cocone_postcompose (HQ y)) (CXy y): cocone_postcompose (HQ y) ((cocone_postcompose (HQ y))^-1 (CXy y)) = CXy y py2: ap ((cocone_postcompose (HQ y))^-1 (CXy y)) (legs_comm (HQ y) i j g x) @
ap (funx0 : Cocone (D y) X => x0 i x) py =
ap (funx0 : Cocone (D y) X => x0 j (((D y) _f g) x)) py @
legs_comm CX i j g (y; x)
ap (funz : Q y => cocone_postcompose_inv (HQ y) (CXy y) z)
(legs_comm (HQ y) i j g x) @
ap10 (apD10 (ap legs py) i) x = ?Goal
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally0 : Y, IsColimit (D y0) (Q y0) SigmaC:= sigma_cocone (funy0 : Y => HQ y0): Cocone sigma_diagram {x : _ & Q x} X: Type CX: Cocone sigma_diagram X CXy:= funy0 : Y => cocone_precompose (sigma_diagram_map y0) CX: forally0 : Y, Cocone (D y0) X i, j: G g: G i j y: Y x: D y i py:= eisretr (cocone_postcompose (HQ y)) (CXy y): cocone_postcompose (HQ y) ((cocone_postcompose (HQ y))^-1 (CXy y)) = CXy y py2: ap ((cocone_postcompose (HQ y))^-1 (CXy y)) (legs_comm (HQ y) i j g x) @
ap (funx0 : Cocone (D y) X => x0 i x) py =
ap (funx0 : Cocone (D y) X => x0 j (((D y) _f g) x)) py @
legs_comm CX i j g (y; x)
ap (funz : Q y => cocone_postcompose_inv (HQ y) (CXy y) z)
(legs_comm (HQ y) i j g x) @
ap10 (apD10 (ap legs py) i) x = ?Goal1
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally0 : Y, IsColimit (D y0) (Q y0) SigmaC:= sigma_cocone (funy0 : Y => HQ y0): Cocone sigma_diagram {x : _ & Q x} X: Type CX: Cocone sigma_diagram X CXy:= funy0 : Y => cocone_precompose (sigma_diagram_map y0) CX: forally0 : Y, Cocone (D y0) X i, j: G g: G i j y: Y x: D y i py:= eisretr (cocone_postcompose (HQ y)) (CXy y): cocone_postcompose (HQ y) ((cocone_postcompose (HQ y))^-1 (CXy y)) = CXy y py2: ap ((cocone_postcompose (HQ y))^-1 (CXy y)) (legs_comm (HQ y) i j g x) @
ap (funx0 : Cocone (D y) X => x0 i x) py =
ap (funx0 : Cocone (D y) X => x0 j (((D y) _f g) x)) py @
legs_comm CX i j g (y; x)
?Goal1 = ?Goal
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally0 : Y, IsColimit (D y0) (Q y0) SigmaC:= sigma_cocone (funy0 : Y => HQ y0): Cocone sigma_diagram {x : _ & Q x} X: Type CX: Cocone sigma_diagram X CXy:= funy0 : Y => cocone_precompose (sigma_diagram_map y0) CX: forally0 : Y, Cocone (D y0) X i, j: G g: G i j y: Y x: D y i py:= eisretr (cocone_postcompose (HQ y)) (CXy y): cocone_postcompose (HQ y) ((cocone_postcompose (HQ y))^-1 (CXy y)) = CXy y py2: ap ((cocone_postcompose (HQ y))^-1 (CXy y)) (legs_comm (HQ y) i j g x) @
ap (funx0 : Cocone (D y) X => x0 i x) py =
ap (funx0 : Cocone (D y) X => x0 j (((D y) _f g) x)) py @
legs_comm CX i j g (y; x)
ap (funz : Q y => cocone_postcompose_inv (HQ y) (CXy y) z)
(legs_comm (HQ y) i j g x) @
ap10 (apD10 (ap legs py) i) x =
ap ((cocone_postcompose (HQ y))^-1 (CXy y)) (legs_comm (HQ y) i j g x) @
ap (funx0 : Cocone (D y) X => x0 i x) py
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally0 : Y, IsColimit (D y0) (Q y0) SigmaC:= sigma_cocone (funy0 : Y => HQ y0): Cocone sigma_diagram {x : _ & Q x} X: Type CX: Cocone sigma_diagram X CXy:= funy0 : Y => cocone_precompose (sigma_diagram_map y0) CX: forally0 : Y, Cocone (D y0) X i, j: G g: G i j y: Y x: D y i py:= eisretr (cocone_postcompose (HQ y)) (CXy y): cocone_postcompose (HQ y) ((cocone_postcompose (HQ y))^-1 (CXy y)) = CXy y py2: ap ((cocone_postcompose (HQ y))^-1 (CXy y)) (legs_comm (HQ y) i j g x) @
ap (funx0 : Cocone (D y) X => x0 i x) py =
ap (funx0 : Cocone (D y) X => x0 j (((D y) _f g) x)) py @
legs_comm CX i j g (y; x)
ap10 (apD10 (ap legs py) i) x = ap (funx0 : Cocone (D y) X => x0 i x) py
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally0 : Y, IsColimit (D y0) (Q y0) SigmaC:= sigma_cocone (funy0 : Y => HQ y0): Cocone sigma_diagram {x : _ & Q x} X: Type CX: Cocone sigma_diagram X CXy:= funy0 : Y => cocone_precompose (sigma_diagram_map y0) CX: forally0 : Y, Cocone (D y0) X i, j: G g: G i j y: Y x: D y i py:= eisretr (cocone_postcompose (HQ y)) (CXy y): cocone_postcompose (HQ y) ((cocone_postcompose (HQ y))^-1 (CXy y)) = CXy y py2: ap ((cocone_postcompose (HQ y))^-1 (CXy y)) (legs_comm (HQ y) i j g x) @
ap (funx0 : Cocone (D y) X => x0 i x) py =
ap (funx0 : Cocone (D y) X => x0 j (((D y) _f g) x)) py @
legs_comm CX i j g (y; x)
ap10 (apD10 (ap legs py) i) x =
ap (funx0 : foralli0 : G, D y i0 -> X => x0 i x) (ap legs py)
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally0 : Y, IsColimit (D y0) (Q y0) SigmaC:= sigma_cocone (funy0 : Y => HQ y0): Cocone sigma_diagram {x : _ & Q x} X: Type CX: Cocone sigma_diagram X CXy:= funy0 : Y => cocone_precompose (sigma_diagram_map y0) CX: forally0 : Y, Cocone (D y0) X i, j: G g: G i j y: Y x: D y i py:= eisretr (cocone_postcompose (HQ y)) (CXy y): cocone_postcompose (HQ y) ((cocone_postcompose (HQ y))^-1 (CXy y)) = CXy y py2: ap ((cocone_postcompose (HQ y))^-1 (CXy y)) (legs_comm (HQ y) i j g x) @
ap (funx0 : Cocone (D y) X => x0 i x) py =
ap (funx0 : Cocone (D y) X => x0 j (((D y) _f g) x)) py @
legs_comm CX i j g (y; x)
ap10 (apD10 (ap legs py) i) x = apD10 (apD10 (ap legs py) i) x
reflexivity.
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally0 : Y, IsColimit (D y0) (Q y0) SigmaC:= sigma_cocone (funy0 : Y => HQ y0): Cocone sigma_diagram {x : _ & Q x} X: Type CX: Cocone sigma_diagram X CXy:= funy0 : Y => cocone_precompose (sigma_diagram_map y0) CX: forally0 : Y, Cocone (D y0) X i, j: G g: G i j y: Y x: D y i py:= eisretr (cocone_postcompose (HQ y)) (CXy y): cocone_postcompose (HQ y) ((cocone_postcompose (HQ y))^-1 (CXy y)) = CXy y py2: ap ((cocone_postcompose (HQ y))^-1 (CXy y)) (legs_comm (HQ y) i j g x) @
ap (funx0 : Cocone (D y) X => x0 i x) py =
ap (funx0 : Cocone (D y) X => x0 j (((D y) _f g) x)) py @
legs_comm CX i j g (y; x)
ap (funx0 : Cocone (D y) X => x0 j (((D y) _f g) x)) py @
legs_comm CX i j g (y; x) =
ap10 (apD10 (ap legs py) j) (((D y) _f g) x) @ legs_comm CX i j g (y; x)
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally0 : Y, IsColimit (D y0) (Q y0) SigmaC:= sigma_cocone (funy0 : Y => HQ y0): Cocone sigma_diagram {x : _ & Q x} X: Type CX: Cocone sigma_diagram X CXy:= funy0 : Y => cocone_precompose (sigma_diagram_map y0) CX: forally0 : Y, Cocone (D y0) X i, j: G g: G i j y: Y x: D y i py:= eisretr (cocone_postcompose (HQ y)) (CXy y): cocone_postcompose (HQ y) ((cocone_postcompose (HQ y))^-1 (CXy y)) = CXy y py2: ap ((cocone_postcompose (HQ y))^-1 (CXy y)) (legs_comm (HQ y) i j g x) @
ap (funx0 : Cocone (D y) X => x0 i x) py =
ap (funx0 : Cocone (D y) X => x0 j (((D y) _f g) x)) py @
legs_comm CX i j g (y; x)
ap (funx0 : Cocone (D y) X => x0 j (((D y) _f g) x)) py =
ap10 (apD10 (ap legs py) j) (((D y) _f g) x)
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally0 : Y, IsColimit (D y0) (Q y0) SigmaC:= sigma_cocone (funy0 : Y => HQ y0): Cocone sigma_diagram {x : _ & Q x} X: Type CX: Cocone sigma_diagram X CXy:= funy0 : Y => cocone_precompose (sigma_diagram_map y0) CX: forally0 : Y, Cocone (D y0) X i, j: G g: G i j y: Y x: D y i py:= eisretr (cocone_postcompose (HQ y)) (CXy y): cocone_postcompose (HQ y) ((cocone_postcompose (HQ y))^-1 (CXy y)) = CXy y py2: ap ((cocone_postcompose (HQ y))^-1 (CXy y)) (legs_comm (HQ y) i j g x) @
ap (funx0 : Cocone (D y) X => x0 i x) py =
ap (funx0 : Cocone (D y) X => x0 j (((D y) _f g) x)) py @
legs_comm CX i j g (y; x)
ap (funx0 : foralli0 : G, D y i0 -> X => x0 j (((D y) _f g) x))
(ap legs py) =
ap10 (apD10 (ap legs py) j) (((D y) _f g) x)
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally0 : Y, IsColimit (D y0) (Q y0) SigmaC:= sigma_cocone (funy0 : Y => HQ y0): Cocone sigma_diagram {x : _ & Q x} X: Type CX: Cocone sigma_diagram X CXy:= funy0 : Y => cocone_precompose (sigma_diagram_map y0) CX: forally0 : Y, Cocone (D y0) X i, j: G g: G i j y: Y x: D y i py:= eisretr (cocone_postcompose (HQ y)) (CXy y): cocone_postcompose (HQ y) ((cocone_postcompose (HQ y))^-1 (CXy y)) = CXy y py2: ap ((cocone_postcompose (HQ y))^-1 (CXy y)) (legs_comm (HQ y) i j g x) @
ap (funx0 : Cocone (D y) X => x0 i x) py =
ap (funx0 : Cocone (D y) X => x0 j (((D y) _f g) x)) py @
legs_comm CX i j g (y; x)
apD10 (apD10 (ap legs py) j) (((D y) _f g) x) =
ap10 (apD10 (ap legs py) j) (((D y) _f g) x)
reflexivity.
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally : Y, IsColimit (D y) (Q y) SigmaC:= sigma_cocone (funy : Y => HQ y): Cocone sigma_diagram {x : _ & Q x} X: Type
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally0 : Y, IsColimit (D y0) (Q y0) SigmaC:= sigma_cocone (funy0 : Y => HQ y0): Cocone sigma_diagram {x : _ & Q x} X: Type f: {x : _ & Q x} -> X y: Y x: Q y
cocone_postcompose_inv (HQ y)
(cocone_precompose (sigma_diagram_map y) (cocone_postcompose SigmaC f)) x =
f (y; x)
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally0 : Y, IsColimit (D y0) (Q y0) SigmaC:= sigma_cocone (funy0 : Y => HQ y0): Cocone sigma_diagram {x : _ & Q x} X: Type f: {x : _ & Q x} -> X y: Y x: Q y
cocone_postcompose_inv (HQ y)
(cocone_postcompose (cocone_precompose (sigma_diagram_map y) SigmaC) f) x =
f (y; x)
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally0 : Y, IsColimit (D y0) (Q y0) SigmaC:= sigma_cocone (funy0 : Y => HQ y0): Cocone sigma_diagram {x : _ & Q x} X: Type f: {x : _ & Q x} -> X y: Y x: Q y
cocone_postcompose_inv (HQ y)
(cocone_postcompose (cocone_precompose (sigma_diagram_map y) SigmaC) f) =
(funx0 : Q y => f (y; x0))
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally0 : Y, IsColimit (D y0) (Q y0) SigmaC:= sigma_cocone (funy0 : Y => HQ y0): Cocone sigma_diagram {x : _ & Q x} X: Type f: {x : _ & Q x} -> X y: Y x: Q y
cocone_postcompose (cocone_precompose (sigma_diagram_map y) SigmaC) f =
cocone_postcompose (HQ y) (funx0 : Q y => f (y; x0))
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally0 : Y, IsColimit (D y0) (Q y0) SigmaC:= sigma_cocone (funy0 : Y => HQ y0): Cocone sigma_diagram {x : _ & Q x} X: Type f: {x : _ & Q x} -> X y: Y x: Q y
foralli : G,
cocone_postcompose (cocone_precompose (sigma_diagram_map y) SigmaC) f i ==
cocone_postcompose (HQ y) (funx0 : Q y => f (y; x0)) i
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally0 : Y, IsColimit (D y0) (Q y0) SigmaC:= sigma_cocone (funy0 : Y => HQ y0): Cocone sigma_diagram {x : _ & Q x} X: Type f: {x : _ & Q x} -> X y: Y x: Q y
forall (ij : G) (g : G i j) (x0 : D y i),
legs_comm
(cocone_postcompose (cocone_precompose (sigma_diagram_map y) SigmaC) f) i j
g x0 @
?path_legs i x0 =
?path_legs j (((D y) _f g) x0) @
legs_comm (cocone_postcompose (HQ y) (funx1 : Q y => f (y; x1))) i j g x0
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally0 : Y, IsColimit (D y0) (Q y0) SigmaC:= sigma_cocone (funy0 : Y => HQ y0): Cocone sigma_diagram {x : _ & Q x} X: Type f: {x : _ & Q x} -> X y: Y x: Q y
forall (ij : G) (g : G i j) (x0 : D y i),
legs_comm
(cocone_postcompose (cocone_precompose (sigma_diagram_map y) SigmaC) f) i j
g x0 @
(fun (i0 : G) (x1 : D y i0) => 1) i x0 =
(fun (i0 : G) (x1 : D y i0) => 1) j (((D y) _f g) x0) @
legs_comm (cocone_postcompose (HQ y) (funx1 : Q y => f (y; x1))) i j g x0
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally0 : Y, IsColimit (D y0) (Q y0) SigmaC:= sigma_cocone (funy0 : Y => HQ y0): Cocone sigma_diagram {x : _ & Q x} X: Type f: {x : _ & Q x} -> X y: Y x: Q y i, j: G g: G i j x': D y i
ap f (1 @ path_sigma' Q 1 (legs_comm (HQ y) i j g x')) @ 1 =
1 @ ap (funx0 : Q y => f (y; x0)) (legs_comm (HQ y) i j g x')
H: Funext G: Graph Y: Type D: Y -> Diagram G Q: Y -> Type HQ: forally0 : Y, IsColimit (D y0) (Q y0) SigmaC:= sigma_cocone (funy0 : Y => HQ y0): Cocone sigma_diagram {x : _ & Q x} X: Type f: {x : _ & Q x} -> X y: Y x: Q y i, j: G g: G i j x': D y i
ap f (path_sigma' Q 1 (legs_comm (HQ y) i j g x')) =
ap (funx0 : Q y => f (y; x0)) (legs_comm (HQ y) i j g x')
G: Graph Y: Type D1, D2: Y -> Diagram G m: forally : Y, DiagramMap (D1 y) (D2 y)
DiagramMap (sigma_diagram D1) (sigma_diagram D2)
G: Graph Y: Type D1, D2: Y -> Diagram G m: forally : Y, DiagramMap (D1 y) (D2 y)
DiagramMap (sigma_diagram D1) (sigma_diagram D2)
G: Graph Y: Type D1, D2: Y -> Diagram G m: forally : Y, DiagramMap (D1 y) (D2 y)
foralli : G, sigma_diagram D1 i -> sigma_diagram D2 i
G: Graph Y: Type D1, D2: Y -> Diagram G m: forally : Y, DiagramMap (D1 y) (D2 y)
forall (ij : G) (g : G i j) (x : sigma_diagram D1 i),
((sigma_diagram D2) _f g) (?DiagramMap_obj i x) =
?DiagramMap_obj j (((sigma_diagram D1) _f g) x)
G: Graph Y: Type D1, D2: Y -> Diagram G m: forally : Y, DiagramMap (D1 y) (D2 y)
foralli : G, sigma_diagram D1 i -> sigma_diagram D2 i
G: Graph Y: Type D1, D2: Y -> Diagram G m: forally : Y, DiagramMap (D1 y) (D2 y) i: G
sigma_diagram D1 i -> sigma_diagram D2 i
G: Graph Y: Type D1, D2: Y -> Diagram G m: forally : Y, DiagramMap (D1 y) (D2 y) i: G
foralla : Y, (funy : Y => D1 y i) a -> (funy : Y => D2 y i) (idmap a)
intros y; apply m.
G: Graph Y: Type D1, D2: Y -> Diagram G m: forally : Y, DiagramMap (D1 y) (D2 y)
forall (ij : G) (g : G i j) (x : sigma_diagram D1 i),
((sigma_diagram D2) _f g)
((funi0 : G =>
functor_sigma idmap
(funy : Y => letX := funy0 : Y => DiagramMap_obj (m y0) in X y i0))
i x) =
(funi0 : G =>
functor_sigma idmap
(funy : Y => letX := funy0 : Y => DiagramMap_obj (m y0) in X y i0))
j (((sigma_diagram D1) _f g) x)
G: Graph Y: Type D1, D2: Y -> Diagram G m: forally : Y, DiagramMap (D1 y) (D2 y) i, j: G g: G i j x: {y : Y & D1 y i}
(x.1; ((D2 x.1) _f g) (m x.1 i x.2)) =
functor_sigma idmap (funy : Y => m y j) (x.1; ((D1 x.1) _f g) x.2)
G: Graph Y: Type D1, D2: Y -> Diagram G m: forally : Y, DiagramMap (D1 y) (D2 y) i, j: G g: G i j x: {y : Y & D1 y i}
x.1 = (x.1; ((D1 x.1) _f g) x.2).1
G: Graph Y: Type D1, D2: Y -> Diagram G m: forally : Y, DiagramMap (D1 y) (D2 y) i, j: G g: G i j x: {y : Y & D1 y i}
transport (funy : Y => D2 y j) ?p (((D2 x.1) _f g) (m x.1 i x.2)) =
m (x.1; ((D1 x.1) _f g) x.2).1 j (x.1; ((D1 x.1) _f g) x.2).2
G: Graph Y: Type D1, D2: Y -> Diagram G m: forally : Y, DiagramMap (D1 y) (D2 y) i, j: G g: G i j x: {y : Y & D1 y i}
transport (funy : Y => D2 y j) 1 (((D2 x.1) _f g) (m x.1 i x.2)) =
m (x.1; ((D1 x.1) _f g) x.2).1 j (x.1; ((D1 x.1) _f g) x.2).2
G: Graph Y: Type D1, D2: Y -> Diagram G m: forally : Y, DiagramMap (D1 y) (D2 y) i, j: G g: G i j x: {y : Y & D1 y i}
((D2 x.1) _f g) (m x.1 i x.2) = m x.1 j (((D1 x.1) _f g) x.2)
apply (DiagramMap_comm (m x.1)).Defined.
G: Graph Y: Type D1, D2: Y -> Diagram G m: forally : Y, D1 y ~d~ D2 y
sigma_diagram D1 ~d~ sigma_diagram D2
G: Graph Y: Type D1, D2: Y -> Diagram G m: forally : Y, D1 y ~d~ D2 y
sigma_diagram D1 ~d~ sigma_diagram D2
G: Graph Y: Type D1, D2: Y -> Diagram G m: forally : Y, D1 y ~d~ D2 y
foralli : G, IsEquiv (sigma_diagram_functor (funy : Y => m y) i)
G: Graph Y: Type D1, D2: Y -> Diagram G m: forally : Y, D1 y ~d~ D2 y i: G
IsEquiv (sigma_diagram_functor (funy : Y => m y) i)
G: Graph Y: Type D1, D2: Y -> Diagram G m: forally : Y, D1 y ~d~ D2 y i: G
foralla : Y,
IsEquiv
((funy : Y =>
letX :=
funy0 : Y => DiagramMap_obj ((funy1 : Y => diag_equiv_map (m y1)) y0)
in
X y i) a)