Documentation

Mathlib.Tactic.Echelon.Cert

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 #

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
Instances For
    def Mathlib.Tactic.Echelon.mkMatrixLit {u : Lean.Level} (α : Q(Type u)) (m n : ) (rows : Array (Array Lean.Expr)) :
    Q(Matrix (Fin «$m») (Fin «$n») «$α»)

    Build the matrix literal of the row-major entries rows.

    Equations
    Instances For
      def Mathlib.Tactic.Echelon.mkPivotLit (m n : ) (pivots : Array ) :
      Lean.MetaM Q(Fin «$m»WithTop (Fin «$n»))

      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
              def Mathlib.Tactic.Echelon.mkCertificate {u : Lean.Level} {m n : } {α : Q(Type u)} (_cr : Q(CommRing «$α»)) (A : Q(Matrix (Fin «$m») (Fin «$n») «$α»)) (entries : Array (Array Lean.Expr)) (data : BareissData Lean.Expr) :

              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.
              Instances For