Documentation

Aesop.RuleSet

The Aesop-specific parts of an Aesop rule set. A BaseRuleSet stores global Aesop rules, e.g. safe and unsafe rules. It does not store simp theorems for the builtin norm simp rule; these are instead stored in a simp extension.

  • normRules : Index NormRuleInfo

    Normalisation rules registered in this rule set.

  • unsafeRules : Index UnsafeRuleInfo

    Unsafe rules registered in this rule set.

  • safeRules : Index SafeRuleInfo

    Safe rules registered in this rule set.

  • Rules for the builtin unfold rule. A pair (decl, unfoldThm?) in this map represents a declaration decl which should be unfolded. unfoldThm? should be the output of getUnfoldEqnFor? decl and is cached here for efficiency.

  • forwardRules : ForwardIndex

    Forward rules. There's a special procedure for applying forward rules, so we don't store them in the regular indices.

  • forwardRuleNames : Lean.PHashSet RuleName

    The names of all rules in forwardRules.

  • rulePatterns : RulePatternIndex

    An index for the rule patterns associated with rules contained in this rule set. When rules are removed from the rule set, their patterns are not removed from this index.

  • The set of rules that were erased from normRules, unsafeRules, safeRules and forwardRules. When we erase a rule which is present in any of these four indices, the rule is not removed from the indices but just added to this set. By contrast, when we erase a rule from unfoldRules, we actually delete it.

  • A cache of the names of all rules registered in this rule set. Invariant: ruleNames contains exactly the names of the rules present in normRules, unsafeRules, safeRules, forwardRules and unfoldRules and not present in erased. We use this cache (a) to quickly determine whether a rule is present in the rule set and (b) to find the full rule names associated with the fvar or const identified by a name.

Instances For

    A global Aesop rule set. When we tag a declaration with @[aesop], it is stored in one or more of these rule sets. Internally, a GlobalRuleSet is composed of a BaseRuleSet (stored in an Aesop rule set extension) plus a set of simp theorems (stored in a SimpExtension).

    Instances For

      The rule set used by an Aesop tactic call. A local rule set is produced by combining several global rule sets and possibly adding or erasing some individual rules.

      Instances For
        @[always_inline]
        def Aesop.GlobalRuleSet.onBaseM {m : Type u_1 → Type u_2} {α : Type u_1} [Monad m] (f : BaseRuleSetm (BaseRuleSet × α)) (rs : GlobalRuleSet) :
        Equations
          Instances For
            @[always_inline]
            Equations
              Instances For
                @[always_inline]
                Equations
                  Instances For
                    @[always_inline]
                    Equations
                      Instances For
                        @[always_inline]
                        def Aesop.LocalRuleSet.onBaseM {m : Type u_1 → Type u_2} {α : Type u_1} [Monad m] (f : BaseRuleSetm (BaseRuleSet × α)) (rs : LocalRuleSet) :
                        Equations
                          Instances For
                            @[always_inline]
                            Equations
                              Instances For
                                Equations
                                  Instances For
                                    Equations
                                      Instances For
                                        Equations
                                          Instances For
                                            Equations
                                              Instances For
                                                Equations
                                                  Instances For
                                                    Equations
                                                      Instances For
                                                        Equations
                                                          Instances For
                                                            Equations
                                                              Instances For
                                                                Equations
                                                                  Instances For
                                                                    Equations
                                                                      Instances For
                                                                        Equations
                                                                          Instances For
                                                                            Equations
                                                                              Instances For
                                                                                @[always_inline]
                                                                                Equations
                                                                                  Instances For