File: .lake/packages/aesop/Aesop/Tree/Data.lean

full_name: _private.«.lake».packages.aesop.Aesop.Tree.Data.0.Bool.toYesNo
code: private def Bool.toYesNo : Bool → Format
  
goal: Bool → Lean.Format

full_name: Aesop.instInhabitedGoalId
code: structure GoalId where
  toNat : Nat
  deriving Inhabited, DecidableEq
goal: Inhabited Aesop.GoalId

full_name: Aesop.GoalId.toNat
code: structure GoalId where
  toNat : Nat
  deriving Inhabited, DecidableEq
goal: Nat

full_name: Aesop.GoalId
code: structure GoalId where
  toNat : Nat
  deriving Inhabited, DecidableEq
goal: Type

full_name: Aesop.GoalId.zero
code: protected def zero : GoalId 
goal: Aesop.GoalId

full_name: Aesop.GoalId.one
code: protected def one : GoalId 
goal: Aesop.GoalId

full_name: Aesop.GoalId.succ
code: protected def succ : GoalId → GoalId
  
goal: Aesop.GoalId → Aesop.GoalId

full_name: Aesop.GoalId.dummy
code: def dummy : GoalId 
goal: Aesop.GoalId

full_name: Aesop.GoalId.instLT
code: instance : LT GoalId 
goal: LT Aesop.GoalId

full_name: Aesop.GoalId.instDecidableRelLt
code: instance : DecidableRel (α := GoalId) (· < ·) 
goal: DecidableRel fun x x_1 => x < x_1

full_name: Aesop.GoalId.instToString
code: instance : ToString GoalId 
goal: ToString Aesop.GoalId

full_name: Aesop.GoalId.instHashable
code: instance : Hashable GoalId 
goal: Hashable Aesop.GoalId

full_name: Aesop.RappId
code: structure RappId where
  toNat : Nat
  deriving Inhabited, DecidableEq
goal: Type

full_name: Aesop.RappId.toNat
code: structure RappId where
  toNat : Nat
  deriving Inhabited, DecidableEq
goal: Nat

full_name: Aesop.instInhabitedRappId
code: structure RappId where
  toNat : Nat
  deriving Inhabited, DecidableEq
goal: Inhabited Aesop.RappId

full_name: Aesop.RappId.zero
code: protected def zero : RappId 
goal: Aesop.RappId

full_name: Aesop.RappId.succ
code: protected def succ : RappId → RappId
  
goal: Aesop.RappId → Aesop.RappId

full_name: Aesop.RappId.one
code: protected def one : RappId 
goal: Aesop.RappId

full_name: Aesop.RappId.dummy
code: def dummy : RappId 
goal: Aesop.RappId

full_name: Aesop.RappId.instLT
code: instance : LT RappId 
goal: LT Aesop.RappId

full_name: Aesop.RappId.instDecidableRelLt
code: instance : DecidableRel (α := RappId) (· < ·) 
goal: DecidableRel fun x x_1 => x < x_1

full_name: Aesop.RappId.instToString
code: instance : ToString RappId 
goal: ToString Aesop.RappId

full_name: Aesop.RappId.instHashable
code: instance : Hashable RappId 
goal: Hashable Aesop.RappId

full_name: Aesop.Iteration
code: def Iteration 
goal: Type

full_name: _private.«.lake».packages.aesop.Aesop.Tree.Data.0.Aesop.Iteration.toNat
code: @[inline]
private def toNat : Iteration → Nat 
goal: Aesop.Iteration → Nat

full_name: _private.«.lake».packages.aesop.Aesop.Tree.Data.0.Aesop.Iteration.ofNat
code: @[inline]
private def ofNat : Nat → Iteration 
goal: Nat → Aesop.Iteration

full_name: Aesop.Iteration.one
code: @[inline]
protected def one : Iteration 
goal: Aesop.Iteration

full_name: Aesop.Iteration.succ
code: @[inline]
protected def succ (i : Iteration) : Iteration 
goal: Aesop.Iteration

full_name: Aesop.Iteration.none
code: protected def none : Iteration 
goal: Aesop.Iteration

full_name: Aesop.Iteration.instDecidableEq
code: instance : DecidableEq Iteration 
goal: DecidableEq Aesop.Iteration

full_name: Aesop.Iteration.instToString
code: instance : ToString Iteration 
goal: ToString Aesop.Iteration

full_name: Aesop.Iteration.instLT
code: instance : LT Iteration 
goal: LT Aesop.Iteration

full_name: Aesop.Iteration.instLE
code: instance : LE Iteration 
goal: LE Aesop.Iteration

full_name: Aesop.Iteration.instDecidableRelLt
code: instance : DecidableRel (α := Iteration) (· < ·) 
goal: DecidableRel fun x x_1 => x < x_1

full_name: Aesop.Iteration.instDecidableRelLe
code: instance : DecidableRel (α := Iteration) (· ≤ ·) 
goal: DecidableRel fun x x_1 => x ≤ x_1

full_name: Aesop.NodeState.proven
code: /--
At each point during the search, every node of the tree (goal, rapp or mvar
cluster) is in one of these states:

- `proven`: the node is proven.
- `unprovable`: the node is unprovable, i.e. it will never be proven regardless
  of any future expansions that might be performed.
- `unknown`: neither of the above.

Every node starts in the `unknown` state and may later become either `proven` or
`unprovable`. After this, the state does not change any more.
-/
inductive NodeState
  | unknown
  | proven
  | unprovable
  deriving Inhabited, BEq
goal: Aesop.NodeState

full_name: Aesop.NodeState.unprovable
code: /--
At each point during the search, every node of the tree (goal, rapp or mvar
cluster) is in one of these states:

- `proven`: the node is proven.
- `unprovable`: the node is unprovable, i.e. it will never be proven regardless
  of any future expansions that might be performed.
- `unknown`: neither of the above.

Every node starts in the `unknown` state and may later become either `proven` or
`unprovable`. After this, the state does not change any more.
-/
inductive NodeState
  | unknown
  | proven
  | unprovable
  deriving Inhabited, BEq
goal: Aesop.NodeState

full_name: Aesop.NodeState
code: /--
At each point during the search, every node of the tree (goal, rapp or mvar
cluster) is in one of these states:

- `proven`: the node is proven.
- `unprovable`: the node is unprovable, i.e. it will never be proven regardless
  of any future expansions that might be performed.
- `unknown`: neither of the above.

Every node starts in the `unknown` state and may later become either `proven` or
`unprovable`. After this, the state does not change any more.
-/
inductive NodeState
  | unknown
  | proven
  | unprovable
  deriving Inhabited, BEq
goal: Type

full_name: Aesop.instInhabitedNodeState
code: /--
At each point during the search, every node of the tree (goal, rapp or mvar
cluster) is in one of these states:

- `proven`: the node is proven.
- `unprovable`: the node is unprovable, i.e. it will never be proven regardless
  of any future expansions that might be performed.
- `unknown`: neither of the above.

Every node starts in the `unknown` state and may later become either `proven` or
`unprovable`. After this, the state does not change any more.
-/
inductive NodeState
  | unknown
  | proven
  | unprovable
  deriving Inhabited, BEq
goal: Inhabited Aesop.NodeState

full_name: Aesop.NodeState.unknown
code: /--
At each point during the search, every node of the tree (goal, rapp or mvar
cluster) is in one of these states:

- `proven`: the node is proven.
- `unprovable`: the node is unprovable, i.e. it will never be proven regardless
  of any future expansions that might be performed.
- `unknown`: neither of the above.

Every node starts in the `unknown` state and may later become either `proven` or
`unprovable`. After this, the state does not change any more.
-/
inductive NodeState
  | unknown
  | proven
  | unprovable
  deriving Inhabited, BEq
goal: Aesop.NodeState

full_name: Aesop.instBEqNodeState
code: BEq
goal: BEq Aesop.NodeState

full_name: Aesop.NodeState.instToString
code: instance : ToString NodeState 
goal: ToString Aesop.NodeState

full_name: Aesop.NodeState.isUnknown
code: def isUnknown : NodeState → Bool
  
goal: Aesop.NodeState → Bool

full_name: Aesop.NodeState.isProven
code: def isProven : NodeState → Bool
  
goal: Aesop.NodeState → Bool

full_name: Aesop.NodeState.isUnprovable
code: def isUnprovable : NodeState → Bool
  
goal: Aesop.NodeState → Bool

full_name: Aesop.NodeState.isIrrelevant
code: def isIrrelevant : NodeState → Bool
  
goal: Aesop.NodeState → Bool

full_name: Aesop.NodeState.toEmoji
code: def toEmoji : NodeState → String
  
goal: Aesop.NodeState → String

full_name: Aesop.instInhabitedGoalState
code: /--
A refinement of the `NodeState`, distinguishing between goals proven during
normalisation and goals proven by a child rule application.
-/
inductive GoalState
  | unknown
  | provenByRuleApplication
  | provenByNormalization
  | unprovable
  deriving Inhabited, BEq
goal: Inhabited Aesop.GoalState

full_name: Aesop.GoalState.unprovable
code: /--
A refinement of the `NodeState`, distinguishing between goals proven during
normalisation and goals proven by a child rule application.
-/
inductive GoalState
  | unknown
  | provenByRuleApplication
  | provenByNormalization
  | unprovable
  deriving Inhabited, BEq
goal: Aesop.GoalState

full_name: Aesop.GoalState.provenByNormalization
code: /--
A refinement of the `NodeState`, distinguishing between goals proven during
normalisation and goals proven by a child rule application.
-/
inductive GoalState
  | unknown
  | provenByRuleApplication
  | provenByNormalization
  | unprovable
  deriving Inhabited, BEq
goal: Aesop.GoalState

full_name: Aesop.GoalState.provenByRuleApplication
code: /--
A refinement of the `NodeState`, distinguishing between goals proven during
normalisation and goals proven by a child rule application.
-/
inductive GoalState
  | unknown
  | provenByRuleApplication
  | provenByNormalization
  | unprovable
  deriving Inhabited, BEq
goal: Aesop.GoalState

full_name: Aesop.GoalState.unknown
code: /--
A refinement of the `NodeState`, distinguishing between goals proven during
normalisation and goals proven by a child rule application.
-/
inductive GoalState
  | unknown
  | provenByRuleApplication
  | provenByNormalization
  | unprovable
  deriving Inhabited, BEq
goal: Aesop.GoalState

full_name: Aesop.GoalState
code: /--
A refinement of the `NodeState`, distinguishing between goals proven during
normalisation and goals proven by a child rule application.
-/
inductive GoalState
  | unknown
  | provenByRuleApplication
  | provenByNormalization
  | unprovable
  deriving Inhabited, BEq
goal: Type

full_name: Aesop.instBEqGoalState
code: BEq
goal: BEq Aesop.GoalState

full_name: Aesop.GoalState.instToString
code: instance : ToString GoalState 
goal: ToString Aesop.GoalState

