Documentation

Cslib.Computability.Languages.SafetyLiveness

Safety and Liveness properties of ω-sequences #

This file formalizes the main results of [AS85]. Namely, given an appropriate topology on ω-sequences:

References #

@[reducible, inline]
abbrev Cslib.ωLanguage.IsSafety {α : Type u_1} (p : ωLanguage α) :

Safety properties are identified with closed sets.

Equations
Instances For
    theorem Cslib.ωLanguage.isSafety_iff {α : Type u_1} (p : ωLanguage α) :
    p.IsSafety xsp, ∃ (n : ), ∀ (ys : ωSequence α), ωSequence.take n xs ++ω ysp

    An alternative characterization of IsSafety that justifies its definition: if an ω-sequence violates a safety property, then it has a finite prefix all of whose infinite extensions also violate the property.

    @[reducible, inline]
    abbrev Cslib.ωLanguage.IsLiveness {α : Type u_1} (p : ωLanguage α) :

    Liveness properties are identified with dense sets.

    Equations
    Instances For
      theorem Cslib.ωLanguage.isLiveness_iff {α : Type u_1} (p : ωLanguage α) :
      p.IsLiveness ∀ (xs : ωSequence α) (n : ), ∃ (ys : ωSequence α), ωSequence.take n xs ++ω ys p

      An alternative characterization of IsLiveness that justifies its definition: any finite sequence can be extended to an infinite sequence satisfying a liveness property.

      p.closure is always a safety property for any ω-language p.

      p ⊔ p.closureᶜ is always a liveness property for any ω-language p.

      theorem Cslib.ωLanguage.exists_safetyLivenessDecomposition {α : Type u_1} (p : ωLanguage α) :
      ∃ (q : ωLanguage α) (r : ωLanguage α), q.IsSafety r.IsLiveness p = qr

      Every property p is the intersection of a safety property (namely, p.closure) and a liveness property (namely, p ⊔ p.closureᶜ).