Documentation

CompPoly.LinearAlgebra.PolynomialMatrix.Approximant.PMBasis.KernelLeafSpan

Kernel-Leaf Reduction Row-Span Soundness #

The shifted pivot-table reduction preserves the generated row module: the fuel bound dominates the shifted row measure, every displaced row re-enters the table as a reduced combination, and the incremental reduction loop keeps every input row inside the span of its output.

Kernel-leaf reduction row-span soundness #

The pivot-table reduction only ever replaces rows by row operations that are invertible inside the generated row module, so no original row leaves the row span. The proofs below make this precise: leading-term cancellation is the Mulders-Storjohann cancellation in disguise, the pivot-table insertion loop is tracked through a fuel-indexed measure argument, and the incremental reducer chains the per-call result through row-span transitivity.

A zero row is the zero row of its width.

Matrices with a member row are nonempty.

Uniform row widths make a matrix well formed.

The row span of the empty matrix only contains the empty row.

theorem CompPoly.PolynomialMatrix.Approximant.insertKernelLeaf_foldl_pivotInv {F : Type u_1} [Field F] [BEq F] [LawfulBEq F] {n : } (l : List (PolynomialRow F)) (fuel : ) (pivots : Array (Option (PolynomialRow F))) (shift : Array ) :
(∀ rl, Array.size r = n)(∀ (p : ) (r : PolynomialRow F), pivots.getD p none = some rArray.size r = n rowShiftedLeadingPosition? r shift = some p)∀ (p : ) (r : PolynomialRow F), (List.foldl (fun (pv : Array (Option (PolynomialRow F))) (r : PolynomialRow F) => insertKernelLeafPivotRowWithFuel fuel pv shift r) pivots l).getD p none = some rArray.size r = n rowShiftedLeadingPosition? r shift = some p

Folded pivot-table insertion preserves the table invariant.

theorem CompPoly.PolynomialMatrix.Approximant.reduceKernelLeafRowsByPivots_rowSpan_superset {F : Type u_1} [Field F] [BEq F] [LawfulBEq F] [DecidableEq F] {rows : PolynomialMatrix F} {shift : Array } {n : } (hsizes : rrows.MatrixRows, Array.size r = n) {row : PolynomialRow F} (hrow : row rows.MatrixRows) (hnz : ¬RowIsZero row) :

The pivot-table reduction preserves the generated row module: every nonzero source row stays inside the row span of the reduced matrix.

Reduced kernel-leaf rows keep the uniform width and are nonzero.

The empty row is a zero row.

theorem CompPoly.PolynomialMatrix.Approximant.reduceKernelLeafRowsIncremental_rowSpan_superset {F : Type u_1} [Field F] [BEq F] [LawfulBEq F] [DecidableEq F] {rows : PolynomialMatrix F} {shift : Array } {n : } (hsizes : rrows.MatrixRows, Array.size r = n) {row : PolynomialRow F} (hrow : row rows.MatrixRows) (hnz : ¬RowIsZero row) :

The incremental kernel-leaf reduction preserves the generated row module: every nonzero source row stays inside the row span of the reduced basis.