view a11/lecture.ind @ 412:b85402051cdb default tip

add mul
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 05 Apr 2024 13:38:20 +0900
parents 0e8a0e50ed26
children
line wrap: on
line source

-title: ωオートマトン

オートマトンは入力を受け付けるかどうかを問題にするので計算は有限時間に終わる。

しかし、サーバなどの計算は終了することは想定されてない。入力が無限にある場合を考えたい。

例えば、信号機は停まらずにずーっと動くことが期待されていて、正しい信号機の動作とそうでない動作がある。そして信号機はオートマトン的に動作している。

--ωオートマトンと様相論理

これらは時間の様相を表す論理に関係している。

    [] p      ずーっとpが成立する
    <> p      いつかpが成立する

これを組み合わせると

    <> [] p      いつからか、ずーっとpが成立するようになる
    [] <> p      ずーっと、いつかpが起きる

[] はbox、<>はdiamonと呼ばれたりする。

        [] p = ¬ ( <> ¬ p )
        <> p = ¬ ( [] ¬ p )

である。[] <> p をωオートマトンとして考えることができる。

                       ¬ p
                   ------------>
        [] <> p *                 [] <> p 
                   <-----------
                       p

p と ¬ p で二つの状態 ( [] <> p * と [] <> p)を行き来する。


    data  States3   : Set  where
       ts* : States3
       ts  : States3

    transition3 : States3  → Bool  → States3
    transition3 ts* true  = ts*
    transition3 ts* false  = ts
    transition3 ts true  = ts*
    transition3 ts false  = ts

    mark1 :  States3  → Bool
    mark1 ts* = true
    mark1 ts = false

    ωa1 : Automaton States3 Bool
    ωa1 = record {
            δ = transition3
         ;  astart = ts*
         ;  aend = mark1
      }  

ここで、[] <> p *  ( 上では ts* ) を無限回通れば、 [] <> p が成立していることになる。(Buchi automaton )

これの否定は、<> [] ( ¬ p ) ということになる。これは、ある時点からずーっと ¬ p が続く。(Muller automaton )

--ωオートマトンの定義

オートマトンの定義は同じものを用いる。ただし、入力は無限にある。

    record Automaton ( Q : Set ) ( Σ : Set  )
           : Set  where
        field
            δ : Q → Σ → Q
            astart : Q
            aend : Q → Bool

automaton の定義にはもともと入力の実装が何かは記述されていない。

Agda では無限の長さのリストを扱うことはできない。その代わり、自然数 n から入力Σを生成する関数( ℕ → Σ )を用いる。
これを用いて、


    ω-run : { Q  Σ : Set } → (Ω : Automaton Q Σ ) →  ℕ → ( ℕ → Σ )  → Q
    ω-run Ω zero s = astart Ω
    ω-run Ω (suc n) s = δ Ω (ω-run Ω n s) ( s n )

と言う形でオートマトンが無限に実行される。

この無限長の入力をどう受け付けるかを定義する必要がある。これには二通りの方法がある。

    record Muller { Q  Σ : Set } (Ω : Automaton Q Σ ) ( S : ℕ → Σ ) : Set where
        field
            from : ℕ
            stay : (x : Q) → (n : ℕ ) → n > from → aend Ω ( ω-run Ω x S n ) ≡ true

    record Buchi { Q  Σ : Set } (Ω : Automaton Q Σ ) ( S : ℕ → Σ ) : Set where
        field
            next     : (n : ℕ ) → ℕ
            infinite : (x : Q) → (n : ℕ ) →  aend Ω ( ω-run Ω x  S (n + (suc (next n)))) ≡ true


Muller ではある時刻から先では、aend で定義される状態の集合にずーっと留まる。Buchi ではaendで定義されるある状態の集合を無限回通る。

--Muller automaton と Buchi automaton の関係

    B→M : { Q  Σ : Set } (Ω : Automaton Q Σ ) ( S : ℕ → Σ ) → Q 
        → Muller Ω S → ¬ ( Buchi record { δ = δ Ω ; aend = λ q → not (aend Ω q)} S )

    M→B : { Q  Σ : Set } (Ω : Automaton Q Σ ) ( S : ℕ → Σ ) → Q 
        → Buchi Ω S → ¬ ( Muller record { δ = δ Ω ; aend = λ q → not (aend Ω q)} S )

これが証明できる