Q1b Step 1: assemble per-degree circT T n into circByT_total T : SymmetricAlgebra → L #
For each n, OudomGuinCircConstruct.circTMultilinear R T n gives a
symmetric multilinear map (Fin n → L) → L (sorry-free per Lemma 2.5 at
0.231.112). This file assembles these per-degree pieces into a single
linear map
circByT_total T : SymmetricAlgebra R L →ₗ[R] L
via the TensorAlgebra detour:
- For each
n, liftcircTMultilinear T nto a linear map on then-thPiTensorProductviaPiTensorProduct.lift. - Assemble across all
nviaDirectSum.toModuleto get(⨁ n, ⨂[R]^n L) →ₗ[R] L. - Compose with mathlib's
TensorAlgebra.equivDirectSumto getTensorAlgebra R L →ₗ[R] L. - Show this respects
TensorAlgebra.SymRel(the symmetric-algebra relationι(x)·ι(y) ~ ι(y)·ι(x)) — substantive content usescircTMultilinear_symm(Lemma 2.5). - Lift through the
SymmetricAlgebra = RingQuot SymRelquotient.
Composed with mathlib's SymmetricAlgebra.ι : L →ₗ[R] SymmetricAlgebra R L
on the codomain, this is the per-T operation ι(T) ○ · of the OG ○.
The full oudomGuinCirc (Q1b Step 3) extends this to general
left-arguments via OG Prop 2.7.iii.
Status (2026-05-16) #
Step 1 fully landed sorry-free (~370 LOC).
- Items 1–3 (per-degree
circTPi, gradedcircTGraded, TensorAlgebra-levelcircTTensor) — sorry-free. - Item 4 (
circTTensor_symRel: respects SymRel at n = 2 viacircTMultilinear_two_eval+RightPreLieRing.assoc_symm') — sorry-free. - Item 5 (
circByT_total: lift through theRingQuotquotient toSymmetricAlgebra R L →ₗ[R] L) — sorry-free viaSubmodule.liftQ+LinearMap.quotKerEquivOfSurjectiveon surjectivealgHomL. The kernel containmentker algHomL ≤ ker (circTTensor T)is proven through: (a)TA_linearMap_ext_tprod(helper — linear maps fromTensorAlgebraagreeing on tprods are equal, viaequivDirectSum+DirectSum.linearMap_extPiTensorProduct.ext); (b)circTTensor_swap_general(bilinear extension ofcircTTensor_swap_tprodto generalr, d ∈ TensorAlgebra); (c)RingQuot.Rel/EqvGeninduction with the strong motive∀ r d, circTTensor T (r * z₁ * d) = circTTensor T (r * z₂ * d), closing underadd_left/mul_left/mul_rightvia associativity + additivity.
References #
- @cite{oudom-guin-2008} Def 2.4 + Lemma 2.5 (per-degree symmetry).
§1: Per-degree lift via PiTensorProduct.lift #
Per-degree lift of circTMultilinear R T n to the n-th
PiTensorProduct (i.e., ⨂[R]^n L).
Equations
- PreLie.OudomGuinCircConstruct.circTPi T n = PiTensorProduct.lift (PreLie.OudomGuinCircConstruct.circTMultilinear R T n)
Instances For
§2: Assembly across degrees via DirectSum.toModule #
Assembly of all circTPi T n into a linear map from the direct sum
of all tensor powers.
Equations
- PreLie.OudomGuinCircConstruct.circTGraded T = DirectSum.toModule R ℕ L fun (n : ℕ) => PreLie.OudomGuinCircConstruct.circTPi T n
Instances For
§3: Composition with TensorAlgebra.equivDirectSum #
Per-T OG operation, on the TensorAlgebra level. Assembled from per-degree
circTPi T n via mathlib's TensorAlgebra ≃ₐ ⨁_n ⨂[R]^n L.
Equations
- PreLie.OudomGuinCircConstruct.circTTensor T = PreLie.OudomGuinCircConstruct.circTGraded T ∘ₗ TensorAlgebra.equivDirectSum.toLinearMap
Instances For
circTTensor T (TensorAlgebra.tprod R L n f) = circTMultilinear R T n f.
§3.A: tprod multiplication #
(tprod_m a) * (tprod_n b) = tprod_{m+n} (Fin.append a b). Derived from
TensorAlgebra.tprod_apply (which expresses tprod as List.prod of
ιs) + List.prod_append + List.ofFn_fin_append.
The product of two tprods is the tprod of the concatenated tuple.
ι R x = tprod 1 (fun _ => x).
§3.B: Swap-in-product lemma on tprods #
The KEY substantive lemma reducing the kernel-containment to Lemma 2.5.
For tprods of a, b with an ι X * ι Y insert: the swap of X and Y
corresponds to a transposition of two adjacent positions in the
concatenated tuple, which circTMultilinear_symm makes invariant.
§4: circTTensor respects SymRel (consequence of Lemma 2.5) #
The substantive content: circTTensor T (ι(x) * ι(y)) = circTTensor T (ι(y) * ι(x)),
which reduces to circTMultilinear T 2 (x, y) = circTMultilinear T 2 (y, x) via
circTMultilinear_symm (Lemma 2.5).
circTTensor T respects the symmetric-algebra relation SymRel.
§5: Lift to SymmetricAlgebra via Submodule.liftQ #
Use Submodule.liftQ after expressing SymmetricAlgebra R L as
TensorAlgebra R L ⧸ (ker algHom) via LinearMap.quotKerEquivOfSurjective
(algHom is surjective by RingQuot.mkAlgHom_surjective).
The kernel-containment ker algHom ≤ ker (circTTensor T) is the
substantive content. Reduces to: for any r, c ∈ TensorAlgebra R L
and X, Y ∈ L,
circTTensor T (r * (ι X * ι Y) * c) = circTTensor T (r * (ι Y * ι X) * c),
which follows from the FULL symmetric-group action on
circTMultilinear T n (Lemma 2.5 across all positions, not just adjacent)
applied to the concatenated tuple [r's positions, X, Y, c's positions].
algHom (the quotient map) as a LinearMap.
Equations
- PreLie.OudomGuinCircConstruct.algHomL = (SymmetricAlgebra.algHom R L).toLinearMap
Instances For
§5.A: Helper — linear maps from TensorAlgebra agree iff they agree on tprods #
Bilinear extension lemma: two linear maps TA → L that agree on
TensorAlgebra.tprod R L n a for every n, a are equal. The proof transfers
through TensorAlgebra.equivDirectSum (algebra equivalence to ⨁ⁿ ⨂ⁿ L),
then uses DirectSum.linearMap_ext (per-summand check) and
PiTensorProduct.ext (per-tprod check) — both @[ext] lemmas in mathlib.
§5.B: Bilinear extension of circTTensor_swap_tprod #
circTTensor T (r * (ι X * ι Y) * d) = circTTensor T (r * (ι Y * ι X) * d)
for all r, d ∈ TensorAlgebra R L. Proven by bilinear extension from the
tprod case (circTTensor_swap_tprod) via two applications of
TA_linearMap_ext_tprod.
§5.C: Kernel containment via Rel/EqvGen induction #
ker algHomL ≤ ker (circTTensor T). Proof: algHomL z = 0 iff z is in
the same Quot (Rel SymRel)-class as 0. Via Rel induction with a strong
motive (∀ r d, circTTensor T (r * z₁ * d) = circTTensor T (r * z₂ * d)),
the algebraic closure under add_left, mul_left, mul_right is preserved,
and the base case is circTTensor_swap_general.
The per-T OG operation, on SymmetricAlgebra R L. Lands in L.
Built via Submodule.liftQ + LinearMap.quotKerEquivOfSurjective
applied to the surjective algHom : TensorAlgebra → SymmetricAlgebra.
Equations
- One or more equations did not get rendered due to their size.
Instances For
§6: T-linearity (Q1b Step 2.1) #
Each of circTMultilinear, circTTensor, circByT_total is linear in
its T : L argument. Proven by descent: induction at the multilinear
level, then transferred through PiTensorProduct.lift, DirectSum.toModule,
equivDirectSum, and the Submodule.liftQ descent.
The final output circByT_totalLM : L →ₗ[R] SymmetricAlgebra R L →ₗ[R] L
is the input to SymmetricAlgebra.lift (Q1b Step 2.2).
Key characterization: circByT_total T agrees with circTTensor T
when precomposed with algHomL.
circByT_total is additive in T. Via the algHomL characterization +
surjectivity.
circByT_total is R-homogeneous in T.
circByT_total as a linear map in T. Input to SymmetricAlgebra.lift
(Q1b Step 2.2).
Equations
- PreLie.OudomGuinCircConstruct.circByT_totalLM = { toFun := PreLie.OudomGuinCircConstruct.circByT_total, map_add' := ⋯, map_smul' := ⋯ }
Instances For
§6.A: Base-case evaluations of circByT_total #
For Prop 2.7 (i) / circ_one_right (Q1b Step 3.1): need
circByT_total T 1 = T. Traces through the construction chain
circByT_total → circTTensor → circTGraded → circTPi → circTMultilinear
to the degree-0 base case circTMultilinear T 0 = T.
circTTensor T 1 = T. Base case via DirectSum.one_def + TensorPower.gOne_def.
circByT_total T 1 = T. The T ○ 1 = T base case (OG Def 2.4 base).
Via circByT_total_comp_algHomL + algHomL 1 = 1 + circTTensor_one.
circByT_total T (ι X) = T * X. The degree-1 case (T ○ X = T · X
in the pre-Lie product on L).