Auditable relator expressions #
Finite group presentations in print use expressions such as powers and commutators, while
FreeGroup consumes flat words. This file provides a small expression language for transcribing
those published relators and compiles it to Mathlib's canonical signed-word representation
List (α × Bool). In that representation true denotes a generator and false its inverse.
The central result, TauCeti.Relator.toWord_toFreeGroup, proves that compilation agrees with direct
structural interpretation in the free group. This makes the compiler a checked link between a
human-readable transcription and the relator used to define a presented group.
The representation and its interpretation reuse FreeGroup.mk, FreeGroup.invRev,
commutatorElement, and their compatibility with multiplication, inversion, and natural powers
from Mathlib.
Main definitions #
TauCeti.PresentationWord: Mathlib's left-to-right list of signed generators.TauCeti.Relator: expressions built from generators, inverse, product, power, and commutator.TauCeti.Relator.map: renaming generators while preserving the expression structure.TauCeti.Relator.toWord: compilation of an expression to a signed word.TauCeti.Relator.length: the length of that word, computed from the expression without expanding powers.TauCeti.Relator.eval: structural evaluation under a generator assignment in any group.TauCeti.Relator.toFreeGroup: evaluation at the canonical free-group generators.TauCeti.Relator.conjandTauCeti.Relator.div: the conjugates⁻¹ r sand the relatorr s⁻¹by which a source states an equation between two words.TauCeti.Relator.commInvInv: the commutatorr⁻¹ s⁻¹ r sof the presentation literature.TauCeti.Relator.relatorSet: the free-group elements denoted by a list of expressions.
Main results #
TauCeti.Relator.toWord_toFreeGroup: compilation preserves the free-group element denoted by an expression.TauCeti.Relator.relatorSet_eq_of_mem_map_toWord_iff: relator lists with the same compiled-word membership denote the same relations.
A left-to-right word in generators of α and their formal inverses. The Boolean convention is
the one used by FreeGroup.mk: true is a generator and false is its inverse.
Instances For
A human-readable relator expression.
The commutator constructor is Mathlib's commutatorElement, that is, the convention
⁅r, s⁆ = r * s * r⁻¹ * s⁻¹. A source using the convention
[r, s] = r⁻¹ * s⁻¹ * r * s should be transcribed as comm (inv r) (inv s).
- gen
{α : Type u_1}
(x : α)
: Relator α
A generator.
- inv
{α : Type u_1}
(r : Relator α)
: Relator α
The inverse of a relator expression.
- mul
{α : Type u_1}
(r s : Relator α)
: Relator α
The product of two relator expressions.
- pow
{α : Type u_1}
(r : Relator α)
(n : ℕ)
: Relator α
A relator expression raised to a natural power.
- comm
{α : Type u_1}
(r s : Relator α)
: Relator α
The commutator
⁅r, s⁆ = r * s * r⁻¹ * s⁻¹.
Instances For
Instances For
Compile a relator expression to a flat signed word.
Inversion uses Mathlib's FreeGroup.invRev, which reverses the word and flips every sign. Powers
are compiled by repeating the whole word, rather than by expanding the expression recursively. The
five equation lemmas below are the public interface: the body itself is not exposed.
Instances For
Compilation of an inverse.
A power of a relator compiles to a cyclically reduced word as soon as its base does.
Published relators are often a single large power, and checking the base is much cheaper than
checking the expansion: the base of the longest TauCeti.Sporadic.co1Presentation relator has
nine letters where its expansion has three hundred and fifty-one.
TauCeti.isCyclicallyReduced_toWord_coxeterRelator is the case of a base with two letters.
The number of signed letters in the compiled word of a relator expression, read off the expression itself rather than from the compiled list.
A transcribed presentation checks its published letter count against
TauCeti.GroupPresentation.totalLength. Computing that count through Relator.toWord alone forces
every power to be expanded, which for a relator such as (adefcefgh)³⁹ is hundreds of signed-letter
constructors; this function multiplies instead of repeating, and TauCeti.Relator.length_toWord
certifies that the two agree.
The five equations below are the interface: a module carrying transcribed relators rewrites with them rather than unfolding this definition.
Instances For
The structural length is the length of the compiled word.
This is stated in the direction that rewrites away Relator.toWord, so a letter count of a
transcribed presentation reduces to arithmetic on the transcribed expressions.
Evaluate an expression at the canonical free-group generators. This remains independent of
Relator.toWord: the comparison theorem below checks that compilation preserves meaning. The
five equation lemmas below are the public interface.
Instances For
Interpretation of a generator.
Interpretation of an inverse.
Interpretation of a product.
Interpretation of a natural power.
Interpretation of a commutator.
Group homomorphisms commute with evaluation of relator expressions.
The free-group universal map evaluates the expression at the assigned generators.
The conjugate s⁻¹ * r * s, written r ^ s by most of the presentation literature.
Published presentations of the larger sporadic groups state many of their relators as conjugates,
so this is the shape a transcription of such a source needs. It is a derived form rather than a
sixth constructor: Relator.toWord and Relator.toFreeGroup therefore stay total on the five
constructors, and Relator.toWord_toFreeGroup covers it with no extra case.
The body is exposed because a module carrying transcribed relators checks properties of its list by kernel reduction, which needs the transcription combinators to reduce.
Instances For
The relator r * s⁻¹, by which a source states the equation r = s.
A published presentation freely mixes relators with relations, writing for instance a = (cd)⁴
alongside a²; Relator.toFreeGroup_div computes what this denotes, so Mathlib's div_eq_one
says that imposing r s⁻¹ as a relator is imposing the source's equation r = s.
The body is exposed for the same reason as that of TauCeti.Relator.conj.
Instances For
The commutator r⁻¹ s⁻¹ r s, written [r, s] by most of the presentation literature.
Mathlib's bracket is ⁅r, s⁆ = r s r⁻¹ s⁻¹, carried by Relator.comm, so the presentation
literature's commutator is Relator.comm applied to the two inverses, which is what this
abbreviates; Relator.toFreeGroup_commInvInv computes what it denotes.
The body is exposed for the same reason as that of TauCeti.Relator.conj.
Instances For
The conjugate expression denotes the conjugate free-group element.
The equation expression denotes the quotient of the two free-group elements.
The commutator expression of the presentation literature denotes r⁻¹ s⁻¹ r s: the expanded
word a reviewer compares against the printed source.
The compiled word of a commutator expression of the presentation literature.
Membership in a relator set: being denoted by some expression of the list.
Appending relator lists unions their relator sets.
The compiled word denotes the direct interpretation of the relator expression.
Consequently, a reviewer may check the structured Relator against a published presentation while
a PresentedGroup safely uses FreeGroup.mk r.toWord as its defining relation.
Structural interpretation commutes with the induced free-group homomorphism.
Two relator lists with the same compiled-word membership denote the same relations.
A source may present the same relation in two shapes: an involution relation is written sᵢ ^ 2
by one source and (sᵢ sᵢ) ^ 1 by another, and a list of relations carries no order. Neither
difference reaches the presented group, because the relations are the free-group elements of the
compiled words and these agree. A transcription can therefore be compared with a generated relator
list letter by letter, which is decidable, rather than expression by expression, which would see
both differences. Multiplicity is irrelevant because relatorSet is a set.