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.
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.
In totalize, the transitions between non-sink states correspond exactly to
the transitions in the original LTS.