Documentation

Lean.Meta.Tactic.Grind.Arith.CommRing.RingM

  • ringId : Nat
  • checkCoeffDvd : Bool

    If checkCoeffDvd is true, then when using a polynomial k*m - p to simplify .. + k'*m*m_2 + ..., the substitution is performed IF

    • k divides k', OR
    • Ring implements NoNatZeroDivisors.

    We need this check when simplifying disequalities. In this case, if we perform the simplification anyway, we may end up with a proof that k * q = 0, but we cannot deduce q = 0 since the ring does not implement NoNatZeroDivisors See comment at PolyDerivation.

Instances For
    @[reducible, inline]

    We don't want to keep carrying the RingId around.

    Instances For
      @[reducible, inline]
      abbrev Lean.Meta.Grind.Arith.CommRing.RingM.run {α : Type} (ringId : Nat) (x : RingM α) :
      Instances For
        @[reducible, inline]
        Instances For
          @[reducible, inline]
          Instances For

            Returns some c if the current ring has a nonzero characteristic c.

            Instances For

              Returns some (charInst, c) if the current ring has a nonzero characteristic c.

              Instances For

                Returns true if the current ring satisfies the property

                ∀ (k : Nat) (a : α), k ≠ 0 → OfNat.ofNat (α := α) k * a = 0 → a = 0
                
                Instances For

                  Returns true if the current ring has a IsCharP instance.

                  Instances For

                    Returns the pair (charInst, c). If the ring does not have a IsCharP instance, then throws internal error.

                    Instances For
                      Instances