Temporal operators over event-language runs #
Branching-time temporal operators, as in CTL, over the runs of an EventLang.
Each turns a predicate on configurations into one, by quantifying over the runs
from a configuration: over all runs or some run, and over every point of a run
or some point.
| Operator | CTL | Meaning |
|---|---|---|
AllNext | AX | every successor satisfies S |
SomeNext | EX | some successor satisfies S |
AllPathsAlways | AG | every reachable configuration satisfies S |
SomePathEventually | EF | some reachable configuration satisfies S |
AllPathsEventually | AF | every run reaches a configuration satisfying S |
SomePathAlways | EG | some infinite run stays in S |
EveryStep and SomeStep read the events a step emits rather than the
configuration it reaches, and TracesSatisfy the whole trace of every finite
run, as a safety property does.
AllPathsEventually is inductive, so every run must actually reach the target:
a run that diverges or gets stuck first does not satisfy it. SomePathAlways
asks for a diverging sequence ℕ → CfgT that stays in S. TemporalProps
relates them to each other and to MustTerminate.
Every step from cfg emits events φ accepts.
Equations
Instances For
Some step from cfg emits events φ accepts.
Equations
Instances For
Every successor of cfg satisfies S.
Equations
Instances For
Some successor of cfg satisfies S.
Equations
Instances For
Every configuration reachable from cfg satisfies S.
Equations
- EL.AllPathsAlways S cfg = ∀ (cfg' : EL.CfgT), EL.Reaches cfg cfg' → S cfg'
Instances For
Some configuration reachable from cfg satisfies S.
Instances For
Every run from cfg reaches a configuration satisfying S: cfg satisfies
it, or cfg can step and every successor reaches one.
- now {P : Imperative.PureExpr} {EventT : Type u_2} {EL : EventLang P EventT} {S : EL.CfgT → Prop} {cfg : EL.CfgT} : S cfg → EL.AllPathsEventually S cfg
- step {P : Imperative.PureExpr} {EventT : Type u_2} {EL : EventLang P EventT} {S : EL.CfgT → Prop} {cfg : EL.CfgT} (progress : ∃ (emitted : List EventT), ∃ (cfg' : EL.CfgT), EL.step cfg emitted cfg') (successors : ∀ (emitted : List EventT) (cfg' : EL.CfgT), EL.step cfg emitted cfg' → EL.AllPathsEventually S cfg') : EL.AllPathsEventually S cfg
Instances For
Some diverging sequence from cfg stays in configurations satisfying S.
Equations
Instances For
Every finite trace of a run from cfg satisfies φ.
Equations
- EL.TracesSatisfy φ cfg = ∀ (trace : List EventT) (c : EL.CfgT), EL.traceStar cfg trace c → φ trace