norm_num basic plugins #
This file adds norm_num plugins for
- constructors and constants
Nat.cast,Int.cast, andmkRat+,-,*, and/Nat.succ,Nat.sub,Nat.mod, andNat.div.
See other files in this directory for many more plugins.
If b divides a and a is invertible, then b is invertible.
Instances For
If b divides a and a is invertible, then b is invertible.
Instances For
Constructors and constants #
The norm_num extension which identifies an expression OfNat.ofNat n, returning n.
Instances For
norm_num extension for Int.negOfNat.
It's useful for calling derive with the numerator of an .isNegNNRat branch.
Instances For
Casts #
The norm_num extension which identifies an expression Nat.cast n, returning n.
Instances For
The norm_num extension which identifies an expression Int.cast n, returning n.
Instances For
Arithmetic #
Note: Many of the lemmas in this file use a function equality hypothesis like f = HAdd.hAdd
below. The reason for this is that when this is applied, to prove e.g. 100 + 200 = 300, the
+ here is HAdd.hAdd with an instance that may not be syntactically equal to the one supplied
by the AddMonoidWithOne instance, and rather than attempting to prove the instances equal lean
will sometimes decide to evaluate 100 + 200 directly (into whatever + is defined to do in this
ring), which is definitely not what we want; if the subterms are expensive to kernel-reduce then
this could cause a (kernel) deep recursion detected error (see https://github.com/leanprover/lean4/issues/2171, https://github.com/leanprover-community/mathlib4/pull/4048).
By using an equality for the unapplied + function and proving it by rfl we take away the
opportunity for lean to unfold the numerals (and the instance defeq problem is usually comparatively
easy).
Instances For
Consider an Option as an object in the MetaM monad, by throwing an error on none.
Instances For
The result of negating a norm_num result.
Instances For
Helper function to synthesize a typed DivisionSemiring α expression.
Instances For
Helper function to synthesize a typed DivisionRing α expression.
Instances For
Logic #
The norm_num extension which identifies True.
Instances For
The norm_num extension which identifies False.