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]
LocalOpen Scope pointed_scope.LocalOpen Scope mc_mult_scope.LocalOpen Scope path_scope.(** * Pointwise H-space structures *)(** Whenever [X] is an H-space, so is the type of maps into [X]. *)
H: Funext X: pType Y: Type H0: IsHSpace X
IsHSpace [Y -> X, const pt]
(* Note: When writing [f * g], Coq only finds this instance if [f] is explicitly in the pointed type [[Y -> X, const pt]]. *)
H: Funext X: pType Y: Type H0: IsHSpace X
IsHSpace [Y -> X, const pt]
H: Funext X: pType Y: Type H0: IsHSpace X
SgOp [Y -> X, const pt]
H: Funext X: pType Y: Type H0: IsHSpace X
LeftIdentity ?hspace_op pt
H: Funext X: pType Y: Type H0: IsHSpace X
RightIdentity ?hspace_op pt
H: Funext X: pType Y: Type H0: IsHSpace X
SgOp [Y -> X, const pt]
exact (funfgy => (f y) * (g y)).
H: Funext X: pType Y: Type H0: IsHSpace X
LeftIdentity
(fun (fg : [Y -> X, const pt]) (y : Y) => f y * g y)
pt
H: Funext X: pType Y: Type H0: IsHSpace X g: [Y -> X, const pt] y: Y
pt y * g y = g y
apply hspace_left_identity.
H: Funext X: pType Y: Type H0: IsHSpace X
RightIdentity
(fun (fg : [Y -> X, const pt]) (y : Y) => f y * g y)
pt
H: Funext X: pType Y: Type H0: IsHSpace X f: [Y -> X, const pt] y: Y
f y * pt y = f y
apply hspace_right_identity.Defined.(** If [X] is coherent, so is [[Y -> X, const pt]]. *)
H: Funext X: pType Y: Type H0: IsHSpace X H1: IsCoherent X
IsCoherent [Y -> X, const pt]
H: Funext X: pType Y: Type H0: IsHSpace X H1: IsCoherent X
IsCoherent [Y -> X, const pt]
H: Funext X: pType Y: Type H0: IsHSpace X H1: IsCoherent X
path_forall (funy : Y => const pt y * const pt y)
(const pt)
(funy : Y => hspace_left_identity (const pt y)) =
path_forall (funy : Y => const pt y * const pt y)
(const pt)
(funy : Y => hspace_right_identity (const pt y))
H: Funext X: pType Y: Type H0: IsHSpace X H1: IsCoherent X
(funy : Y => hspace_left_identity (const pt y)) =
(funy : Y => hspace_right_identity (const pt y))
funext y; exact iscoherent.Defined.(** If [X] is left-invertible, so is [[Y -> X, const pt]]. *)
H: Funext X: pType Y: Type H0: IsHSpace X H1: forallx : X, IsEquiv (sg_op x)
forallf : [Y -> X, const pt], IsEquiv (sg_op f)
H: Funext X: pType Y: Type H0: IsHSpace X H1: forallx : X, IsEquiv (sg_op x)
(** Left multiplication by [f] unifies with [functor_forall]. *)exact (isequiv_functor_forall (P:=const X) (f:=idmap)
(g:=funygy => (f y) * gy)).Defined.(** For the type of pointed maps [Y ->** X], coherence of [X] is needed even to get a non-coherent H-space structure on [Y ->** X]. *)
H: Funext X, Y: pType H0: IsHSpace X H1: IsCoherent X
IsHSpace (Y ->** X)
H: Funext X, Y: pType H0: IsHSpace X H1: IsCoherent X
IsHSpace (Y ->** X)
H: Funext X, Y: pType H0: IsHSpace X H1: IsCoherent X
SgOp (Y ->** X)
H: Funext X, Y: pType H0: IsHSpace X H1: IsCoherent X
LeftIdentity ?hspace_op pt
H: Funext X, Y: pType H0: IsHSpace X H1: IsCoherent X
RightIdentity ?hspace_op pt
H: Funext X, Y: pType H0: IsHSpace X H1: IsCoherent X
SgOp (Y ->** X)
H: Funext X, Y: pType H0: IsHSpace X H1: IsCoherent X f, g: Y ->** X
Y ->** X
H: Funext X, Y: pType H0: IsHSpace X H1: IsCoherent X f, g: Y ->** X
Y -> X
H: Funext X, Y: pType H0: IsHSpace X H1: IsCoherent X f, g: Y ->** X
?f pt = pt
H: Funext X, Y: pType H0: IsHSpace X H1: IsCoherent X f, g: Y ->** X
Y -> X
exact (funy => hspace_op (f y) (g y)).
H: Funext X, Y: pType H0: IsHSpace X H1: IsCoherent X f, g: Y ->** X
(funy : Y => hspace_op (f y) (g y)) pt = pt
H: Funext X, Y: pType H0: IsHSpace X H1: IsCoherent X f, g: Y ->** X
hspace_op (f pt) (g pt) = pt
H: Funext X, Y: pType H0: IsHSpace X H1: IsCoherent X f, g: Y ->** X
hspace_op (f pt) pt = pt
H: Funext X, Y: pType H0: IsHSpace X H1: IsCoherent X f, g: Y ->** X
pt * pt = pt
apply hspace_left_identity.
H: Funext X, Y: pType H0: IsHSpace X H1: IsCoherent X
LeftIdentity
((funfg : Y ->** X =>
Build_pMap (funy : Y => hspace_op (f y) (g y))
(ap (hspace_op (f pt)) (point_eq g) @
(ap (funy : pfam_const X pt => y * pt)
(point_eq f) @ hspace_left_identity pt
:
hspace_op (f pt) pt = pt)
:
(funy : Y => hspace_op (f y) (g y)) pt = pt))
:
SgOp (Y ->** X)) pt
H: Funext X, Y: pType H0: IsHSpace X H1: IsCoherent X g: Y ->** X
Build_pMap (funy : Y => hspace_op (pt y) (g y))
(ap (hspace_op (pt pt)) (point_eq g) @
(ap (funy : pfam_const X pt => y * pt)
(point_eq pt) @ hspace_left_identity pt)) = g
H: Funext X, Y: pType H0: IsHSpace X H1: IsCoherent X g: Y ->** X
Build_pMap (funy : Y => hspace_op (pt y) (g y))
(ap (hspace_op (pt pt)) (point_eq g) @
(ap (funy : pfam_const X pt => y * pt)
(point_eq pt) @ hspace_left_identity pt)) ==* g
H: Funext X, Y: pType H0: IsHSpace X H1: IsCoherent X g: Y ->** X
Build_pMap (funy : Y => hspace_op (pt y) (g y))
(ap (hspace_op (pt pt)) (point_eq g) @
(ap (funy : pfam_const X pt => y * pt)
(point_eq pt) @ hspace_left_identity pt)) == g
H: Funext X, Y: pType H0: IsHSpace X H1: IsCoherent X g: Y ->** X
?p pt =
dpoint_eq
(Build_pMap (funy : Y => hspace_op (pt y) (g y))
(ap (hspace_op (pt pt)) (point_eq g) @
(ap (funy : pfam_const X pt => y * pt)
(point_eq pt) @ hspace_left_identity pt))) @
(dpoint_eq g)^
H: Funext X, Y: pType H0: IsHSpace X H1: IsCoherent X g: Y ->** X
Build_pMap (funy : Y => hspace_op (pt y) (g y))
(ap (hspace_op (pt pt)) (point_eq g) @
(ap (funy : pfam_const X pt => y * pt)
(point_eq pt) @ hspace_left_identity pt)) == g
H: Funext X, Y: pType H0: IsHSpace X H1: IsCoherent X g: Y ->** X y: Y
hspace_op pt (g y) = g y
apply hspace_left_identity.
H: Funext X, Y: pType H0: IsHSpace X H1: IsCoherent X g: Y ->** X
((funy : Y =>
hspace_left_identity (g y)
:
Build_pMap (funy0 : Y => hspace_op (pt y0) (g y0))
(ap (hspace_op (pt pt)) (point_eq g) @
(ap (funy0 : pfam_const X pt => y0 * pt)
(point_eq pt) @ hspace_left_identity pt)) y =
g y)
:
Build_pMap (funy : Y => hspace_op (pt y) (g y))
(ap (hspace_op (pt pt)) (point_eq g) @
(ap (funy : pfam_const X pt => y * pt)
(point_eq pt) @ hspace_left_identity pt)) == g)
pt =
dpoint_eq
(Build_pMap (funy : Y => hspace_op (pt y) (g y))
(ap (hspace_op (pt pt)) (point_eq g) @
(ap (funy : pfam_const X pt => y * pt)
(point_eq pt) @ hspace_left_identity pt))) @
(dpoint_eq g)^
H: Funext X, Y: pType H0: IsHSpace X H1: IsCoherent X g: Y ->** X