Documentation

Lean.Meta.Tactic.Grind.Arith.Cutsat.EqCnstr

Given an equation c₁ containing the monomial a*x, and a disequality constraint c₂ containing the monomial b*x, eliminate x by applying substitution.

Equations
  • One or more equations did not get rendered due to their size.
Instances For
    Equations
    • One or more equations did not get rendered due to their size.
    Instances For

      Selects the variable in the given linear polynomial whose coefficient has the smallest absolute value.

      Equations
      Instances For
        @[export lean_cutsat_propagate_nonlinear]
        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          Equations
          • One or more equations did not get rendered due to their size.
          Instances For

            Similar to updateOccs, but does not assume first variable is ps "owner". Recall that when eliminating equalities we do not necessarily eliminate the maximal variable, but the one with unit coefficient. Remark: we keep occurrences for equations in elimEqs because we want to maintain them in solved form. Consider the following scenario: 1- Asserted a + 2*b + 1 = 0, and eliminated a 2- Asserted b + 1 = 0, and eliminated b.

            At step 2, we want to substitute b at a + 2*b + 1 to ensure cutsat knows a is forced to be equal to a constant value. This is relevant for linearizing nonlinear terms.

            Remark: x is the variable that was eliminated using p.

            Equations
            Instances For
              @[export lean_grind_cutsat_assert_eq]
              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For

                    Internalizes an integer (and Nat) expression. Here are the different cases that are handled.

                    • a + b when parent? is not +, , or
                    • k * a when k is a numeral and parent? is not +, *, ,
                    • numerals when parent? is not +, *, , . Recall that we must internalize numerals to make sure we can propagate equalities back to the congruence closure module. Example: we have f 5, f x, x - y = 3, y = 2.
                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For