Documentation

Projects.System.Misc

theorem System.Misc.aux₁ {S T : Type u} {sys : System S T} {s : S} {t : T} {s' : S} (h₁ : sys.validTr s t) (h₂ : sys.tr! s t = s') :
sys.tr s t = some s'
theorem System.Misc.aux₂ {S T : Type u} {sys : System S T} {s : S} {t : T} (h₁ : ¬sys.validTr s t) :
sys.tr! s t = s
theorem System.Misc.aux₃ {S T : Type u} {sys : System S T} {s : S} {ts : List T} :
∃ (s' : S) (rs : List T), sys.trs s ts = (s', rs) rs.length ts.length
theorem System.Misc.aux₅ {S T : Type u} {sys : System S T} {f : ST} {s : S} {m : } :
∃ (s₂ : S) (l : ), sys.simulate f s m = (s₂, l)
theorem System.Misc.cntrex₁ :
¬∀ (S T : Type) (sys : System S T) (f : ST) (s : S) (n : ), (∀ (s' : S), ¬sys.hasTr s')∃ (k : ) (s' : S), sys.simulate f s n = (s', k) 0 < k
theorem System.Misc.aux₆ {S T : Type u} {sys : System S T} {a b c : S} (h₁ : sys.Reachable a b) (h₂ : sys.Reachable b c) :
sys.Reachable a c
theorem System.Misc.aux₇ {S T : Type u} {sys : System S T} {f : ST} {s : S} {n : } {s' : S} (h₁ : sys.simulate f s n = (s', 0)) :
sys.Reachable s s'
theorem System.Misc.cntrex₂ :
¬∀ (S T : Type) (sys : System S T) (a : sys.DecidableHasTr), ∃ (f : ST), sys.SimFn f
theorem System.Misc.aux₈ {S T : Type u} {sys : System S T} {f : ST} {s : S} {n : } :
∃! p : S × , sys.simulate f s n = (p.1, p.2)
theorem System.Misc.cntrex₃ :
¬∀ (α β : Type) (P : αProp), (¬∀ (x : α), P x) → ¬∀ (x : α) (x_1 : β), P x
theorem System.Misc.cntrex₄ :
¬∀ (S T : Type) (sys : System S T) (s : S), sys.Acyclic s∀ (f : ST), sys.SimFn f∀ (n m : ) (sn sm : S) (x y : ), n < msys.simulate f s n = (sn, x)sys.simulate f s m = (sm, y)sn sm
theorem System.Misc.aux₉ {S T : Type u} {sys : System S T} {s : S} [h₁ : sys.Acyclic s] {f : ST} [h₂ : sys.SimFn f] {n m : } {sn sm : S} (h₃ : n < m) :
∃ (x : ) (y : ), sys.simulate f s n = (sn, x)sys.simulate f s m = (sm, y)sn sm
theorem System.Misc.aux₁₀ {S T : Type u} {sys : System S T} {s : S} [h₁ : sys.Acyclic s] {f : ST} [h₂ : sys.SimFn f] {n m : } {sn sm : S} (h₃ : n < m) :
∃ (x : ), sys.simulate f s n = (sn, x)sys.simulate f s m = (sm, x)sn sm
theorem System.Misc.aux₁₁ {S T : Type u} {sys : System S T} {s : S} [h₁ : sys.Acyclic s] {f : ST} [h₂ : sys.SimFn f] {n m : } {sn sm : S} (h₃ : n < m) {x : } (h₄ : sys.simulate f s n = (sn, x)) (h₅ : sys.simulate f s m = (sm, x)) :
sn sm
theorem System.Misc.cntrex₅ :
¬∀ (S T : Type) (sys : System S T) [Finite S] {s : S} [sys.Acyclic s] {f : ST} [sys.SimFn f], ∃ (N : ), ∀ (n : ), N n∃ (k : ), 0 < k ∀ (x : S), sys.simulate f s n = (x, k)
theorem System.Misc.cntrex₆ :
¬∀ (S T : Type) (sys : System S T) [Finite S] {s : S} [sys.Acyclic s] {f : ST} [sys.SimFn f] {x : S}, ∃ (N : ), ∀ (n : ), N n∃ (k : ), 0 < k sys.simulate f s n = (x, k)
theorem System.Misc.cntrex₇ :
¬∀ (S T : Type) (sys : System S T) (a : S) (ts₁ ts₂ : List T) (b : S), (∀ tts₁, sys.validTr b t)sys.trs a (ts₁ ++ ts₂) = sys.trs (sys.trs a ts₁).1 ts₂
theorem System.Misc.aux₁₄ {S T : Type u} {sys : System S T} {a : S} {ts₁ ts₂ : List T} (h₁ : ∀ (a : S), tts₁, sys.validTr a t) :
sys.trs a (ts₁ ++ ts₂) = sys.trs (sys.trs a ts₁).1 ts₂
theorem System.Misc.aux₁₅ {S T : Type u} {sys : System S T} {f : ST} {s : S} {n : } :
sys.simulate f s (n + 1) = match sys.tr s (f s) with | none => (s, n + 1) | some s' => sys.simulate f s' n
theorem System.Misc.aux₁₆ :
∃! f : , f 0 = 0 ∀ (n : ), f (n + 1) = f (f n)