Finite executions of LTS #
def
Cslib.LTS.Execution
{State : Type u_1}
{Label : Type u_2}
(lts : LTS State Label)
(s1 : State)
(μs : List Label)
(s2 : State)
(ss : List State)
:
Execution extends MTr by providing the intermediate states of a multistep transition.
Equations
Instances For
theorem
Cslib.LTS.Execution.refl
{State : Type u_1}
{Label : Type u_2}
(lts : LTS State Label)
(s : State)
:
lts.Execution s [] s [s]
Every state has an execution of zero steps terminating in itself.
theorem
Cslib.LTS.Execution.stepL
{State : Type u_1}
{Label : Type u_2}
{s1 : State}
{μ : Label}
{s2 : State}
{μs : List Label}
{s3 : State}
{ss : List State}
{lts : LTS State Label}
(htr : lts.Tr s1 μ s2)
(hexec : lts.Execution s2 μs s3 ss)
:
lts.Execution s1 (μ :: μs) s3 (s1 :: ss)
Equivalent of MTr.stepL for executions.
theorem
Cslib.LTS.mTr_iff_execution
{State : Type u_1}
{Label : Type u_2}
{lts : LTS State Label}
{s1 : State}
{μs : List Label}
{s2 : State}
:
Correspondence of multistep transitions and executions.
theorem
Cslib.LTS.Execution.comp
{State : Type u_1}
{Label : Type u_2}
{lts : LTS State Label}
{s r t : State}
{μs1 μs2 : List Label}
{ss1 ss2 : List State}
(h1 : lts.Execution s μs1 r ss1)
(h2 : lts.Execution r μs2 t ss2)
:
lts.Execution s (μs1 ++ μs2) t (ss1 ++ ss2.tail)
The composition of two executions is an execution.
theorem
Cslib.LTS.Execution.split
{State : Type u_1}
{Label : Type u_2}
{lts : LTS State Label}
{s t : State}
{μs : List Label}
{ss : List State}
(he : lts.Execution s μs t ss)
(n : ℕ)
(hn : n ≤ μs.length)
:
An execution can be split at any intermediate state into two executions.
theorem
Cslib.LTS.MTr.split
{State : Type u_1}
{Label : Type u_2}
{lts : LTS State Label}
{s0 : State}
{μs1 μs2 : List Label}
{s2 : State}
(h : lts.MTr s0 (μs1 ++ μs2) s2)
:
A multistep transition over a concatenation can be split into two multistep transitions.