Skip to content

Recurrence spaces, phase A: shift operators, filtered finite check, defect identity (#1978) - #1997

Merged
PerAlexandersson merged 4 commits into
mainfrom
formalize/recurrence-spaces
Oct 21, 2026
Merged

PerAlexandersson merged 4 commits into
mainfrom
formalize/recurrence-spaces

Conversation

@PerAlexandersson

Copy link
Copy Markdown
Owner

Phase A of #1978: the operator algebra behind turning a long linear recurrence into a shorter
recurrence that involves derivatives (a "derivative lift"), and back.

Shift operators (RealRooted/Mathlib/Algebra/LinearRecurrence/Operator.lean, upstream-shaped)

  • LinearRecurrence.shiftAction p acts on a sequence by evaluating p at the shift, i.e. p(S).
    The action is multiplicative and respects powers.
  • eq_zero_of_monic_of_shiftAction_eq_zero: if a monic p(S) annihilates a sequence whose
    first p.natDegree values are zero, the sequence is zero.
  • shiftAction_indexMul: commuting p(S) past multiplication by the index produces
    (X * p.derivative)(S).

Operators on polynomial-valued sequences (RealRooted/RecurrenceSpace/)

  • sequenceDerivative_shiftAction: a product rule, D(p(S) f) = p_X(S) f + p(S)(D f), where
    p_X differentiates the coefficients of p.
  • FilteredOperator represents combinations of the words N^u S^j D^s.
    FilteredOperator.apply_eq_zero_iff reduces "the residual vanishes for all n" to
    "it vanishes for n < h * k", for a monic source recurrence of degree k.
  • lagDefect_liftDefect is the universal source-and-lift defect identity.
    liftDefect_eq_zero_of_lagDefect_eq_zero and lagDefect_eq_zero_of_liftDefect_eq_zero give
    the two propagation directions under the factor certificate J = C γ * χ.
  • Example (Tactic/Examples/A049325RecurrenceSpace.lean): the fourth-order lag recurrence of
    A049325 certifies the first-order lift
    (n+4) P[n+1] = X(X+16) P'[n] + (4 - 4n + 2X) P[n].

Phase B (a certificate-replay tactic) and phase C (structure theory) remain open in #1978.

Checks (local)

  • Full default build passes.
  • runLinter passes against the committed nolints.json, with the baseline unchanged.
  • lake exe lint-style and all guards pass.
  • The shim registry check passes, with the new shim registered.
  • OEIS_COVERAGE.md is regenerated and passes --check.
  • The catalog axiom audit passes.

🤖 Generated with Claude Code

PerAlexandersson and others added 4 commits October 21, 2026 16:57
…dentity

Formalizes phase A of #1978.

- `LinearRecurrence.shiftAction p` acts on sequences by `p(S)`. It is
  multiplicative, and a monic annihilator with zero initial values
  forces zero.
- The commutator with index multiplication is `(X * p.derivative)(S)`.
- `sequenceDerivative_shiftAction`: coefficient-derivative product rule.
- `FilteredOperator.apply_eq_zero_iff`: a filtered residual vanishes iff
  it vanishes for `n < h * k`.
- `lagDefect_liftDefect` is the universal source-and-lift defect
  identity. `liftDefect_eq_zero_of_lagDefect_eq_zero` and
  `lagDefect_eq_zero_of_liftDefect_eq_zero` give both propagation
  directions.
- Example: the A049325 lag recurrence certifies its first-order lift.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…overage

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@PerAlexandersson
PerAlexandersson merged commit 20f2af0 into main Oct 21, 2026
4 checks passed
@PerAlexandersson
PerAlexandersson deleted the formalize/recurrence-spaces branch October 21, 2026 20:40
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.

1 participant