Labelled transition systems

TheoremReachability in a labelled transition system is transitive#✓fully proved

In a labelled transition system, say that a state \(s\) can reach a state \(t\) when there is a finite list of labels along which \(s\) makes a multistep transition to \(t\). If \(s\) can reach \(m\) and \(m\) can reach \(t\), then \(s\) can reach \(t\).

The witnessing list of labels is the concatenation of the two given lists.

@[trans]
theorem CanReach.trans {source middle target : State}
    (hsm : lts.CanReach source middle) (hmt : lts.CanReach middle target) :
    lts.CanReach source target
Used by 1

DefinitionFinite run#✓fully proved

In a labelled transition system, a sequence of states \(s_0, s_1, s_2, \dots\) is a finite run of length \(k\) when for every \(i < k\) there is a label \(a\) such that there is a transition from \(s_i\) to \(s_{i+1}\) labelled \(a\).

The states after index \(k\) are unconstrained.

def FiniteRun (ss : ℕ → State) (k : ℕ) : Prop :=
  ∀ i, i < k → ∃ label, lts.Tr (ss i) label (ss (i + 1))
Used by 15

DefinitionInfinite run#✓fully proved

In a labelled transition system, a sequence of states \(s_0, s_1, s_2, \dots\) is an infinite run when for every \(i\) there is a label \(a\) such that there is a transition from \(s_i\) to \(s_{i+1}\) labelled \(a\).

def OmegaRun (ss : ℕ → State) : Prop :=
  ∀ i, ∃ label, lts.Tr (ss i) label (ss (i + 1))
Used by 22

TheoremInvariant principle for infinite runs#✓fully proved

Let \(P\) be a predicate on the states of a labelled transition system such that, whenever \(P(s)\) holds and there is a transition from \(s\) to \(t\) with some label, \(P(t)\) holds. Then for every infinite run \(s_0, s_1, s_2, \dots\) with \(P(s_0)\), the predicate \(P(s_k)\) holds for every \(k\).

theorem forall_state_of_invariant {run : ℕ → State}
    (hrun : lts.OmegaRun run) {P : State → Prop} (h0 : P (run 0))
    (hstep : ∀ s t, P s → lts.UnlabelledTr s t → P t) :
    ∀ k, P (run k)
Uses 1
Statement usesInfinite run

TheoremInfinite state runs lift to labeled executions#✓fully proved

Select a witnessing label at each step of an infinite state run.

theorem omegaExecution_of_omegaRun {ss : ℕ → State}
    (h : lts.OmegaRun ss) :
    ∃ μs : ωSequence Label, lts.OmegaExecution ⟨ss⟩ μs
Uses 1 · Used by 2

TheoremLabeled infinite executions give state runs#✓fully proved

Forget the labels of a canonical infinite execution.

theorem omegaRun_of_omegaExecution {oss : ωSequence State}
    {μs : ωSequence Label} (h : lts.OmegaExecution oss μs) :
    lts.OmegaRun (fun i => oss i)
Uses 1 · Used by 2

TheoremShifted function sequences agree with ω-sequence drop#✓fully proved

Function-sequence suffixes agree with canonical ωSequence.drop.

theorem shiftSeq_eq_drop (ss : ℕ → State) (k : ℕ) :
    (⟨Semantics.shiftSeq ss k⟩ : ωSequence State) =
      ωSequence.drop k ⟨ss⟩
Uses 1 · Used by 2
8 fully proved

The dependency explorer needs JavaScript and its graph data.

Download the complete graph data.