Labelled Transition System (LTS) #
A Labelled Transition System (LTS) models the observable behaviour of the possible states of a
system. They are particularly popular in the fields of concurrency theory, logic, and programming
languages.
Main definitions #
LTSis a structure for labelled transition systems, consisting of a labelled transition relationTrbetween states. We follow the style and conventions in [Sangiorgi2011].LTS.MTrextends the transition relation of any LTS to a multistep transition relation, formalising the inference system and admissible rules for such relations in [Montesi2023].Definitions for all the common classes of LTSs: image-finite, finitely branching, finite-state, finite, and deterministic.
Main statements #
A series of results on
LTS.MTrthat allow for obtaining and composing multistep transitions in different ways.LTS.deterministic_imageFinite: every deterministic LTS is also image-finite.LTS.finiteState_imageFinite: every finite-state LTS is also image-finite.LTS.finiteState_finitelyBranching: every finite-state LTS is also finitely-branching, if the type of labels is finite.
References #
- [F. Montesi, Introduction to Choreographies][Montesi2023]
- [D. Sangiorgi, Introduction to Bisimulation and Coinduction][Sangiorgi2011]
Multistep transitions and executions with finite traces #
This section treats executions with a finite number of steps.
Definition of a multistep transition.
(Implementation note: compared to [Montesi2023], we choose stepL instead of stepR as fundamental
rule. This makes working with lists of labels more convenient, because we follow the same
construction. It is also similar to what is done in the SimpleGraph library in mathlib.)
- refl {State : Type u} {Label : Type v} {lts : LTS State Label} {s : State} : lts.MTr s [] s
- stepL {State : Type u} {Label : Type v} {lts : LTS State Label} {s1 : State} {μ : Label} {s2 : State} {μs : List Label} {s3 : State} : lts.Tr s1 μ s2 → lts.MTr s2 μs s3 → lts.MTr s1 (μ :: μs) s3
Instances For
Any transition is also a multistep transition.
Any multistep transition can be extended by adding a transition.
Multistep transitions can be composed.
Any 1-sized multistep transition implies a transition with the same states and label.
A state s1 can reach a state s2 if there exists a multistep transition from
s1 to s2.
Instances For
Any state can reach itself.
The LTS generated by a state s is the LTS given by all the states reachable from s.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Classes of LTSs #
An lts is deterministic if a state cannot reach different states with the same transition label.
Instances
The μ-image of a state s is the set of all μ-derivatives of s.
Instances For
The μs-image of a state s, where μs is a list of labels, is the set of all
μs-derivatives of s.
Equations
- lts.imageMultistep s μs = {s' : State | lts.MTr s μs s'}
Instances For
The μ-image of a set of states S is the union of all μ-images of the states in S.
Instances For
The μs-image of a set of states S, where μs is a list of labels, is the union of all
μs-images of the states in S.
Equations
- lts.setImageMultistep S μs = ⋃ s ∈ S, lts.imageMultistep s μs
Instances For
Characterisation of setImageMultistep with MTr.
The image of the empty set is always the empty set.
Characterisation of setImageMultistep as List.foldl on setImage.
An lts is image-finite if all images of its states are finite.
Equations
- lts.ImageFinite = ∀ (s : State) (μ : Label), Finite ↑(lts.image s μ)
Instances For
In a deterministic LTS, if a state has a μ-derivative, then it can have no other
μ-derivative.
In a deterministic LTS, any image is either a singleton or the empty set.
In a deterministic LTS, the image of any state-label combination is finite.
Every deterministic LTS is also image-finite.
Every finite-state LTS is also image-finite.
A state has an outgoing label μ if it has a μ-derivative.
Equations
- lts.HasOutLabel s μ = ∃ (s' : State), lts.Tr s μ s'
Instances For
The set of outgoing labels of a state.
Equations
- lts.outgoingLabels s = {μ : Label | lts.HasOutLabel s μ}
Instances For
An LTS is finitely branching if it is image-finite and all states have finite sets of outgoing labels.
- image_finite : lts.ImageFinite
- finite_state (s : State) : Finite ↑(lts.outgoingLabels s)
Instances
Every LTS with finite types for states and labels is also finitely branching.
An LTS is acyclic if there are no infinite multistep transitions.
- acyclic : ∃ (n : ℕ), ∀ (s1 : State) (μs : List Label) (s2 : State), lts.MTr s1 μs s2 → μs.length < n