full_name: Aesop.GoalState.isProvenByRuleApplication
code: def isProvenByRuleApplication : GoalState → Bool
  
goal: Aesop.GoalState → Bool

full_name: Aesop.GoalState.isProvenByNormalization
code: def isProvenByNormalization : GoalState → Bool
  
goal: Aesop.GoalState → Bool

full_name: Aesop.GoalState.isProven
code: def isProven : GoalState → Bool
  
goal: Aesop.GoalState → Bool

full_name: Aesop.GoalState.isUnprovable
code: def isUnprovable : GoalState → Bool
  
goal: Aesop.GoalState → Bool

full_name: Aesop.GoalState.isUnknown
code: def isUnknown : GoalState → Bool
  
goal: Aesop.GoalState → Bool

full_name: Aesop.GoalState.toNodeState
code: def toNodeState : GoalState → NodeState
  
goal: Aesop.GoalState → Aesop.NodeState

full_name: Aesop.GoalState.isIrrelevant
code: def isIrrelevant (s : GoalState) : Bool 
goal: Bool

full_name: Aesop.GoalState.toEmoji
code: def toEmoji : GoalState → String
  
goal: Aesop.GoalState → String

full_name: Aesop.NormalizationState.provenByNormalization
code: inductive NormalizationState
  | notNormal
  | normal (postGoal : MVarId) (postState : Meta.SavedState)
      (script : Array (DisplayRuleName × Option (Array Script.LazyStep)))
  | provenByNormalization (postState : Meta.SavedState)
      (script : Array (DisplayRuleName × Option (Array Script.LazyStep)))
  deriving Inhabited
goal: Aesop.NormalizationState

full_name: Aesop.NormalizationState.normal
code: inductive NormalizationState
  | notNormal
  | normal (postGoal : MVarId) (postState : Meta.SavedState)
      (script : Array (DisplayRuleName × Option (Array Script.LazyStep)))
  | provenByNormalization (postState : Meta.SavedState)
      (script : Array (DisplayRuleName × Option (Array Script.LazyStep)))
  deriving Inhabited
goal: Aesop.NormalizationState

full_name: Aesop.NormalizationState.notNormal
code: inductive NormalizationState
  | notNormal
  | normal (postGoal : MVarId) (postState : Meta.SavedState)
      (script : Array (DisplayRuleName × Option (Array Script.LazyStep)))
  | provenByNormalization (postState : Meta.SavedState)
      (script : Array (DisplayRuleName × Option (Array Script.LazyStep)))
  deriving Inhabited
goal: Aesop.NormalizationState

full_name: Aesop.NormalizationState
code: inductive NormalizationState
  | notNormal
  | normal (postGoal : MVarId) (postState : Meta.SavedState)
      (script : Array (DisplayRuleName × Option (Array Script.LazyStep)))
  | provenByNormalization (postState : Meta.SavedState)
      (script : Array (DisplayRuleName × Option (Array Script.LazyStep)))
  deriving Inhabited
goal: Type

full_name: Aesop.instInhabitedNormalizationState
code: inductive NormalizationState
  | notNormal
  | normal (postGoal : MVarId) (postState : Meta.SavedState)
      (script : Array (DisplayRuleName × Option (Array Script.LazyStep)))
  | provenByNormalization (postState : Meta.SavedState)
      (script : Array (DisplayRuleName × Option (Array Script.LazyStep)))
  deriving Inhabited
goal: Inhabited Aesop.NormalizationState

full_name: Aesop.NormalizationState.isNormal
code: def isNormal : NormalizationState → Bool
  
goal: Aesop.NormalizationState → Bool

full_name: Aesop.NormalizationState.isProvenByNormalization
code: def isProvenByNormalization : NormalizationState → Bool
  
goal: Aesop.NormalizationState → Bool

full_name: Aesop.NormalizationState.normalizedGoal?
code: def normalizedGoal? : NormalizationState → Option MVarId
  
goal: Aesop.NormalizationState → Option Lean.MVarId

full_name: Aesop.GoalOrigin
code: /--
A goal `G` can be added to the tree for three reasons:

1. `G` was produced by its parent rule as a subgoal. This is the most common
   reason.
2. `G` was copied because it contains some metavariables which were assigned by
   its parent rule. In this case, we record goal of which `G` is a copy. We also
   record the representative of the equivalence class of goals which are copies
   of each other. E.g. if goal `1` is copied to goal `2` and goal `2` is copied
   to goal `3`, they are all part of the equivalence class with representative
   `1`.
-/
inductive GoalOrigin
  | subgoal
  | copied («from» : GoalId) (rep : GoalId)
  | droppedMVar
  deriving Inhabited
goal: Type

full_name: Aesop.GoalOrigin.subgoal
code: /--
A goal `G` can be added to the tree for three reasons:

1. `G` was produced by its parent rule as a subgoal. This is the most common
   reason.
2. `G` was copied because it contains some metavariables which were assigned by
   its parent rule. In this case, we record goal of which `G` is a copy. We also
   record the representative of the equivalence class of goals which are copies
   of each other. E.g. if goal `1` is copied to goal `2` and goal `2` is copied
   to goal `3`, they are all part of the equivalence class with representative
   `1`.
-/
inductive GoalOrigin
  | subgoal
  | copied («from» : GoalId) (rep : GoalId)
  | droppedMVar
  deriving Inhabited
goal: Aesop.GoalOrigin

full_name: Aesop.GoalOrigin.droppedMVar
code: /--
A goal `G` can be added to the tree for three reasons:

1. `G` was produced by its parent rule as a subgoal. This is the most common
   reason.
2. `G` was copied because it contains some metavariables which were assigned by
   its parent rule. In this case, we record goal of which `G` is a copy. We also
   record the representative of the equivalence class of goals which are copies
   of each other. E.g. if goal `1` is copied to goal `2` and goal `2` is copied
   to goal `3`, they are all part of the equivalence class with representative
   `1`.
-/
inductive GoalOrigin
  | subgoal
  | copied («from» : GoalId) (rep : GoalId)
  | droppedMVar
  deriving Inhabited
goal: Aesop.GoalOrigin

full_name: Aesop.instInhabitedGoalOrigin
code: /--
A goal `G` can be added to the tree for three reasons:

1. `G` was produced by its parent rule as a subgoal. This is the most common
   reason.
2. `G` was copied because it contains some metavariables which were assigned by
   its parent rule. In this case, we record goal of which `G` is a copy. We also
   record the representative of the equivalence class of goals which are copies
   of each other. E.g. if goal `1` is copied to goal `2` and goal `2` is copied
   to goal `3`, they are all part of the equivalence class with representative
   `1`.
-/
inductive GoalOrigin
  | subgoal
  | copied («from» : GoalId) (rep : GoalId)
  | droppedMVar
  deriving Inhabited
goal: Inhabited Aesop.GoalOrigin

full_name: Aesop.GoalOrigin.copied
code: /--
A goal `G` can be added to the tree for three reasons:

1. `G` was produced by its parent rule as a subgoal. This is the most common
   reason.
2. `G` was copied because it contains some metavariables which were assigned by
   its parent rule. In this case, we record goal of which `G` is a copy. We also
   record the representative of the equivalence class of goals which are copies
   of each other. E.g. if goal `1` is copied to goal `2` and goal `2` is copied
   to goal `3`, they are all part of the equivalence class with representative
   `1`.
-/
inductive GoalOrigin
  | subgoal
  | copied («from» : GoalId) (rep : GoalId)
  | droppedMVar
  deriving Inhabited
goal: Aesop.GoalOrigin

full_name: Aesop.GoalOrigin.originalGoalId?
code: def originalGoalId? : GoalOrigin → Option GoalId
  
goal: Aesop.GoalOrigin → Option Aesop.GoalId

full_name: Aesop.GoalOrigin.toString
code: protected def toString : GoalOrigin → String
  
goal: Aesop.GoalOrigin → String

full_name: Aesop.GoalData.state
code: structure GoalData (Rapp MVarCluster : Type) : Type where
  id : GoalId
  parent : IO.Ref MVarCluster
  children : Array (IO.Ref Rapp)
  origin : GoalOrigin
  depth : Nat
  state : GoalState
  isIrrelevant : Bool
  isForcedUnprovable : Bool
    -- True if the goal was designated unprovable 'by force'. This happens when
    -- we reach the search depth limit. Any goal beyond this limit becomes
    -- irrelevant and therefore unprovable.
  preNormGoal : MVarId
    -- The goal before normalisation. The goal after normalisation (if any) is
    -- contained in the `normalizationState`.
  normalizationState : NormalizationState
  mvars : UnorderedArraySet MVarId
    -- Unassigned expression metavariables that appear in the goal, i.e. that
    -- appear in the target or hypotheses of `goal` when interpreted in the
    -- metavar context of `parent?` (or in the global metavar context if
    -- `parent? = none`).
  successProbability : Percent
  addedInIteration : Iteration
  lastExpandedInIteration : Iteration
    -- Iteration 0 means the node has never been expanded.
  unsafeRulesSelected : Bool
  unsafeQueue : UnsafeQueue
  failedRapps : Array RegularRule
  deriving Nonempty
goal: Aesop.GoalState

full_name: Aesop.GoalData.parent
code: structure GoalData (Rapp MVarCluster : Type) : Type where
  id : GoalId
  parent : IO.Ref MVarCluster
  children : Array (IO.Ref Rapp)
  origin : GoalOrigin
  depth : Nat
  state : GoalState
  isIrrelevant : Bool
  isForcedUnprovable : Bool
    -- True if the goal was designated unprovable 'by force'. This happens when
    -- we reach the search depth limit. Any goal beyond this limit becomes
    -- irrelevant and therefore unprovable.
  preNormGoal : MVarId
    -- The goal before normalisation. The goal after normalisation (if any) is
    -- contained in the `normalizationState`.
  normalizationState : NormalizationState
  mvars : UnorderedArraySet MVarId
    -- Unassigned expression metavariables that appear in the goal, i.e. that
    -- appear in the target or hypotheses of `goal` when interpreted in the
    -- metavar context of `parent?` (or in the global metavar context if
    -- `parent? = none`).
  successProbability : Percent
  addedInIteration : Iteration
  lastExpandedInIteration : Iteration
    -- Iteration 0 means the node has never been expanded.
  unsafeRulesSelected : Bool
  unsafeQueue : UnsafeQueue
  failedRapps : Array RegularRule
  deriving Nonempty
goal: IO.Ref MVarCluster

