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 #
AddFreeGroup- the main definition.decideHomsEqual- the crucial result that allows the automatic comparison of homomorphisms by checking their values on the basis.ℤFree- a proof that the additive group of integers is a free group on the one-element type.prodFree- a proof that the product of free groups is free.
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.
- ι : X → F
The inclusion map from the basis to the free group.
The homomorphism from the free group induced by a map from the basis.
A proof that the induced homomorphism extends the map from the basis.
A proof that any homomorphism extending a map from the basis must be unique.
Instances
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
- LeanPool.Polylean.decideHomsEqual f g = if c : ∀ (x : X), f (LeanPool.Polylean.AddFreeGroup.ι x) = g (LeanPool.Polylean.AddFreeGroup.ι x) then isTrue ⋯ else isFalse ⋯
Instances For
The inclusion map from the direct sum of the bases of two free groups into their product.
Equations
Instances For
The group homomorphism from the product of two free groups induced by a map from the basis.
Equations
Instances For
The product of free groups is free.
Equations
- One or more equations did not get rendered due to their size.