AbstractState
Common base of every :solve-concurrent State: wraps computeNext with a shared timeout check, so no concrete state has to implement SolveOptions.timeout handling itself.
next first compares executionTime against ConcurrentExecutionContext.startTime/ConcurrentExecutionContext.maxDuration; if the budget is exceeded it short-circuits straight to a single-element EndState (StateHalt) carrying a TimeOutException, bypassing any pending catch/3 (resource exhaustion is treated as unrecoverable); otherwise it delegates to computeNext, the actual per-state transition logic that may return several alternative successor states.
Inheritors
Properties
The execution context this state operates on.
Whether this state is a terminal one for the current branch, i.e. an EndState.
Functions
This state as an EndState, or null if isEndState is false.
This state as an EndState.
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.