Equations
- Lean.Meta.Grind.mkOffsetPattern pat k = Lean.mkApp2 (Lean.mkConst `Lean.Grind.offset) pat (Lean.mkRawNatLit k)
Instances For
Equations
- Lean.Meta.Grind.mkEqBwdPattern u α lhs rhs = Lean.mkApp3 (Lean.mkConst `Lean.Grind.eqBwdPattern u) α lhs rhs
Instances For
Equations
- Lean.Meta.Grind.isEqBwdPattern e = e.isAppOfArity `Lean.Grind.eqBwdPattern 3
Instances For
- decl
(declName : Name)
: Origin
A global declaration in the environment.
- fvar
(fvarId : FVarId)
: Origin
A local hypothesis.
- stx
(id : Name)
(ref : Syntax)
: Origin
A proof term provided directly to a call to
grindwhererefis the provided grind argument. Theidis a unique identifier for the call. - local
(id : Name)
: Origin
It is local, but we don't have a local hypothesis for it.
Instances For
Equations
- Lean.Meta.Grind.instInhabitedOrigin = { default := Lean.Meta.Grind.Origin.decl default }
Equations
- Lean.Meta.Grind.instReprOrigin = { reprPrec := Lean.Meta.Grind.reprOrigin✝ }
Equations
A unique identifier corresponding to the origin.
Equations
- (Lean.Meta.Grind.Origin.decl a).key = a
- (Lean.Meta.Grind.Origin.fvar a).key = a.name
- (Lean.Meta.Grind.Origin.stx a a_1).key = a
- (Lean.Meta.Grind.Origin.local a).key = a
Instances For
Equations
- (Lean.Meta.Grind.Origin.decl a).pp = do let __do_lift ← Lean.mkConstWithLevelParams a pure (Lean.MessageData.ofConst __do_lift)
- (Lean.Meta.Grind.Origin.fvar a).pp = pure (Lean.MessageData.ofExpr (Lean.mkFVar a))
- (Lean.Meta.Grind.Origin.stx a a_1).pp = pure (Lean.MessageData.ofSyntax a_1)
- (Lean.Meta.Grind.Origin.local a).pp = pure (Lean.MessageData.ofName a)
Instances For
Equations
- Lean.Meta.Grind.instBEqOrigin_1 = { beq := fun (a b : Lean.Meta.Grind.Origin) => a.key == b.key }
Equations
- Lean.Meta.Grind.instHashableOrigin = { hash := fun (a : Lean.Meta.Grind.Origin) => hash a.key }
- eqLhs : EMatchTheoremKind
- eqRhs : EMatchTheoremKind
- eqBoth : EMatchTheoremKind
- eqBwd : EMatchTheoremKind
- fwd : EMatchTheoremKind
- bwd : EMatchTheoremKind
- leftRight : EMatchTheoremKind
- rightLeft : EMatchTheoremKind
- default : EMatchTheoremKind
- user : EMatchTheoremKind
Instances For
Equations
A theorem for heuristic instantiation based on E-matching.
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 : Expr
- numParams : Nat
Contains all symbols used in
pattterns.- origin : Origin
- kind : EMatchTheoremKind
Instances For
Equations
- One or more equations did not get rendered due to their size.
Set of E-matching theorems.
The key is a symbol from
EMatchTheorem.symbols.- origins : Lean.PHashSet Lean.Meta.Grind.Origin
Set of theorem ids that have been inserted using
insert. - erased : Lean.PHashSet Lean.Meta.Grind.Origin
Theorems that have been marked as erased
Mapping from origin to E-matching theorems associated with this origin.
Instances For
Inserts a thm with symbols [s_1, ..., s_n] to s.
We add s_1 -> { thm with symbols := [s_2, ..., s_n] }.
When grind internalizes a term containing symbol s, we
process all theorems thm associated with key s.
If their thm.symbols is empty, we say they are activated.
Otherwise, we reinsert into map.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Returns true if s contains a theorem with the given origin.
Equations
- s.contains origin = Lean.PersistentHashSet.contains (Lean.Meta.Grind.EMatchTheorems.origins✝ s) origin
Instances For
Mark the theorem with the given origin as erased
Equations
- One or more equations did not get rendered due to their size.
Instances For
Returns true if the theorem has been marked as erased.
Equations
- s.isErased origin = Lean.PersistentHashSet.contains (Lean.Meta.Grind.EMatchTheorems.erased✝ s) origin
Instances For
Retrieves theorems from s associated with the given symbol. See EMatchTheorem.insert.
The theorems are removed from s.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Returns theorems associated with the given origin.
Equations
- s.find origin = match Lean.PersistentHashMap.find? (Lean.Meta.Grind.EMatchTheorems.omap✝ s) origin with | some thms => thms | x => []
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Returns true if declName has been tagged as an E-match theorem using [grind].
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 function to expand a pattern containing forbidden application symbols into a multi-pattern.
This function enhances the usability of the [grind =] attribute by automatically handling
forbidden pattern symbols. For example, consider the following theorem tagged with this attribute:
getLast?_eq_some_iff {xs : List α} {a : α} : xs.getLast? = some a ↔ ∃ ys, xs = ys ++ [a]
Here, the selected pattern is xs.getLast? = some a, but Eq is a forbidden pattern symbol.
Instead of producing an error, this function converts the pattern into a multi-pattern,
allowing the attribute to be used conveniently.
The function recursively expands patterns with forbidden symbols by splitting them into their sub-components. If the pattern does not contain forbidden symbols, it is returned as-is.
Equations
- Lean.Meta.Grind.mkGroundPattern e = Lean.mkAnnotation `grind.ground_pat e
Instances For
Equations
- Lean.Meta.Grind.groundPattern? e = Lean.annotation? `grind.ground_pat e
Instances For
Equations
Instances For
- symbolSet : Std.HashSet HeadIndex
- bvarsFound : Std.HashSet Nat
Instances For
Equations
Instances For
Returns a bit-mask mask s.t. mask[i] is true if the corresponding argument is
- a type (that is not a proposition) or type former (which has forward dependencies) or
- a proof, or
- an instance implicit argument
When mask[i], we say the corresponding argument is a "support" argument.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Instances For
Auxiliary type for the checkCoverage function.
- ok : CheckCoverageResult
checkCoveragesucceeded - missing
(pos : List Nat)
: CheckCoverageResult
checkCoveragefailed because some of the theorem parameters are missing,poscontains their positions
Instances For
Creates an E-matching theorem for a theorem with proof proof, numParams parameters, and the given set of patterns.
Pattern variables are represented using de Bruijn indices.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Creates an E-matching theorem for declName with numParams parameters, and the given set of patterns.
Pattern variables are represented using de Bruijn indices.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given a theorem with proof proof and type of the form ∀ (a_1 ... a_n), lhs = rhs,
creates an E-matching pattern for it using addEMatchTheorem n [lhs]
If normalizePattern is true, it applies the grind simplification theorems and simprocs to the pattern.
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
Given theorem with name declName and type of the form ∀ (a_1 ... a_n), lhs = rhs,
creates an E-matching pattern for it using addEMatchTheorem n [lhs]
If normalizePattern is true, it applies the grind simplification theorems and simprocs to the
pattern.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Adds an E-matching theorem to the environment.
See mkEMatchTheorem.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Adds an E-matching equality theorem to the environment.
See mkEMatchEqTheorem.
Equations
- Lean.Meta.Grind.addEMatchEqTheorem declName = do let __do_lift ← Lean.Meta.Grind.mkEMatchEqTheorem declName Lean.ScopedEnvExtension.add Lean.Meta.Grind.ematchTheoremsExt✝ __do_lift
Instances For
Returns the E-matching theorems registered in the environment.
Equations
- Lean.Meta.Grind.getEMatchTheorems = do let __do_lift ← Lean.getEnv pure (Lean.ScopedEnvExtension.getState Lean.Meta.Grind.ematchTheoremsExt✝ __do_lift)
Instances For
Creates an E-match theorem using the given proof and kind.
If groundPatterns is true, it accepts patterns without pattern variables. This is useful for
theorems such as theorem evenZ : Even 0. For local theorems, we use groundPatterns := false
since the theorem is already in the grind state and there is nothing to be instantiated.
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
- 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
- One or more equations did not get rendered due to their size.