Documentation

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 AddFreeGroup (F : Type u_1) [inst : AddCommGroup F] (X : Type u_2) :
Type (max(max1u_1)u_2)
  • The inclusion map from the basis to the free group.

    ι : XF
  • The homomorphism from the free group induced by a map from the basis.

    inducedHom : (A : Type) → [inst : AddCommGroup A] → (XA) → F →+ A
  • A proof that the induced homomorphism extends the map from the basis.

    induced_extends : ∀ {A : Type} [inst : AddCommGroup A] (f : XA), ↑(inducedHom A inst f) ι = f
  • A proof that any homomorphism extending a map from the basis must be unique.

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

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.

Instances

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

    Equations
    instance decideHomsEqual {F : Type u_1} [inst : AddCommGroup F] {X : Type u_2} [inst : EnumDecide.DecideForall X] [fgp : AddFreeGroup F X] {A : Type} [inst : AddCommGroup A] [inst : DecidableEq A] :

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

    Equations
    def AddFreeGroup.Product.ι {A : Type u_1} {B : Type u_2} [inst : AddCommGroup A] [inst : 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
    def AddFreeGroup.Product.inducedProdHom {A : Type u_1} {B : Type u_2} [inst : AddCommGroup A] [inst : 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) [inst : 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
    instance AddFreeGroup.Product.prodFree {A : Type u_1} {B : Type u_2} [inst : AddCommGroup A] [inst : 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.