Rule Tactic Types #
Input for a rule tactic.
- goal : Lean.MVarId
The goal on which the rule is run.
- mvars : UnorderedArraySet Lean.MVarId
The set of mvars that
goal
depends on. - indexMatchLocations : Std.HashSet IndexMatchLocation
If the rule is indexed, the locations (i.e. hyps or the target) matched by the rule's index entries. Otherwise an empty set.
- patternSubsts? : Option (Std.HashSet Substitution)
If the rule has a pattern, the pattern substitutions that were found in the goal. Each substitution is a list of expressions which were found by matching the pattern against expressions in the goal. For example, if
h : max a b = max a c
appears in the goal and the rule has patternmax x y
, there will be two substitutions{x ↦ a, y ↦ b}
) and{x ↦ a, y ↦ c}
.If the rule does not have a pattern, this is
none
. Otherwise it is guaranteed to besome xs
withxs
non-empty. - options : Options'
The options given to Aesop.
- hypTypes : Lean.PHashSet RPINF
Normalised types of all non-implementation detail hypotheses in the local context of
goal
.
Instances For
Equations
- One or more equations did not get rendered due to their size.
A subgoal produced by a rule.
- diff : GoalDiff
A diff between the goal the rule was run on and this goal. Many
MetaM
tactics report information that allows you to easily construct aGoalDiff
. If you don't have access to such information, usediffGoals
, but note that it may not give optimal results.
Instances For
Equations
- Aesop.instInhabitedSubgoal = { default := { diff := default } }
Instances For
Equations
- Aesop.mvarIdToSubgoal parentMVarId mvarId = do let __do_lift ← Aesop.diffGoals parentMVarId mvarId pure { diff := __do_lift }
Instances For
A single rule application, representing the application of a tactic to the input goal. Must accurately report the following information:
goals
: the goals generated by the tactic.postState
: theMetaM
state after the tactic was run.scriptSteps?
: script steps which produce the same effect as the rule tactic. Ifinput.options.generateScript = false
(whereinput
is theRuleTacInput
), this field is ignored. If the tactic does not support script generation, usenone
.successProbability
: The success probability of this rule application. Ifnone
, we use the success probability of the applied rule.
- postState : Lean.Meta.SavedState
- scriptSteps? : Option (Array Script.LazyStep)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
The result of a rule tactic is a list of rule applications.
- applications : Array RuleApplication
Instances For
Equations
- Aesop.instInhabitedRuleTacOutput = { default := { applications := default } }
Equations
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
A tactic generator is a special sort of rule tactic, intended for use with
generative machine learning methods. It generates zero or more tactics
(represented as strings) that could be applied to the goal, plus a success
probability for each tactic. When Aesop executes a tactic generator, it executes
each of the tactics and, if the tactic succeeds, adds a rule application for it.
The tactic's success probability (which must be between 0 and 1, inclusive)
becomes the success probability of the rule application. A TacGen
rule
succeeds if at least one of its suggested tactics succeeds.
Equations
- Aesop.TacGen = (Lean.MVarId → Lean.MetaM (Array (String × Float)))
Instances For
Rule Tactic Descriptions #
Instances For
- decl (decl : Lean.Name) : CasesTarget
- patterns (patterns : Array CasesPattern) : CasesTarget
Instances For
Equations
- Aesop.instInhabitedCasesTarget = { default := Aesop.CasesTarget.decl default }