Safety and liveness predicates over concurrent runs #
This file packages the semantic notions of safety and liveness that sit on top of runs and fairness.
The goal is deliberately modest and foundational. Rather than introducing a full temporal-logic syntax, the file defines:
- run predicates and state predicates;
- the basic temporal lifts of a state predicate along a run;
- admissibility, safety, and initiality for
ProcessOver.System; and - what it means for a system to satisfy a run property under a chosen fairness assumption.
The closed-world Process API is recovered as a specialization of these
generic definitions.
Pred process is the type of semantic properties of whole runs of
process.
Instances For
StatePred process is the type of predicates on residual process
states.
Instances For
AlwaysState P run means that the state predicate P holds at every state
of the run run.
Instances For
EventuallyState P run means that the run eventually reaches a state
satisfying P.
Instances For
InfinitelyOftenState P run means that P holds at arbitrarily late
states of run.
Instances For
Monotonicity of AlwaysState.
Monotonicity of EventuallyState.
Monotonicity of InfinitelyOftenState.
A run of system is admissible when the ambient assumptions hold at every
state along the run.
Instances For
A run of system is safe when the safety predicate holds at every state
along the run.
Instances For
A run starts from an initial state when its first residual process state
satisfies system.init.
Instances For
Satisfies system fairness property means:
every initial admissible run of system that satisfies the fairness
assumption fairness also satisfies the run property property.
Instances For
If a run is safe and every safe state satisfies P, then P holds at every
state along the run.
The closed-world specialization of ProcessOver.Run.Pred.
Instances For
The closed-world specialization of ProcessOver.Run.StatePred.
Instances For
AlwaysState for closed-world runs.
Instances For
EventuallyState for closed-world runs.
Instances For
InfinitelyOftenState for closed-world runs.