full_name: Aesop.GoalData.unsafeRulesSelected
code: structure GoalData (Rapp MVarCluster : Type) : Type where
  id : GoalId
  parent : IO.Ref MVarCluster
  children : Array (IO.Ref Rapp)
  origin : GoalOrigin
  depth : Nat
  state : GoalState
  isIrrelevant : Bool
  isForcedUnprovable : Bool
    -- True if the goal was designated unprovable 'by force'. This happens when
    -- we reach the search depth limit. Any goal beyond this limit becomes
    -- irrelevant and therefore unprovable.
  preNormGoal : MVarId
    -- The goal before normalisation. The goal after normalisation (if any) is
    -- contained in the `normalizationState`.
  normalizationState : NormalizationState
  mvars : UnorderedArraySet MVarId
    -- Unassigned expression metavariables that appear in the goal, i.e. that
    -- appear in the target or hypotheses of `goal` when interpreted in the
    -- metavar context of `parent?` (or in the global metavar context if
    -- `parent? = none`).
  successProbability : Percent
  addedInIteration : Iteration
  lastExpandedInIteration : Iteration
    -- Iteration 0 means the node has never been expanded.
  unsafeRulesSelected : Bool
  unsafeQueue : UnsafeQueue
  failedRapps : Array RegularRule
  deriving Nonempty
goal: Bool

full_name: Aesop.instNonemptyGoalData
code: structure GoalData (Rapp MVarCluster : Type) : Type where
  id : GoalId
  parent : IO.Ref MVarCluster
  children : Array (IO.Ref Rapp)
  origin : GoalOrigin
  depth : Nat
  state : GoalState
  isIrrelevant : Bool
  isForcedUnprovable : Bool
    -- True if the goal was designated unprovable 'by force'. This happens when
    -- we reach the search depth limit. Any goal beyond this limit becomes
    -- irrelevant and therefore unprovable.
  preNormGoal : MVarId
    -- The goal before normalisation. The goal after normalisation (if any) is
    -- contained in the `normalizationState`.
  normalizationState : NormalizationState
  mvars : UnorderedArraySet MVarId
    -- Unassigned expression metavariables that appear in the goal, i.e. that
    -- appear in the target or hypotheses of `goal` when interpreted in the
    -- metavar context of `parent?` (or in the global metavar context if
    -- `parent? = none`).
  successProbability : Percent
  addedInIteration : Iteration
  lastExpandedInIteration : Iteration
    -- Iteration 0 means the node has never been expanded.
  unsafeRulesSelected : Bool
  unsafeQueue : UnsafeQueue
  failedRapps : Array RegularRule
  deriving Nonempty
goal: ∀ {Rapp MVarCluster : Type} [inst : Nonempty MVarCluster], Nonempty (Aesop.GoalData Rapp MVarCluster)

full_name: Aesop.GoalData.isIrrelevant
code: structure GoalData (Rapp MVarCluster : Type) : Type where
  id : GoalId
  parent : IO.Ref MVarCluster
  children : Array (IO.Ref Rapp)
  origin : GoalOrigin
  depth : Nat
  state : GoalState
  isIrrelevant : Bool
  isForcedUnprovable : Bool
    -- True if the goal was designated unprovable 'by force'. This happens when
    -- we reach the search depth limit. Any goal beyond this limit becomes
    -- irrelevant and therefore unprovable.
  preNormGoal : MVarId
    -- The goal before normalisation. The goal after normalisation (if any) is
    -- contained in the `normalizationState`.
  normalizationState : NormalizationState
  mvars : UnorderedArraySet MVarId
    -- Unassigned expression metavariables that appear in the goal, i.e. that
    -- appear in the target or hypotheses of `goal` when interpreted in the
    -- metavar context of `parent?` (or in the global metavar context if
    -- `parent? = none`).
  successProbability : Percent
  addedInIteration : Iteration
  lastExpandedInIteration : Iteration
    -- Iteration 0 means the node has never been expanded.
  unsafeRulesSelected : Bool
  unsafeQueue : UnsafeQueue
  failedRapps : Array RegularRule
  deriving Nonempty
goal: Bool

full_name: Aesop.GoalData.isForcedUnprovable
code: structure GoalData (Rapp MVarCluster : Type) : Type where
  id : GoalId
  parent : IO.Ref MVarCluster
  children : Array (IO.Ref Rapp)
  origin : GoalOrigin
  depth : Nat
  state : GoalState
  isIrrelevant : Bool
  isForcedUnprovable : Bool
    -- True if the goal was designated unprovable 'by force'. This happens when
    -- we reach the search depth limit. Any goal beyond this limit becomes
    -- irrelevant and therefore unprovable.
  preNormGoal : MVarId
    -- The goal before normalisation. The goal after normalisation (if any) is
    -- contained in the `normalizationState`.
  normalizationState : NormalizationState
  mvars : UnorderedArraySet MVarId
    -- Unassigned expression metavariables that appear in the goal, i.e. that
    -- appear in the target or hypotheses of `goal` when interpreted in the
    -- metavar context of `parent?` (or in the global metavar context if
    -- `parent? = none`).
  successProbability : Percent
  addedInIteration : Iteration
  lastExpandedInIteration : Iteration
    -- Iteration 0 means the node has never been expanded.
  unsafeRulesSelected : Bool
  unsafeQueue : UnsafeQueue
  failedRapps : Array RegularRule
  deriving Nonempty
goal: Bool

full_name: Aesop.GoalData.normalizationState
code: structure GoalData (Rapp MVarCluster : Type) : Type where
  id : GoalId
  parent : IO.Ref MVarCluster
  children : Array (IO.Ref Rapp)
  origin : GoalOrigin
  depth : Nat
  state : GoalState
  isIrrelevant : Bool
  isForcedUnprovable : Bool
    -- True if the goal was designated unprovable 'by force'. This happens when
    -- we reach the search depth limit. Any goal beyond this limit becomes
    -- irrelevant and therefore unprovable.
  preNormGoal : MVarId
    -- The goal before normalisation. The goal after normalisation (if any) is
    -- contained in the `normalizationState`.
  normalizationState : NormalizationState
  mvars : UnorderedArraySet MVarId
    -- Unassigned expression metavariables that appear in the goal, i.e. that
    -- appear in the target or hypotheses of `goal` when interpreted in the
    -- metavar context of `parent?` (or in the global metavar context if
    -- `parent? = none`).
  successProbability : Percent
  addedInIteration : Iteration
  lastExpandedInIteration : Iteration
    -- Iteration 0 means the node has never been expanded.
  unsafeRulesSelected : Bool
  unsafeQueue : UnsafeQueue
  failedRapps : Array RegularRule
  deriving Nonempty
goal: Aesop.NormalizationState

full_name: Aesop.GoalData.addedInIteration
code: structure GoalData (Rapp MVarCluster : Type) : Type where
  id : GoalId
  parent : IO.Ref MVarCluster
  children : Array (IO.Ref Rapp)
  origin : GoalOrigin
  depth : Nat
  state : GoalState
  isIrrelevant : Bool
  isForcedUnprovable : Bool
    -- True if the goal was designated unprovable 'by force'. This happens when
    -- we reach the search depth limit. Any goal beyond this limit becomes
    -- irrelevant and therefore unprovable.
  preNormGoal : MVarId
    -- The goal before normalisation. The goal after normalisation (if any) is
    -- contained in the `normalizationState`.
  normalizationState : NormalizationState
  mvars : UnorderedArraySet MVarId
    -- Unassigned expression metavariables that appear in the goal, i.e. that
    -- appear in the target or hypotheses of `goal` when interpreted in the
    -- metavar context of `parent?` (or in the global metavar context if
    -- `parent? = none`).
  successProbability : Percent
  addedInIteration : Iteration
  lastExpandedInIteration : Iteration
    -- Iteration 0 means the node has never been expanded.
  unsafeRulesSelected : Bool
  unsafeQueue : UnsafeQueue
  failedRapps : Array RegularRule
  deriving Nonempty
goal: Aesop.Iteration

full_name: Aesop.GoalData.preNormGoal
code: structure GoalData (Rapp MVarCluster : Type) : Type where
  id : GoalId
  parent : IO.Ref MVarCluster
  children : Array (IO.Ref Rapp)
  origin : GoalOrigin
  depth : Nat
  state : GoalState
  isIrrelevant : Bool
  isForcedUnprovable : Bool
    -- True if the goal was designated unprovable 'by force'. This happens when
    -- we reach the search depth limit. Any goal beyond this limit becomes
    -- irrelevant and therefore unprovable.
  preNormGoal : MVarId
    -- The goal before normalisation. The goal after normalisation (if any) is
    -- contained in the `normalizationState`.
  normalizationState : NormalizationState
  mvars : UnorderedArraySet MVarId
    -- Unassigned expression metavariables that appear in the goal, i.e. that
    -- appear in the target or hypotheses of `goal` when interpreted in the
    -- metavar context of `parent?` (or in the global metavar context if
    -- `parent? = none`).
  successProbability : Percent
  addedInIteration : Iteration
  lastExpandedInIteration : Iteration
    -- Iteration 0 means the node has never been expanded.
  unsafeRulesSelected : Bool
  unsafeQueue : UnsafeQueue
  failedRapps : Array RegularRule
  deriving Nonempty
goal: Lean.MVarId

full_name: Aesop.GoalData.successProbability
code: structure GoalData (Rapp MVarCluster : Type) : Type where
  id : GoalId
  parent : IO.Ref MVarCluster
  children : Array (IO.Ref Rapp)
  origin : GoalOrigin
  depth : Nat
  state : GoalState
  isIrrelevant : Bool
  isForcedUnprovable : Bool
    -- True if the goal was designated unprovable 'by force'. This happens when
    -- we reach the search depth limit. Any goal beyond this limit becomes
    -- irrelevant and therefore unprovable.
  preNormGoal : MVarId
    -- The goal before normalisation. The goal after normalisation (if any) is
    -- contained in the `normalizationState`.
  normalizationState : NormalizationState
  mvars : UnorderedArraySet MVarId
    -- Unassigned expression metavariables that appear in the goal, i.e. that
    -- appear in the target or hypotheses of `goal` when interpreted in the
    -- metavar context of `parent?` (or in the global metavar context if
    -- `parent? = none`).
  successProbability : Percent
  addedInIteration : Iteration
  lastExpandedInIteration : Iteration
    -- Iteration 0 means the node has never been expanded.
  unsafeRulesSelected : Bool
  unsafeQueue : UnsafeQueue
  failedRapps : Array RegularRule
  deriving Nonempty
goal: Aesop.Percent

full_name: Aesop.GoalData.origin
code: structure GoalData (Rapp MVarCluster : Type) : Type where
  id : GoalId
  parent : IO.Ref MVarCluster
  children : Array (IO.Ref Rapp)
  origin : GoalOrigin
  depth : Nat
  state : GoalState
  isIrrelevant : Bool
  isForcedUnprovable : Bool
    -- True if the goal was designated unprovable 'by force'. This happens when
    -- we reach the search depth limit. Any goal beyond this limit becomes
    -- irrelevant and therefore unprovable.
  preNormGoal : MVarId
    -- The goal before normalisation. The goal after normalisation (if any) is
    -- contained in the `normalizationState`.
  normalizationState : NormalizationState
  mvars : UnorderedArraySet MVarId
    -- Unassigned expression metavariables that appear in the goal, i.e. that
    -- appear in the target or hypotheses of `goal` when interpreted in the
    -- metavar context of `parent?` (or in the global metavar context if
    -- `parent? = none`).
  successProbability : Percent
  addedInIteration : Iteration
  lastExpandedInIteration : Iteration
    -- Iteration 0 means the node has never been expanded.
  unsafeRulesSelected : Bool
  unsafeQueue : UnsafeQueue
  failedRapps : Array RegularRule
  deriving Nonempty
