Documentation

Mathlib.GroupTheory.EckmannHilton

Eckmann-Hilton argument #

The Eckmann-Hilton argument says that if a type carries two monoid structures that distribute over one another, then they are equal, and in addition commutative. The main application lies in proving that higher homotopy groups (πₙ for n ≥ 2) are commutative.

Main declarations #

structure EckmannHilton.IsUnital {X : Type u} (m : XXX) (e : X) extends Std.LawfulIdentity m e :

IsUnital m e expresses that e : X is a left and right unit for the binary operation m : X → X → X.

Instances For
    theorem EckmannHilton.MulOneClass.isUnital {X : Type u} [_G : MulOneClass X] :
    EckmannHilton.IsUnital (fun (x1 x2 : X) => x1 * x2) 1
    theorem EckmannHilton.AddZeroClass.IsUnital {X : Type u} [_G : AddZeroClass X] :
    EckmannHilton.IsUnital (fun (x1 x2 : X) => x1 + x2) 0
    theorem EckmannHilton.one {X : Type u} {m₁ m₂ : XXX} {e₁ e₂ : X} (h₁ : EckmannHilton.IsUnital m₁ e₁) (h₂ : EckmannHilton.IsUnital m₂ e₂) (distrib : ∀ (a b c d : X), m₁ (m₂ a b) (m₂ c d) = m₂ (m₁ a c) (m₁ b d)) :
    e₁ = e₂

    If a type carries two unital binary operations that distribute over each other, then they have the same unit elements.

    In fact, the two operations are the same, and give a commutative monoid structure, see eckmann_hilton.CommMonoid.

    theorem EckmannHilton.mul {X : Type u} {m₁ m₂ : XXX} {e₁ e₂ : X} (h₁ : EckmannHilton.IsUnital m₁ e₁) (h₂ : EckmannHilton.IsUnital m₂ e₂) (distrib : ∀ (a b c d : X), m₁ (m₂ a b) (m₂ c d) = m₂ (m₁ a c) (m₁ b d)) :
    m₁ = m₂

    If a type carries two unital binary operations that distribute over each other, then these operations are equal.

    In fact, they give a commutative monoid structure, see eckmann_hilton.CommMonoid.

    theorem EckmannHilton.mul_comm {X : Type u} {m₁ m₂ : XXX} {e₁ e₂ : X} (h₁ : EckmannHilton.IsUnital m₁ e₁) (h₂ : EckmannHilton.IsUnital m₂ e₂) (distrib : ∀ (a b c d : X), m₁ (m₂ a b) (m₂ c d) = m₂ (m₁ a c) (m₁ b d)) :

    If a type carries two unital binary operations that distribute over each other, then these operations are commutative.

    In fact, they give a commutative monoid structure, see eckmann_hilton.CommMonoid.

    theorem EckmannHilton.mul_assoc {X : Type u} {m₁ m₂ : XXX} {e₁ e₂ : X} (h₁ : EckmannHilton.IsUnital m₁ e₁) (h₂ : EckmannHilton.IsUnital m₂ e₂) (distrib : ∀ (a b c d : X), m₁ (m₂ a b) (m₂ c d) = m₂ (m₁ a c) (m₁ b d)) :

    If a type carries two unital binary operations that distribute over each other, then these operations are associative.

    In fact, they give a commutative monoid structure, see eckmann_hilton.CommMonoid.

    @[reducible, inline]
    abbrev EckmannHilton.commMonoid {X : Type u} {m₁ : XXX} {e₁ : X} (h₁ : EckmannHilton.IsUnital m₁ e₁) [h : MulOneClass X] (distrib : ∀ (a b c d : X), m₁ (a * b) (c * d) = m₁ a c * m₁ b d) :

    If a type carries a unital magma structure that distributes over a unital binary operation, then the magma structure is a commutative monoid.

    Equations
    Instances For
      @[reducible, inline]
      abbrev EckmannHilton.addCommMonoid {X : Type u} {m₁ : XXX} {e₁ : X} (h₁ : EckmannHilton.IsUnital m₁ e₁) [h : AddZeroClass X] (distrib : ∀ (a b c d : X), m₁ (a + b) (c + d) = m₁ a c + m₁ b d) :

      If a type carries a unital additive magma structure that distributes over a unital binary operation, then the additive magma structure is a commutative additive monoid.

      Equations
      Instances For
        @[reducible, inline]
        abbrev EckmannHilton.commGroup {X : Type u} {m₁ : XXX} {e₁ : X} (h₁ : EckmannHilton.IsUnital m₁ e₁) [G : Group X] (distrib : ∀ (a b c d : X), m₁ (a * b) (c * d) = m₁ a c * m₁ b d) :

        If a type carries a group structure that distributes over a unital binary operation, then the group is commutative.

        Equations
        Instances For
          @[reducible, inline]
          abbrev EckmannHilton.addCommGroup {X : Type u} {m₁ : XXX} {e₁ : X} (h₁ : EckmannHilton.IsUnital m₁ e₁) [G : AddGroup X] (distrib : ∀ (a b c d : X), m₁ (a + b) (c + d) = m₁ a c + m₁ b d) :

          If a type carries an additive group structure that distributes over a unital binary operation, then the additive group is commutative.

          Equations
          Instances For