Temporal reasoning over infinite sequences. #
theorem
Cslib.ωSequence.Step.mk
{α : Type u_1}
{p q : Set α}
{xs : ωSequence α}
(h : ∀ (k : ℕ), xs k ∈ p → xs (k + 1) ∈ q)
:
xs.Step p q
"p leads to q" means that whenever p holds at a position in xs, q holds at the same
or a later position in xs.
Equations
- xs.LeadsTo p q = ∀ (k : ℕ), xs k ∈ p → ∃ (k' : ℕ), k ≤ k' ∧ xs k' ∈ q
Instances For
theorem
Cslib.ωSequence.LeadsTo.mk
{α : Type u_1}
{p q : Set α}
{xs : ωSequence α}
(h : ∀ (k : ℕ), xs k ∈ p → ∃ (k' : ℕ), k ≤ k' ∧ xs k' ∈ q)
:
xs.LeadsTo p q
theorem
Cslib.ωSequence.step_leadsTo
{α : Type u_1}
{xs : ωSequence α}
{p q : Set α}
(h : xs.Step p q)
:
xs.LeadsTo p q
theorem
Cslib.ωSequence.until_frequently_not_leadsTo
{α : Type u_1}
{xs : ωSequence α}
{p q : Set α}
(h1 : xs.Step (p ∩ qᶜ) p)
(h2 : ∃ᶠ (k : ℕ) in Filter.atTop, xs k ∉ p)
:
xs.LeadsTo p q
If p holds until q and p fails infinitely often, then p leads to q.
theorem
Cslib.ωSequence.until_frequently_leadsTo_and
{α : Type u_1}
{xs : ωSequence α}
{p q : Set α}
(h1 : xs.Step (p ∩ qᶜ) p)
(h2 : ∃ᶠ (k : ℕ) in Filter.atTop, xs k ∈ q)
:
xs.LeadsTo p (p ∩ q)
If p holds until q and q holds infinite often, then p leads to p ∩ q.
theorem
Cslib.ωSequence.frequently_leadsTo_frequently
{α : Type u_1}
{xs : ωSequence α}
{p q : Set α}
(h1 : ∃ᶠ (k : ℕ) in Filter.atTop, xs k ∈ p)
(h2 : xs.LeadsTo p q)
:
∃ᶠ (k : ℕ) in Filter.atTop, xs k ∈ q
If p holds infinitely often and p leads to q, then q holds infinite often as well.
theorem
Cslib.ωSequence.drop_frequently_iff_frequently
{α : Type u_1}
{xs : ωSequence α}
{p : Set α}
(n : ℕ)
:
(∃ᶠ (k : ℕ) in Filter.atTop, (drop n xs) k ∈ p) ↔ ∃ᶠ (k : ℕ) in Filter.atTop, xs k ∈ p