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
goaldepends 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 cappears 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 xswithxsnon-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
Equations
Instances For
A subgoal produced by a rule.
- diff : GoalDiff
A diff between the goal the rule was run on and this goal. Many
MetaMtactics 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
Equations
- Aesop.instInhabitedSubgoal.default = { diff := default }
Instances For
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: theMetaMstate after the tactic was run.scriptSteps?: script steps which produce the same effect as the rule tactic. Ifinput.options.generateScript = false(whereinputis 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 }
Instances For
Equations
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