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.
[Loading ML file number_string_notation_plugin.cmxs (using legacy method) ... done]
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 (i : G) (x : {y : Y & D y i}) => ?Goal) x
(x0.1; ((D x0.1) _f g) x0.2)) ==
(fun (i : G) (x : {y : Y & D y i}) => ?Goal) 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 (i : G) (x : {y : Y & D y i}) =>
(x.1; C x.1 i x.2)) x (x0.1; ((D x0.1) _f g) x0.2)) ==
(fun (i : G) (x : {y : Y & D y i}) =>
(x.1; C x.1 i x.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: 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, j: G g: G i j y: Y x: D y i
ap
(funx : {x : _ & Q x} =>
cocone_postcompose_inv (HQ x.1) (CXy x.1) x.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: 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, 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
(funx : {x : _ & Q x} =>
cocone_postcompose_inv (HQ x.1) (CXy x.1) x.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: 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, 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
(funx : {x : _ & Q x} =>
cocone_postcompose_inv (HQ x.1) (CXy x.1) x.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: 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, 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 (ij : G) (g : G i j),
C j o (D y) _f g == C i) py
(legs_comm
(cocone_postcompose
(HQ y)
((cocone_postcompose (HQ y))^-1 (CXy y)))) =
legs_comm (CXy y)
ap
(funx : {x : _ & Q x} =>
cocone_postcompose_inv (HQ x.1) (CXy x.1) x.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: 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, 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 (i : G) (x : D y i) =>
(cocone_postcompose (HQ y))^-1
(CXy y) (HQ y i x)) =
(fun (i : G) (x : D y i) => CX i (y; x)) py2: transport
(funC : Cocone (D y) X =>
forall (ij : G) (g : G i j),
(funx : D y i => C j (((D y) _f g) x)) ==
C i) py
(fun (ij : G) (g : G i j) (x : D y i) =>
ap ((cocone_postcompose (HQ y))^-1 (CXy y))
(legs_comm (HQ y) i j g x)) =
(fun (ij : G) (g : G i j) (x : D y i) =>
1 @ legs_comm CX i j g (y; x))
ap
(funx : {x : _ & Q x} =>
cocone_postcompose_inv (HQ x.1) (CXy x.1) x.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: 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, 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 (i : G) (x : D y i) =>
(cocone_postcompose (HQ y))^-1
(CXy y) (HQ y i x)) =
(fun (i : G) (x : D y i) => CX i (y; x)) py2: (funy0 : G =>
transport
(funx : Cocone (D y) X =>
forall (j : G) (g : G y0 j),
(funx0 : D y y0 => x j (((D y) _f g) x0)) ==
x y0) py
(fun (j : G) (g : G y0 j) (x : D y y0) =>
ap ((cocone_postcompose (HQ y))^-1 (CXy y))
(legs_comm (HQ y) y0 j g x))) =
(fun (ij : G) (g : G i j) (x : D y i) =>
1 @ legs_comm CX i j g (y; x))
ap
(funx : {x : _ & Q x} =>
cocone_postcompose_inv (HQ x.1) (CXy x.1) x.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: 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, 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 (i : G) (x : D y i) =>
(cocone_postcompose (HQ y))^-1
(CXy y) (HQ y i x)) =
(fun (i : G) (x : D y i) => CX i (y; x)) py2: transport
(funx : Cocone (D y) X =>
forall (j : G) (g : G i j),
(funx0 : D y i => x j (((D y) _f g) x0)) ==
x i) py
(fun (j : G) (g : G i j) (x : D y i) =>
ap ((cocone_postcompose (HQ y))^-1 (CXy y))
(legs_comm (HQ y) i j g x)) =
(fun (j : G) (g : G i j) (x : D y i) =>
1 @ legs_comm CX i j g (y; x))
ap
(funx : {x : _ & Q x} =>
cocone_postcompose_inv (HQ x.1) (CXy x.1) x.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: 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, 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 (i : G) (x : D y i) =>
(cocone_postcompose (HQ y))^-1
(CXy y) (HQ y i x)) =
(fun (i : G) (x : D y i) => CX i (y; x)) py2: (funy0 : G =>
transport
(funx : Cocone (D y) X =>
forallg : G i y0,
(funx0 : D y i => x y0 (((D y) _f g) x0)) ==
x i) py
(fun (g : G i y0) (x : D y i) =>
ap ((cocone_postcompose (HQ y))^-1 (CXy y))
(legs_comm (HQ y) i y0 g x))) =
(fun (j : G) (g : G i j) (x : D y i) =>
1 @ legs_comm CX i j g (y; x))
ap
(funx : {x : _ & Q x} =>
cocone_postcompose_inv (HQ x.1) (CXy x.1) x.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: 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, 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 (i : G) (x : D y i) =>
(cocone_postcompose (HQ y))^-1
(CXy y) (HQ y i x)) =
(fun (i : G) (x : D y i) => CX i (y; x)) py2: transport
(funx : Cocone (D y) X =>
forallg : G i j,
(funx0 : D y i => x j (((D y) _f g) x0)) ==
x i) py
(fun (g : G i j) (x : D y i) =>
ap ((cocone_postcompose (HQ y))^-1 (CXy y))
(legs_comm (HQ y) i j g x)) =
(fun (g : G i j) (x : D y i) =>
1 @ legs_comm CX i j g (y; x))
ap
(funx : {x : _ & Q x} =>
cocone_postcompose_inv (HQ x.1) (CXy x.1) x.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: 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, 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 (i : G) (x : D y i) =>
(cocone_postcompose (HQ y))^-1
(CXy y) (HQ y i x)) =
(fun (i : G) (x : D y i) => CX i (y; x)) py2: (funy0 : G i j =>
transport
(funx : Cocone (D y) X =>
(funx0 : D y i => x j (((D y) _f y0) x0)) ==
x i) py
(funx : D y i =>
ap ((cocone_postcompose (HQ y))^-1 (CXy y))
(legs_comm (HQ y) i j y0 x))) =
(fun (g : G i j) (x : D y i) =>
1 @ legs_comm CX i j g (y; x))
ap
(funx : {x : _ & Q x} =>
cocone_postcompose_inv (HQ x.1) (CXy x.1) x.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: 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, 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 (i : G) (x : D y i) =>
(cocone_postcompose (HQ y))^-1
(CXy y) (HQ y i x)) =
(fun (i : G) (x : D y i) => CX i (y; x)) py2: transport
(funx : Cocone (D y) X =>
(funx0 : D y i => x j (((D y) _f g) x0)) ==
x i) py
(funx : D y i =>
ap ((cocone_postcompose (HQ y))^-1 (CXy y))
(legs_comm (HQ y) i j g x)) =
(funx : D y i => 1 @ legs_comm CX i j g (y; x))
ap
(funx : {x : _ & Q x} =>
cocone_postcompose_inv (HQ x.1) (CXy x.1) x.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: 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, 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 (i : G) (x : D y i) =>
(cocone_postcompose (HQ y))^-1
(CXy y) (HQ y i x)) =
(fun (i : G) (x : D y i) => CX i (y; x)) py2: (funy0 : D y i =>
transport
(funx : Cocone (D y) X =>
x j (((D y) _f g) y0) = x i y0) py
(ap ((cocone_postcompose (HQ y))^-1 (CXy y))
(legs_comm (HQ y) i j g y0))) =
(funx : D y i => 1 @ legs_comm CX i j g (y; x))
ap
(funx : {x : _ & Q x} =>
cocone_postcompose_inv (HQ x.1) (CXy x.1) x.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: 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, 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 (i : G) (x : D y i) =>
(cocone_postcompose (HQ y))^-1
(CXy y) (HQ y i x)) =
(fun (i : G) (x : D y i) => CX i (y; x)) 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
(funx : {x : _ & Q x} =>
cocone_postcompose_inv (HQ x.1) (CXy x.1) x.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: 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, 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 (i : G) (x : D y i) =>
(cocone_postcompose (HQ y))^-1
(CXy y) (HQ y i x)) =
(fun (i : G) (x : D y i) => CX i (y; x)) 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
(funx : {x : _ & Q x} =>
cocone_postcompose_inv (HQ x.1) (CXy x.1) x.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: 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, 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 (i : G) (x : D y i) =>
(cocone_postcompose (HQ y))^-1
(CXy y) (HQ y i x)) =
(fun (i : G) (x : D y i) => CX i (y; x)) 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
(funx : {x : _ & Q x} =>
cocone_postcompose_inv (HQ x.1) (CXy x.1) x.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: 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, 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 (i : G) (x : D y i) =>
(cocone_postcompose (HQ y))^-1
(CXy y) (HQ y i x)) =
(fun (i : G) (x : D y i) => CX i (y; x)) 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
(funx : {x : _ & Q x} =>
cocone_postcompose_inv (HQ x.1) (CXy x.1) x.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: 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, 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 (i : G) (x : D y i) =>
(cocone_postcompose (HQ y))^-1
(CXy y) (HQ y i x)) =
(fun (i : G) (x : D y i) => CX i (y; x)) 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: 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, 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: 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, 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: 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, 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: 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, 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: 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, 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: 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, 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: 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, 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: 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, 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: 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, 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 : foralli : G, D y i -> X => x0 i x)
(ap legs py)
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, 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: 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, 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: 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, 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: 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, 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 : foralli : G, D y i -> 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: 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, 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: forally : Y, IsColimit (D y) (Q y) SigmaC:= sigma_cocone (funy : Y => HQ y): 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: forally : Y, IsColimit (D y) (Q y) SigmaC:= sigma_cocone (funy : Y => HQ y): 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: forally : Y, IsColimit (D y) (Q y) SigmaC:= sigma_cocone (funy : Y => HQ y): 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) = (funx : Q y => f (y; 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 f: {x : _ & Q x} -> X y: Y x: Q y
cocone_postcompose
(cocone_precompose (sigma_diagram_map y) SigmaC) f =
cocone_postcompose (HQ y) (funx : Q y => f (y; 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 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) (funx : Q y => f (y; x)) 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 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) (funx : Q y => f (y; x)))
i j g x0
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 f: {x : _ & Q x} -> X y: Y x: Q y
forall (ij : G) (g : G i j) (x : D y i),
legs_comm
(cocone_postcompose
(cocone_precompose (sigma_diagram_map y) SigmaC)
f) i j g x @
(fun (i0 : G) (x0 : D y i0) => 1) i x =
(fun (i0 : G) (x0 : D y i0) => 1) j (((D y) _f g) x) @
legs_comm
(cocone_postcompose (HQ y)
(funx0 : Q y => f (y; x0))) 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 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 (funx : Q y => f (y; x))
(legs_comm (HQ y) 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 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 (funx : Q y => f (y; x))
(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)