StateException

The state a branch transitions into whenever resolution raises a ResolutionException: for a LogicError, it looks for an enclosing catch/3 goal along ConcurrentExecutionContext.pathToRoot that unifies with the error, and either resumes the branch inside the catcher's recovery goal (StateGoalSelection), or propagates the exception one level up towards the parent context (recursing into another StateException); any other ResolutionException (or a LogicError that reaches an unhandled ConcurrentExecutionContext.isRoot) ends the branch in a StateHalt.

Constructors

Link copied to clipboard
constructor(exception: ResolutionException, context: ConcurrentExecutionContext)

Properties

Link copied to clipboard

The execution context this state operates on.

Link copied to clipboard
open override val exception: ResolutionException

The exception this state needs to propagate/handle.

Link copied to clipboard

Whether this state is a terminal one for the current branch, i.e. an EndState.

Functions

Link copied to clipboard
open fun asEndState(): EndState?

This state as an EndState, or null if isEndState is false.

Link copied to clipboard

This state as an EndState.

Link copied to clipboard
open override fun clone(context: ConcurrentExecutionContext = this.context): StateException

Returns a copy of this state, replacing context with the given one (defaulting to the current context).

Link copied to clipboard
open override fun next(): Iterable<State>

Computes every state this branch may transition into from here, one per alternative (matching clause, disjunct, primitive solution, ...) available at this point; empty only for EndStates. Each element is meant to be explored independently (and, in :solve-concurrent's solver, concurrently) of the others.