Certificate construction for the Bareiss decomposition #
certifyDecomposition constructs a proof of Echelon.Decomposition A L σ pivot from the given
decomposition data.
It proves that L * A_σ has the given pivots (through the product L * A_σ = U), and that L
is lower triangular with nonzero diagonal entries.
The certify* functions assemble these proofs from facts about single entries, including the
arithmetic equalities for the product and the non-zeroness for the diagonal entries of L and
the pivots of U, which are established by the model's certifier (or the kernel).
Main definitions #
certifyDecomposition: builds theEchelon.Decompositioncertificate from decomposition data.DecompositionCert: the internal certificate structure that includes the decomposition data,Uand the product equation for downstream tactics.
Implementation notes #
The elimination records its echelon form U, making the product L * A_σ = U a certificate
obligation of its own.
The product is proved on the list representation which the kernel checks more cheaply.
The certifier that leaves each fact to the kernel's decide.
Equations
- Mathlib.Tactic.Echelon.decideCertifier α = { eq := fun (a b : Q(«$α»)) => Qq.mkDecideProofQ q(«$a» = «$b»), neZero := fun (_zα : Q(Zero «$α»)) (a : Q(«$α»)) => Qq.mkDecideProofQ q(«$a» ≠ 0) }
Instances For
Construct the list-based IsLowerTriangularDiagList k c rows cert.
Equations
- One or more equations did not get rendered due to their size.
- Mathlib.Tactic.Echelon.certifyLowerTriangularDiagList certifier zα k 0 kQ cQ rows = pure q(⋯)
Instances For
Prove that L is lower triangular with a nonzero diagonal.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Construct the list-based IsPivotedList pivots rows cert.
Equations
- One or more equations did not get rendered due to their size.
- Mathlib.Tactic.Echelon.certifyPivotedList certifier zα [] pivots rows = pure q(⋯)
Instances For
Prove that U is pivoted by pivotOfList pivots from the rows of U, with certifier
proving the pivot entries nonzero.
Equations
- One or more equations did not get rendered due to their size.
Instances For
An internal structure recording the Echelon.Decomposition certificate of A with its data,
together with the intermediate certificates that downstream tactics reuse (the echelon form U
and the product equation stated on it).
- L : Matrix.ListMatrixLit α m m
The transformation matrix.
The row swaps.
The pivot of the resulting echelon form.
- decomp : let a := self.L.matrix; Q(Echelon.Decomposition «$A» unknown_1 (Matrix.permOfSwaps unknown_2) unknown_3)
The decomposition certificate from the theory.
- U : Matrix.ListMatrixLit α m n
The echelon form.
- mul_eq : let a := self.U.matrix; let a_1 := self.L.matrix; Q(unknown_1 * «$A».submatrix (⇑(Matrix.permOfSwaps unknown_2)) id = unknown_3)
The product equation.
Instances For
Build the DecompositionCert of A from the decomposition data and the parsed entries
of A.
Equations
- One or more equations did not get rendered due to their size.