Search strategies which Aesop can use.
- bestFirst : StrategyBest-first search. This is the default strategy. 
- depthFirst : StrategyDepth-first search. Whenever a rule is applied, Aesop immediately tries to solve each of its subgoals (from left to right), up to the maximum rule application depth. Goal and rule priorities are ignored, except to decide which rule is applied first. 
- breadthFirst : StrategyBreadth-first search. Aesop always works on the oldest unsolved goal. Goal and rule priorities are ignored, except to decide which rule is applied first. 
Instances For
Equations
Instances For
Equations
- Aesop.instBEqStrategy.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Equations
Equations
- Aesop.instReprStrategy = { reprPrec := Aesop.instReprStrategy.repr }
Equations
- Aesop.instReprStrategy.repr Aesop.Strategy.bestFirst prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Aesop.Strategy.bestFirst")).group prec✝
- Aesop.instReprStrategy.repr Aesop.Strategy.depthFirst prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Aesop.Strategy.depthFirst")).group prec✝
- Aesop.instReprStrategy.repr Aesop.Strategy.breadthFirst prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Aesop.Strategy.breadthFirst")).group prec✝
Instances For
Options which modify the behaviour of the aesop tactic.
- strategy : StrategyThe search strategy used by Aesop. 
- maxRuleApplicationDepth : NatThe maximum number of rule applications in any branch of the search tree (i.e., the maximum search depth). When a branch exceeds this limit, it is considered unprovable, but other branches may still be explored. 0 means no limit. 
- maxRuleApplications : NatMaximum total number of rule applications in the search tree. When this limit is exceeded, the search ends. 0 means no limit. 
- maxGoals : NatMaximum total number of goals in the search tree. When this limit is exceeded, the search ends. 0 means no limit. 
- maxNormIterations : NatMaximum number of norm rules applied to a single goal. When this limit is exceeded, normalisation is likely stuck in an infinite loop, so Aesop fails. 0 means no limit. 
- maxSafePrefixRuleApplications : NatWhen Aesop fails to prove a goal, it reports the goals that remain after safe rules have been applied exhaustively to the root goal, the safe descendants of the root goal, and so on (i.e., after the "safe prefix" of the search tree has been unfolded). However, it is possible for the search to fail before the safe prefix has been completely generated. In this case, Aesop expands the safe prefix after the fact. This option limits the number of additional rule applications generated during this process. 0 means no limit. 
- applyHypsTransparency : Lean.Meta.TransparencyModeThe transparency used by the applyHypsbuiltin rule. The rule applies a hypothesish : TifT ≡ ∀ (x₁ : X₁) ... (xₙ : Xₙ), Yat the given transparency and if additionally the goal's target is defeq toYat the given transparency.
- assumptionTransparency : Lean.Meta.TransparencyModeThe transparency used by the assumptionbuiltin rule. The rule applies a hypothesish : TifTis defeq to the goal's target at the given transparency.
- destructProductsTransparency : Lean.Meta.TransparencyModeThe transparency used by the destructProductsbuiltin rule. The rule splits a hypothesish : TifTis defeq to a product-like type (e.g.T ≡ A ∧ BorT ≡ A × B) at the given transparency.Note: we can index this rule only if the transparency is .reducible. With any other transparency, the rule becomes unindexed and is applied to every goal.
- introsTransparency? : Option Lean.Meta.TransparencyModeIf this option is not none, the builtinintrosrule unfolds the goal's target with the given transparency to discover∀binders. For example, withdef T := ∀ x y : Nat, x = y,introsTransparency? := some .defaultand goal⊢ T, theintrosrule produces the goalx, y : Nat ⊢ x = y. WithintrosTransparency? := some .reducible, it produces⊢ T. WithintrosTransparency? := none, it only introduces arguments which are syntactically bound by∀binders, so it also produces⊢ T.
- terminal : BoolIf true, Aesop succeeds only if it proves the goal. Iffalse, Aesop always succeeds and reports the goals remaining after safe rules were applied.
- warnOnNonterminal : BoolIf true, print a warning when Aesop does not prove the goal.
- traceScript : BoolIf Aesop proves a goal and this option is true, Aesop prints a tactic proof as aTry this:suggestion.
- enableSimp : BoolEnable the builtin simpnormalisation rule.
- useSimpAll : BoolUse simp_all, rather thansimp at *, for the builtinsimpnormalisation rule.
- useDefaultSimpSet : BoolUse simp theorems from the default simpset, i.e. those tagged with@[simp]. If this option isfalse, Aesop uses only Aesop-specific simp theorems, i.e. those tagged with@[aesop simp]. Note that the congruence lemmas from the defaultsimpset are always used.
- enableUnfold : BoolEnable the builtin unfoldnormalisation rule.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
- Aesop.instBEqOptions.beq x✝¹ x✝ = false
Instances For
Equations
Equations
- Aesop.instReprOptions = { reprPrec := Aesop.instReprOptions.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
(aesop) Only for use by Aesop developers. Enables dynamic script structuring.
(aesop) Only for use by Aesop developers. Uses static structuring instead of dynamic structuring if no metavariables appear in the proof.
(aesop) Only for use by Aesop developers. Generates a script even if none was requested.
(aesop) Only for use by Aesop developers. Enables the new stateful forward reasoning engine.
(aesop) Warn when apply builder is applied to a rule with conclusion of the form A ↔ B