Skip to content

The deformation (algebraic Novikov / τ-Bockstein) spectral sequence - #289

Draft
JoeyBF wants to merge 4 commits into
SpectralSequences:masterfrom
JoeyBF:claude/motivic-deformation
Draft

The deformation (algebraic Novikov / τ-Bockstein) spectral sequence#289
JoeyBF wants to merge 4 commits into
SpectralSequences:masterfrom
JoeyBF:claude/motivic-deformation

Conversation

@JoeyBF

@JoeyBF JoeyBF commented Aug 29, 2026

Copy link
Copy Markdown
Collaborator

Draft — third tranche of the motivic stack. Cumulative: contains the resolution tranche below it, so review only the top commit until that one lands.

What this is

Assemble the lifted differential into a trigraded spectral sequence (stem n, filtration s, weight w):

  • $E_1 = \mathrm{Ext}_{A_C/\tau}$, grouped by weight, with $d_1$ the weight-1 part of δ.
  • higher $d_r$ by the τ-Bockstein zig-zag: push $\delta(\tilde x)$ up in weight one order at a time, correcting each intermediate order against $d_1$'s stored quasi-inverse, and read the weight-$(w+r)$ part.
  • inverting τ gives the classical Adams $E_2$; finite-page deaths are the motivic τ-torsion.

Adds classical_ext_rank and the chart_motivic example.

Stack

Deferred

deformation_products goes with the products tranche — it reads multiplication off the Ext DGA, so it needs the cohomology layer (and #267) rather than anything here.

Status

Build/clippy/fmt clean. 6 motivic tests pass, including the anchor: inverting τ reproduces the classical Adams $E_2$ over the tested range.


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-deformation branch from f392196 to 38c29c4 Compare September 1, 2026 02:05
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
@JoeyBF
JoeyBF force-pushed the claude/motivic-deformation branch from 38c29c4 to 9b8d6d6 Compare September 1, 2026 02:10
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