ResolutionStep

sealed interface ResolutionStep

One observable outcome of advancing a ResolutionCursor: either another solution (Yield), exhaustion (End), or an unrecoverable error (Failed) - always carrying whatever I/O signals the solver emitted meanwhile.

Inheritors

Types

Link copied to clipboard
data class End(val signals: List<SolverSignal> = emptyList()) : ResolutionStep

The resolution is exhausted: no further solutions exist.

Link copied to clipboard
data class Failed(val message: String, val causeType: String? = null, val signals: List<SolverSignal> = emptyList()) : ResolutionStep

The resolution could not proceed, e.g. a parse or solver-internal error rather than a normal "no".

Link copied to clipboard
data class Yield(val solution: SolutionPresentation, val hasMorePotentially: Boolean, val signals: List<SolverSignal> = emptyList(), val featureStateReplacements: Map<FeatureId, Map<String, FeatureValue>> = emptyMap()) : ResolutionStep

A solution was found; hasMorePotentially says whether requesting another step could yield more.

Properties

Link copied to clipboard
abstract val signals: List<SolverSignal>

Output produced (e.g. to stdout/stderr) while computing this step, in emission order.