Built with Alectryon, running Coq+SerAPI v8.18.0+0.18.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]
(** * Pushouts of "dependent spans". *)SectionSpanPushout.Context {XY : Type} (Q : X -> Y -> Type).DefinitionSPushout := @Pushout@{up _ _ up} (sig@{up _} (fun (xy : X * Y) => Q (fst xy) (snd xy))) X Y
(fst o pr1) (snd o pr1).Definitionspushl : X -> SPushout := pushl.Definitionspushr : Y -> SPushout := pushr.Definitionspglue {x:X} {y:Y} : Q x y -> spushl x = spushr y
:= funq => pglue ((x,y) ; q).
X, Y: Type Q: X -> Y -> Type R: Type spushl': X -> R spushr': Y -> R sglue': forall (x : X) (y : Y),
Q x y -> spushl' x = spushr' y
SPushout -> R
X, Y: Type Q: X -> Y -> Type R: Type spushl': X -> R spushr': Y -> R sglue': forall (x : X) (y : Y),
Q x y -> spushl' x = spushr' y
SPushout -> R
X, Y: Type Q: X -> Y -> Type R: Type spushl': X -> R spushr': Y -> R sglue': forall (x : X) (y : Y),
Q x y -> spushl' x = spushr' y
foralla : {xy : X * Y & Q (fst xy) (snd xy)},
spushl' ((fst o pr1) a) = spushr' ((snd o pr1) a)
X, Y: Type Q: X -> Y -> Type R: Type spushl': X -> R spushr': Y -> R sglue': forall (x : X) (y : Y),
Q x y -> spushl' x = spushr' y x: X y: Y q: Q x y
spushl' x = spushr' y
apply sglue'; assumption.Defined.
X, Y: Type Q: X -> Y -> Type R: SPushout -> Type spushl': forallx : X, R (spushl x) spushr': forally : Y, R (spushr y) sglue': forall (x : X) (y : Y)
(q : Q x y),
transport R (spglue q) (spushl' x) =
spushr' y
forallp : SPushout, R p
X, Y: Type Q: X -> Y -> Type R: SPushout -> Type spushl': forallx : X, R (spushl x) spushr': forally : Y, R (spushr y) sglue': forall (x : X) (y : Y)
(q : Q x y),
transport R (spglue q) (spushl' x) =
spushr' y
forallp : SPushout, R p
X, Y: Type Q: X -> Y -> Type R: SPushout -> Type spushl': forallx : X, R (spushl x) spushr': forally : Y, R (spushr y) sglue': forall (x : X) (y : Y)
(q : Q x y),
transport R (spglue q) (spushl' x) =
spushr' y
foralla : {xy : X * Y & Q (fst xy) (snd xy)},
transport R (pglue a) (spushl' ((fst o pr1) a)) =
spushr' ((snd o pr1) a)
X, Y: Type Q: X -> Y -> Type R: SPushout -> Type spushl': forallx : X, R (spushl x) spushr': forally : Y, R (spushr y) sglue': forall (x : X) (y : Y)
(q : Q x y),
transport R (spglue q) (spushl' x) =
spushr' y x: X y: Y q: Q x y
transport R (pglue ((x, y); q)) (spushl' x) =
spushr' y
apply sglue'; assumption.Defined.Definitionspushout_ind_beta_sglue (R : SPushout -> Type)
(spushl' : forallx, R (spushl x))
(spushr' : forally, R (spushr y))
(spglue' : forallxy (q : Q x y),
transport R (spglue q) (spushl' x) = (spushr' y))
(x:X) (y:Y) (q:Q x y)
: apD (SPushout_ind R spushl' spushr' spglue') (spglue q) = spglue' x y q
:= Pushout_ind_beta_pglue _ _ _ _ ((x,y);q).EndSpanPushout.