Skip to content

perf(bivariate): in-place dense linear solver for GS interpolation (#256)#259

Merged
dhsorens merged 2 commits into
masterfrom
gs-dense-linear-updated
Jun 26, 2026
Merged

perf(bivariate): in-place dense linear solver for GS interpolation (#256)#259
dhsorens merged 2 commits into
masterfrom
gs-dense-linear-updated

Conversation

@dhsorens

Copy link
Copy Markdown
Collaborator

Summary

Merges #256 after reconciling with current master. The original fork branch was 2 commits behind; this branch integrates those commits and includes the in-place dense linear solver work.

Closes #256.

Test plan

  • lake build passes locally after merge
  • CI on this PR

Made with Cursor

@github-actions

Copy link
Copy Markdown

🤖 PR Summary

Performance Optimization

  • Optimizes Guruswami-Sudan (GS) bivariate interpolation with an in-place dense linear solver.
  • Reduces $O(n^4)$ overhead by performing Gauss-Jordan elimination and kernel basis extraction directly on the backing Array via DenseMatrix.homogeneousWitnessInPlace.

Mathematical Formalization

  • Establishes equivalence between in-place operations and their functional counterparts through new theorems: rrefInPlace_eq and homogeneousWitnessInPlace_eq.
  • Updates existing proofs, such as denseInterpolateWithBasis_exists_of_dimension_slack, to utilize these equivalence lemmas.
  • No sorry or admit placeholders were introduced.

Benchmarking

  • Expands the benchmarking suite to include distinct labels for "copying" and "in-place" solver variants.
  • Adds performance measurements for both standard and fast fields to monitor efficiency gains.

Statistics

Metric Count
📝 Files Changed 8
Lines Added 458
Lines Removed 12

Lean Declarations

✏️ **Added:** 23 declaration(s)
  • private theorem row_col_index_ne {a b cols c c' : Nat} (hrow : a ≠ b) in CompPoly/LinearAlgebra/Dense/KernelInPlaceCorrectness.lean
  • private theorem foldl_scale_self_eq_const [Field F] in CompPoly/LinearAlgebra/Dense/KernelInPlaceCorrectness.lean
  • def swapRowsData [Zero F] (cols rowA rowB : Nat) (data : Array F) : Array F in CompPoly/LinearAlgebra/Dense/KernelInPlace.lean
  • theorem scaleRowData_eq [Field F] (M : DenseMatrix F) (r : Nat) (factor : F) : in CompPoly/LinearAlgebra/Dense/KernelInPlaceCorrectness.lean
  • def addScaledRowData [Field F] (cols target source : Nat) (factor : F) in CompPoly/LinearAlgebra/Dense/KernelInPlace.lean
  • def scaleRowData [Field F] (cols row : Nat) (factor : F) (data : Array F) : in CompPoly/LinearAlgebra/Dense/KernelInPlace.lean
  • private theorem forIn_eliminate_eq [Field F] (cols pivotRow pivotCol : Nat) : in CompPoly/LinearAlgebra/Dense/KernelInPlaceCorrectness.lean
  • private theorem foldl_swap_self_eq_const [Zero F] in CompPoly/LinearAlgebra/Dense/KernelInPlaceCorrectness.lean
  • theorem rrefInPlace_eq [Field F] [BEq F] (M : DenseMatrix F) : rrefInPlace M = rref M in CompPoly/LinearAlgebra/Dense/KernelInPlaceCorrectness.lean
  • theorem rrefLoopData_eq [Field F] [BEq F] : in CompPoly/LinearAlgebra/Dense/KernelInPlaceCorrectness.lean
  • def normalizeAndEliminateData [Field F] [BEq F] (rows cols pivotRow pivotCol : Nat) in CompPoly/LinearAlgebra/Dense/KernelInPlace.lean
  • def findPivotRowData [Zero F] [BEq F] (rows cols startRow col : Nat) in CompPoly/LinearAlgebra/Dense/KernelInPlace.lean
  • private theorem foldl_addScaled_self_eq_const [Field F] in CompPoly/LinearAlgebra/Dense/KernelInPlaceCorrectness.lean
  • theorem addScaledRowData_eq [Field F] (M : DenseMatrix F) (target source : Nat) in CompPoly/LinearAlgebra/Dense/KernelInPlaceCorrectness.lean
  • theorem swapRowsData_eq [Zero F] (M : DenseMatrix F) (rowA rowB : Nat) : in CompPoly/LinearAlgebra/Dense/KernelInPlaceCorrectness.lean
  • def homogeneousWitnessInPlace [Field F] [BEq F] (M : DenseMatrix F) : in CompPoly/LinearAlgebra/Dense/KernelInPlace.lean
  • theorem normalizeAndEliminateData_eq [Field F] [BEq F] (M : DenseMatrix F) in CompPoly/LinearAlgebra/Dense/KernelInPlaceCorrectness.lean
  • def rrefLoopData [Field F] [BEq F] : in CompPoly/LinearAlgebra/Dense/KernelInPlace.lean
  • def homogeneousKernelBasisInPlace [Field F] [BEq F] (M : DenseMatrix F) : in CompPoly/LinearAlgebra/Dense/KernelInPlace.lean
  • private theorem getD_setD_ne [Zero F] (d : Array F) {i j : Nat} (h : i ≠ j) (v : F) : in CompPoly/LinearAlgebra/Dense/KernelInPlaceCorrectness.lean
  • def rrefInPlace [Field F] [BEq F] (M : DenseMatrix F) : RrefResult F in CompPoly/LinearAlgebra/Dense/KernelInPlace.lean
  • theorem homogeneousWitnessInPlace_eq [Field F] [BEq F] (M : DenseMatrix F) : in CompPoly/LinearAlgebra/Dense/KernelInPlaceCorrectness.lean
  • theorem findPivotRowData_eq [Zero F] [BEq F] (M : DenseMatrix F) (startRow col : Nat) : in CompPoly/LinearAlgebra/Dense/KernelInPlaceCorrectness.lean

sorry Tracking

  • No sorrys were added, removed, or affected.

📋 **Additional Analysis**

Style and Naming

  • Adheres to naming conventions: functions use lowerCamelCase (e.g., rrefInPlace), theorems use snake_case (e.g., scaleRowData_eq), and types use UpperCamelCase (e.g., RrefResult).
  • Correctness lemmas correctly follow the symbol naming dictionary and use the _eq suffix for equivalence proofs.
  • Binders follow formatting rules (e.g., ∀ c, with a space).
  • Infix operators are surrounded by spaces, and fun x ↦ syntax is used consistently.

Module Layout and Documentation

  • New modules KernelInPlace.lean and KernelInPlaceCorrectness.lean are correctly located in CompPoly/LinearAlgebra/Dense/, following the existing pattern for row-operation correctness.
  • File headers include required copyright (2026), Apache 2.0 license, and author information.
  • Comprehensive docstrings are provided for all new declarations and modules, including module-level /-! -/ blocks and declaration-level /-- -/ blocks.
  • The update to denseLinearKernelContext in Context.lean includes a docstring explaining the performance benefits and correctness strategy for the in-place implementation.

Benchmarks and Performance

  • The benchmark suite in bench/CompPolyBench/ is correctly updated to distinguish between and track the performance of the copying and in-place implementations.
  • The implementation effectively uses Array ownership to enable in-place mutation, which is well-documented in the rrefInPlace docstring.

📄 **Per-File Summaries**
  • CompPoly.lean: The changes in CompPoly.lean add an import for KernelInPlaceCorrectness, integrating the correctness proofs for in-place kernel computations into the library's main entry point.
  • CompPoly/Bivariate/GuruswamiSudan/Context.lean: This change updates the denseLinearKernelContext definition to use DenseMatrix.homogeneousWitnessInPlace for improved performance during matrix reduction. The associated proofs are modified to utilize the equivalence between the in-place and copying implementations, and no sorry placeholders were introduced.
  • CompPoly/Bivariate/GuruswamiSudan/Interpolation/Dense/Correctness.lean: This change modifies the proof of the theorem denseInterpolateWithBasis_exists_of_dimension_slack by updating a simplification tactic to include the lemma DenseMatrix.homogeneousWitnessInPlace_eq. The modification ensures the proof correctly handles the correspondence between different homogeneous witness implementations within the interpolation logic.
  • CompPoly/LinearAlgebra/Dense.lean: The updates to the CompPoly.LinearAlgebra.Dense module involve importing new functionality for in-place kernel computations and their associated correctness proofs. These additions expand the library's dense linear algebra capabilities to include more memory-efficient matrix operations.
  • CompPoly/LinearAlgebra/Dense/KernelInPlace.lean: This new file introduces memory-efficient definitions for in-place dense Gauss-Jordan elimination and homogeneous kernel basis extraction. By operating directly on the backing Array, these definitions avoid the $O(n^4)$ complexity penalty of the standard functional approach while maintaining functional equivalence for kernel witness generation.
  • CompPoly/LinearAlgebra/Dense/KernelInPlaceCorrectness.lean: This new file establishes the correctness of the in-place dense matrix kernel backend by proving its equivalence to the copying implementation across all row operations and RREF calculations. It introduces several new theorems, including rrefInPlace_eq and homogeneousWitnessInPlace_eq, and contains no sorry or admit placeholders.
  • bench/CompPolyBench/Bivariate/GuruswamiSudan.lean: This Lean benchmark file modifies the Guruswami-Sudan interpolation solver tests to include performance measurements for both copying and in-place matrix kernel solver implementations. It refactors existing tests to use DenseMatrix methods directly and adds new benchmark records for homogeneousWitnessInPlace across standard and fast fields, with no sorry or admit placeholders introduced.
  • bench/CompPolyBench/Common.lean: The changes update the implementationMethodLabels definition by adding new entries to distinguish between copying and in-place variants of the homogeneous interpolation solver. This modification enables more granular reporting of benchmarking results for these specific implementation strategies.

Last updated: 2026-06-26 11:57 UTC.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🤖 AI Review

Overall Summary:
TL;DR: The PR successfully implements and verifies an optimized, in-place dense matrix reduction algorithm for the Guruswami-Sudan interpolation solver. The mathematical logic, array mutation safety, and proofs are rigorous, requiring only a minor structural export fix in the package root.

Mechanical Pre-Check Results: No escape hatches (sorry, axiom, native_decide, opaque, implemented_by, sorryAx) or file size issues were detected.

Checklist Coverage: No explicit specification checklist was provided. However, the in-place operations mathematically perfectly match the functional implementation, successfully maintaining kernel dimension invariants and soundness guarantees.

Cross-File Issues: The cross-file dependencies form a sound and well-isolated abstraction boundary. The behavioral equivalence lemma (homogeneousWitnessInPlace_eq) is correctly exported, cleanly consumed at the composition boundaries in Context.lean, and efficiently threaded into downstream proofs.

Key Lean 4 / Mathlib Issues:

  • The newly added module CompPoly.LinearAlgebra.Dense.KernelInPlace is missing from the top-level exports in the package root. Package root files should explicitly list all modules, even if they are transitively imported elsewhere. (CompPoly.lean:112)

Overall Verdict: Needs Minor Revisions


🔗 **Cross-File Analysis**

Cross-File Analysis:
The PR introduces an optimized, in-place dense matrix reduction algorithm (homogeneousWitnessInPlace in KernelInPlace.lean) and integrates it into the Guruswami-Sudan interpolation solver.

  1. Composition Chains & Type Flow: The core logic changes the backing implementation of denseLinearKernelContext (in Context.lean) from DenseMatrix.homogeneousWitness to DenseMatrix.homogeneousWitnessInPlace. To satisfy the correctness contracts (witness_width, witness_sound, witness_nonzero, witness_complete) required by the LinearKernelContext typeclass, the PR uses a behavioral equivalence lemma (homogeneousWitnessInPlace_eq proven in KernelInPlaceCorrectness.lean). This cleanly decouples the imperative array mutation proofs from the higher-level interpolation soundness and completeness proofs.

  2. Theorem Propagation: The behavioral equivalence lemma is correctly exported and consumed at the composition boundary in Context.lean. Furthermore, it is appropriately threaded into denseInterpolateWithBasis_exists_of_dimension_slack in Interpolation/Dense/Correctness.lean, where unfolding denseLinearKernelContext now exposes the in-place version, requiring the equivalence lemma in the simp call to match the existential witness constructed from the copying version.

  3. Escape Hatches & Externals: The mechanical checks report no new axioms or escape hatches. The use of Id.run for mutation scopes is safely constrained and standard Array operations are used. No external dependencies are misused.

  4. Benchmarks: The benchmarks in bench/CompPolyBench/Bivariate/GuruswamiSudan.lean and their metadata labels in Common.lean are appropriately wired to time both the copying and in-place routines, confirming proper integration.

The cross-file dependencies form a sound and well-isolated abstraction boundary.

Cross-File Composition Issues: None

Axiom/Escape Hatch Impact: None

External Dependency Issues: None

Missing Cross-File Verification: None

Cluster: Dense Linear Algebra In-Place Kernel (critical)

Does the in-place mutable algorithm correctly implement the same math as the functional copying one, and does the equivalence proof cleanly connect them without unstated side effects or gaps?

📄 **Review for `CompPoly/LinearAlgebra/Dense/KernelInPlace.lean`**

Analysis:

  1. Mathematical operations: The file implements an optimized, in-place version of Gauss-Jordan elimination for computing homogeneous kernels. Instead of operating on a boxed DenseMatrix structure which may incur array copying due to multiple references, the algorithm extracts the backing Array F and mutates it sequentially inside Id.run blocks. The functions correctly implement primitive row operations (swap, scale, eliminate) by indexing into a row-major 1D array using row * cols + col.
  2. Specification and Checklist: There is no specific checklist for this PR. The module docstring serves as the spec, guaranteeing bit-for-bit equivalence with the functional rref implementation, which is formally proven in the contextual correctness file.
  3. Riskiest aspects: The main risks in this type of implementation in Lean 4 are unboxing failures (where the array is aliased and copied anyway, destroying the O(1) mutation performance) and off-by-one index arithmetic. The destructuring of M via match in rrefInPlace successfully consumes the wrapper structure, leaving a unique array reference for the loop. The arithmetic indices (row * cols + col) are completely correct for row-major layouts, and the use of safe getters/setters (getD, setD) ensures no runtime panics even on bounds errors.
  4. Ambiguities: There are no mathematical ambiguities. The usage of [BEq F] instead of [DecidableEq F] is idiomatic for computationally-focused code paths in Lean 4 and perfectly consistent with the project's algebraic execution conventions.
    Overall, this is an exceptionally clean, well-optimized, and fully verified piece of executable mathematics.

Verdict: Approved

Critical Misformalizations: None

Lean 4 / Mathlib Issues: None

Nitpicks: None

📄 **Review for `CompPoly/LinearAlgebra/Dense/KernelInPlaceCorrectness.lean`**

Analysis:
Step-by-step analysis of the changes:

  1. Mathematical Functionality: The PR introduces the correctness proof for the Id.run in-place mutable dense matrix kernel backend. It proves that the step-by-step array mutations (setD) within the sequential loops match the behavior of the previously verified pure, copying RowOps matrix backend. The file operates bottom-up: proving the equivalence of loop accumulators (List.foldl) for row scaling, adding scaled rows, and swapping rows, then linking these to Gauss-Jordan elimination primitives, and finally establishing rrefInPlace_eq and homogeneousWitnessInPlace_eq.
  2. Riskiest Aspects: The primary mathematical and formalization risk with verifying in-place loops via Id.run is aliasing—ensuring that intermediate mutations to the backing array do not inadvertently alter the data being read in subsequent loop iterations. The PR gracefully mitigates this by abstracting the iterations into List.foldl steps and maintaining invariants (e.g., hT, hS, and hagree) guaranteeing the accumulator strictly agrees with the original pre-loop array on the relevant read bounds. It uses index injectivity logic (row_col_index_ne) to formalize that distinct row targets never overlap.
  3. Ambiguities: None. The logic strictly adheres to standard dense row operations and accurately maps the Id.run variables to the functional ones without gaps.
  4. Checklist Results: No spec checklist was provided.

Verdict: Approved

Critical Misformalizations: None

Lean 4 / Mathlib Issues: None

Nitpicks: None

Cluster: Guruswami-Sudan Interpolation Context (high)

Does substituting the in-place kernel extraction into the dense GS context properly discharge the linear kernel context obligations, and do the correctness proofs adapt safely?

📄 **Review for `CompPoly/Bivariate/GuruswamiSudan/Context.lean`**

Analysis:

  1. Mathematical operations: The diff replaces the copying linear kernel computation DenseMatrix.homogeneousWitness with its optimized in-place variant DenseMatrix.homogeneousWitnessInPlace within the denseLinearKernelContext. To satisfy the structure's proof obligations (witness_width, witness_sound, witness_nonzero, witness_complete), it prepends rw [DenseMatrix.homogeneousWitnessInPlace_eq] at h to each proof. This leverages the established correctness of the copying variant by cleanly substituting the in-place equality.
  2. Riskiest aspects: The main risk when transitioning to in-place implementations is that proofs might fail if the equivalence lemma (homogeneousWitnessInPlace_eq) is incorrectly oriented or applied. However, the rw ... at h formulation correctly converts the hypotheses about the in-place witness back into hypotheses about the copying witness, perfectly aligning with the preexisting proof steps.
  3. Ambiguities: None. The changes are transparent, and the cluster context verifies that downstream completeness lemmas have been appropriately adapted with simp additions.
  4. Spec checklist: No checklist provided.

Verdict: Approved

Critical Misformalizations: None

Lean 4 / Mathlib Issues: None

Nitpicks: None

📄 **Review for `CompPoly/Bivariate/GuruswamiSudan/Interpolation/Dense/Correctness.lean`**

Analysis:

  1. Mathematical Correctness & Intent: The PR modifies the proof of denseInterpolateWithBasis_exists_of_dimension_slack to accommodate a change in the underlying denseLinearKernelContext. The context was updated to use homogeneousWitnessInPlace instead of homogeneousWitness. To ensure the proof still works, the theorem DenseMatrix.homogeneousWitnessInPlace_eq is added to the simp context, which rewrites the in-place function to the standard one, allowing the existing hypothesis hw (which concerns homogeneousWitness) to trigger and correctly simplify the goal.
  2. Riskiest Aspects: The main risk when swapping a matrix backend (e.g., to an in-place version) is that the kernel dimension invariants or soundness guarantees change. By utilizing homogeneousWitnessInPlace_eq, the author mathematically guarantees that the in-place extraction exactly mirrors the purely functional one, safely preserving all correctness properties.
  3. Ambiguities: None. The change is purely a proof repair tied to an implementation swap, and the equivalence is formally proven by the _eq lemma.
  4. Checklist Mapping: The cross-file question asking if the discharging theorems properly rewrite homogeneousWitnessInPlace to homogeneousWitness is definitively addressed here. The simp array specifically includes DenseMatrix.homogeneousWitnessInPlace_eq for exactly this purpose.

Verdict: Approved

Critical Misformalizations: None

Lean 4 / Mathlib Issues: None

Nitpicks: None

Cluster: Benchmarks and Exports (medium)

Are the benchmarks correctly configured to measure both the copying and in-place backend independently and are new modules properly exported?

📄 **Review for `CompPoly.lean`**

Analysis:
The diff adds an import for CompPoly.LinearAlgebra.Dense.KernelInPlaceCorrectness to CompPoly.lean, which serves as the top-level package root exporting all modules in the library. However, the associated implementation module CompPoly.LinearAlgebra.Dense.KernelInPlace is missing from the import list. While it is likely transitively imported by the correctness module, standard Lean library structure (e.g., as enforced by lake's typical auto-generation of package roots) dictates that top-level root files should explicitly import all source modules. Furthermore, the review cluster context explicitly flags to verify that both KernelInPlace and KernelInPlaceCorrectness are exposed in the package roots.

Verdict: Needs Minor Revisions

Critical Misformalizations: None

Lean 4 / Mathlib Issues: None

Nitpicks:

  • The newly added module CompPoly.LinearAlgebra.Dense.KernelInPlace is missing from the top-level exports. Package root files should explicitly list all modules. Although it may be transitively imported via KernelInPlaceCorrectness, standard practice is to include all files. (CompPoly.lean:112)
📄 **Review for `CompPoly/LinearAlgebra/Dense.lean`**

Analysis:

  1. Mathematical Code Changes: The diff modifies the facade module CompPoly.LinearAlgebra.Dense to expose two new modules: KernelInPlace and KernelInPlaceCorrectness.
  2. Riskiest Aspects: The primary concern for a facade module is whether the imports correctly match the existing file structure and successfully compile. The toolchain output confirms these modules exist and are available for import.
  3. Ambiguities: There are no mathematical ambiguities as this is purely structural configuration.
  4. Checklist Mapping: The changes properly expose the implementations benchmarked in bench/CompPolyBench/Bivariate/GuruswamiSudan.lean (specifically DenseMatrix.homogeneousWitnessInPlace), which validates the cross-file hypothesis.

Verdict: Approved

Critical Misformalizations: None

Lean 4 / Mathlib Issues: None

Nitpicks: None

📄 **Review for `bench/CompPolyBench/Bivariate/GuruswamiSudan.lean`**

Analysis:

  1. Mathematically, the code is a benchmark script for the Guruswami-Sudan list decoding interpolation step. It measures the performance of dense linear algebra solvers over a finite field (KoalaBear). The diff specifically replaces older generic 'kernelContext' abstractions with explicit calls to both copying (DenseMatrix.homogeneousWitness) and in-place (DenseMatrix.homogeneousWitnessInPlace) algorithms.
  2. The most error-prone aspect of benchmark updates is failing to keep the timing variables or iterations aligned, which would lead to statistically biased metrics. Here, measured, fastMeasured, inPlaceMeasured, and fastInPlaceMeasured are distinct and successfully passed into their respective runTimed closures.
  3. The mathematical and functional intent is clear and aligns perfectly with the overarching goal of separating in-place memory mutations from default purely functional matrix algorithms.
  4. N/A (no spec checklist).

Verdict: Approved

Critical Misformalizations: None

Lean 4 / Mathlib Issues: None

Nitpicks: None

📄 **Review for `bench/CompPolyBench/Common.lean`**

Analysis:
The change adds two string mappings to the implementationMethodLabels list in the benchmark configuration file bench/CompPolyBench/Common.lean. It maps the method names "Homogeneous interpolation solve, copying" and "Homogeneous interpolation solve, in-place" to their human-readable display labels "Dense solve (copying)" and "Dense solve (in-place)". This perfectly matches the benchmarking logic presented in the broader cluster context, which updates the Guruswami-Sudan benchmarks to measure and compare the in-place kernel basis computation with the previous copying implementation. There are no mathematical changes, no typeclass or logical errors, and no escape hatches.

Verdict: Approved

Critical Misformalizations: None

Lean 4 / Mathlib Issues: None

Nitpicks: None

Comment thread CompPoly.lean
import CompPoly.LinearAlgebra.Dense.Basic
import CompPoly.LinearAlgebra.Dense.Kernel
import CompPoly.LinearAlgebra.Dense.KernelCorrectness
import CompPoly.LinearAlgebra.Dense.KernelInPlaceCorrectness

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Nitpick: The newly added module CompPoly.LinearAlgebra.Dense.KernelInPlace is missing from the top-level exports. Package root files should explicitly list all modules. Although it may be transitively imported via KernelInPlaceCorrectness, standard practice is to include all files.

Suggested fix: import CompPoly.LinearAlgebra.Dense.KernelCorrectness
import CompPoly.LinearAlgebra.Dense.KernelInPlace
import CompPoly.LinearAlgebra.Dense.KernelInPlaceCorrectness

@github-actions

Copy link
Copy Markdown

Build Timing Report

  • Commit: 523b36c
  • Message: Merge 4036015 into cd771ff
  • Ref: gs-dense-linear-updated
  • Comparison baseline: cd771ff from merge-base on master.
  • Measured on ubuntu-latest with /usr/bin/time -p.
  • Commands: clean build rm -rf .lake/build && lake build; warm rebuild lake build; test path lake test.
Measurement Baseline (s) Current (s) Delta (s) Status
Clean build 398.86 445.99 +47.13 ok
Warm rebuild 1.09 1.37 +0.28 ok
Test path 31.65 39.35 +7.70 ok

Incremental Rebuild Signal

  • Warm rebuild saved 444.62s vs clean (325.54x faster).

This compares a clean project build against an incremental rebuild in the same CI job; it is a lightweight variability signal, not a full cross-run benchmark.

Slowest Current Clean-Build Files

Showing 20 slowest current targets, with comparison against the selected baseline when available.

Current (s) Baseline (s) Delta (s) Path
63.00 60.00 +3.00 CompPoly/Fields/Binary/Tower/Abstract/Basis.lean
52.00 42.00 +10.00 CompPoly/Univariate/DivisionCorrectness.lean
49.00 52.00 -3.00 CompPoly/Fields/Binary/BF128Ghash/XPowTwoPowModCertificate.lean
40.00 32.00 +8.00 CompPoly/Bivariate/Factor.lean
37.00 38.00 -1.00 CompPoly/Fields/Binary/BF128Ghash/Impl.lean
27.00 24.00 +3.00 CompPoly/Bivariate/ToPoly.lean
27.00 25.00 +2.00 CompPoly/Bivariate/Deriv.lean
25.00 24.00 +1.00 CompPoly/Univariate/Raw/Proofs.lean
21.00 17.00 +4.00 CompPoly/Univariate/NTTFast/Correctness/Radix4DIT.lean
21.00 19.00 +2.00 CompPoly/Bivariate/GuruswamiSudan/Root/RothRuckenstein/Correctness.lean
20.00 16.00 +4.00 CompPoly/Fields/Binary/Tower/Support/Preliminaries.lean
20.00 16.00 +4.00 CompPoly/Univariate/NTTFast/Correctness/Radix4DIF.lean
16.00 15.00 +1.00 CompPoly/Fields/KoalaBear/Fast.lean
16.00 15.00 +1.00 CompPoly/Univariate/NTT/Forward.lean
16.00 13.00 +3.00 CompPoly/Bivariate/GuruswamiSudan/Interpolation/LeeOSullivan/Correctness/Divisibility.lean
15.00 15.00 +0.00 CompPoly/Fields/Binary/AdditiveNTT/NovelPolynomialBasis.lean
15.00 14.00 +1.00 CompPoly/Fields/Binary/AdditiveNTT/Intermediate.lean
15.00 13.00 +2.00 CompPoly/Univariate/NTTFast/Correctness/DIF.lean
15.00 15.00 +0.00 CompPoly/Univariate/ReedSolomon/GaoCorrectness.lean
15.00 13.00 +2.00 CompPoly/Fields/Binary/AdditiveNTT/Correctness.lean

@dhsorens dhsorens merged commit 2e36d78 into master Jun 26, 2026
5 checks passed
@dhsorens dhsorens deleted the gs-dense-linear-updated branch June 26, 2026 12:20
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