goal: Aesop.GoalOrigin

full_name: Aesop.GoalData.children
code: structure GoalData (Rapp MVarCluster : Type) : Type where
  id : GoalId
  parent : IO.Ref MVarCluster
  children : Array (IO.Ref Rapp)
  origin : GoalOrigin
  depth : Nat
  state : GoalState
  isIrrelevant : Bool
  isForcedUnprovable : Bool
    -- True if the goal was designated unprovable 'by force'. This happens when
    -- we reach the search depth limit. Any goal beyond this limit becomes
    -- irrelevant and therefore unprovable.
  preNormGoal : MVarId
    -- The goal before normalisation. The goal after normalisation (if any) is
    -- contained in the `normalizationState`.
  normalizationState : NormalizationState
  mvars : UnorderedArraySet MVarId
    -- Unassigned expression metavariables that appear in the goal, i.e. that
    -- appear in the target or hypotheses of `goal` when interpreted in the
    -- metavar context of `parent?` (or in the global metavar context if
    -- `parent? = none`).
  successProbability : Percent
  addedInIteration : Iteration
  lastExpandedInIteration : Iteration
    -- Iteration 0 means the node has never been expanded.
  unsafeRulesSelected : Bool
  unsafeQueue : UnsafeQueue
  failedRapps : Array RegularRule
  deriving Nonempty
goal: Array (IO.Ref Rapp)

full_name: Aesop.GoalData.lastExpandedInIteration
code: structure GoalData (Rapp MVarCluster : Type) : Type where
  id : GoalId
  parent : IO.Ref MVarCluster
  children : Array (IO.Ref Rapp)
  origin : GoalOrigin
  depth : Nat
  state : GoalState
  isIrrelevant : Bool
  isForcedUnprovable : Bool
    -- True if the goal was designated unprovable 'by force'. This happens when
    -- we reach the search depth limit. Any goal beyond this limit becomes
    -- irrelevant and therefore unprovable.
  preNormGoal : MVarId
    -- The goal before normalisation. The goal after normalisation (if any) is
    -- contained in the `normalizationState`.
  normalizationState : NormalizationState
  mvars : UnorderedArraySet MVarId
    -- Unassigned expression metavariables that appear in the goal, i.e. that
    -- appear in the target or hypotheses of `goal` when interpreted in the
    -- metavar context of `parent?` (or in the global metavar context if
    -- `parent? = none`).
  successProbability : Percent
  addedInIteration : Iteration
  lastExpandedInIteration : Iteration
    -- Iteration 0 means the node has never been expanded.
  unsafeRulesSelected : Bool
  unsafeQueue : UnsafeQueue
  failedRapps : Array RegularRule
  deriving Nonempty
goal: Aesop.Iteration

full_name: Aesop.GoalData.id
code: structure GoalData (Rapp MVarCluster : Type) : Type where
  id : GoalId
  parent : IO.Ref MVarCluster
  children : Array (IO.Ref Rapp)
  origin : GoalOrigin
  depth : Nat
  state : GoalState
  isIrrelevant : Bool
  isForcedUnprovable : Bool
    -- True if the goal was designated unprovable 'by force'. This happens when
    -- we reach the search depth limit. Any goal beyond this limit becomes
    -- irrelevant and therefore unprovable.
  preNormGoal : MVarId
    -- The goal before normalisation. The goal after normalisation (if any) is
    -- contained in the `normalizationState`.
  normalizationState : NormalizationState
  mvars : UnorderedArraySet MVarId
    -- Unassigned expression metavariables that appear in the goal, i.e. that
    -- appear in the target or hypotheses of `goal` when interpreted in the
    -- metavar context of `parent?` (or in the global metavar context if
    -- `parent? = none`).
  successProbability : Percent
  addedInIteration : Iteration
  lastExpandedInIteration : Iteration
    -- Iteration 0 means the node has never been expanded.
  unsafeRulesSelected : Bool
  unsafeQueue : UnsafeQueue
  failedRapps : Array RegularRule
  deriving Nonempty
goal: Aesop.GoalId

full_name: Aesop.GoalData.depth
code: structure GoalData (Rapp MVarCluster : Type) : Type where
  id : GoalId
  parent : IO.Ref MVarCluster
  children : Array (IO.Ref Rapp)
  origin : GoalOrigin
  depth : Nat
  state : GoalState
  isIrrelevant : Bool
  isForcedUnprovable : Bool
    -- True if the goal was designated unprovable 'by force'. This happens when
    -- we reach the search depth limit. Any goal beyond this limit becomes
    -- irrelevant and therefore unprovable.
  preNormGoal : MVarId
    -- The goal before normalisation. The goal after normalisation (if any) is
    -- contained in the `normalizationState`.
  normalizationState : NormalizationState
  mvars : UnorderedArraySet MVarId
    -- Unassigned expression metavariables that appear in the goal, i.e. that
    -- appear in the target or hypotheses of `goal` when interpreted in the
    -- metavar context of `parent?` (or in the global metavar context if
    -- `parent? = none`).
  successProbability : Percent
  addedInIteration : Iteration
  lastExpandedInIteration : Iteration
    -- Iteration 0 means the node has never been expanded.
  unsafeRulesSelected : Bool
  unsafeQueue : UnsafeQueue
  failedRapps : Array RegularRule
  deriving Nonempty
goal: Nat

full_name: Aesop.GoalData.unsafeQueue
code: structure GoalData (Rapp MVarCluster : Type) : Type where
  id : GoalId
  parent : IO.Ref MVarCluster
  children : Array (IO.Ref Rapp)
  origin : GoalOrigin
  depth : Nat
  state : GoalState
  isIrrelevant : Bool
  isForcedUnprovable : Bool
    -- True if the goal was designated unprovable 'by force'. This happens when
    -- we reach the search depth limit. Any goal beyond this limit becomes
    -- irrelevant and therefore unprovable.
  preNormGoal : MVarId
    -- The goal before normalisation. The goal after normalisation (if any) is
    -- contained in the `normalizationState`.
  normalizationState : NormalizationState
  mvars : UnorderedArraySet MVarId
    -- Unassigned expression metavariables that appear in the goal, i.e. that
    -- appear in the target or hypotheses of `goal` when interpreted in the
    -- metavar context of `parent?` (or in the global metavar context if
    -- `parent? = none`).
  successProbability : Percent
  addedInIteration : Iteration
  lastExpandedInIteration : Iteration
    -- Iteration 0 means the node has never been expanded.
  unsafeRulesSelected : Bool
  unsafeQueue : UnsafeQueue
  failedRapps : Array RegularRule
  deriving Nonempty
goal: Aesop.UnsafeQueue

full_name: Aesop.GoalData.failedRapps
code: structure GoalData (Rapp MVarCluster : Type) : Type where
  id : GoalId
  parent : IO.Ref MVarCluster
  children : Array (IO.Ref Rapp)
  origin : GoalOrigin
  depth : Nat
  state : GoalState
  isIrrelevant : Bool
  isForcedUnprovable : Bool
    -- True if the goal was designated unprovable 'by force'. This happens when
    -- we reach the search depth limit. Any goal beyond this limit becomes
    -- irrelevant and therefore unprovable.
  preNormGoal : MVarId
    -- The goal before normalisation. The goal after normalisation (if any) is
    -- contained in the `normalizationState`.
  normalizationState : NormalizationState
  mvars : UnorderedArraySet MVarId
    -- Unassigned expression metavariables that appear in the goal, i.e. that
    -- appear in the target or hypotheses of `goal` when interpreted in the
    -- metavar context of `parent?` (or in the global metavar context if
    -- `parent? = none`).
  successProbability : Percent
  addedInIteration : Iteration
  lastExpandedInIteration : Iteration
    -- Iteration 0 means the node has never been expanded.
  unsafeRulesSelected : Bool
  unsafeQueue : UnsafeQueue
  failedRapps : Array RegularRule
  deriving Nonempty
goal: Array Aesop.RegularRule

full_name: Aesop.GoalData.mvars
code: structure GoalData (Rapp MVarCluster : Type) : Type where
  id : GoalId
  parent : IO.Ref MVarCluster
  children : Array (IO.Ref Rapp)
  origin : GoalOrigin
  depth : Nat
  state : GoalState
  isIrrelevant : Bool
  isForcedUnprovable : Bool
    -- True if the goal was designated unprovable 'by force'. This happens when
    -- we reach the search depth limit. Any goal beyond this limit becomes
    -- irrelevant and therefore unprovable.
  preNormGoal : MVarId
    -- The goal before normalisation. The goal after normalisation (if any) is
    -- contained in the `normalizationState`.
  normalizationState : NormalizationState
  mvars : UnorderedArraySet MVarId
    -- Unassigned expression metavariables that appear in the goal, i.e. that
    -- appear in the target or hypotheses of `goal` when interpreted in the
    -- metavar context of `parent?` (or in the global metavar context if
    -- `parent? = none`).
  successProbability : Percent
  addedInIteration : Iteration
  lastExpandedInIteration : Iteration
    -- Iteration 0 means the node has never been expanded.
  unsafeRulesSelected : Bool
  unsafeQueue : UnsafeQueue
  failedRapps : Array RegularRule
  deriving Nonempty
goal: Aesop.UnorderedArraySet Lean.MVarId

full_name: Aesop.GoalData
code: structure GoalData (Rapp MVarCluster : Type) : Type where
  id : GoalId
  parent : IO.Ref MVarCluster
  children : Array (IO.Ref Rapp)
  origin : GoalOrigin
  depth : Nat
  state : GoalState
  isIrrelevant : Bool
  isForcedUnprovable : Bool
    -- True if the goal was designated unprovable 'by force'. This happens when
    -- we reach the search depth limit. Any goal beyond this limit becomes
    -- irrelevant and therefore unprovable.
  preNormGoal : MVarId
    -- The goal before normalisation. The goal after normalisation (if any) is
    -- contained in the `normalizationState`.
  normalizationState : NormalizationState
  mvars : UnorderedArraySet MVarId
    -- Unassigned expression metavariables that appear in the goal, i.e. that
    -- appear in the target or hypotheses of `goal` when interpreted in the
    -- metavar context of `parent?` (or in the global metavar context if
    -- `parent? = none`).
  successProbability : Percent
  addedInIteration : Iteration
  lastExpandedInIteration : Iteration
    -- Iteration 0 means the node has never been expanded.
  unsafeRulesSelected : Bool
  unsafeQueue : UnsafeQueue
  failedRapps : Array RegularRule
  deriving Nonempty
goal: Type

full_name: Aesop.instInhabitedMVarClusterData
code: structure MVarClusterData (Goal Rapp : Type) : Type where
  parent? : Option (IO.Ref Rapp)
  goals : Array (IO.Ref Goal)
  isIrrelevant : Bool
  state : NodeState
  deriving Inhabited
