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
- ringId : Nat
- checkCoeffDvd : Bool
If
checkCoeffDvdistrue, then when using a polynomialk*m - pto simplify.. + k'*m*m_2 + ..., the substitution is performed IFkdividesk', 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 deduceq = 0since the ring does not implementNoNatZeroDivisorsSee comment atPolyDerivation.We also need it when destructively simplifying equations, i.e., when replacing an equation with its simplified form (
EqCnstr.simplifyandEqCnstr.simplifyBasis): the rewrite multiplies the equation byk₁ = k/gcd k k', and the result is weaker than the original equation whenk₁ ≠ ±1. See Note atEqCnstr.simplify.
Instances For
We don't want to keep carrying the RingId around.
Equations
Instances For
Equations
- Lean.Meta.Grind.Arith.CommRing.RingM.run ringId x = x { ringId := ringId }
Instances For
Equations
- Lean.Meta.Grind.Arith.CommRing.getRingId = do let __do_lift ← read pure __do_lift.ringId
Instances For
Equations
- One or more equations did not get rendered due to their size.
The Sym.Arith classification record of the current ring.
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.
The per-goal solver state of the current ring.
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.
Equations
- One or more equations did not get rendered due to their size.
Equations
- Lean.Meta.Grind.Arith.CommRing.withCheckCoeffDvd x = withReader (fun (ctx : Lean.Meta.Grind.Arith.CommRing.RingM.Context) => { ringId := ctx.ringId, checkCoeffDvd := true }) x
Instances For
Equations
- Lean.Meta.Grind.Arith.CommRing.checkCoeffDvd = do let __do_lift ← read pure __do_lift.checkCoeffDvd
Instances For
Equations
- Lean.Meta.Grind.Arith.CommRing.getTermRingId? e = do let __do_lift ← Lean.Meta.Grind.Arith.CommRing.get' pure (Lean.PersistentHashMap.find? __do_lift.exprToRingId { expr := e })
Instances For
Returns some c if the current ring has a nonzero characteristic c.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Returns some (charInst, c) if the current ring has a nonzero characteristic c.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Lean.Meta.Grind.Arith.CommRing.noZeroDivisorsInst? = do let __do_lift ← Lean.Meta.Sym.Arith.getCommRing pure __do_lift.noZeroDivInst?
Instances For
Returns true if the current ring satisfies the property
∀ (k : Nat) (a : α), k ≠ 0 → OfNat.ofNat (α := α) k * a = 0 → a = 0
Equations
- Lean.Meta.Grind.Arith.CommRing.noZeroDivisors = do let __do_lift ← Lean.Meta.Sym.Arith.getCommRing pure __do_lift.noZeroDivInst?.isSome
Instances For
Returns true if the current ring has a IsCharP instance.
Equations
- Lean.Meta.Grind.Arith.CommRing.hasChar = do let __do_lift ← Lean.Meta.Sym.Arith.getRing pure __do_lift.charInst?.isSome
Instances For
Equations
- Lean.Meta.Grind.Arith.CommRing.isField = do let __do_lift ← Lean.Meta.Sym.Arith.getCommRing pure __do_lift.fieldInst?.isSome
Instances For
Equations
- Lean.Meta.Grind.Arith.CommRing.isQueueEmpty = do let __do_lift ← Lean.Meta.Grind.Arith.CommRing.getCommRingState pure (Std.TreeSet.isEmpty __do_lift.queue)
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
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Lean.Meta.Grind.Arith.CommRing.instMonadSetTermIdRingM = { setTermId := fun (e : Lean.Expr) => Lean.Meta.Grind.Arith.CommRing.setTermRingId e }
Every term reified by the ring solver has been internalized, together with its subterms, before
reification: the internalize hook runs after the core has created the ENodes of a term and
its arguments, and solver-built terms are internalized where they are built.
Equations
- One or more equations did not get rendered due to their size.
The numeral 1 of the current ring, internalized as a ring term of the current goal.
The term is cached in the Sym.Arith record and thus shared by all goals, but internalization
is per goal. The term may already be known to the core (e.g., as a subterm of a product) without
having been registered by the ring solver, so the check is against the ring's own denote map.
Equations
- One or more equations did not get rendered due to their size.