Finite-prefix safety for the actual scheduler iteration. These definitions are conditional on the supplied machine operations and permitted choices; they do not assert that an arbitrary hook implementation covers pinned Miri. In particular, excluding UB alone does not discharge unsupported operations.
A finite execution prefix, retaining every choice as a witness. Only successful iterations continue; errors are observable outcomes, not steps.
- nil {S C Callback : Type} {hooks : RunLoopHooks S C Callback} {allowed : S → C → Prop} (state : S) : Prefix hooks allowed state [] state
- cons {S C Callback : Type} {hooks : RunLoopHooks S C Callback} {allowed : S → C → Prop} {start middle finish : S} {choice : C} {choices : List C} : allowed start choice → iteration hooks choice start = (middle, Except.ok ()) → Prefix hooks allowed middle choices finish → Prefix hooks allowed start (choice :: choices) finish
Instances For
All states reached after a permitted finite prefix, including the initial state. No fuel or termination assumption restricts this relation.
Equations
Instances For
An error outcome with a complete finite choice witness.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Exclude UB on every permitted finite prefix. This is a statement about the specified operations and choices, not a coverage certificate for Rust.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Witness of a UB outcome; unlike failed proof search, it establishes a permitted execution ending in UB.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Optional invariant proof rule. UB freedom itself is defined directly by outcomes above, without requiring an invariant or program termination.
Outcome exclusion and absence of a permitted UB witness are equivalent. Neither side asserts implementation completeness or resolves unknown errors.