goal: {a a_1 : Type} → Inhabited (Aesop.MVarClusterData a a_1)

full_name: Aesop.MVarClusterData.goals
code: structure MVarClusterData (Goal Rapp : Type) : Type where
  parent? : Option (IO.Ref Rapp)
  goals : Array (IO.Ref Goal)
  isIrrelevant : Bool
  state : NodeState
  deriving Inhabited
goal: Array (IO.Ref Goal)

full_name: Aesop.MVarClusterData.state
code: structure MVarClusterData (Goal Rapp : Type) : Type where
  parent? : Option (IO.Ref Rapp)
  goals : Array (IO.Ref Goal)
  isIrrelevant : Bool
  state : NodeState
  deriving Inhabited
goal: Aesop.NodeState

full_name: Aesop.MVarClusterData.parent?
code: structure MVarClusterData (Goal Rapp : Type) : Type where
  parent? : Option (IO.Ref Rapp)
  goals : Array (IO.Ref Goal)
  isIrrelevant : Bool
  state : NodeState
  deriving Inhabited
goal: Option (IO.Ref Rapp)

full_name: Aesop.MVarClusterData
code: structure MVarClusterData (Goal Rapp : Type) : Type where
  parent? : Option (IO.Ref Rapp)
  goals : Array (IO.Ref Goal)
  isIrrelevant : Bool
  state : NodeState
  deriving Inhabited
goal: Type

full_name: Aesop.MVarClusterData.isIrrelevant
code: structure MVarClusterData (Goal Rapp : Type) : Type where
  parent? : Option (IO.Ref Rapp)
  goals : Array (IO.Ref Goal)
  isIrrelevant : Bool
  state : NodeState
  deriving Inhabited
goal: Bool

full_name: Aesop.RappData.isIrrelevant
code: structure RappData (Goal MVarCluster : Type) : Type where
  id : RappId
  parent : IO.Ref Goal
  children : Array (IO.Ref MVarCluster)
  state : NodeState
  isIrrelevant : Bool
  appliedRule : RegularRule
  scriptSteps? : Option (Array Script.LazyStep)
  originalSubgoals : Array MVarId
  successProbability : Percent
  metaState : Meta.SavedState
    -- This is the state *after* the rule was successfully applied, so the goal
    -- mvar is assigned in this state.
  introducedMVars : UnorderedArraySet MVarId
    -- Unassigned expression mvars introduced by this rapp. These are exactly
    -- the unassigned expr mvars that are declared in `metaState`, but not in
    -- the meta state of the parent rapp of `parent`.
  assignedMVars : UnorderedArraySet MVarId
    -- Expression mvars that were previously unassigned but were assigned by
    -- this rapp. These are exactly the expr mvars that (a) are declared and
    -- unassigned in the meta state of the parent rapp of `parent` and (b) are
    -- assigned in `metaState`.
  deriving Nonempty
goal: Bool

full_name: Aesop.RappData.parent
code: structure RappData (Goal MVarCluster : Type) : Type where
  id : RappId
  parent : IO.Ref Goal
  children : Array (IO.Ref MVarCluster)
  state : NodeState
  isIrrelevant : Bool
  appliedRule : RegularRule
  scriptSteps? : Option (Array Script.LazyStep)
  originalSubgoals : Array MVarId
  successProbability : Percent
  metaState : Meta.SavedState
    -- This is the state *after* the rule was successfully applied, so the goal
    -- mvar is assigned in this state.
  introducedMVars : UnorderedArraySet MVarId
    -- Unassigned expression mvars introduced by this rapp. These are exactly
    -- the unassigned expr mvars that are declared in `metaState`, but not in
    -- the meta state of the parent rapp of `parent`.
  assignedMVars : UnorderedArraySet MVarId
    -- Expression mvars that were previously unassigned but were assigned by
    -- this rapp. These are exactly the expr mvars that (a) are declared and
    -- unassigned in the meta state of the parent rapp of `parent` and (b) are
    -- assigned in `metaState`.
  deriving Nonempty
goal: IO.Ref Goal

full_name: Aesop.RappData.state
code: structure RappData (Goal MVarCluster : Type) : Type where
  id : RappId
  parent : IO.Ref Goal
  children : Array (IO.Ref MVarCluster)
  state : NodeState
  isIrrelevant : Bool
  appliedRule : RegularRule
  scriptSteps? : Option (Array Script.LazyStep)
  originalSubgoals : Array MVarId
  successProbability : Percent
  metaState : Meta.SavedState
    -- This is the state *after* the rule was successfully applied, so the goal
    -- mvar is assigned in this state.
  introducedMVars : UnorderedArraySet MVarId
    -- Unassigned expression mvars introduced by this rapp. These are exactly
    -- the unassigned expr mvars that are declared in `metaState`, but not in
    -- the meta state of the parent rapp of `parent`.
  assignedMVars : UnorderedArraySet MVarId
    -- Expression mvars that were previously unassigned but were assigned by
    -- this rapp. These are exactly the expr mvars that (a) are declared and
    -- unassigned in the meta state of the parent rapp of `parent` and (b) are
    -- assigned in `metaState`.
  deriving Nonempty
goal: Aesop.NodeState

full_name: Aesop.RappData.assignedMVars
code: structure RappData (Goal MVarCluster : Type) : Type where
  id : RappId
  parent : IO.Ref Goal
  children : Array (IO.Ref MVarCluster)
  state : NodeState
  isIrrelevant : Bool
  appliedRule : RegularRule
  scriptSteps? : Option (Array Script.LazyStep)
  originalSubgoals : Array MVarId
  successProbability : Percent
  metaState : Meta.SavedState
    -- This is the state *after* the rule was successfully applied, so the goal
    -- mvar is assigned in this state.
  introducedMVars : UnorderedArraySet MVarId
    -- Unassigned expression mvars introduced by this rapp. These are exactly
    -- the unassigned expr mvars that are declared in `metaState`, but not in
    -- the meta state of the parent rapp of `parent`.
  assignedMVars : UnorderedArraySet MVarId
    -- Expression mvars that were previously unassigned but were assigned by
    -- this rapp. These are exactly the expr mvars that (a) are declared and
    -- unassigned in the meta state of the parent rapp of `parent` and (b) are
    -- assigned in `metaState`.
  deriving Nonempty
goal: Aesop.UnorderedArraySet Lean.MVarId

full_name: Aesop.RappData.appliedRule
code: structure RappData (Goal MVarCluster : Type) : Type where
  id : RappId
  parent : IO.Ref Goal
  children : Array (IO.Ref MVarCluster)
  state : NodeState
  isIrrelevant : Bool
  appliedRule : RegularRule
  scriptSteps? : Option (Array Script.LazyStep)
  originalSubgoals : Array MVarId
  successProbability : Percent
  metaState : Meta.SavedState
    -- This is the state *after* the rule was successfully applied, so the goal
    -- mvar is assigned in this state.
  introducedMVars : UnorderedArraySet MVarId
    -- Unassigned expression mvars introduced by this rapp. These are exactly
    -- the unassigned expr mvars that are declared in `metaState`, but not in
    -- the meta state of the parent rapp of `parent`.
  assignedMVars : UnorderedArraySet MVarId
    -- Expression mvars that were previously unassigned but were assigned by
    -- this rapp. These are exactly the expr mvars that (a) are declared and
    -- unassigned in the meta state of the parent rapp of `parent` and (b) are
    -- assigned in `metaState`.
  deriving Nonempty
goal: Aesop.RegularRule

full_name: Aesop.RappData.originalSubgoals
code: structure RappData (Goal MVarCluster : Type) : Type where
  id : RappId
  parent : IO.Ref Goal
  children : Array (IO.Ref MVarCluster)
  state : NodeState
  isIrrelevant : Bool
  appliedRule : RegularRule
  scriptSteps? : Option (Array Script.LazyStep)
  originalSubgoals : Array MVarId
  successProbability : Percent
  metaState : Meta.SavedState
    -- This is the state *after* the rule was successfully applied, so the goal
    -- mvar is assigned in this state.
  introducedMVars : UnorderedArraySet MVarId
    -- Unassigned expression mvars introduced by this rapp. These are exactly
    -- the unassigned expr mvars that are declared in `metaState`, but not in
    -- the meta state of the parent rapp of `parent`.
  assignedMVars : UnorderedArraySet MVarId
    -- Expression mvars that were previously unassigned but were assigned by
    -- this rapp. These are exactly the expr mvars that (a) are declared and
    -- unassigned in the meta state of the parent rapp of `parent` and (b) are
    -- assigned in `metaState`.
  deriving Nonempty
goal: Array Lean.MVarId

full_name: Aesop.RappData.children
code: structure RappData (Goal MVarCluster : Type) : Type where
  id : RappId
  parent : IO.Ref Goal
  children : Array (IO.Ref MVarCluster)
  state : NodeState
  isIrrelevant : Bool
  appliedRule : RegularRule
  scriptSteps? : Option (Array Script.LazyStep)
  originalSubgoals : Array MVarId
  successProbability : Percent
  metaState : Meta.SavedState
    -- This is the state *after* the rule was successfully applied, so the goal
    -- mvar is assigned in this state.
  introducedMVars : UnorderedArraySet MVarId
    -- Unassigned expression mvars introduced by this rapp. These are exactly
    -- the unassigned expr mvars that are declared in `metaState`, but not in
    -- the meta state of the parent rapp of `parent`.
  assignedMVars : UnorderedArraySet MVarId
    -- Expression mvars that were previously unassigned but were assigned by
    -- this rapp. These are exactly the expr mvars that (a) are declared and
    -- unassigned in the meta state of the parent rapp of `parent` and (b) are
    -- assigned in `metaState`.
  deriving Nonempty
goal: Array (IO.Ref MVarCluster)

full_name: Aesop.RappData
code: structure RappData (Goal MVarCluster : Type) : Type where
  id : RappId
  parent : IO.Ref Goal
  children : Array (IO.Ref MVarCluster)
  state : NodeState
  isIrrelevant : Bool
  appliedRule : RegularRule
  scriptSteps? : Option (Array Script.LazyStep)
  originalSubgoals : Array MVarId
  successProbability : Percent
  metaState : Meta.SavedState
    -- This is the state *after* the rule was successfully applied, so the goal
    -- mvar is assigned in this state.
  introducedMVars : UnorderedArraySet MVarId
    -- Unassigned expression mvars introduced by this rapp. These are exactly
    -- the unassigned expr mvars that are declared in `metaState`, but not in
    -- the meta state of the parent rapp of `parent`.
  assignedMVars : UnorderedArraySet MVarId
    -- Expression mvars that were previously unassigned but were assigned by
    -- this rapp. These are exactly the expr mvars that (a) are declared and
    -- unassigned in the meta state of the parent rapp of `parent` and (b) are
    -- assigned in `metaState`.
  deriving Nonempty
goal: Type

