File: .lake/packages/aesop/Aesop/Search/Expansion/Norm.lean

full_name: Aesop.NormM.Context.options
code: structure Context where
  options : Options'
  ruleSet : LocalRuleSet
  normSimpContext : NormSimpContext
  statsRef : StatsRef
goal: Aesop.Options'

full_name: Aesop.NormM.Context.normSimpContext
code: structure Context where
  options : Options'
  ruleSet : LocalRuleSet
  normSimpContext : NormSimpContext
  statsRef : StatsRef
goal: Aesop.NormSimpContext

full_name: Aesop.NormM.Context
code: structure Context where
  options : Options'
  ruleSet : LocalRuleSet
  normSimpContext : NormSimpContext
  statsRef : StatsRef
goal: Type

full_name: Aesop.NormM.Context.statsRef
code: structure Context where
  options : Options'
  ruleSet : LocalRuleSet
  normSimpContext : NormSimpContext
  statsRef : StatsRef
goal: Aesop.StatsRef

full_name: Aesop.NormM.Context.ruleSet
code: structure Context where
  options : Options'
  ruleSet : LocalRuleSet
  normSimpContext : NormSimpContext
  statsRef : StatsRef
goal: Aesop.LocalRuleSet

full_name: Aesop.NormM
code: abbrev NormM 
goal: Type

full_name: Aesop.instMonadBacktrackSavedStateNormM
code: instance : MonadBacktrack Meta.SavedState NormM 
goal: Lean.MonadBacktrack Lean.Meta.SavedState Aesop.NormM

full_name: Aesop.instMonadStatsNormM
code: instance : MonadStats NormM 
goal: Aesop.MonadStats Aesop.NormM

full_name: Aesop.instMonadLiftNormMSearchM
code: instance [Queue Q] : MonadLift NormM (SearchM Q) 
goal: MonadLift Aesop.NormM (Aesop.SearchM Q)

full_name: Aesop.NormRuleResult.proved
code: inductive NormRuleResult
  | succeeded (goal : MVarId) (steps? : Option (Array Script.LazyStep))
  | proved (steps? : Option (Array Script.LazyStep))
goal: Aesop.NormRuleResult

full_name: Aesop.NormRuleResult.succeeded
code: inductive NormRuleResult
  | succeeded (goal : MVarId) (steps? : Option (Array Script.LazyStep))
  | proved (steps? : Option (Array Script.LazyStep))
goal: Aesop.NormRuleResult

full_name: Aesop.NormRuleResult
code: inductive NormRuleResult
  | succeeded (goal : MVarId) (steps? : Option (Array Script.LazyStep))
  | proved (steps? : Option (Array Script.LazyStep))
goal: Type

full_name: Aesop.NormRuleResult.newGoal?
code: def newGoal? : NormRuleResult → Option MVarId
  
goal: Aesop.NormRuleResult → Option Lean.MVarId

full_name: Aesop.NormRuleResult.steps?
code: def steps? : NormRuleResult → Option (Array Script.LazyStep)
  
goal: Aesop.NormRuleResult → Option (Array Aesop.Script.LazyStep)

full_name: Aesop.optNormRuleResultEmoji
code: def optNormRuleResultEmoji : Option NormRuleResult → String
  
goal: Option Aesop.NormRuleResult → String

full_name: Aesop.withNormTraceNode.fmt
code: @[inline, always_inline]
def withNormTraceNode (ruleName : DisplayRuleName)
    (k : NormM (Option NormRuleResult)) : NormM (Option NormRuleResult) 
goal: Aesop.NormM Lean.MessageData

full_name: Aesop.withNormTraceNode
code: @[inline, always_inline]
def withNormTraceNode (ruleName : DisplayRuleName)
    (k : NormM (Option NormRuleResult)) : NormM (Option NormRuleResult) 
goal: Aesop.NormM (Option Aesop.NormRuleResult)

full_name: Aesop.runNormRuleTac
code: def runNormRuleTac (rule : NormRule) (input : RuleTacInput) :
    MetaM (Option NormRuleResult) 
goal: Lean.MetaM (Option Aesop.NormRuleResult)

full_name: Aesop.runNormRuleTac.err
code: def runNormRuleTac (rule : NormRule) (input : RuleTacInput) :
    MetaM (Option NormRuleResult) 
goal: Lean.MetaM α

full_name: Aesop.runNormRule
code: def runNormRule (goal : MVarId) (mvars : UnorderedArraySet MVarId)
    (rule : IndexMatchResult NormRule) : NormM (Option NormRuleResult) 
goal: Aesop.NormM (Option Aesop.NormRuleResult)

full_name: Aesop.runFirstNormRule
code: def runFirstNormRule (goal : MVarId) (mvars : UnorderedArraySet MVarId)
    (rules : Array (IndexMatchResult NormRule)) :
    NormM (Option (DisplayRuleName × NormRuleResult)) 
goal: Aesop.NormM (Option (Aesop.DisplayRuleName × Aesop.NormRuleResult))

full_name: Aesop.mkNormSimpScriptStep
code: def mkNormSimpScriptStep
    (preGoal : MVarId) (postGoal? : Option MVarId)
    (preState postState : Meta.SavedState) (usedTheorems : Simp.UsedSimps) :
    NormM Script.LazyStep 
goal: Aesop.NormM Aesop.Script.LazyStep

