These options affect the generation of equational theorems in a significant way. For these, their value at definition time, not realization time, should matter.
This is implemented by
- eagerly realizing the equations when they are set to a non-default value
- when realizing them lazily, reset the options to their default
Equations
Instances For
Equations
Instances For
Equations
Instances For
Returns true if s is of the form eq_<idx>
Equations
Instances For
Equations
- Lean.Meta.unfoldThmSuffix = "eq_def"
Instances For
Equations
- Lean.Meta.eqUnfoldThmSuffix = "eq_unfold"
Instances For
Equations
Instances For
The equational theorem for a definition can be private even if the definition itself is not. So un-private the name here when looking for a declaration
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
Throw an error if names for equation theorems for declName are not available.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Instances For
Registers a new function for retrieving equation theorems. We generate equations theorems on demand, and they are generated by more than one module. For example, the structural and well-founded recursion modules generate them. Most recent getters are tried first.
A getter returns an Option (Array Name). The result is none if the getter failed.
Otherwise, it is a sequence of theorem names where each one of them corresponds to
an alternative. Example: the definition
def f (xs : List Nat) : List Nat :=
match xs with
| [] => []
| x::xs => (x+1)::f xs
should have two equational theorems associated with it
f [] = []
and
(x : Nat) → (xs : List Nat) → f (x :: xs) = (x+1) :: f xs
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Equations
- Lean.Meta.instInhabitedEqnsExtState.default = { mapInv := default }
Instances For
A mapping from equational theorem to the declaration it was derived from.
Returns some declName if thmName is an equational theorem for declName.
Equations
- Lean.Meta.isEqnThm? thmName = do let __do_lift ← Lean.getEnv pure (Lean.PersistentHashMap.find? (Lean.Meta.eqnsExt.getState __do_lift).mapInv thmName)
Instances For
Returns true if thmName is an equational theorem.
Equations
- Lean.Meta.isEqnThm thmName = do let __do_lift ← Lean.getEnv pure (Lean.PersistentHashMap.contains (Lean.Meta.eqnsExt.getState __do_lift).mapInv thmName)
Instances For
If any equation theorem affecting option is not the default value, create the equations now.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Instances For
Registers a new function for retrieving a "unfold" equation theorem.
We generate this kind of equation theorem on demand, and it is generated by more than one module. For example, the structural and well-founded recursion modules generate it. Most recent getters are tried first.
A getter returns an Option Name. The result is none if the getter failed.
Otherwise, it is a theorem name. Example: the definition
def f (xs : List Nat) : List Nat :=
match xs with
| [] => []
| x::xs => (x+1)::f xs
should have the theorem
(xs : Nat) →
f xs =
match xs with
| [] => []
| x::xs => (x+1)::f xs
Equations
- One or more equations did not get rendered due to their size.
Instances For
Returns an "unfold" theorem (f.eq_def) for the given declaration.
By default, we do not create unfold theorems for nonrecursive definitions.
You can use nonRec := true to override this behavior.
Equations
- One or more equations did not get rendered due to their size.