Documentation

Q2Presentation.Foundation.Expr

Uniform word evaluation (GExpr) — Stage A #

A tiny abstract-syntax tree GExpr for words in the four marked generators (with ℕ-powers and the profinite ω₂-power), together with its evaluation GExpr.eval into a finite group under a Marking G = Gen → G.

The single load-bearing lemma is GExpr.eval_map: evaluation commutes with group homomorphisms between finite groups. The only non-formal ingredient is the powOmega2 case, which is exactly Q2Presentation.map_powOmega2 (proved in Omega2). Its finite-product corollary GExpr.eval_pi says evaluation commutes with the projections of a finite product ∀ i, G i; this is what the subdirect construction in Stage B (admissible_subdirect) uses.

The design point (plan §2): all sophistication lives in eval_map / map_powOmega2; the displayed Q₂ words (in Q2Words.lean) are boring data.

@[reducible, inline]
abbrev Q2Presentation.Marking (G : Type u_1) [Group G] :
Type u_1

A marking assigns a group element to each of the four generators.

Equations
Instances For

    Abstract syntax for words in the generators: the identity, a generator, products, inverses, ℕ-powers, and the profinite ω₂-power.

    Instances For
      Equations
      Instances For
        noncomputable def Q2Presentation.GExpr.eval {G : Type u_1} [Group G] [Finite G] :
        GExpr → Marking G → G

        Evaluate a GExpr in a finite group G under a marking q : Gen → G. The powOmega2 case is the finite ω₂-power Q2Presentation.powOmega2.

        Equations
        Instances For
          theorem Q2Presentation.GExpr.eval_map {G : Type u_1} {H : Type u_2} [Group G] [Finite G] [Group H] [Finite H] (φ : G →* H) (w : GExpr) (q : Marking G) :
          φ (w.eval q) = w.eval fun (a : Gen) => φ (q a)

          Evaluation commutes with finite-group homomorphisms. Applying φ to the value of a word equals evaluating the word against the φ-pushed marking. This is the uniform mechanism behind quotient/product relation-preservation; the ω₂-power case is map_powOmega2.

          theorem Q2Presentation.GExpr.eval_pi {ι : Type u_1} [Finite ι] {G : ι → Type u_2} [(i : ι) → Group (G i)] [∀ (i : ι), Finite (G i)] (w : GExpr) (q : Marking ((i : ι) → G i)) (i : ι) :
          w.eval q i = w.eval fun (a : Gen) => q a i

          Evaluation commutes with the projections of a finite product. Evaluating a word against a marking into ∀ i, G i and then projecting to the i-th factor equals evaluating the projected marking in G i. This is the special case of eval_map for the evaluation homomorphism Pi.evalMonoidHom, and is the form the subdirect-product construction (admissible_subdirect) consumes.