full_name: Aesop.RappData.introducedMVars
code: structure RappData (Goal MVarCluster : Type) : Type where
  id : RappId
  parent : IO.Ref Goal
  children : Array (IO.Ref MVarCluster)
  state : NodeState
  isIrrelevant : Bool
  appliedRule : RegularRule
  scriptSteps? : Option (Array Script.LazyStep)
  originalSubgoals : Array MVarId
  successProbability : Percent
  metaState : Meta.SavedState
    -- This is the state *after* the rule was successfully applied, so the goal
    -- mvar is assigned in this state.
  introducedMVars : UnorderedArraySet MVarId
    -- Unassigned expression mvars introduced by this rapp. These are exactly
    -- the unassigned expr mvars that are declared in `metaState`, but not in
    -- the meta state of the parent rapp of `parent`.
  assignedMVars : UnorderedArraySet MVarId
    -- Expression mvars that were previously unassigned but were assigned by
    -- this rapp. These are exactly the expr mvars that (a) are declared and
    -- unassigned in the meta state of the parent rapp of `parent` and (b) are
    -- assigned in `metaState`.
  deriving Nonempty
goal: Aesop.UnorderedArraySet Lean.MVarId

full_name: Aesop.RappData.scriptSteps?
code: structure RappData (Goal MVarCluster : Type) : Type where
  id : RappId
  parent : IO.Ref Goal
  children : Array (IO.Ref MVarCluster)
  state : NodeState
  isIrrelevant : Bool
  appliedRule : RegularRule
  scriptSteps? : Option (Array Script.LazyStep)
  originalSubgoals : Array MVarId
  successProbability : Percent
  metaState : Meta.SavedState
    -- This is the state *after* the rule was successfully applied, so the goal
    -- mvar is assigned in this state.
  introducedMVars : UnorderedArraySet MVarId
    -- Unassigned expression mvars introduced by this rapp. These are exactly
    -- the unassigned expr mvars that are declared in `metaState`, but not in
    -- the meta state of the parent rapp of `parent`.
  assignedMVars : UnorderedArraySet MVarId
    -- Expression mvars that were previously unassigned but were assigned by
    -- this rapp. These are exactly the expr mvars that (a) are declared and
    -- unassigned in the meta state of the parent rapp of `parent` and (b) are
    -- assigned in `metaState`.
  deriving Nonempty
goal: Option (Array Aesop.Script.LazyStep)

full_name: Aesop.RappData.successProbability
code: structure RappData (Goal MVarCluster : Type) : Type where
  id : RappId
  parent : IO.Ref Goal
  children : Array (IO.Ref MVarCluster)
  state : NodeState
  isIrrelevant : Bool
  appliedRule : RegularRule
  scriptSteps? : Option (Array Script.LazyStep)
  originalSubgoals : Array MVarId
  successProbability : Percent
  metaState : Meta.SavedState
    -- This is the state *after* the rule was successfully applied, so the goal
    -- mvar is assigned in this state.
  introducedMVars : UnorderedArraySet MVarId
    -- Unassigned expression mvars introduced by this rapp. These are exactly
    -- the unassigned expr mvars that are declared in `metaState`, but not in
    -- the meta state of the parent rapp of `parent`.
  assignedMVars : UnorderedArraySet MVarId
    -- Expression mvars that were previously unassigned but were assigned by
    -- this rapp. These are exactly the expr mvars that (a) are declared and
    -- unassigned in the meta state of the parent rapp of `parent` and (b) are
    -- assigned in `metaState`.
  deriving Nonempty
goal: Aesop.Percent

full_name: Aesop.instNonemptyRappData
code: structure RappData (Goal MVarCluster : Type) : Type where
  id : RappId
  parent : IO.Ref Goal
  children : Array (IO.Ref MVarCluster)
  state : NodeState
  isIrrelevant : Bool
  appliedRule : RegularRule
  scriptSteps? : Option (Array Script.LazyStep)
  originalSubgoals : Array MVarId
  successProbability : Percent
  metaState : Meta.SavedState
    -- This is the state *after* the rule was successfully applied, so the goal
    -- mvar is assigned in this state.
  introducedMVars : UnorderedArraySet MVarId
    -- Unassigned expression mvars introduced by this rapp. These are exactly
    -- the unassigned expr mvars that are declared in `metaState`, but not in
    -- the meta state of the parent rapp of `parent`.
  assignedMVars : UnorderedArraySet MVarId
    -- Expression mvars that were previously unassigned but were assigned by
    -- this rapp. These are exactly the expr mvars that (a) are declared and
    -- unassigned in the meta state of the parent rapp of `parent` and (b) are
    -- assigned in `metaState`.
  deriving Nonempty
goal: ∀ {Goal : Type} [inst : Nonempty Goal] {MVarCluster : Type}, Nonempty (Aesop.RappData Goal MVarCluster)

full_name: Aesop.RappData.id
code: structure RappData (Goal MVarCluster : Type) : Type where
  id : RappId
  parent : IO.Ref Goal
  children : Array (IO.Ref MVarCluster)
  state : NodeState
  isIrrelevant : Bool
  appliedRule : RegularRule
  scriptSteps? : Option (Array Script.LazyStep)
  originalSubgoals : Array MVarId
  successProbability : Percent
  metaState : Meta.SavedState
    -- This is the state *after* the rule was successfully applied, so the goal
    -- mvar is assigned in this state.
  introducedMVars : UnorderedArraySet MVarId
    -- Unassigned expression mvars introduced by this rapp. These are exactly
    -- the unassigned expr mvars that are declared in `metaState`, but not in
    -- the meta state of the parent rapp of `parent`.
  assignedMVars : UnorderedArraySet MVarId
    -- Expression mvars that were previously unassigned but were assigned by
    -- this rapp. These are exactly the expr mvars that (a) are declared and
    -- unassigned in the meta state of the parent rapp of `parent` and (b) are
    -- assigned in `metaState`.
  deriving Nonempty
goal: Aesop.RappId

full_name: Aesop.RappData.metaState
code: structure RappData (Goal MVarCluster : Type) : Type where
  id : RappId
  parent : IO.Ref Goal
  children : Array (IO.Ref MVarCluster)
  state : NodeState
  isIrrelevant : Bool
  appliedRule : RegularRule
  scriptSteps? : Option (Array Script.LazyStep)
  originalSubgoals : Array MVarId
  successProbability : Percent
  metaState : Meta.SavedState
    -- This is the state *after* the rule was successfully applied, so the goal
    -- mvar is assigned in this state.
  introducedMVars : UnorderedArraySet MVarId
    -- Unassigned expression mvars introduced by this rapp. These are exactly
    -- the unassigned expr mvars that are declared in `metaState`, but not in
    -- the meta state of the parent rapp of `parent`.
  assignedMVars : UnorderedArraySet MVarId
    -- Expression mvars that were previously unassigned but were assigned by
    -- this rapp. These are exactly the expr mvars that (a) are declared and
    -- unassigned in the meta state of the parent rapp of `parent` and (b) are
    -- assigned in `metaState`.
  deriving Nonempty
goal: Lean.Meta.SavedState

full_name: Aesop.TreeSpec.elimMVarCluster
code: structure TreeSpec where
  Goal : Type
  Rapp : Type
  MVarCluster : Type
  introGoal : GoalData Rapp MVarCluster → Goal
  elimGoal : Goal → GoalData Rapp MVarCluster
  introRapp : RappData Goal MVarCluster → Rapp
  elimRapp : Rapp → RappData Goal MVarCluster
  introMVarCluster : MVarClusterData Goal Rapp → MVarCluster
  elimMVarCluster : MVarCluster → MVarClusterData Goal Rapp
goal: self.MVarCluster → Aesop.MVarClusterData self.Goal self.Rapp

full_name: Aesop.TreeSpec.elimRapp
code: structure TreeSpec where
  Goal : Type
  Rapp : Type
  MVarCluster : Type
  introGoal : GoalData Rapp MVarCluster → Goal
  elimGoal : Goal → GoalData Rapp MVarCluster
  introRapp : RappData Goal MVarCluster → Rapp
  elimRapp : Rapp → RappData Goal MVarCluster
  introMVarCluster : MVarClusterData Goal Rapp → MVarCluster
  elimMVarCluster : MVarCluster → MVarClusterData Goal Rapp
goal: self.Rapp → Aesop.RappData self.Goal self.MVarCluster

full_name: Aesop.TreeSpec.introMVarCluster
code: structure TreeSpec where
  Goal : Type
  Rapp : Type
  MVarCluster : Type
  introGoal : GoalData Rapp MVarCluster → Goal
  elimGoal : Goal → GoalData Rapp MVarCluster
  introRapp : RappData Goal MVarCluster → Rapp
  elimRapp : Rapp → RappData Goal MVarCluster
  introMVarCluster : MVarClusterData Goal Rapp → MVarCluster
  elimMVarCluster : MVarCluster → MVarClusterData Goal Rapp
goal: Aesop.MVarClusterData self.Goal self.Rapp → self.MVarCluster

full_name: Aesop.TreeSpec.Goal
code: structure TreeSpec where
  Goal : Type
  Rapp : Type
  MVarCluster : Type
  introGoal : GoalData Rapp MVarCluster → Goal
  elimGoal : Goal → GoalData Rapp MVarCluster
  introRapp : RappData Goal MVarCluster → Rapp
  elimRapp : Rapp → RappData Goal MVarCluster
  introMVarCluster : MVarClusterData Goal Rapp → MVarCluster
  elimMVarCluster : MVarCluster → MVarClusterData Goal Rapp
goal: Type

full_name: Aesop.TreeSpec.introGoal
code: structure TreeSpec where
  Goal : Type
  Rapp : Type
  MVarCluster : Type
  introGoal : GoalData Rapp MVarCluster → Goal
  elimGoal : Goal → GoalData Rapp MVarCluster
  introRapp : RappData Goal MVarCluster → Rapp
  elimRapp : Rapp → RappData Goal MVarCluster
  introMVarCluster : MVarClusterData Goal Rapp → MVarCluster
  elimMVarCluster : MVarCluster → MVarClusterData Goal Rapp
goal: Aesop.GoalData self.Rapp self.MVarCluster → self.Goal

full_name: Aesop.TreeSpec.elimGoal
code: structure TreeSpec where
  Goal : Type
  Rapp : Type
  MVarCluster : Type
  introGoal : GoalData Rapp MVarCluster → Goal
  elimGoal : Goal → GoalData Rapp MVarCluster
  introRapp : RappData Goal MVarCluster → Rapp
  elimRapp : Rapp → RappData Goal MVarCluster
  introMVarCluster : MVarClusterData Goal Rapp → MVarCluster
  elimMVarCluster : MVarCluster → MVarClusterData Goal Rapp
goal: self.Goal → Aesop.GoalData self.Rapp self.MVarCluster

