annotate agda/omega-automaton.agda @ 143:f896c112f01f

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 29 Dec 2020 15:32:57 +0900
parents b3f05cd08d24
children bee86ee07fff
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
21
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 module omega-automaton where
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 open import Level renaming ( suc to succ ; zero to Zero )
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 open import Data.Nat
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 open import Data.List
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 open import Data.Maybe
139
3be1afb87f82 add utm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
7 -- open import Data.Bool using ( Bool ; true ; false ; _∧_ ) renaming ( not to negate )
21
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 open import Relation.Binary.PropositionalEquality hiding ( [_] )
141
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 139
diff changeset
9 open import Relation.Nullary -- using (not_; Dec; yes; no)
21
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 open import Data.Empty
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11
139
3be1afb87f82 add utm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
12 open import logic
21
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 open import automaton
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 open Automaton
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16
139
3be1afb87f82 add utm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
17 ω-run : { Q Σ : Set } → (Ω : Automaton Q Σ ) → (astart : Q ) → ℕ → ( ℕ → Σ ) → Q
3be1afb87f82 add utm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
18 ω-run Ω x zero s = x
3be1afb87f82 add utm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
19 ω-run Ω x (suc n) s = δ Ω (ω-run Ω ? n s) ( s n )
21
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20
22
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 21
diff changeset
21 record Buchi { Q Σ : Set } (Ω : Automaton Q Σ ) ( S : ℕ → Σ ) : Set where
21
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 field
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 from : ℕ
139
3be1afb87f82 add utm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
24 stay : (n : ℕ ) → n > from → aend Ω ( ω-run Ω ? n S ) ≡ true
21
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 open Buchi
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28
22
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 21
diff changeset
29 record Muller { Q Σ : Set } (Ω : Automaton Q Σ ) ( S : ℕ → Σ ) : Set where
21
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 field
22
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 21
diff changeset
31 next : (n : ℕ ) → ℕ
139
3be1afb87f82 add utm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
32 infinite : (n : ℕ ) → aend Ω ( ω-run Ω ? (n + (next n)) S ) ≡ true
21
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33
139
3be1afb87f82 add utm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
34 -- not p
21
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 -- ------------>
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 -- [] <> p * [] <> p
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 -- <-----------
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 -- p
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
39
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 data States3 : Set where
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 ts* : States3
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 ts : States3
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
43
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 transition3 : States3 → Bool → States3
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 transition3 ts* true = ts*
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 transition3 ts* false = ts
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 transition3 ts true = ts*
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 transition3 ts false = ts
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
49
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 mark1 : States3 → Bool
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 mark1 ts* = true
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
52 mark1 ts = false
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
53
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 ωa1 : Automaton States3 Bool
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 ωa1 = record {
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 δ = transition3
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 ; aend = mark1
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 }
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
59
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
60 true-seq : ℕ → Bool
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
61 true-seq _ = true
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
62
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 false-seq : ℕ → Bool
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 false-seq _ = false
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
65
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 flip-seq : ℕ → Bool
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 flip-seq zero = false
139
3be1afb87f82 add utm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
68 flip-seq (suc n) = not ( flip-seq n )
21
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
69
22
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 21
diff changeset
70 lemma1 : Buchi ωa1 true-seq
21
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 lemma1 = record {
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
72 from = zero
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
73 ; stay = lem1
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
74 } where
139
3be1afb87f82 add utm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
75 lem1 : ( n : ℕ ) → n > zero → aend ωa1 (ω-run ωa1 ? n true-seq ) ≡ true
21
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 lem1 zero ()
139
3be1afb87f82 add utm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
77 lem1 (suc n) (s≤s z≤n) with ω-run ωa1 ? n true-seq
3be1afb87f82 add utm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
78 lem1 (suc n) (s≤s z≤n) | ts* = ?
3be1afb87f82 add utm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
79 lem1 (suc n) (s≤s z≤n) | ts = ?
21
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
80
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
81 ωa2 : Automaton States3 Bool
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
82 ωa2 = record {
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
83 δ = transition3
139
3be1afb87f82 add utm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
84 ; aend = λ x → not ( mark1 x )
21
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
85 }
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
86
22
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 21
diff changeset
87 flip-dec : (n : ℕ ) → Dec ( flip-seq n ≡ true )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 21
diff changeset
88 flip-dec n with flip-seq n
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 21
diff changeset
89 flip-dec n | false = no λ ()
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 21
diff changeset
90 flip-dec n | true = yes refl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 21
diff changeset
91
139
3be1afb87f82 add utm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
92 flip-dec1 : (n : ℕ ) → flip-seq (suc n) ≡ ( not ( flip-seq n ) )
22
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 21
diff changeset
93 flip-dec1 n = let open ≡-Reasoning in
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 21
diff changeset
94 flip-seq (suc n )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 21
diff changeset
95 ≡⟨⟩
139
3be1afb87f82 add utm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
96 ( not ( flip-seq n ) )
22
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 21
diff changeset
97
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 21
diff changeset
98
139
3be1afb87f82 add utm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
99 flip-dec2 : (n : ℕ ) → not flip-seq (suc n) ≡ flip-seq n
3be1afb87f82 add utm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
100 flip-dec2 n = ?
22
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 21
diff changeset
101
23
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
102
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
103 record flipProperty : Set where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
104 field
141
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 139
diff changeset
105 flipP : (n : ℕ) → ω-run ωa2 ? flip-seq ≡ ω-run ωa2 n flip-seq
23
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
106
22
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 21
diff changeset
107 lemma2 : Muller ωa2 flip-seq
21
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
108 lemma2 = record {
22
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 21
diff changeset
109 next = next
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 21
diff changeset
110 ; infinite = infinite
21
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
111 } where
22
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 21
diff changeset
112 next : ℕ → ℕ
23
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
113 next n with ω-run ωa2 n flip-seq | flip-seq n
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
114 next n | ts | true = 2
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
115 next n | ts | false = 1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
116 next n | ts* | true = 2
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
117 next n | ts* | false = 1
24
9406c2571fe7 naccept1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 23
diff changeset
118 infinite' : (n m : ℕ) → n ≥″ m → aend ωa2 (ω-run ωa2 (m + (next m)) flip-seq) ≡ true → aend ωa2 (ω-run ωa2 (n + (next n)) flip-seq) ≡ true
9406c2571fe7 naccept1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 23
diff changeset
119 infinite' = {!!}
23
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
120 infinite : (n : ℕ) → aend ωa2 (ω-run ωa2 (n + (next n)) flip-seq) ≡ true
24
9406c2571fe7 naccept1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 23
diff changeset
121 infinite = {!!}
21
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
122
22
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 21
diff changeset
123 lemma3 : Buchi ωa1 false-seq → ⊥
21
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
124 lemma3 = {!!}
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
125
22
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 21
diff changeset
126 lemma4 : Muller ωa1 flip-seq → ⊥
21
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
127 lemma4 = {!!}
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
128
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
129
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
130
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
131
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
132
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
133
ddf5f2f5fde8 add omega
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
134