Certificate construction for the Bareiss decomposition #
The certificate constructor from the decomposition data, and the default certifier
mkCertificate, which currently proves the certificate conditions by decide +kernel.
This will eventually be generalised to a general certificate constructor that is parametric on a leaf normaliser.
Main definitions #
mkCertificate: build theEchelon.Decompositioncertificate of a matrix literal.checkKernelDecide: check that equality in a ring reduces in the kernel.mkPerm,mkPivotLit,mkMatrixLit: elaborate the row permutation, the pivot function, and a matrix literal.
Implementation notes #
The elimination records its echelon form U, making the product a certificate obligation
of its own, L * A_σ = U, decided separately from the pivot condition on U.
Build the numeral of i in Fin $n.
Equations
- Mathlib.Tactic.Echelon.mkFinNumeral n i = Lean.Meta.mkNumeral q(Fin «$n») i
Instances For
Build the matrix literal of the row-major entries rows.
Equations
Instances For
Build the pivot literal ![↑c₀, …, ⊤, …] : Fin m → WithTop (Fin n), sending the
first rows to their pivot columns and the remaining rows to ⊤.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Build the permutation σ = swap a₀ b₀ * swap a₁ b₁ * ⋯ from the recorded swaps.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Check that equality with zero in α reduces to a verdict in the kernel, as the
certificate conditions will be decided by kernel reduction. This needs to be changed when
the cert-checking tactic is updated.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Prove the certificate condition c by a kernel-checked decide, with name naming
the condition in errors.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Build the Echelon.Decomposition certificate of A from the decomposition data and
entries, the parsed entries of A.
Equations
- One or more equations did not get rendered due to their size.