full_name: Aesop.TreeSpec
code: structure TreeSpec where
  Goal : Type
  Rapp : Type
  MVarCluster : Type
  introGoal : GoalData Rapp MVarCluster → Goal
  elimGoal : Goal → GoalData Rapp MVarCluster
  introRapp : RappData Goal MVarCluster → Rapp
  elimRapp : Rapp → RappData Goal MVarCluster
  introMVarCluster : MVarClusterData Goal Rapp → MVarCluster
  elimMVarCluster : MVarCluster → MVarClusterData Goal Rapp
goal: Type 1

full_name: Aesop.TreeSpec.introRapp
code: structure TreeSpec where
  Goal : Type
  Rapp : Type
  MVarCluster : Type
  introGoal : GoalData Rapp MVarCluster → Goal
  elimGoal : Goal → GoalData Rapp MVarCluster
  introRapp : RappData Goal MVarCluster → Rapp
  elimRapp : Rapp → RappData Goal MVarCluster
  introMVarCluster : MVarClusterData Goal Rapp → MVarCluster
  elimMVarCluster : MVarCluster → MVarClusterData Goal Rapp
goal: Aesop.RappData self.Goal self.MVarCluster → self.Rapp

full_name: Aesop.TreeSpec.Rapp
code: structure TreeSpec where
  Goal : Type
  Rapp : Type
  MVarCluster : Type
  introGoal : GoalData Rapp MVarCluster → Goal
  elimGoal : Goal → GoalData Rapp MVarCluster
  introRapp : RappData Goal MVarCluster → Rapp
  elimRapp : Rapp → RappData Goal MVarCluster
  introMVarCluster : MVarClusterData Goal Rapp → MVarCluster
  elimMVarCluster : MVarCluster → MVarClusterData Goal Rapp
goal: Type

full_name: Aesop.TreeSpec.MVarCluster
code: structure TreeSpec where
  Goal : Type
  Rapp : Type
  MVarCluster : Type
  introGoal : GoalData Rapp MVarCluster → Goal
  elimGoal : Goal → GoalData Rapp MVarCluster
  introRapp : RappData Goal MVarCluster → Rapp
  elimRapp : Rapp → RappData Goal MVarCluster
  introMVarCluster : MVarClusterData Goal Rapp → MVarCluster
  elimMVarCluster : MVarCluster → MVarClusterData Goal Rapp
goal: Type

full_name: Aesop.instNonemptyTreeSpec
code: instance : Nonempty TreeSpec 
goal: Nonempty Aesop.TreeSpec

full_name: Aesop.treeImpl
code: unsafe def treeImpl : TreeSpec 
goal: Aesop.TreeSpec

full_name: Aesop.tree
code: @[implemented_by treeImpl]
opaque tree : TreeSpec
goal: Aesop.TreeSpec

full_name: Aesop.Goal
code: def Goal        
goal: Type

full_name: Aesop.Rapp
code: def Rapp        
goal: Type

full_name: Aesop.MVarCluster
code: def MVarCluster 
goal: Type

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

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

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

full_name: Aesop.MVarCluster.mk
code: @[inline]
protected def mk : MVarClusterData Goal Rapp → MVarCluster 
goal: Aesop.MVarClusterData Aesop.Goal Aesop.Rapp → Aesop.MVarCluster

full_name: Aesop.MVarCluster.instNonempty
code: instance : Nonempty MVarCluster 
goal: Nonempty Aesop.MVarCluster

full_name: Aesop.MVarCluster.elim
code: @[inline]
protected def elim : MVarCluster → MVarClusterData Goal Rapp 
goal: Aesop.MVarCluster → Aesop.MVarClusterData Aesop.Goal Aesop.Rapp

full_name: Aesop.MVarCluster.modify
code: @[inline]
protected def modify (f : MVarClusterData Goal Rapp → MVarClusterData Goal Rapp)
    (c : MVarCluster) : MVarCluster 
goal: Aesop.MVarCluster

full_name: Aesop.MVarCluster.parent?
code: @[inline]
def parent? (c : MVarCluster) : Option RappRef 
goal: Option Aesop.RappRef

full_name: Aesop.MVarCluster.setParent
code: @[inline]
def setParent (parent? : Option RappRef) (c : MVarCluster) : MVarCluster 
goal: Aesop.MVarCluster

full_name: Aesop.MVarCluster.goals
code: @[inline]
def goals (c : MVarCluster) : Array GoalRef 
goal: Array Aesop.GoalRef

full_name: Aesop.MVarCluster.setGoals
code: @[inline]
def setGoals (goals : Array GoalRef) (c : MVarCluster) : MVarCluster 
goal: Aesop.MVarCluster

full_name: Aesop.MVarCluster.isIrrelevant
code: @[inline]
def isIrrelevant (c : MVarCluster) : Bool 
goal: Bool

full_name: Aesop.MVarCluster.setIsIrrelevant
code: @[inline]
def setIsIrrelevant (isIrrelevant : Bool) (c : MVarCluster) : MVarCluster 
goal: Aesop.MVarCluster

full_name: Aesop.MVarCluster.state
code: @[inline]
def state (c : MVarCluster) : NodeState 
goal: Aesop.NodeState

full_name: Aesop.MVarCluster.setState
code: @[inline]
def setState (state : NodeState) (c : MVarCluster) : MVarCluster 
goal: Aesop.MVarCluster

full_name: Aesop.Goal.mk
code: @[inline]
protected def mk : GoalData Rapp MVarCluster → Goal 
goal: Aesop.GoalData Aesop.Rapp Aesop.MVarCluster → Aesop.Goal

full_name: Aesop.Goal.elim
code: @[inline]
protected def elim : Goal → GoalData Rapp MVarCluster 
goal: Aesop.Goal → Aesop.GoalData Aesop.Rapp Aesop.MVarCluster

full_name: Aesop.Goal.modify
code: @[inline]
protected def modify (f : GoalData Rapp MVarCluster → GoalData Rapp MVarCluster)
    (g : Goal) : Goal 
goal: Aesop.Goal

full_name: Aesop.Goal.id
code: @[inline]
def id (g : Goal) : GoalId 
goal: Aesop.GoalId

full_name: Aesop.Goal.parent
code: @[inline]
def parent (g : Goal) : MVarClusterRef 
goal: Aesop.MVarClusterRef

full_name: Aesop.Goal.children
code: @[inline]
def children (g : Goal) : Array RappRef 
goal: Array Aesop.RappRef

full_name: Aesop.Goal.origin
code: @[inline]
def origin (g : Goal) : GoalOrigin 
goal: Aesop.GoalOrigin

full_name: Aesop.Goal.depth
code: @[inline]
def depth (g : Goal) : Nat 
goal: Nat

full_name: Aesop.Goal.state
code: @[inline]
def state (g : Goal) : GoalState 
goal: Aesop.GoalState

full_name: Aesop.Goal.isIrrelevant
code: @[inline]
def isIrrelevant (g : Goal) : Bool 
goal: Bool

full_name: Aesop.Goal.isForcedUnprovable
code: @[inline]
def isForcedUnprovable (g : Goal) : Bool 
goal: Bool

full_name: Aesop.Goal.preNormGoal
code: @[inline]
def preNormGoal (g : Goal) : MVarId 
goal: Lean.MVarId

full_name: Aesop.Goal.normalizationState
code: @[inline]
def normalizationState (g : Goal) : NormalizationState 
goal: Aesop.NormalizationState

full_name: Aesop.Goal.mvars
code: @[inline]
def mvars (g : Goal) : UnorderedArraySet MVarId 
goal: Aesop.UnorderedArraySet Lean.MVarId

full_name: Aesop.Goal.successProbability
code: @[inline]
def successProbability (g : Goal) : Percent 
goal: Aesop.Percent

full_name: Aesop.Goal.addedInIteration
code: @[inline]
def addedInIteration (g : Goal) : Iteration 
goal: Aesop.Iteration

full_name: Aesop.Goal.lastExpandedInIteration
code: @[inline]
def lastExpandedInIteration (g : Goal) : Iteration 
goal: Aesop.Iteration

full_name: Aesop.Goal.failedRapps
code: @[inline]
def failedRapps (g : Goal) : Array RegularRule 
goal: Array Aesop.RegularRule

full_name: Aesop.Goal.unsafeRulesSelected
code: @[inline]
def unsafeRulesSelected (g : Goal) : Bool 
goal: Bool

full_name: Aesop.Goal.unsafeQueue
code: @[inline]
def unsafeQueue (g : Goal) : UnsafeQueue 
goal: Aesop.UnsafeQueue

full_name: Aesop.Goal.unsafeQueue?
code: @[inline]
def unsafeQueue? (g : Goal) : Option UnsafeQueue 
goal: Option Aesop.UnsafeQueue

full_name: Aesop.Goal.setId
code: @[inline]
def setId (id : GoalId) (g : Goal) : Goal 
goal: Aesop.Goal

full_name: Aesop.Goal.setParent
code: @[inline]
def setParent (parent : MVarClusterRef) (g : Goal) : Goal 
goal: Aesop.Goal

full_name: Aesop.Goal.setChildren
code: @[inline]
def setChildren (children : Array RappRef) (g : Goal) : Goal 
goal: Aesop.Goal

full_name: Aesop.Goal.setOrigin
code: @[inline]
def setOrigin (origin : GoalOrigin) (g : Goal) : Goal 
goal: Aesop.Goal

full_name: Aesop.Goal.setDepth
code: @[inline]
def setDepth (depth : Nat) (g : Goal) : Goal 
goal: Aesop.Goal

full_name: Aesop.Goal.setIsIrrelevant
code: @[inline]
def setIsIrrelevant (isIrrelevant : Bool) (g : Goal) : Goal 
goal: Aesop.Goal

full_name: Aesop.Goal.setIsForcedUnprovable
code: @[inline]
def setIsForcedUnprovable (isForcedUnprovable : Bool) (g : Goal) : Goal 
goal: Aesop.Goal

full_name: Aesop.Goal.setPreNormGoal
code: @[inline]
def setPreNormGoal (preNormGoal : MVarId) (g : Goal) : Goal 
goal: Aesop.Goal

full_name: Aesop.Goal.setNormalizationState
code: @[inline]
def setNormalizationState (normalizationState : NormalizationState) (g : Goal) :
    Goal 
goal: Aesop.Goal

full_name: Aesop.Goal.setMVars
code: @[inline]
def setMVars (mvars : UnorderedArraySet MVarId) (g : Goal) : Goal 
goal: Aesop.Goal

full_name: Aesop.Goal.setSuccessProbability
code: @[inline]
def setSuccessProbability (successProbability : Percent) (g : Goal) : Goal 
goal: Aesop.Goal

full_name: Aesop.Goal.setAddedInIteration
code: @[inline]
def setAddedInIteration (addedInIteration : Iteration) (g : Goal) : Goal 
goal: Aesop.Goal

full_name: Aesop.Goal.setLastExpandedInIteration
code: @[inline]
def setLastExpandedInIteration (lastExpandedInIteration : Iteration) (g : Goal) :
    Goal 
goal: Aesop.Goal

