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 mc_mult_scope.LocalOpen Scope pointed_scope.(** ** Coherent H-space structures *)(** An H-space is coherent when the left and right identities agree at the base point. *)ClassIsCoherent (X : pType) `{IsHSpace X} :=
iscoherent : left_identity pt = right_identity pt.RecordIsCohHSpace (A : pType) := {
ishspace_cohhspace :: IsHSpace A;
iscoherent_cohhspace :: IsCoherent A;
}.Definitionissig_iscohhspace (A : pType)
: { hspace_op : SgOp A
& { hspace_left_identity : LeftIdentity hspace_op pt
& { hspace_right_identity : RightIdentity hspace_op pt
& hspace_left_identity pt = hspace_right_identity pt } } }
<~> IsCohHSpace A
:= ltac:(make_equiv).(** A type equivalent to a coherent H-space is a coherent H-space. *)
X, Y: pType IsCohHSpace0: IsCohHSpace Y f: X <~>* Y
IsCohHSpace X
X, Y: pType IsCohHSpace0: IsCohHSpace Y f: X <~>* Y
IsCohHSpace X
X, Y: pType IsCohHSpace0: IsCohHSpace Y f: X <~>* Y
IsHSpace X
X, Y: pType IsCohHSpace0: IsCohHSpace Y f: X <~>* Y
IsCoherent X
X, Y: pType IsCohHSpace0: IsCohHSpace Y f: X <~>* Y
IsHSpace X
X, Y: pType IsCohHSpace0: IsCohHSpace Y f: X <~>* Y
IsHSpace Y
apply ishspace_cohhspace; assumption.
X, Y: pType IsCohHSpace0: IsCohHSpace Y f: X <~>* Y
IsCoherent X
X, Y: pType IsCohHSpace0: IsCohHSpace Y f: X <~>* Y
ap f^-1
(ap (funy : Y => sg_op y (f pt)) (point_eq f) @
left_identity (f pt)) @
eissect f pt =
ap f^-1
(ap (sg_op (f pt)) (point_eq f) @
right_identity (f pt)) @
eissect f pt
X, Y: pType IsCohHSpace0: IsCohHSpace Y f: X <~>* Y
ap f^-1
(ap (funy : Y => sg_op y (f pt)) (point_eq f) @
left_identity (f pt)) =
ap f^-1
(ap (sg_op (f pt)) (point_eq f) @
right_identity (f pt))
X, Y: pType IsCohHSpace0: IsCohHSpace Y f: X <~>* Y
ap (funy : Y => sg_op y (f pt)) (point_eq f) @
left_identity (f pt) =
ap (sg_op (f pt)) (point_eq f) @ right_identity (f pt)
X, Y: pType IsCohHSpace0: IsCohHSpace Y f: X -> Y iseq: IsEquiv f
ap (funy : Y => sg_op y pt) 1 @ left_identity pt =
ap (sg_op pt) 1 @ right_identity pt
X, Y: pType IsCohHSpace0: IsCohHSpace Y f: X -> Y iseq: IsEquiv f
left_identity pt = right_identity pt
exact iscoherent.Defined.(** Every loop space is a coherent H-space. *)