An Origin is an identifier for simp theorems which indicates roughly
what action the user took which lead to this theorem existing in the simp set.
- decl: Lake.Name → optParam Bool true → optParam Bool false → Lean.Meta.Origin
A global declaration in the environment.
- fvar: Lean.FVarId → Lean.Meta.Origin
A local hypothesis. When
contextual := trueis enabled, this fvar may exist in an extension of the current local context; it will not be used for rewriting by simp once it is out of scope but it may end up in theusedSimpstrace. - stx: Lake.Name → Lean.Syntax → Lean.Meta.Origin
A proof term provided directly to a call to
simp [ref, ...]whererefis the provided simp argument (of kindParser.Tactic.simpLemma). Theidis a unique identifier for the call. - other: Lake.Name → Lean.Meta.Origin
Some other origin.
nameshould not collide with the other types for erasure to work correctly, and simp trace will ignore this lemma. The other origins should be preferred if possible.
Instances For
Equations
- Lean.Meta.instInhabitedOrigin = { default := Lean.Meta.Origin.decl default default default }
Equations
- Lean.Meta.instReprOrigin = { reprPrec := Lean.Meta.reprOrigin✝ }
A unique identifier corresponding to the origin.
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
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Lean.Meta.instLTOrigin = { lt := fun (a b : Lean.Meta.Origin) => a.lt b = true }
Equations
- Lean.Meta.instDecidableLtOrigin a b = inferInstanceAs (Decidable (a.lt b = true))
Instances For
The fields levelParams and proof are used to encode the proof of the simp theorem.
If the proof is a global declaration c, we store Expr.const c [] at proof without the universe levels, and levelParams is set to #[]
When using the lemma, we create fresh universe metavariables.
Motivation: most simp theorems are global declarations, and this approach is faster and saves memory.
The field levelParams is not empty only when we elaborate an expression provided by the user, and it contains universe metavariables.
Then, we use abstractMVars to abstract the universe metavariables and create new fresh universe parameters that are stored at the field levelParams.
- keys : Array Lean.Meta.SimpTheoremKey
It stores universe parameter names for universe polymorphic proofs. Recall that it is non-empty only when we elaborate an expression provided by the user. When
proofis just a constant, we can use the universe parameter names stored in the declaration.- proof : Lean.Expr
- priority : Nat
- post : Bool
- perm : Bool
permis true if lhs and rhs are identical modulo permutation of variables. - origin : Lean.Meta.Origin
originis mainly relevant for producing trace messages. It is also viewed anidused to "erase"simptheorems fromSimpTheorems. - rfl : Bool
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.
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.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Lean.Meta.instBEqSimpTheorem = { beq := fun (e₁ e₂ : Lean.Meta.SimpTheorem) => e₁.proof == e₂.proof }
Instances For
- post : Lean.Meta.SimpTheoremTree
- lemmaNames : Lean.PHashSet Lean.Meta.Origin
- toUnfold : Lean.PHashSet Lake.Name
Constants (and let-declaration
FVarId) to unfold. WhenzetaDelta := false, the simplifier will expand a let-declaration if it is in this set. - erased : Lean.PHashSet Lean.Meta.Origin
- toUnfoldThms : Lean.PHashMap Lake.Name (Array Lake.Name)
Instances For
Equations
- Lean.Meta.instInhabitedSimpTheorems = { default := { pre := default, post := default, lemmaNames := default, toUnfold := default, erased := default, toUnfoldThms := default } }
Configuration for the discrimination tree.
Equations
- Lean.Meta.simpDtConfig = { iota := false, beta := true, proj := Lean.Meta.ProjReductionKind.no, zeta := true, zetaDelta := false }
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
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
Return true if declName is tagged to be unfolded using unfoldDefinition? (i.e., without using equational theorems).
Equations
- d.isDeclToUnfold declName = Lean.PersistentHashSet.contains d.toUnfold declName
Instances For
Equations
- d.isLetDeclToUnfold fvarId = Lean.PersistentHashSet.contains d.toUnfold fvarId.name
Instances For
Equations
- d.isLemma thmId = Lean.PersistentHashSet.contains d.lemmaNames thmId
Instances For
Register the equational theorems for the given definition.
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
- thm: Lean.Meta.SimpTheorem → Lean.Meta.SimpEntry
- toUnfold: Lake.Name → Lean.Meta.SimpEntry
- toUnfoldThms: Lake.Name → Array Lake.Name → Lean.Meta.SimpEntry
Instances For
Equations
- Lean.Meta.instInhabitedSimpEntry = { default := Lean.Meta.SimpEntry.thm default }
Equations
Instances For
Equations
- ext.getTheorems = do let __do_lift ← Lean.getEnv pure (Lean.ScopedEnvExtension.getState ext __do_lift)
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
Instances For
Equations
- Lean.Meta.getSimpExtension? attrName = do let __do_lift ← ST.Ref.get Lean.Meta.simpExtensionMapRef pure (Lean.HashMap.find? __do_lift attrName)
Instances For
Auxiliary method for adding a global declaration to a SimpTheorems datastructure.
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
Auxiliary method for creating simp theorems from a proof term val.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Auxiliary method for adding a local simp theorem to a SimpTheorems datastructure.
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
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- thmsArray.eraseTheorem thmId = Array.map (fun (thms : Lean.Meta.SimpTheorems) => thms.eraseCore thmId) thmsArray
Instances For
Equations
- thmsArray.isErased thmId = Array.any thmsArray (fun (thms : Lean.Meta.SimpTheorems) => Lean.PersistentHashSet.contains thms.erased thmId) 0
Instances For
Equations
- thmsArray.isDeclToUnfold declName = Array.any thmsArray (fun (thms : Lean.Meta.SimpTheorems) => thms.isDeclToUnfold declName) 0
Instances For
Equations
- thmsArray.isLetDeclToUnfold fvarId = Array.any thmsArray (fun (thms : Lean.Meta.SimpTheorems) => thms.isLetDeclToUnfold fvarId) 0