Documentation

LeanPool.Polylean.UnitConjecture.AddFreeGroup

Free groups #

The definition of a free group on a basis, along with a few properties.

Free groups are defined constructively to allow automatic equality checking of homomorphisms on finitely generated free groups.

Overview #

class LeanPool.Polylean.AddFreeGroup (F : Type u_1) [AddCommGroup F] (X : Type u_2) :
Type (max (max 1 u_1) u_2)

Free (Additive) Groups, implemented as a typeclass. A free additive group with a basis X is an additive group F with an inclusion map ι : X → F, such that any map f : X → A from the basis to any Abelian group A extends uniquely to an additive group homomorphism φ : F →+ A.

  • ι : XF

    The inclusion map from the basis to the free group.

  • inducedHom (A : Type) [AddCommGroup A] : (XA)F →+ A

    The homomorphism from the free group induced by a map from the basis.

  • induced_extends {A : Type} [AddCommGroup A] (f : XA) : (inducedHom A f) ι = f

    A proof that the induced homomorphism extends the map from the basis.

  • unique_extension {A : Type} [AddCommGroup A] (f g : F →+ A) : f ι = g ιf = g

    A proof that any homomorphism extending a map from the basis must be unique.

Instances
    @[implicit_reducible]

    The additive group of integers is the free group on a singleton basis.

    Equations
    • One or more equations did not get rendered due to their size.

    Equality of homomorphisms from a free group on an exhaustively searchable basis is decidable.

    Equations
    Instances For
      def LeanPool.Polylean.AddFreeGroup.Product.ι {A : Type u_1} {B : Type u_2} [AddCommGroup A] [AddCommGroup B] {X_A : Type u_3} {X_B : Type u_4} [FAb_A : AddFreeGroup A X_A] [FAb_B : AddFreeGroup B X_B] :
      X_A X_BA × B

      The inclusion map from the direct sum of the bases of two free groups into their product.

      Equations
      Instances For
        def LeanPool.Polylean.AddFreeGroup.Product.inducedProdHom {A : Type u_1} {B : Type u_2} [AddCommGroup A] [AddCommGroup B] {X_A : Type u_3} {X_B : Type u_4} [FAb_A : AddFreeGroup A X_A] [FAb_B : AddFreeGroup B X_B] (G : Type) [AddCommGroup G] (f : X_A X_BG) :
        A × B →+ G

        The group homomorphism from the product of two free groups induced by a map from the basis.

        Equations
        Instances For
          @[implicit_reducible]
          instance LeanPool.Polylean.AddFreeGroup.Product.prodFree {A : Type u_1} {B : Type u_2} [AddCommGroup A] [AddCommGroup B] {X_A : Type u_3} {X_B : Type u_4} [FAb_A : AddFreeGroup A X_A] [FAb_B : AddFreeGroup B X_B] :
          AddFreeGroup (A × B) (X_A X_B)

          The product of free groups is free.

          Equations
          • One or more equations did not get rendered due to their size.