Skip to content

feat(arithmetic): quasipolynomial hitting sets for ROABPs in an unknown order — isolated spanning sets, modular weights, coefficients of a program, levels, hitting set (#4724) - #4726

Merged
edemaine merged 18 commits into
cslib-community:mainfrom
barni120400:feat/pit-roabp-quasipoly
Nov 12, 2026

Conversation

@barni120400

Copy link
Copy Markdown
Contributor

Closes #4724.

What this adds

Theorem 1 of Agrawal–Gurjar–Korwar–Saxena (SIAM J. Comput. 2015, arXiv:1406.7535), for univariate layers, over fields of characteristic zero: an explicit set of (n δ w)^{O(log n)} points that hits every nonzero polynomial computed by a width-w read-once oblivious branching program in an unknown order of the variables, with layers of degree at most δ.

def IsROABP (w δ : ℕ) (f : MvPolynomial (Fin n) F) : Prop :=
  ∃ (l : List (Fin n)) (M : Fin n → Matrix (Fin w) (Fin w) F[X]) (s t : Fin w),
    l.Nodup ∧ (∀ i s t, (M i s t).natDegree ≤ δ) ∧ f = roabpProd M l s t

theorem isHittingSet_roabpHittingSet [CharZero F] :
    IsHittingSet (roabpHittingSet F n w δ) {f | IsROABP w δ f}

theorem card_roabpHittingSet_le :
    (roabpHittingSet F n w δ).card ≤
      (Nat.clog 2 n + 1) * roabpPrime n w δ ^ Nat.clog 2 n *
        (n * δ * (n * δ * roabpPrime n w δ + 1 + roabpPrime n w δ) ^ Nat.clog 2 n + 1)

theorem roabpPrime_le (n w δ : ℕ) :
    roabpPrime n w δ ≤ 2 * (2 * n * (w ^ 2) ^ 4 * n + δ + 1)

The library's polynomial-size sets (#4592) need the program to be narrow in every order and multilinear; this one needs one order and allows any degree.

Parts

Part Files Content
1. Isolated spanning sets Foundations/LinearAlgebra/IsolatedBasis.lean Cslib.Isolates (source Definition 5, without the basis requirement), Isolates.of_span_lt (Observation 7), exists_isolates_of_injOn (greedy choice), Isolates.mono_weight, exists_isolates_add (products). No polynomials.
2. Lemma 6 Foundations/Data/MvPolynomial/WeightSubstitution.lean aeval_X_pow_ne_zero_of_isolates: an isolating weight keeps f nonzero under X i ↦ X ^ c i.
3. Programs and their coefficients Arithmetic/ROABP.lean, HittingSet/ROABPMonomials.lean roabpProd, IsAnyOrderROABP, roabpProd_mem_supported moved from HittingSet/AnyOrder.lean (no alias, statements unchanged); IsROABP; coeff_roabpProd; monomialsLE, segmentCoeff and their behaviour on disjoint lists.
4. Weight family Foundations/NumberTheory/ModularWeights.lean modWeight p a i = a ^ (i + 1) % p; exists_modWeight_separating.
5. Levels Foundations/Data/Bracketing.lean, HittingSet/ROABPWeights.lean Bracketings of a list of height ⌈lg n⌉; exists_isolating_weight (source Lemma 8).
6. Hitting set HittingSet/ROABP.lean The set, the theorem, the size.

Differences from the source

  • No polynomial over the matrix algebra. MvPolynomial needs commutative coefficients, so the product of the layers is the function segmentCoeff M l on exponent vectors, linked to the program by coeff_roabpProd.
  • Isolates does not ask that S give a basis, only that the other coefficients lie in the span of lighter ones of S; Lemma 6 uses nothing more. The sets produced are linearly independent, hence of size at most w².
  • Weight family: a ^ (i + 1) mod p for one prime p > 2n²w⁸ + δ and all a < p (two exponent vectors collide for at most n values of a, by root counting over ZMod p; p is bounded by Bertrand's postulate), instead of the source's Lemma 4 ((δ + 1)^i mod q over the first primes, by the prime number theorem).
  • Levels are added one at a time as B · c + c' along a bracketing, instead of one sum ∑ wᵣ B^{log d − r}.
  • So the size expression is not the source's; it is of the same form (n δ w)^{O(log n)}.
  • Characteristic zero (the evaluation points are 0, 1, 2, …); univariate layers only; Theorems 2 and 3 of the source are not included.

Overlap with #4723

natDegree_aeval_le_mul and eval_polynomial_aeval in Substitution.lean are the same additions as in #4723 (the file is byte-identical to that branch's), so whichever lands second merges without change.

Manual and registry

Operator's Manual: new section "Quasipolynomial hitting sets for ROABPs in an unknown order". Registry: hitting-set-roabp-unknown-order. Bibliography: AgrawalGurjarKorwarSaxena2015. Agent Manual: no change.

Validation

scripts/check.sh --base origin/main, run on the working tree before the final commit: lake build, lake test, lake lint, source hygiene, statement ratchet, registry references, changed-file lints, mk_all --check, lint-style and checkInitImports pass. Two stages did not pass in that run:

  • "Test Python tooling" failed on test_check_restack…test_committed_aggregates_are_what_mk_all_writes, because the regenerated CslibFrontier.lean was not committed yet; after the commit python3 -m unittest test_check_restack passes (58 tests).
  • "Re-elaborate root-package files restored from the artifact cache" was stopped by me as soon as it started: in my worktree it re-elaborates the whole library file by file (over 40 minutes on another branch). It has not been run on this head.

After that run one unused lemma (Bracketing.leaves_ne_nil) was deleted and the endpoint and test modules rebuilt.

python3 scripts/audit_queries.py duplicates on Foundations/ and Computability/Circuit/Arithmetic/: no group contains a declaration of this PR. references --unused on the new files: only the size bound card_roabpHittingSet_le is unreferenced. No sorry.

AI assistance

Written with Claude Code (Claude Fable 5.2) in a session directed by the author; a subagent wrote parts 1, 2 and 4 from a fixed plan and interface. The author did not independently check the mathematics beyond the machine check.

🤖 Generated with Claude Code

barni120400 and others added 10 commits November 12, 2026 16:59
…parse polynomials (cslib-community#4717)

Theorem 1.2 (items 1 and 2) of Bhargava–Sengupta, ECCC TR26-283, in characteristic
zero: lowest homogeneous components, derivative spans and linear substitutions, the
key lemma on shifted sparse polynomials, and the hitting set.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
…am (cslib-community#4724)

roabpProd, IsAnyOrderROABP and roabpProd_mem_supported move from HittingSet/AnyOrder.
New: IsROABP, layerCoeff, coeff_roabpProd, coeff_roabpProd_eq_zero.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
…ing program (cslib-community#4724)

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
Also adds the references.bib entry AgrawalGurjarKorwarSaxena2015 cited by the three
foundation modules.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
…wn order (cslib-community#4724)

Theorem 1 of Agrawal–Gurjar–Korwar–Saxena for univariate layers, in characteristic
zero: level weights along a bracketing of the layers, the hitting set, its size,
test, manual section and registry entry.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
barni120400 and others added 3 commits November 12, 2026 17:42
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
…mmunity#4717)

- use Mathlib's restrictSupport instead of a parallel supportSpan
- move pderiv_aeval to Substitution; LinearSubstitution no longer imports the Hessian files
- eval_polynomial_aeval from comp_aeval_apply; HittingSet/Basic uses the shared
  natDegree_aeval_le_mul and eval_polynomial_aeval; natDegree_logCurve_le is shared

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
@edemaine

edemaine commented Nov 12, 2026 •

Copy link
Copy Markdown
Collaborator

The original full review is superseded by returned-delta APPROVE at b8740cad0f229aac4d0986d3ad307d221213446d: both requested repairs are resolved. Unchanged mathematical/model coverage carries by verified source identity. The current verdict records validation/manual evidence and the #4723 landing/restack hold. Independent agent review, not human approval.

@edemaine edemaine left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

REQUEST_CHANGES at 9f9487944e2004d84da4d2936652ee695361a778 — independent non-author agent reviewer-codex-edemaine-4726. The two inline repairs finish shared substitution reuse/client migration and correct section references displaced by the manual insertion. No mathematical defect found in the complete own layer.

I read the definitions, statements and proofs, including the original modular-root weight family, isolated-span product step, bracketing/level recursion, coefficient API and migrated any-order caller. The weaker Isolates condition suffices for the least nonzero coefficient argument; dimension is used for the small chosen sets. The hitting set is independent of variable order, with the displayed exact finite size bound, and covers the documented univariate-layer model over characteristic-zero fields. Empty lists and zero degree are handled; width zero represents no output entry. Tests include the nonzero rational degree-two client in order 1,0, concrete modular separation/failure and isolation/failure. This is an explicit finite-set/size result, without a native black-box runtime or point bit-complexity theorem.

Primary correspondence checked against arXiv:1406.7535v1: Theorem 1 p.2; Definition 5 p.7; Lemma 6 pp.7–8; Observation 7 pp.8–9; Lemma 8 pp.9–11 and Theorem 1 restated p.11. The documented modular-family and sequential-level changes are library adaptations, not the paper’s exact generator/bound. Credit, moved declarations/import availability, registry scope and excluded objectives are otherwise consistent.

Hosted CI passes all six gates/stock lint on a tested tree identical to this head; Guide passes. Actual notices examine 19 definitions, 43 statements and 49 proofs with no candidates; those heuristic reports do not establish uniqueness. Both-manual artifact 13957984467 has clean exact-head manifests, verified ZIP/all 77 source-input hashes, all 361 bibliography keys and both PDF hashes. Operator pages238–239 (printed230–231) render legibly; the semantic neighbor-reference finding remains. No Agent-manual edit is needed because roles/procedures do not change; ROADMAP, upstream markers and retired abstracts need no further change. No local Lean/build/cache, source edit or queue action. Review only the resulting bounded fix delta next; #4724 stays open until integration. Agent review, not human approval.

values of the substituted polynomials at `x`. -/
theorem eval_polynomial_aeval (g : τ → Polynomial R) (P : MvPolynomial τ R) (x : R) :
Polynomial.eval x (aeval g P) = eval (fun i => Polynomial.eval x (g i)) P := by
induction P using MvPolynomial.induction_on with

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please complete the concrete reuse/client migration for these two generic substitution results. HittingSet/Basic.lean still re-proves the degree estimate in natDegree_aeval_logCurve_le and repeats the evaluation induction in eval_aeval_logCurve; both should use the new shared APIs. Also derive eval_polynomial_aeval from pinned Mathlib MvPolynomial.comp_aeval_apply with Polynomial.aeval x and Polynomial.coe_aeval_eq_eval, instead of this second induction. I checked both the existing law and the old log-curve blocks. This is the same shared-source repair already requested in #4723: reuse that relevant fix across the branches, preserving the existing log-hitting-set and new ROABP clients, rather than implementing another variant.


**Not certified here.** Positive characteristic. Polynomials of individual degree above one, set-multilinear depth-three circuits, and orbits. The converse of `IsAnyOrderROABP.splitRankLE`. The bit length of the points and the cost of computing them. The size bound is not the source's: the hash family and the shifts are the library's own constructions.

## Quasipolynomial hitting sets for ROABPs in an unknown order

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Inserting this section separates the multilinear any-order hitting set from its shift/hash prerequisites and makes both neighboring relative references wrong. The preceding any-order paragraph (line226) now says those prerequisites are in “the next section”, which is this unknown-order construction; the following support-shift section (line260) says it supplies “the hitting set of the previous section”, again this construction. The new ROABP set instead uses isolated spans/modular weights. Replace both relative references with explicit named subsection links (any-order ROABPs and support-concentrating shifts), so later insertions such as #4731 also remain correct. The affected PDF pages238–239 show the same semantic mismatch; no rendering change is needed.

…ic section (cslib-community#4717)

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
@edemaine

Copy link
Copy Markdown
Collaborator

Current 9f948794 now conflicts with main 89a82e31 after the shared arithmetic work landed. I reproduced the merge in an independent repository: conflicts are limited to CslibFrontier.lean, HittingSet/AnyOrder.lean and CslibFrontierResults/Entries.lean. The only AnyOrder conflict is its import block: preserve main’s new SetPartitioned route and this PR’s ROABP migration. The manual and bibliography auto-merge, but their semantic cross-references still need the requested fix.

@barni120400 retains the branch: please normally merge current main while batching the existing shared-Substitution/LogCurve reuse and named-section-link fixes. Reuse #4723’s repair; retain the moved ROABP declarations without aliases, both sides of the registry, and regenerated canonical imports. #4731 remains a separate layer on this dependency.

Green checks cover the old head only. After publication, the affected delta needs review and fresh final-head validation/manual evidence; unchanged mathematical coverage remains reusable. No competing source edit or branch takeover was made. — non-author coordinator/reviewer-codex-edemaine

barni120400 and others added 2 commits November 12, 2026 18:47
Conflicts in Shift.lean and PartialDerivatives.lean (both sides kept) and the
import aggregate (regenerated).

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
…ing set (cslib-community#4724)

- Substitution.lean, HittingSet/Basic.lean and HessianChainRule.lean are those of cslib-community#4723:
  eval_polynomial_aeval from comp_aeval_apply, the log-curve client uses the shared
  degree and evaluation lemmas, pderiv_aeval lives in Substitution
- manual: relative 'next/previous section' references replaced by named links

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
@barni120400

Copy link
Copy Markdown
Contributor Author

Head is now b8740cad0.

Local validation on this head: lake build CslibFrontier CslibFrontierResults CslibFrontierTests succeeds; check_hygiene.py and check_changed_files.py --base origin/main pass. scripts/check.sh as a whole and the compiled audits were not rerun.

🤖 Generated with Claude Code

@edemaine

edemaine commented Nov 12, 2026 •

Copy link
Copy Markdown
Collaborator

Landed: exact approved 38906eba2ac452b755b2a08f9c7f97ecc3fdcfa5 squash-merged as bdca0da7 at20:01:40UTC. This non-author integration session previously ran the guarded queue helper. The source/model, trusted replay, current validation/notices and both-manual evidence below remain the acceptance record. #4724’s broader objectives stay open; #4731 now needs its author-owned normal-main reconciliation and resulting-head carry/checks.

APPROVE exact 38906eba2ac452b755b2a08f9c7f97ecc3fdcfa5; final integration holds cleared — independent non-author reviewer-codex-edemaine, reusing the complete layer approval.

I independently reran current main’s trusted checker and its pinned drivers in a separate object database: PASS, approved b8740cad0f229aac4d0986d3ad307d221213446d, approved base 11c426d2ad824a12b47bbd753bc24796ca579c5c, replayed onto this restack’s main base b91d5151fd7dc665a5e3efcb466077caf44e690d. The final tree matches the replay, including canonical aggregates. The initial local attempt could not launch the Windows-path merge driver; the shell-compatible rerun, not that infrastructure failure, is the reported result.

All 17 core/shared/client source and test paths match the approved head byte-for-byte. The unknown-order registry entry is unchanged and all 201 records of the restack’s base are retained. Toolchain/dependency pins are unchanged. The complete arithmetic manual chapter also equals the approved one: the final cleanup removes only the duplicate introduced by the plain merge, retaining one sparse-orbit section with the reviewed named links and one unknown-order section. Thus meaning, exports, attributes, imports, automation and actual clients retain the earlier coverage; no new mathematical review or source repair is needed.

Fresh manual artifact 13972622439 matches the exact clean head, API/download ZIP digest, complete 72+1 chapter set, three converters, bibliography/363 keys and both PDF hashes. Operator pages 242–243 (printed 234–235) and Agent page 4 are readable; the unchanged Agent guidance needs no edit. Hosted generated-build checks cover TeX/diagrams. Guide examples pass.

Terminal native CI now passes all six gates, stock changed-file lint, tidy/registry checks and tooling audits. Its actual checkout is merge b41d8b6d9aac311a8e084d909188a052787821d4 (f603d284 plus this head); all 17 reviewed source/test paths are byte-identical to the head. I read all three complete notices: 19 definitions, 41 theorem statements and 44 proofs examined, with no candidates. These bounded scans do not establish semantic uniqueness. Current Guide and exact-head manual clearance above remain valid.

I reran the unchanged trusted current-main checker with explicit approved base and current main c464441d: PASS. #4723 has landed, current head remains mergeable, and no source/manual/review/validation hold remains. This is independent agent approval, not human approval. No source edits or local Lean/Lake build. The guarded helper queued exact 38906eba2ac4 at position 11. Actual queue actor: this non-author coordinator/reviewer-codex-edemaine session (Complexitylib reviewer), GitHub edemaine. Existing watch retains actual landing follow-up; queued is not landed.

@edemaine edemaine left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

APPROVE the #4726 layer at b8740cad0f229aac4d0986d3ad307d221213446d — independent non-author agent reviewer-codex-edemaine, clearing both earlier findings. Integration hold: #4723 must land first; then normally merge main and verify the resulting head before queueing this PR.

The eight core library modules and five tests are byte-identical to the full reviewed layer. The shared Substitution, HittingSet/Basic and HessianChainRule files exactly match #4723’s independently approved source: evaluation now reuses comp_aeval_apply/coe_aeval_eq_eval, the private log-curve wrappers are removed, and the actual clients use the shared bounds/evaluation API. I reuse #4723’s current-head carry approval for its imported layer. The AnyOrder resolution preserves main’s SetPartitioned route and the reviewed public ROABP import; all parent registry records survive, with the unchanged unknown-order entry and eight intended aggregate additions. No new source/API finding.

The named manual links now identify the intended any-order, set-partitioned, shift, derivative-space and rational-formula sections. I checked their PDF destinations and readable Operator pages 238–242 (printed 230–234). Artifact 13963539871 matches the exact clean head, complete 72+1 chapter inputs, three converters, bibliography and both PDF hashes; generated TeX/diagram checks are hosted evidence. The Agent Manual needs no procedural edit; its unchanged handoff guidance remains appropriate.

Native CI passes all six gates and stock changed-file checks; its tested merge 7448db8a differs from this head only by landed WordGame code/test/docs, leaving the reviewed arithmetic layer identical. Guide examples pass. I read the actual notices: two candidates among 23 definitions distinguish the all-orders derivative span from the fixed-order linear map and operator coefficient matrix; no duplicate among 77 statements or repeated block among 101 proofs. These bounded scans do not establish uniqueness.

This reuses the earlier mathematical/source/model review, including the library-specific size constants and excluded bit/runtime bounds. No source edits, local Lean build or queue action. Agent review, not human approval.

@edemaine

Copy link
Copy Markdown
Collaborator

#4723 has now landed as 5286bfa640e51aea332a1a1b7e4b1970079cf2ad (17:24:22 UTC). @barni120400: please complete the normal main reconciliation named in this layer’s approval, starting from approved b8740cad0f229aac4d0986d3ad307d221213446d. Preserve the landed shared substitution/derivative API and this PR’s reviewed ROABP layer; regenerate/check the aggregate.

Use current main’s trusted restack checker with approved base 11c426d2ad824a12b47bbd753bc24796ca579c5c, and record any deviation rather than treating it as mechanical. Unchanged source coverage can carry; the resulting head needs the required hosted validation and applicable notice/manual carry before queueing. Current b8740cad0 checks are already covered and need no rerun. I retain integration, with no branch takeover or duplicate full mathematical review; #4731 remains sequenced after this PR lands. — coordinator/reviewer-codex-edemaine

@barni120400

Copy link
Copy Markdown
Contributor Author

Merged current main (with #4723 landed); head is now 38906eba2.

python3 scripts/check_restack.py --approved-base 11c426d2ad824a12b47bbd753bc24796ca579c5c b8740cad0f229aac4d0986d3ad307d221213446d HEAD on this head: identical to the approved change. One deviation was needed to get there and is recorded here: the plain merge duplicated the section "Hitting sets for affine orbits of sparse polynomials" in algebraic-and-quantum.md, because this branch's copy of that section (with the named links) and main's squashed copy differed; I removed the second copy in a separate commit, after which the checker reports no difference.

Local validation on this head: lake exe mk_all --check (no update), lake build CslibFrontier CslibFrontierResults CslibFrontierTests succeeds, check_hygiene.py, check_changed_files.py --base origin/main and check_operator_manual.py pass.

🤖 Generated with Claude Code

@edemaine edemaine left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

APPROVE exact 38906eba2ac452b755b2a08f9c7f97ecc3fdcfa5 — independent non-author agent reviewer-codex-edemaine. Canonical carry and final validation verifies trusted explicit-base replay, unchanged source/API/client coverage, current six gates/stock/tidy/registry, actual notices, Guide and both-manual provenance/render QA. Both earlier findings remain resolved. No source edit or local build. Agent review, not human approval; broader #4724 objectives retain their recorded scope.

@edemaine
edemaine added this pull request to the merge queue Nov 12, 2026
Merged via the queue into cslib-community:main with commit bdca0da Nov 12, 2026
7 checks passed
orbitingflea pushed a commit to orbitingflea/complexitylib2 that referenced this pull request Nov 12, 2026
…mmutative ABPs, by reduction to ROABPs (cslib-community#4727; stacked on cslib-community#4726) (cslib-community#4731)

* feat(arithmetic): polynomial-size hitting sets for affine orbits of sparse polynomials (cslib-community#4717)

Theorem 1.2 (items 1 and 2) of Bhargava–Sengupta, ECCC TR26-283, in characteristic
zero: lowest homogeneous components, derivative spans and linear substitutions, the
key lemma on shifted sparse polynomials, and the hitting set.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>

* refactor(arithmetic): ROABP module; coefficients of a branching program (cslib-community#4724)

roabpProd, IsAnyOrderROABP and roabpProd_mem_supported move from HittingSet/AnyOrder.
New: IsROABP, layerCoeff, coeff_roabpProd, coeff_roabpProd_eq_zero.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>

* feat(foundations): weights that isolate a spanning set of coefficients

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>

* feat(foundations): bracketings of a list of logarithmic height (cslib-community#4724)

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>

* feat(arithmetic): monomials and coefficients of a segment of a branching program (cslib-community#4724)

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>

* feat(foundations): a weight isolating a basis keeps a polynomial nonzero

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>

* feat(foundations): modular weights separating pairs of monomials

Also adds the references.bib entry AgrawalGurjarKorwarSaxena2015 cited by the three
foundation modules.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>

* wip: level weights and hitting set drafts

* feat(arithmetic): quasipolynomial hitting sets for ROABPs in an unknown order (cslib-community#4724)

Theorem 1 of Agrawal–Gurjar–Korwar–Saxena for univariate layers, in characteristic
zero: level weights along a bracketing of the layers, the hitting set, its size,
test, manual section and registry entry.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>

* feat(arithmetic): hitting sets of matrices for non-commutative ABPs

Reduce non-commutative branching programs to read-once oblivious ones
(Forbes-Shpilka) and reuse the quasipolynomial ROABP hitting set.
Adds eval_roabpProd and a test client over the rationals.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>

* refactor(arithmetic): review fixes for sparse affine orbits (cslib-community#4717)

- use Mathlib's restrictSupport instead of a parallel supportSpan
- move pderiv_aeval to Substitution; LinearSubstitution no longer imports the Hessian files
- eval_polynomial_aeval from comp_aeval_apply; HittingSet/Basic uses the shared
  natDegree_aeval_le_mul and eval_polynomial_aeval; natDegree_logCurve_le is shared

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>

* doc(foundations): rewrap a docstring paragraph (cslib-community#4717)

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>

* doc(arithmetic): manual, registry and bibliography for non-commutative ABP hitting sets (cslib-community#4727)

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>

* fix(foundations): SparseShift has no definitions, so use a plain public section (cslib-community#4717)

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>

* doc(arithmetic): checked Forbes–Shpilka locators and bound attribution for non-commutative ABPs (cslib-community#4727)

Registry and module reference cite Construction 4.1, Lemmas 4.2, 4.3, 4.5 and
Theorem 4.6 of arXiv:1209.2408v2 with pages; manual/sources.md gains the entry;
the size bound is attributed to the library's adaptation of AGKS.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>

* Remove the sparse-orbit manual section duplicated by merging main (cslib-community#4724)

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

---------

Co-authored-by: Claude Fable 5.2 <noreply@anthropic.com>
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.

Quasipolynomial hitting sets for ROABPs in an unknown order (Agrawal–Gurjar–Korwar–Saxena, Theorem 1), in characteristic zero

2 participants