full_name: Aesop.Goal.setUnsafeRulesSelected
code: @[inline]
def setUnsafeRulesSelected (unsafeRulesSelected : Bool) (g : Goal) : Goal 
goal: Aesop.Goal

full_name: Aesop.Goal.setUnsafeQueue
code: @[inline]
def setUnsafeQueue (unsafeQueue : UnsafeQueue) (g : Goal) : Goal 
goal: Aesop.Goal

full_name: Aesop.Goal.setState
code: @[inline]
def setState (state : GoalState) (g : Goal) : Goal 
goal: Aesop.Goal

full_name: Aesop.Goal.setFailedRapps
code: @[inline]
def setFailedRapps (failedRapps : Array RegularRule) (g : Goal) : Goal 
goal: Aesop.Goal

full_name: Aesop.Goal.instNonempty
code: instance : Nonempty Goal 
goal: Nonempty Aesop.Goal

full_name: Aesop.Goal.instBEq
code: instance : BEq Goal 
goal: BEq Aesop.Goal

full_name: Aesop.Goal.instHashable
code: instance : Hashable Goal 
goal: Hashable Aesop.Goal

full_name: Aesop.Rapp.mk
code: @[inline]
protected def mk : RappData Goal MVarCluster → Rapp 
goal: Aesop.RappData Aesop.Goal Aesop.MVarCluster → Aesop.Rapp

full_name: Aesop.Rapp.elim
code: @[inline]
protected def elim : Rapp → RappData Goal MVarCluster 
goal: Aesop.Rapp → Aesop.RappData Aesop.Goal Aesop.MVarCluster

full_name: Aesop.Rapp.modify
code: @[inline]
protected def modify (f : RappData Goal MVarCluster → RappData Goal MVarCluster)
    (r : Rapp) : Rapp 
goal: Aesop.Rapp

full_name: Aesop.Rapp.id
code: @[inline]
def id (r : Rapp) : RappId 
goal: Aesop.RappId

full_name: Aesop.Rapp.parent
code: @[inline]
def parent (r : Rapp) : GoalRef 
goal: Aesop.GoalRef

full_name: Aesop.Rapp.children
code: @[inline]
def children (r : Rapp) : Array MVarClusterRef 
goal: Array Aesop.MVarClusterRef

full_name: Aesop.Rapp.state
code: @[inline]
def state (r : Rapp) : NodeState 
goal: Aesop.NodeState

full_name: Aesop.Rapp.isIrrelevant
code: @[inline]
def isIrrelevant (r : Rapp) : Bool 
goal: Bool

full_name: Aesop.Rapp.appliedRule
code: @[inline]
def appliedRule (r : Rapp) : RegularRule 
goal: Aesop.RegularRule

full_name: Aesop.Rapp.scriptSteps?
code: @[inline]
def scriptSteps? (r : Rapp) : Option (Array Script.LazyStep) 
goal: Option (Array Aesop.Script.LazyStep)

full_name: Aesop.Rapp.originalSubgoals
code: @[inline]
def originalSubgoals (r : Rapp) : Array MVarId 
goal: Array Lean.MVarId

full_name: Aesop.Rapp.successProbability
code: @[inline]
def successProbability (r : Rapp) : Percent 
goal: Aesop.Percent

full_name: Aesop.Rapp.metaState
code: @[inline]
def metaState (r : Rapp) : Meta.SavedState 
goal: Lean.Meta.SavedState

full_name: Aesop.Rapp.introducedMVars
code: @[inline]
def introducedMVars (r : Rapp) : UnorderedArraySet MVarId 
goal: Aesop.UnorderedArraySet Lean.MVarId

full_name: Aesop.Rapp.assignedMVars
code: @[inline]
def assignedMVars (r : Rapp) : UnorderedArraySet MVarId 
goal: Aesop.UnorderedArraySet Lean.MVarId

full_name: Aesop.Rapp.setId
code: @[inline]
def setId (id : RappId) (r : Rapp) : Rapp 
goal: Aesop.Rapp

full_name: Aesop.Rapp.setParent
code: @[inline]
def setParent (parent : GoalRef) (r : Rapp) : Rapp 
goal: Aesop.Rapp

full_name: Aesop.Rapp.setChildren
code: @[inline]
def setChildren (children : Array MVarClusterRef) (r : Rapp) : Rapp 
goal: Aesop.Rapp

full_name: Aesop.Rapp.setState
code: @[inline]
def setState (state : NodeState) (r : Rapp) : Rapp 
goal: Aesop.Rapp

full_name: Aesop.Rapp.setIsIrrelevant
code: @[inline]
def setIsIrrelevant (isIrrelevant : Bool) (r : Rapp) : Rapp 
goal: Aesop.Rapp

full_name: Aesop.Rapp.setAppliedRule
code: @[inline]
def setAppliedRule (appliedRule : RegularRule) (r : Rapp) : Rapp 
goal: Aesop.Rapp

full_name: Aesop.Rapp.setScriptSteps?
code: @[inline]
def setScriptSteps? (scriptSteps? : Option (Array Script.LazyStep)) (r : Rapp) :
    Rapp 
goal: Aesop.Rapp

full_name: Aesop.Rapp.setOriginalSubgoals
code: @[inline]
def setOriginalSubgoals (originalSubgoals : Array MVarId)
    (r : Rapp) : Rapp 
goal: Aesop.Rapp

full_name: Aesop.Rapp.setSuccessProbability
code: @[inline]
def setSuccessProbability (successProbability : Percent) (r : Rapp) : Rapp 
goal: Aesop.Rapp

full_name: Aesop.Rapp.setMetaState
code: @[inline]
def setMetaState (metaState : Meta.SavedState) (r : Rapp) : Rapp 
goal: Aesop.Rapp

full_name: Aesop.Rapp.setIntroducedMVars
code: @[inline]
def setIntroducedMVars (introducedMVars : UnorderedArraySet MVarId)
    (r : Rapp) : Rapp 
goal: Aesop.Rapp

full_name: Aesop.Rapp.setAssignedMVars
code: @[inline]
def setAssignedMVars (assignedMVars : UnorderedArraySet MVarId) (r : Rapp) :
    Rapp 
goal: Aesop.Rapp

full_name: Aesop.Rapp.instNonempty
code: instance : Nonempty Rapp 
goal: Nonempty Aesop.Rapp

full_name: Aesop.Rapp.instBEq
code: instance : BEq Rapp 
goal: BEq Aesop.Rapp

full_name: Aesop.Rapp.instHashable
code: instance : Hashable Rapp 
goal: Hashable Aesop.Rapp

full_name: Aesop.Rapp.isSafe
code: def Rapp.isSafe (r : Rapp) : Bool 
goal: Bool

full_name: Aesop.Goal.postNormGoalAndMetaState?
code: @[inline]
def postNormGoalAndMetaState? (g : Goal) : Option (MVarId × Meta.SavedState) 
goal: Option (Lean.MVarId × Lean.Meta.SavedState)

full_name: Aesop.Goal.postNormGoal?
code: def postNormGoal? (g : Goal) : Option MVarId 
goal: Option Lean.MVarId

full_name: Aesop.Goal.currentGoal
code: def currentGoal (g : Goal) : MVarId 
goal: Lean.MVarId

full_name: Aesop.Goal.parentRapp?
code: def parentRapp? (g : Goal) : BaseIO (Option RappRef) 
goal: BaseIO (Option Aesop.RappRef)

full_name: Aesop.Goal.parentMetaState
code: def parentMetaState (g : Goal) (rootMetaState : Meta.SavedState) :
    BaseIO Meta.SavedState 
goal: BaseIO Lean.Meta.SavedState

full_name: Aesop.Goal.currentGoalAndMetaState
code: def currentGoalAndMetaState (g : Goal) (rootMetaState : Meta.SavedState) :
    MetaM (MVarId × Meta.SavedState) 
goal: Lean.MetaM (Lean.MVarId × Lean.Meta.SavedState)

full_name: Aesop.Goal.safeRapps
code: def safeRapps (g : Goal) : BaseIO (Array RappRef) 
goal: BaseIO (Array Aesop.RappRef)

full_name: Aesop.Goal.hasSafeRapp
code: def hasSafeRapp (g : Goal) : BaseIO Bool 
goal: BaseIO Bool

full_name: Aesop.Goal.isUnsafeExhausted
code: def isUnsafeExhausted (g : Goal) : Bool 
goal: Bool

full_name: Aesop.Goal.isExhausted
code: def isExhausted (g : Goal) : BaseIO Bool 
goal: BaseIO Bool

full_name: Aesop.Goal.isActive
code: def isActive (g : Goal) : BaseIO Bool 
goal: BaseIO Bool

full_name: Aesop.Goal.hasProvableRapp
code: def hasProvableRapp (g : Goal) : BaseIO Bool 
goal: BaseIO Bool

full_name: Aesop.Goal.firstProvenRapp?
code: def firstProvenRapp? (g : Goal) : BaseIO (Option RappRef) 
goal: BaseIO (Option Aesop.RappRef)

full_name: Aesop.Goal.hasMVar
code: def hasMVar (g : Goal) : Bool 
goal: Bool

full_name: Aesop.Goal.priority
code: def priority (g : Goal) : Percent 
goal: Aesop.Percent

full_name: Aesop.Goal.isNormal
code: def isNormal (g : Goal) : Bool 
goal: Bool

full_name: Aesop.Goal.originalGoalId
code: def originalGoalId (g : Goal) : GoalId 
goal: Aesop.GoalId

full_name: Aesop.Goal.isRoot
code: def isRoot (g : Goal) : BaseIO Bool 
goal: BaseIO Bool

full_name: Aesop.Rapp.introducesMVar
code: def introducesMVar (r : Rapp) : Bool 
goal: Bool

full_name: Aesop.Rapp.parentPostNormMetaState
code: def parentPostNormMetaState (r : Rapp) (rootMetaState : Meta.SavedState) :
    BaseIO Meta.SavedState 
goal: BaseIO Lean.Meta.SavedState

full_name: Aesop.Rapp.foldSubgoalsM
code: def foldSubgoalsM [Monad m] [MonadLiftT (ST IO.RealWorld) m] (init : σ)
    (f : σ → GoalRef → m σ) (r : Rapp) : m σ 
goal: m σ

full_name: Aesop.Rapp.forSubgoalsM
code: def forSubgoalsM [Monad m] [MonadLiftT (ST IO.RealWorld) m]
    (f : GoalRef → m Unit) (r : Rapp) : m Unit 
goal: m Unit

full_name: Aesop.Rapp.subgoals
code: def subgoals [Monad m] [MonadLiftT (ST IO.RealWorld) m] (r : Rapp) :
    m (Array GoalRef) 
goal: m (Array Aesop.GoalRef)

full_name: Aesop.Rapp.depth
code: def depth (r : Rapp) : BaseIO Nat 
goal: BaseIO Nat

full_name: Aesop.MVarCluster.provenGoal?
code: def provenGoal? (c : MVarCluster) : BaseIO (Option GoalRef) 
goal: BaseIO (Option Aesop.GoalRef)