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.
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.
Instances For
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
Equations
- One or more equations did not get rendered due to their size.
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
Equations
- Lean.Meta.Grind.Arith.CommRing.noZeroDivisorsInst? = do let __do_lift ← Lean.Meta.Grind.Arith.CommRing.getRing pure __do_lift.noZeroDivInst?
Instances For
Returns true if the current ring satifies 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.Grind.Arith.CommRing.getRing 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.Grind.Arith.CommRing.getRing pure __do_lift.charInst?.isSome
Instances For
Converts the given ring expression into a multivariate polynomial. If the ring has a nonzero characteristic, it is used during normalization.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- p.mulConstM k = do let __do_lift ← Lean.Meta.Grind.Arith.CommRing.nonzeroChar? pure (p.mulConst' k __do_lift)
Instances For
Equations
- p.mulMonM k m = do let __do_lift ← Lean.Meta.Grind.Arith.CommRing.nonzeroChar? pure (p.mulMon' k m __do_lift)
Instances For
Equations
Instances For
Equations
- p₁.combineM p₂ = do let __do_lift ← Lean.Meta.Grind.Arith.CommRing.nonzeroChar? pure (p₁.combine' p₂ __do_lift)
Instances For
Equations
Instances For
Equations
- Lean.Meta.Grind.Arith.CommRing.isQueueEmpty = do let __do_lift ← Lean.Meta.Grind.Arith.CommRing.getRing pure (Lean.RBTree.isEmpty __do_lift.queue)
Instances For
Equations
- One or more equations did not get rendered due to their size.