Total LTS #
This file defines, and proves some theorems about, the notion of an LTS being "total" and a "totalize" construction that converts any LTS into a total LTS.
An LTS is total iff every state has a μ-derivative for every label μ.
The condition of being total.
Instances
Choose an FLTS that is a "sub-LTS" of a total LTS.
Equations
- lts.chooseFLTS = { tr := fun (s : State) (μ : Label) => Classical.choose ⋯ }
Instances For
The FLTS chosen by chooseFLTS always provides legal transitions.
chooseOmegaExecution builds an infinite execution of a total LTS from any starting state
and over any infinite sequence of labels.
Equations
- lts.chooseOmegaExecution s μs 0 = s
- lts.chooseOmegaExecution s μs n.succ = lts.chooseFLTS.tr (lts.chooseOmegaExecution s μs n) (μs n)
Instances For
If a LTS is total, then there exists an infinite execution from any starting state and over any infinite sequence of labels.
If a LTS is total, then any finite execution can be extended to an infinite execution, provided that the label type is inbabited.
The LTS constructed by totalize is indeed total.
In totalize, there is no finite execution from the sink state to any non-sink state.
In totalize, the transitions between non-sink states correspond exactly to
the transitions in the original LTS.
In totalize, the multistep transitions between non-sink states correspond exactly to
the multistep transitions in the original LTS.