full_name: Aesop.SimpResult.toNormRuleResult
code: def SimpResult.toNormRuleResult (originalGoal : MVarId)
    (preState postState : Meta.SavedState) :
    SimpResult → NormM (Option NormRuleResult)
  
goal: Aesop.SimpResult → Aesop.NormM (Option Aesop.NormRuleResult)

full_name: Aesop.normSimpCore.addLocalRules
code: def normSimpCore (goal : MVarId) (goalMVars : HashSet MVarId) :
    NormM (Option NormRuleResult) 
goal: Aesop.NormM (Lean.Meta.Simp.Context × Lean.Meta.Simp.SimprocsArray)

full_name: Aesop.normSimpCore
code: def normSimpCore (goal : MVarId) (goalMVars : HashSet MVarId) :
    NormM (Option NormRuleResult) 
goal: Aesop.NormM (Option Aesop.NormRuleResult)

full_name: Aesop.checkSimp
code: @[inline, always_inline]
def checkSimp (name : String) (mayCloseGoal : Bool) (goal : MVarId)
    (x : NormM (Option NormRuleResult)) : NormM (Option NormRuleResult) 
goal: Aesop.NormM (Option Aesop.NormRuleResult)

full_name: Aesop.normSimp
code: def normSimp (goal : MVarId) (goalMVars : HashSet MVarId) :
    NormM (Option NormRuleResult) 
goal: Aesop.NormM (Option Aesop.NormRuleResult)

full_name: Aesop.normUnfoldCore
code: def normUnfoldCore (goal : MVarId) : NormM (Option NormRuleResult) 
goal: Aesop.NormM (Option Aesop.NormRuleResult)

full_name: Aesop.normUnfold
code: def normUnfold (goal : MVarId) : NormM (Option NormRuleResult) 
goal: Aesop.NormM (Option Aesop.NormRuleResult)

full_name: Aesop.NormSeqResult
code: inductive NormSeqResult where
  | proved (script : Array (DisplayRuleName × Option (Array Script.LazyStep)))
  | changed (goal : MVarId)
      (script : Array (DisplayRuleName × Option (Array Script.LazyStep)))
  | unchanged
goal: Type

full_name: Aesop.NormSeqResult.changed
code: inductive NormSeqResult where
  | proved (script : Array (DisplayRuleName × Option (Array Script.LazyStep)))
  | changed (goal : MVarId)
      (script : Array (DisplayRuleName × Option (Array Script.LazyStep)))
  | unchanged
goal: Aesop.NormSeqResult

full_name: Aesop.NormSeqResult.proved
code: inductive NormSeqResult where
  | proved (script : Array (DisplayRuleName × Option (Array Script.LazyStep)))
  | changed (goal : MVarId)
      (script : Array (DisplayRuleName × Option (Array Script.LazyStep)))
  | unchanged
goal: Aesop.NormSeqResult

full_name: Aesop.NormSeqResult.unchanged
code: inductive NormSeqResult where
  | proved (script : Array (DisplayRuleName × Option (Array Script.LazyStep)))
  | changed (goal : MVarId)
      (script : Array (DisplayRuleName × Option (Array Script.LazyStep)))
  | unchanged
goal: Aesop.NormSeqResult

full_name: Aesop.NormRuleResult.toNormSeqResult
code: def NormRuleResult.toNormSeqResult (ruleName : DisplayRuleName) :
    NormRuleResult → NormSeqResult
  
goal: Aesop.NormRuleResult → Aesop.NormSeqResult

full_name: Aesop.optNormRuleResultToNormSeqResult
code: def optNormRuleResultToNormSeqResult :
    Option (DisplayRuleName × NormRuleResult) → NormSeqResult
  
goal: Option (Aesop.DisplayRuleName × Aesop.NormRuleResult) → Aesop.NormSeqResult

full_name: Aesop.NormStep
code: abbrev NormStep 
goal: Type

full_name: Aesop.runNormSteps
code: def runNormSteps (goal : MVarId) (steps : Array NormStep)
    (stepsNe : 0 < steps.size) : NormM NormSeqResult 
goal: Aesop.NormM Aesop.NormSeqResult

full_name: Aesop.NormStep.runPreSimpRules
code: def NormStep.runPreSimpRules (mvars : UnorderedArraySet MVarId) : NormStep
  
goal: Aesop.NormStep

full_name: Aesop.NormStep.runPostSimpRules
code: def NormStep.runPostSimpRules (mvars : UnorderedArraySet MVarId) : NormStep
  
goal: Aesop.NormStep

full_name: Aesop.NormStep.unfold
code: def NormStep.unfold : NormStep
  
goal: Aesop.NormStep

full_name: Aesop.NormStep.simp
code: def NormStep.simp (mvars : HashSet MVarId) : NormStep
  
goal: Aesop.NormStep

full_name: Aesop.normalizeGoalMVar
code: partial def normalizeGoalMVar (goal : MVarId)
    (mvars : UnorderedArraySet MVarId) : NormM NormSeqResult 
goal: Aesop.NormM Aesop.NormSeqResult

full_name: Aesop.normalizeGoalIfNecessary
code: def normalizeGoalIfNecessary (gref : GoalRef) [Aesop.Queue Q] :
    SearchM Q Bool 
goal: Aesop.SearchM Q Bool