Skip to content

Motivic Adams E₂: cohomology of δ, products and Massey products - #290

Draft
JoeyBF wants to merge 5 commits into
SpectralSequences:masterfrom
JoeyBF:claude/motivic-ext-products
Draft

Motivic Adams E₂: cohomology of δ, products and Massey products#290
JoeyBF wants to merge 5 commits into
SpectralSequences:masterfrom
JoeyBF:claude/motivic-ext-products

Conversation

@JoeyBF

@JoeyBF JoeyBF commented Aug 29, 2026

Copy link
Copy Markdown
Collaborator

Draft — top of the motivic stack. Cumulative: contains every tranche below it, so review only the top commit until those land.

What this is

Take cohomology of δ to get the motivic Adams $E_2$, and read products and Massey products off it.

  • cohomology — the Ext DGA carrying δ as its differential (MotivicCoboundary), TauModule, classical_ext_rank. This is where the $\mathrm{Hom}$ functor happens: the raw differential stays in the resolution, δ lives here.
  • f2tau — dense linear algebra over the PID $\mathbb{F}_2[\tau]$, polynomials packed as u128 bitmasks. Reads $E_2$ as an $\mathbb{F}_2[\tau]$-module: τ-torsion orders are the non-unit invariant factors (Smith normal form), and Massey coset membership is decided by reducing modulo a submodule.
  • products — the product lift, and deformation_products.
  • massey — motivic Massey products with τ, via the null-homotopy lift, with indeterminacy as an $\mathbb{F}_2[\tau]$-submodule coset.

Stack

Depends on #267 (the Ext DGA carrying a differential and computing cohomology), which is not yet merged, so its changes to ext_algebra and resolution_homomorphism are included here. That part drops out of this diff once #267 lands — it is unmodified from that branch.

Also contains the resolution and deformation tranches below it.

Status

Build/clippy/fmt clean. All 19 motivic tests pass, including the hidden τ-extension, Massey products with τ, and τ-module torsion agreeing with the deformation SS sources. The 10 ext_algebra tests from #267 pass unchanged on current master.


Generated by Claude Code

@coderabbitai

coderabbitai Bot commented Aug 29, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

`multiply_with_allocation` branched on `generic()`, but the two arms were the same
computation: `multiply_qpart(m1, 0)` returns `[(1, m1)]`, so the classical arm is the
generic one with an empty exterior part. Collapse them into `milnor_product`, a free
function that reports each `(coefficient, basis element)` through a callback, leaving
the index lookup and excess filter to the caller. `multiply_qpart` becomes free too; it
only ever read the prime.

`generic` was a `bool` field written once as `p != 2` and never mutated. Derive it
instead. That also drops its `#[cfg(feature = "odd-primes")]` gate: without the feature
`ValidPrime` is the zero-sized type 2, so the comparison folds to a constant on its own.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01F25ZVbsP7ULg41iY3MP6FX
@JoeyBF
JoeyBF force-pushed the claude/motivic-ext-products branch from 96fdf29 to c51fdde Compare September 1, 2026 02:06
Carve the motivic resolution layer out of the integration branch as the
next tranche after the algebra engine (SpectralSequences#266, merged).

Adds CTauAlgebra, the A_C/tau view the ordinary resolution engine resolves,
and MotivicResolution: resolve the trivial module over A_C/tau, then lift
the differential to A_C by correcting along the weight grading. Includes
the resolution cache and the resolve_motivic_ctau example.

A_C/tau is F_2[xi_i] tensor E(tau_i) — the odd-primary dual's shape with
2^i for p^i — so its product is the classical one at p = 2: the exterior
commutation shifts by 2^k and the signs collapse over F_2. It therefore
multiplies through `milnor_product` from the parent commit rather than
reimplementing the walk, and a test cross-checks that against the engine's
independent closed-form product, which comes from Kong-Lin duality instead.

Note that `milnor_product` takes its left factor first while the engine's
`product_indexed` orders its arguments the other way; the two agree exactly
under that transposition.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013ePtYD7Bt4iPeCtmqtqvZE
Parsing and product invariants in CTauAlgebra:

- `Q_k` with k >= 32 was shifted into a 32-bit exterior mask: a debug panic,
  and in release a masked shift that silently produced the wrong monomial.
  Module descriptors are untrusted input, so reject it instead.
- A product term absent from the degree-t basis was skipped. `enum_basis`
  holds every such monomial, so a miss is a broken invariant, not a term to
  drop; say so.
- Reuse the `PPartAllocation` across basis products rather than allocating
  one per call.
- The decomposition residual check guarded a silently wrong result, so it
  now holds in release too.

In the resolution:

- `MOT_MARGIN` below 1 shrank the compute box under the report box, so
  readers indexed generators the lift never populated. Clamp it.
- The tau-power cast wrapped a negative difference to near u32::MAX, which
  also defeated the `power >= 1` test guard. Fail on it.
- Only the (s=0, t=0) generator is seeded with a weight, so a module that is
  not cyclic on a degree-0 class left generators unweighted and panicked in
  the verify path far from the cause. Reject such modules up front. Seeding
  caller-supplied cell weights is left for the follow-up that needs them.

The example now uses `trivial_module` and the `CTauResolution` alias instead
of rebuilding both.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013ePtYD7Bt4iPeCtmqtqvZE
… sequence

Assemble the lifted differential into a trigraded spectral sequence: E_1 =
Ext over A_C/tau with d_1 the weight-1 part of delta, and the higher d_r by
the tau-Bockstein zig-zag. Inverting tau gives the classical Adams E_2;
finite-page deaths are the motivic tau-torsion.

Adds classical_ext_rank and the chart_motivic example. The anchor test
asserts that inverting tau reproduces the classical Adams E_2 over the
tested range.

deformation_products is deferred to the products tranche, since it reads
multiplication off the Ext DGA.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013ePtYD7Bt4iPeCtmqtqvZE
The top of the motivic stack: take cohomology of delta to get the motivic
Adams E_2, and read products and Massey products off it.

- cohomology: the Ext DGA carrying delta as its differential (TauModule,
  classical_ext_rank), plus f2tau, the dense F_2[tau] linear algebra that
  reads E_2 as an F_2[tau]-module (invariant factors for tau-torsion,
  coset reduction for Massey indeterminacy).
- products: the product lift and deformation_products.
- massey: motivic Massey products with tau, via the null-homotopy lift.

Includes the ext_algebra differential/cohomology support from SpectralSequences#267, which
this builds on and which is not yet merged; that part drops out of the diff
once SpectralSequences#267 lands.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013ePtYD7Bt4iPeCtmqtqvZE
@JoeyBF
JoeyBF force-pushed the claude/motivic-ext-products branch from c51fdde to 0d9ef82 Compare September 1, 2026 02:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants