Documentation

Aesop.Tree.Data

Node IDs #

Equations
Equations
  • { toNat := n }.succ = { toNat := n + 1 }
Equations
Equations
Equations

Rule Application IDs #

Equations
Equations
  • { toNat := n }.succ = { toNat := n + 1 }
Equations
Equations
Equations

Iterations #

The Tree #

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.

Instances For
Equations
  • One or more equations did not get rendered due to their size.

A refinement of the NodeState, distinguishing between goals proven during normalisation and goals proven by a child rule application.

Instances For
Equations
  • One or more equations did not get rendered due to their size.
Equations
  • s.isIrrelevant = s.toNodeState.isIrrelevant
Equations

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.
Instances For
Equations
Equations
structure Aesop.GoalData (Rapp : Type) (MVarCluster : Type) :
Instances For
instance Aesop.instNonemptyGoalData :
∀ {Rapp MVarCluster : Type} [inst : Nonempty MVarCluster], Nonempty (Aesop.GoalData Rapp MVarCluster)
Equations
  • =
structure Aesop.MVarClusterData (Goal : Type) (Rapp : Type) :
Instances For
Equations
  • Aesop.instInhabitedMVarClusterData = { default := { parent? := default, goals := default, isIrrelevant := default, state := default } }
structure Aesop.RappData (Goal : Type) (MVarCluster : Type) :
Instances For
instance Aesop.instNonemptyRappData :
∀ {Goal : Type} [inst : Nonempty Goal] {MVarCluster : Type}, Nonempty (Aesop.RappData Goal MVarCluster)
Equations
  • =
structure Aesop.TreeSpec :
Instances For
@[implemented_by Aesop.treeImpl]
@[reducible, inline]
Equations
@[reducible, inline]
Equations
@[inline]
Equations
  • c.parent? = c.elim.parent?
@[inline]
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
Equations
  • c.goals = c.elim.goals
@[inline]
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
Equations
  • c.isIrrelevant = c.elim.isIrrelevant
@[inline]
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
Equations
  • c.state = c.elim.state
@[inline]
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
Equations
  • g.id = g.elim.id
@[inline]
Equations
  • g.parent = g.elim.parent
@[inline]
Equations
  • g.children = g.elim.children
@[inline]
Equations
  • g.origin = g.elim.origin
@[inline]
Equations
  • g.depth = g.elim.depth
@[inline]
Equations
  • g.state = g.elim.state
@[inline]
Equations
  • g.isIrrelevant = g.elim.isIrrelevant
@[inline]
Equations
  • g.isForcedUnprovable = g.elim.isForcedUnprovable
@[inline]
Equations
  • g.preNormGoal = g.elim.preNormGoal
@[inline]
Equations
  • g.normalizationState = g.elim.normalizationState
@[inline]
Equations
  • g.mvars = g.elim.mvars
@[inline]
Equations
  • g.successProbability = g.elim.successProbability
@[inline]
Equations
  • g.addedInIteration = g.elim.addedInIteration
@[inline]
Equations
  • g.lastExpandedInIteration = g.elim.lastExpandedInIteration
@[inline]
Equations
  • g.failedRapps = g.elim.failedRapps
@[inline]
Equations
  • g.unsafeRulesSelected = g.elim.unsafeRulesSelected
@[inline]
Equations
  • g.unsafeQueue = g.elim.unsafeQueue
@[inline]
Equations
  • g.unsafeQueue? = if g.unsafeRulesSelected = true then some g.unsafeQueue else none
@[inline]
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
def Aesop.Goal.setUnsafeRulesSelected (unsafeRulesSelected : Bool) (g : Aesop.Goal) :
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
Equations
  • One or more equations did not get rendered due to their size.
Equations
@[inline]
Equations
  • r.id = r.elim.id
@[inline]
Equations
  • r.parent = r.elim.parent
@[inline]
Equations
  • r.children = r.elim.children
@[inline]
Equations
  • r.state = r.elim.state
@[inline]
Equations
  • r.isIrrelevant = r.elim.isIrrelevant
@[inline]
Equations
  • r.appliedRule = r.elim.appliedRule
@[inline]
Equations
  • r.scriptSteps? = r.elim.scriptSteps?
@[inline]
Equations
  • r.originalSubgoals = r.elim.originalSubgoals
@[inline]
Equations
  • r.successProbability = r.elim.successProbability
@[inline]
Equations
  • r.metaState = r.elim.metaState
@[inline]
Equations
  • r.introducedMVars = r.elim.introducedMVars
@[inline]
Equations
  • r.assignedMVars = r.elim.assignedMVars
@[inline]
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
Equations
  • One or more equations did not get rendered due to their size.
Equations

Miscellaneous Queries #

Equations
  • r.isSafe = (r.appliedRule.isSafe && r.assignedMVars.isEmpty)
@[inline]
Equations
Equations
Equations
  • g.currentGoal = g.postNormGoal?.getD g.preNormGoal
Equations
  • g.parentRapp? = do let __do_liftST.Ref.get g.parent pure __do_lift.parent?
Equations
  • One or more equations did not get rendered due to their size.
Equations
  • One or more equations did not get rendered due to their size.
Equations
Equations
Equations
Equations
  • g.isExhausted = (pure g.isUnsafeExhausted <||> g.hasSafeRapp)
Equations
  • g.isActive = do let __do_liftpure g.isIrrelevant <||> g.isExhausted pure !__do_lift
Equations
Equations
Equations
  • g.hasMVar = !g.mvars.isEmpty
Equations
Equations
  • g.isNormal = g.normalizationState.isNormal
Equations
  • g.originalGoalId = g.origin.originalGoalId?.getD g.id
Equations
  • g.isRoot = do let __do_liftg.parentRapp? pure __do_lift.isNone
Equations
  • r.introducesMVar = !r.introducedMVars.isEmpty
Equations
  • r.parentPostNormMetaState rootMetaState = do let __do_liftST.Ref.get r.parent __do_lift.parentMetaState rootMetaState
def Aesop.Rapp.foldSubgoalsM {m : TypeType} {σ : Type} [Monad m] [MonadLiftT (ST IO.RealWorld) m] (init : σ) (f : σAesop.GoalRefm σ) (r : Aesop.Rapp) :
m σ
Equations
  • One or more equations did not get rendered due to their size.
Equations
Equations
Equations
Equations