Safety-liveness decomposition #
We prove that every linear-time property decomposes as the intersection of a safety property and a liveness property, following Alpern and Schneider.
@[reducible, inline]
An infinite word over the alphabet T, modelled as a function from positions
to letters.
Equations
- SafetyLivenessDecomposition.InfWord T = (ℕ → T)
Instances For
@[reducible, inline]
A finite word over the alphabet T, modelled as a list of letters.
Equations
Instances For
def
SafetyLivenessDecomposition.FinWord.append
{T : Type u_1}
(a : FinWord T)
(b : InfWord T)
:
InfWord T
Concatenate a finite word a in front of an infinite word b.
Equations
- a.append b i = if x : i < List.length a then a[i] else b (i - List.length a)
Instances For
@[reducible, inline]
A linear-time property: a set of infinite words.
Instances For
A property is a safety property when every word outside it has a finite bad prefix: no extension of that prefix lies in the property.
Equations
Instances For
A property is a liveness property when every finite word can be extended to an infinite word lying in the property.
Equations
Instances For
@[simp]