annotate problems @ 10:f2aa38ce0787

add state display.
author kono
date Fri, 19 Jan 2001 23:14:00 +0900
parents 9b86eb10b61c
children 66d0522d46e8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10
f2aa38ce0787 add state display.
kono
parents: 6
diff changeset
1 Fri Jan 19 20:59:46 JST 2001
f2aa38ce0787 add state display.
kono
parents: 6
diff changeset
2
f2aa38ce0787 add state display.
kono
parents: 6
diff changeset
3 | ?- ex((infinite -> @infinite)).
f2aa38ce0787 add state display.
kono
parents: 6
diff changeset
4
f2aa38ce0787 add state display.
kono
parents: 6
diff changeset
5 state(1 , not(true&false),@ (true&false))
f2aa38ce0787 add state display.
kono
parents: 6
diff changeset
6 [][empty]->empty
f2aa38ce0787 add state display.
kono
parents: 6
diff changeset
7 [][more]->true
f2aa38ce0787 add state display.
kono
parents: 6
diff changeset
8
f2aa38ce0787 add state display.
kono
parents: 6
diff changeset
9 0.021000000000000796 sec.
f2aa38ce0787 add state display.
kono
parents: 6
diff changeset
10 1 states
f2aa38ce0787 add state display.
kono
parents: 6
diff changeset
11 2 subterms
f2aa38ce0787 add state display.
kono
parents: 6
diff changeset
12 2 state transions
f2aa38ce0787 add state display.
kono
parents: 6
diff changeset
13 verbose,renaming,singleton,length limit 5
f2aa38ce0787 add state display.
kono
parents: 6
diff changeset
14 valid
f2aa38ce0787 add state display.
kono
parents: 6
diff changeset
15
f2aa38ce0787 add state display.
kono
parents: 6
diff changeset
16 yes
f2aa38ce0787 add state display.
kono
parents: 6
diff changeset
17 | ?- infinite.
f2aa38ce0787 add state display.
kono
parents: 6
diff changeset
18 unsatisfiable in infinite interval.
f2aa38ce0787 add state display.
kono
parents: 6
diff changeset
19
f2aa38ce0787 add state display.
kono
parents: 6
diff changeset
20 これは... どういうことなんでしょうね? inifite は基本的に
f2aa38ce0787 add state display.
kono
parents: 6
diff changeset
21 false だから、inifite-> タイプのものは、すべて、infinite unsatisfiable
f2aa38ce0787 add state display.
kono
parents: 6
diff changeset
22 だね。
f2aa38ce0787 add state display.
kono
parents: 6
diff changeset
23
f2aa38ce0787 add state display.
kono
parents: 6
diff changeset
24 Fri Jan 19 20:40:37 JST 2001
f2aa38ce0787 add state display.
kono
parents: 6
diff changeset
25
f2aa38ce0787 add state display.
kono
parents: 6
diff changeset
26 割りと簡単なアルゴリズムで、satisfiabilityは、チェック
f2aa38ce0787 add state display.
kono
parents: 6
diff changeset
27 できました。これが、正しいかどうかは Moszkowski によるけど...
f2aa38ce0787 add state display.
kono
parents: 6
diff changeset
28 inifnite
f2aa38ce0787 add state display.
kono
parents: 6
diff changeset
29 *skip
f2aa38ce0787 add state display.
kono
parents: 6
diff changeset
30 *((skip&skip))
f2aa38ce0787 add state display.
kono
parents: 6
diff changeset
31 などに関しては、うまく動くようですね。
f2aa38ce0787 add state display.
kono
parents: 6
diff changeset
32
f2aa38ce0787 add state display.
kono
parents: 6
diff changeset
33 vailidity checker が欲しい所だけど... どういうものがvalidなのかは、
f2aa38ce0787 add state display.
kono
parents: 6
diff changeset
34 良くわからない。もちろん、否定が unsatisfiable ならば、valid なの
f2aa38ce0787 add state display.
kono
parents: 6
diff changeset
35 だが。
f2aa38ce0787 add state display.
kono
parents: 6
diff changeset
36
f2aa38ce0787 add state display.
kono
parents: 6
diff changeset
37 でも、この方法だと、
f2aa38ce0787 add state display.
kono
parents: 6
diff changeset
38 satisfiable in ω-interval implies
f2aa38ce0787 add state display.
kono
parents: 6
diff changeset
39 falsifiable in finite interval
f2aa38ce0787 add state display.
kono
parents: 6
diff changeset
40 ってことになるらしい。
f2aa38ce0787 add state display.
kono
parents: 6
diff changeset
41
6
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
42 Fri Jan 19 07:48:59 JST 2001
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
43
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
44 Streett ∩_i []<>L_i ⊃ <>[]U _i
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
45 Rabin ~(∩_i []<>L_i ⊃ <>[]U _i)
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
46
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
47 という構造を持っている。これは、
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
48 ある無限回繰り返す所 L から先は、いつか、ずーっと U を通るようになる
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
49 のと、その否定という構造になっている。これを、
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
50 labeled tree の、ある所から先は、ずーっと「あるマークがついている」ループ
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
51 で表す。
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
52
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
53 で、そのアルゴリズムだけど...
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
54
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
55 depth first に「出口の無いノード」を探す。そこをマークする。そこから、
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
56 ノードを覚えながら、出口の無いノードを手繰る。ループが出て来たら検出
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
57 完了。最後までいったら、マークに戻り、次の出口の無いノードを探す。
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
58 これをdepth first search が終るまで繰り返す。したがって、計算量は、
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
59 ノード数N に対して、最悪 N^2/2 ( N+(N-1)+(N-2)...1 ) である。それほど
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
60 悪くは無いか。
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
61
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
62 Fri Jan 19 04:27:42 JST 2001
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
63
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
64 えーと、LICS のpaper は、やたら複雑だが、要は、ω-automatonの
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
65 否定の問題だよね。だから、false loop detection が、ちゃんと、
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
66 ITL の否定の定義に一致していることさえ見れば良い。
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
67
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
68 finite interval では、既に一致しているわけだから、(true & false )
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
69 のsatisfiabilityの定義を無理して一致させる必要は無い。一致しなければ、
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
70 異なるaxiomatiazation を見つけたことになる。だから、false loop
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
71 detection が negetation consistent ならば、たぶん、一致するんだろう。
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
72
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
73 結局は、Rabin automatonのacceptabilityをチェックすることになるんだろう。
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
74 ってことは、non deterministic buchi automaton を扱うってことか。
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
75
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
76 Rabin <-> Streett complimentary
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
77
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
78 (true & false)に関しては、<>[](not_empty) だよな。
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
79 infinite -> <>[](more)
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
80
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
81 ってことは... やっぱり、false_loop detection でいいんじゃないかなぁ。
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
82
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
83 えーと、
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
84 すべてのterminating loop で、empty->true がない => infinite
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
85 だから、ω区間で充足ってのは、
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
86 terminating loop に empty->trueがないものがある
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
87 だから、ω区間で恒真ってのは、
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
88 terminating loop に empty->trueがない
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
89
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
90 となる。その否定を取ると、true/false が逆転する。(のか?)
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
91
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
92 しかし、terminating loop でなくても、ω区間を実現することはできる。
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
93 infinite & P -> infinite
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
94 だから。この場合も充足っていうんだろうな。この場合は、どうせ P
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
95 は、tableau で無視されるので問題無い。
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
96
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
97 って、ことは、terminating loop だけを見ればよろしい。
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
98
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
99 execution example は、
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
100 s s s s s s (s s s s s s)*
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
101 という形を取る。なので、必ず最小モデルの性質を持つ。
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
102 実際には、* の中は、非決定的で良い。
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
103
9b86eb10b61c *** empty log message ***
kono
parents: 5
diff changeset
104
5
75a40129f638 *** empty log message ***
kono
parents: 4
diff changeset
105 Fri Jan 19 02:18:39 JST 2001
75a40129f638 *** empty log message ***
kono
parents: 4
diff changeset
106
75a40129f638 *** empty log message ***
kono
parents: 4
diff changeset
107 <>empty と infinite = (true & false ) は、両立しない。
75a40129f638 *** empty log message ***
kono
parents: 4
diff changeset
108 <>empty = finite & empty = ~(true & false) & empty
75a40129f638 *** empty log message ***
kono
parents: 4
diff changeset
109
75a40129f638 *** empty log message ***
kono
parents: 4
diff changeset
110 ~(true & false ) はなにを示しているかと言うと...
75a40129f638 *** empty log message ***
kono
parents: 4
diff changeset
111 いつでも「終れる」ということ。infinite は、「終れない」
75a40129f638 *** empty log message ***
kono
parents: 4
diff changeset
112
75a40129f638 *** empty log message ***
kono
parents: 4
diff changeset
113 ω区間には、empty exit は存在できない。正確には、
75a40129f638 *** empty log message ***
kono
parents: 4
diff changeset
114 ... [ no-empty loop ] ....
75a40129f638 *** empty log message ***
kono
parents: 4
diff changeset
115 ということ。そういうsub 区間があれば良い。
75a40129f638 *** empty log message ***
kono
parents: 4
diff changeset
116
75a40129f638 *** empty log message ***
kono
parents: 4
diff changeset
117 [](more) は? もちろん、これは、Lite では、false.
75a40129f638 *** empty log message ***
kono
parents: 4
diff changeset
118 ~(finite & ~more)
75a40129f638 *** empty log message ***
kono
parents: 4
diff changeset
119 ~(~(true & false) & ~more))
75a40129f638 *** empty log message ***
kono
parents: 4
diff changeset
120 ~(~(true & false) & empty))
75a40129f638 *** empty log message ***
kono
parents: 4
diff changeset
121 これが ω区間で true になるためには...
75a40129f638 *** empty log message ***
kono
parents: 4
diff changeset
122
75a40129f638 *** empty log message ***
kono
parents: 4
diff changeset
123 []のinifinite versionは?
4
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
124
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
125 http://research.commpaq.com/SRC/esc/
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
126
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
127 Fri Jan 19 01:20:54 JST 2001
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
128
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
129 ω区間は、必ず、(s_n...s_m)* を含む。decidableならば、そうだ。
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
130 が、それは、証明が必要がだけど。
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
131
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
132 逆に、(s_n...s_m)* を含めば、そこをずーっと繰り返すことにより、
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
133 ω区間を実装できる。だから、そういうループを見つければ、
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
134 ω区間上で satisfiable だということができる。
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
135
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
136 その区間上で、∨empty のようなexitが許されるのか? たぶん、
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
137 許されない。ということは、やはり、false loop を見つければ
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
138 良いと言うことか。
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
139
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
140 そのアルゴリズムは?
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
141
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
142 ω区間では、empty で抜け出ることができない。->
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
143 <>empty がfalse
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
144 どうも正しそうだな。
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
145
5
75a40129f638 *** empty log message ***
kono
parents: 4
diff changeset
146 えーと、何か、安全なアルゴリズムがありそうだけど...
75a40129f638 *** empty log message ***
kono
parents: 4
diff changeset
147 簡単なのは、すべてのループをdepth first で探すことだな。
75a40129f638 *** empty log message ***
kono
parents: 4
diff changeset
148
75a40129f638 *** empty log message ***
kono
parents: 4
diff changeset
149 とすると、finitarity をチェックするのは結構面倒になる。
75a40129f638 *** empty log message ***
kono
parents: 4
diff changeset
150
75a40129f638 *** empty log message ***
kono
parents: 4
diff changeset
151 finitarity とはなに?
75a40129f638 *** empty log message ***
kono
parents: 4
diff changeset
152 ループには必ずtrue exitがある
75a40129f638 *** empty log message ***
kono
parents: 4
diff changeset
153 infiniteness とは、
75a40129f638 *** empty log message ***
kono
parents: 4
diff changeset
154 exit のないループがある
75a40129f638 *** empty log message ***
kono
parents: 4
diff changeset
155
75a40129f638 *** empty log message ***
kono
parents: 4
diff changeset
156 []<>(p) = <>[](p) は、どうなるんだろう?
75a40129f638 *** empty log message ***
kono
parents: 4
diff changeset
157 <>(p) = finite & p
75a40129f638 *** empty log message ***
kono
parents: 4
diff changeset
158 ~(finite & ~(finite & p)) = finite & ~(finite & ~p)
75a40129f638 *** empty log message ***
kono
parents: 4
diff changeset
159 ですか。
75a40129f638 *** empty log message ***
kono
parents: 4
diff changeset
160
75a40129f638 *** empty log message ***
kono
parents: 4
diff changeset
161
4
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
162 Fri Jan 19 00:33:43 JST 2001
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
163
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
164 えーと、
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
165 [](false)
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
166 がsatisfiableになることはない。
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
167 ~(true & ~ false)
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
168 ~(true & true)
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
169 だから。
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
170 true & ~true
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
171 は、許される。しかし、
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
172 ~true & ~true
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
173 は許されない。これ自体は、今のverifier でも、そうなる。
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
174
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
175 tableau expansion 自体は同じだと考えて良いのか?
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
176 特に異なる inference rule があるわけではないらしい。
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
177
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
178 だとすれば、必要なコードは、false loop detector だけか?
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
179 exe/diag の代りに、infinite_exe,infinite_diag を作るのだろうか。
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
180
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
181 infinite_exe は、ループを表示しなければならない。必ず、
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
182 そのようなループが存在するのだろうか? とすると、infinite
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
183 interval は、prefix のようなものになる。実は、prefix
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
184 がinfinite interval そのもの? prefix(finite,....)
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
185 みたいなものだね。これは、どっかで見たことが...
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
186
029b5a5ac494 *** empty log message ***
kono
parents: 2
diff changeset
187
2
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
188 Thu Jan 18 22:42:24 JST 2001
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
189
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
190 | ?- ex(((true&false)->(<>(empty)))).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
191
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
192 は、valid になってしまう。実際には、infinite->not(<>(empty)).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
193
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
194 Thu Jan 18 21:04:13 JST 2001
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
195
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
196 まず、chop.pl の中の、X & false をfalseに変換しているのを
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
197 抜く必要がある。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
198
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
199 Thu Jan 18 19:59:33 JST 2001
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
200
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
201 in POPL01
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
202
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
203 LICS00 の infinite を入れるように Lite を拡張することが
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
204 できるのか?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
205
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
206 単純な拡張にはならない。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
207 infinite =def (true & false )
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
208 だから。これは、今の実装では unsatisfiable。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
209
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
210 P&Q で、Q が単純にfalseだからといって、諦められない。今は、node は、
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
211 empty,false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
212 empty,true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
213 more,false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
214 more,some_other
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
215 というように特徴付けられている。これで足りるのか?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
216
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
217 Eventurality check が必要無いと良いんだけど。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
218
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
219 Rabin automaton ってなんだ? Buchi と同じなんじゃないの?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
220
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
221 true & false は、
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
222 empy -> false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
223 more -> true & false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
224 に展開される。今は、empty だけを見て、validity/satisfiability を
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
225 調べている。しかし、これを、
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
226 「ある特定のfalse exit ループをsatisfiableだとみなす」
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
227 ことにより、infinite interval を導入することができる。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
228
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
229 問題は、どのような false exit ループが satisfiable だという
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
230 こと? というよりは、これで unsatisfiable になる formulaって
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
231 何?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
232 more -> false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
233 のたぐいだけか?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
234 finite
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
235 empy -> true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
236 more -> true & true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
237 は、どうなる?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
238 ~infinite
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
239 empy -> true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
240 more -> ~(true & false)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
241 となる。なので、これは finite に等しい。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
242
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
243 infinite は、false loop を表していると考える。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
244
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
245 全ての式Pを、finite -> P で、チェックすれば、finite LITL になる。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
246 (ならなければいけない)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
247
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
248 って、ことは、false loop をdetectすれば良いだけか? これは、
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
249 結構易しいが、計算量的には、ちょっと大変かな。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
250 finitely
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
251 valid, satisfiable, unsatisfiable...
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
252 inifinitly
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
253 valid, satisfiable...
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
254 infinitely satisfiable とは、
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
255 flase loop が存在すること
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
256 valid は、
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
257 false loop 以外は、empty false であること(?)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
258
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
259 えーと、それだと、inifinitly satisiable な式は、finitly unsatisfiable
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
260 だけど、それでいいの? だとすると、valid な式はなくなってしまうね。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
261
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
262 これは、ちょっとうれしくないであろう。ということは、
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
263 infinitely valid は、
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
264 false loop 以外は、empty ture であること(?)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
265 を含むと考えるのが正しい。だとすると、
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
266 |= finitie /\ finite
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
267 ってことになるね。それは、ちょっとうれしくないか。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
268
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
269 うーむ、Moszkowski は、どういう選択をしたんだろう?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
270
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
271
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
272 Wed Nov 22 16:27:45 JST 1995
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
273
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
274 rstd 側で limit を扱うことにする。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
275 rename_list でlimitを指定することになる。singleton のlimit
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
276 をはずさないといけないだろう。over(r,N)が外にでないのが
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
277 ちょっと情報不足だな。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
278
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
279 itlstd が idempotent になってなーい!!! しくしく。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
280 itlstd(X,Y,_),bdt2itl(Y,Z),itlstd(Z,Y1,_) でY=Y1になる
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
281 はずなのだが...
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
282
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
283 itlstd2 では、singleton remove, renaming は行なわないで、limit over
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
284 だけを取り扱う。これによってdetailed trace が可能となる。これに、
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
285 従来のitlstdをかければ、もとに戻るはずだ。が、どうも失敗している
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
286 らしい。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
287
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
288 Tue Nov 21 18:33:19 JST 1995
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
289
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
290 renaming の trace は original limit で行なう。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
291 detailed trace は no limit で行なう。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
292 itl/5 は2度呼ばれるが、まあ、良とするか。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
293
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
294 rstd 側でlimitの置き換えをすればだいぶましなんだが...
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
295
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
296 renmaing で、over limit を取り扱う方が統一的か。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
297
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
298 Wed Nov 15 12:58:28 JST 1995
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
299
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
300 over(r,N) が true/false に置き換わっていて、unifyするか?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
301
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
302 いずれにせよ、ちょっと気まずい。どの変数が置き換わるかは、
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
303 renaming を trace すれば分かるが...
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
304
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
305 この置き換えをrstd側で行なって、original/restrictedの両方を
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
306 とっておく。そして、どの変数が置き換わったか分かるようにする。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
307 (renaming informationに入れておく) でも、この情報もどうせ
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
308 lazyに生成するんだよね? なんか変だ。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
309
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
310 あるいは、detailed traceの方では置換えしない? true/false に
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
311 置き換えても同じstateで実現できるはず。だが、unify はしないと
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
312 いけない。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
313
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
314 いずれにせよ、lazy state generation では、
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
315 full trace, restricted trace
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
316 の両方をおこなう。このためには、over の置き換えをrstd で行なった
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
317 方が良いだろう。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
318
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
319 うーむ、でも、そうすると、itlstd がnon-deterministic になって
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
320 しまう。それは、いまいちだ。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
321
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
322 Tue Nov 14 19:56:26 JST 1995
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
323
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
324 Detailed trace の時は Fromula と state number と両方持ち歩かないと
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
325 だめだ。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
326
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
327 ということは、diag routine を書き直さないとダメか。ndcomp は
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
328 あきらめるか?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
329
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
330 Mon Nov 13 22:33:34 JST 1995
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
331
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
332 trace するときにrenaming は、いらないんじゃない?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
333 detailed traceをどうせ使うとすれば... そうすれば、
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
334 choice も考えなくても良い。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
335
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
336 Sun Nov 12 23:37:36 JST 1995
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
337
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
338 ^r のtrace
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
339
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
340 stateは決まっている
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
341 duplicated は rename inforamtion を使ってtrace できる。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
342
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
343 detailed expansion して、unify する。具体的には、
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
344 BDDにそって分解する。これによって、true_false がr^nの
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
345 treeに展開されるはず。されなければ、別のものを探す。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
346
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
347 true_falseのchoiceによって値が異なるわけだけど...?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
348 choice は、一つのBDDに関して一つしかでない。(leafにしかない
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
349 から) ということは、複数のchoice は、
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
350 異なる & の empty
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
351 でしか起きない。なんらかのidentityを残した方がいいんだけど。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
352 ま、結果的に同じstateにいって、すべての条件が尽くされるなら、
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
353 構わないか。detailed expansion はすべてを含んでいるのだから、
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
354 構わないはず。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
355
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
356 まずは、renaming のカタをつけよう。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
357
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
358 もっと選択的に^rをトレースした方が良くない? singleton ^r
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
359 をなんらかのtermにマップできなものか?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
360
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
361 Sat Nov 11 09:55:41 JST 1995
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
362
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
363 2path singleton removal がようやっとできた。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
364 ただし、どうも、order sensitive なんだよな。over が@<,@>に
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
365 よってでる時とでない時がある。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
366
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
367 sbdt_split, sbdt_ife によってremoval/renameによるorderを修正しない
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
368 といけなかった。やむをえないところか?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
369
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
370 しかしsingleton removalを書いたら、もとの方も良くなってしまった。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
371 どうも、bdt routineには問題があったみたい。true & true を除く
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
372 ようにしたのが効いたとも思えないんだが.... sbdt_opt のせいか?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
373
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
374 state numberがでなくなるbugを直した
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
375
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
376 あとは、trace の問題だな。r^nの実行がちゃんとトレースできると
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
377 いいんだけど。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
378
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
379 Thu Nov 9 12:03:32 JST 1995
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
380
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
381 P & Q を、sb(P_BDD & Q_BDD) という形で持っているけど..
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
382 sb(P_BDD,PN)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
383 sb(Q_BDD,QN)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
384 PN & QN という方が良くない? ほとんど同じだとは思うけど....
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
385 ?(PN & QN,true,false) となるのか.... うーん。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
386
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
387 Qの展開を一回に抑えられない? ? を未展開のマークに
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
388 使えないか?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
389
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
390 Wed Nov 8 20:31:23 JST 1995
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
391
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
392 はやり一旦BDDに落して2pathで処理することとする。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
393
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
394 first path: singleton varble の detect
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
395 (regular variableがない場合は、そのままstd_check
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
396 singleton removal で消えることはない)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
397 regular variable が無ければ、これで終了
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
398 rename list を計算
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
399 second path path:
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
400 singleton variable があった場合、
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
401 t/fのtree を parallel traverse
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
402 t/f または、[tf]/tf の組合せをtfに置き換える
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
403 複数のsingleton variableを順不同に処理して良い
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
404
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
405 regular variable があるかどうかは、singleton removval の
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
406 結果に依存するので、1path で厳密に取り除くことはできない。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
407 が、2nd path では確実に取り除くことが出来る。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
408
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
409 ぶぶ、2nd pathは全然処理が違う!! sbdt と共用はできない
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
410
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
411 Tue Nov 7 15:45:07 JST 1995
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
412
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
413 chop のレベルで分ければ、まあ、良い。問題は、そのあと。と、
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
414 考えると、BDDに変換するレベルで対応する方が望ましいかも知れない。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
415 もちろん、今のままでもsafeなんだけど、落ちているものが多い。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
416 それは結果的に状態を増やしていることになる。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
417
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
418 一つの方法は、
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
419 p(^r) => ?(^r,pt,pf)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
420 とする。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
421 (pt,pf; tf), (pt;pf)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
422 と変形する。と、こんな具合。これは重いなぁ。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
423
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
424 (~ ^r), ^r がボトムアップではfにならない。ま、そういうことなんだよな。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
425
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
426 Tue Nov 7 10:38:59 JST 1995
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
427
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
428 どうも、singleton removal だと、[a](^r = length(2)), f(^r)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
429 のようなものは完璧にトレースできるらしい。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
430 [a](^r = length(2)), *(^r) もOk だった。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
431
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
432 でも、さすがに文法記述は発散する。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
433
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
434 結局、どういう制限なのかなぁ? diag 時に、full trace できたかどうかを
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
435 チェックするか...
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
436
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
437 どうも、シングルトンチェックが甘いな。もっと、ちゃんとチェックする
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
438 ためには?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
439
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
440 Mon Nov 6 15:57:46 JST 1995
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
441
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
442 [p_0,p_1,...,p_n] は、
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
443 p_0,p_1,...,p_n -> true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
444 ~ p_0,~ p_1,...,~ p_n -> false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
445 else -> true_false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
446 という形でBDD(MTBDD)になる。3値論理
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
447
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
448 ^r -> true_false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
449
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
450 true_false -> empty? choice ? true : fals
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
451 : true_false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
452
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
453 t,tf -> tf
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
454 t;tf -> t
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
455 tt;tf -> tf
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
456 f,tf -> f
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
457 f;tf -> tf
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
458 tt,tf -> tf
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
459
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
460 (あれ、cross termは?)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
461 確かにこれでうまくいきます。はい。* ^r も完璧。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
462
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
463 問題は、実行をtraceできるかどうかだな。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
464
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
465 Mon Nov 6 08:50:01 JST 1995
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
466
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
467 singleton の効果は有限か?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
468
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
469 BDDの中でsingleton duplicate を許すとすると、これは止まるのか?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
470 selection(uniq set of subterm)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
471 という形になるはず。だから、とまるはず。subtermは有限。singleton には、
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
472 R名による区別さえ必要無い。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
473 ^r -> ^([false,true])
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
474 ^([p_0,p_1...p_n]) -> ^([px_0,px_1...px_n])
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
475 という展開になる? 再sortは必要。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
476
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
477 一般的に、^(r,[p_0,p_1...p_n]) という形で収束しないの? r が一つだったら...
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
478 ネストしたらout。でもnestはあっても固定だから。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
479
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
480 が、これでcomputationをトレースできるのか? いや、特別な展開が必要。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
481
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
482 あと、determinization しないとね。(どうやって?)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
483 ^([p_0,p_1...p_n]) -> ^([px_0,px_1...px_n])
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
484 の際に、px_0 には next のみが入る。そうすれば良い。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
485 itl(p_0,more,..)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
486 での出力はnext,true,false。Ok。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
487
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
488 Sun Nov 5 21:34:33 JST 1995
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
489
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
490 しかし、なんと * ^R は非常に大きな状態を生成する。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
491 ^R と true & ^R の干渉が大きな状態を生成してしまう。(らしい)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
492 これを抑えるには? 一つはlength で頭を抑えることだな。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
493 ああ、でも、やっぱり大きいか。あんまり、うまくない。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
494 length(10) でも結構巨大か..
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
495
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
496 proj でも同じような問題はあったのだけど...
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
497
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
498 ^r の permuation の対称性を何とかしない限りだめだね。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
499 しかし、順序は変えちゃダメなんでしょう? うーむ。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
500 でもさ、モデル自身は小さいんだが.... うーむ。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
501
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
502 いや、この場合は singleton removal が効くみたい。そうか。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
503
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
504 これはsingleton の処理が正しくないからじゃない?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
505
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
506 singleton の効果は有限か?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
507 f(r^1,....r^n) -> exists
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
508 だとすれば有限。だけど、固定してはだめ。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
509 r^s ? length(1) : r^s ? length(2) : ....
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
510 となりうる?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
511
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
512 Wed Nov 1 21:12:04 JST 1995
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
513
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
514 例題ねー... しかし、<>^R が使えないとなると....
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
515 あ、でも、* ^R は使える。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
516
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
517 Mon Oct 16 16:05:31 JST 1995
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
518
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
519 LITL で、closure, proj 抜きだとpolynominal orderの方法がある!?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
520 ~(....&....(...&... ~(...&....)))
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
521 という形で、これにvariable patternを埋め込んでいけば良い。これだと
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
522 marking だから state space database はいらない。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
523
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
524 tableau expansion でも、生成される状態は同じ数だから結果的にpolynominal
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
525 になっていたのかも.... たしかに、quantifier, closure, proj を入れると
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
526 verification は難しくなっていた。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
527
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
528 いや、でも、empty interval があると、そうもいかないか?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
529 ~(....&....(...&... ~(...&....)))
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
530 の任意のchopをand,emptyに変える操作がいる。これは exponential。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
531 p & p & p & p & p
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
532 p & p & p & p,empty , p
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
533 chomp (non-empty interval chop) だったら、大丈夫。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
534
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
535 でも、closure, proj をいれるならおんなじか。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
536
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
537 Mon Oct 9 19:51:27 BST 1995
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
538
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
539 proj では、r^n の n を階層化する。r^0 は、すべての階層で共有される。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
540 他のlengthは共有されないとみるのが正しいのだろう。length(1) proj Q
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
541 だと、r^1^1 = r^0^1 だよね?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
542
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
543 P proj Q で、Q part のnext part は、
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
544 proj の中にencupsulated されているので、term はいじる必要はない。が、
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
545 condition はいじる必要がある。ただし、renaming を original clock
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
546 level と同じにすると limit が効きすぎるだろう。しかし、ここを複雑に
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
547 するのは、どうかなぁ。term level も階層化すれば、問題はない。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
548 (r^n)^n とか...
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
549
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
550 結局、singleton removal は、うまくいかないね。これがうまくいけば、だい
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
551 ぶ範囲が広まるのだが.... せめて、eventuality と同じぐらいまでにできな
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
552 いの? あ、そうか、r^s をmarking と見ればいいわけね。しかし、結構、めん
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
553 どくさいといえばめんどくさい。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
554
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
555 Time constant regular variable
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
556
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
557 renaming なしならば、割と自明。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
558 r^0 ... r^limit
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
559 をunifyすれば良い。renaming ありだと、もう少し複雑になる。r^n を state
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
560 と見るのが簡単。いずれにせよ、かなり制限された感じだね。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
561
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
562 renaming の、もっと気の聞いたalgorithmがあれば...
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
563
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
564 Mon Oct 9 05:48:38 BST 1995
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
565
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
566 ^r -> true/false では、[a](^r=length(2)) が unsatisfiable.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
567 over(r) では、true/false に置き換えている。^r -> +r/-r でも、
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
568 [a](^r=length(2))はだめ。これにさらに工夫がいる。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
569 でも、それはこっちの方がましだということだろう。でも、どれくらい
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
570 ましなの? local でないぐらいか?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
571
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
572 singleton を ^(r,s) で置き換えても、[a](^r=lenth(2)) は、> length(4)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
573 でfail する。なんで?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
574
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
575 Sat Oct 7 17:20:17 BST 1995
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
576
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
577 singleton removal を r^s で行なうと、limit を一つ伸ばす効果が
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
578 あるらしい。したがってlimitまでいくような場合は状態が増える。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
579 r^s の選択を独立に行なうような方法で、ちゃんとできるのか?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
580 できないような気もする。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
581
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
582 Sat Oct 7 10:08:57 BST 1995
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
583
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
584 (1) 番号を詰める (番号limitあり)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
585
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
586 は、やってみたけど、^r には効果があるんだけど、他のはほとんど
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
587 関係ないなぁ。[a](^r...) みたいなものにはきかないのだろう。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
588
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
589 Fri Oct 6 09:46:45 JST 1995
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
590
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
591 (1) 番号を詰める (番号limitあり)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
592 (2) singleton removal
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
593
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
594 この二つでかなりいくはず。(2)どうにかなんないの?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
595
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
596 (3) 番号を構造化する low resolution?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
597
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
598 Edge driven な logic にできるか?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
599
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
600 Thu Oct 5 18:27:29 JST 1995
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
601
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
602 うーむ。length limit は、うまくいくが、それ以外の制限がいまいち
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
603 うまくいかないね。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
604
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
605 rename して ^r の数を制限する方法だと、over に変換されるものが
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
606 あまりにアドホックに決まってしまう。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
607 r^n
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
608 の n に、何か term を持って来れないの?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
609
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
610 total order を持って来るか... 効果あるの? さぁ...
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
611
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
612 Sun Sep 24 01:14:36 JST 1995
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
613
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
614 だから、
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
615
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
616 ^r = false にすると、
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
617
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
618 [a](^r=legth(2)) -> [a](false=legth(2))
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
619 [a](false=legth(1))
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
620 [a](false=legth(0)) = unsatisfiable
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
621
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
622 になるからだめなの。うんうん。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
623 true = length(2) も false = length(2)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
624 も、両方ともunsatisfiable。どちらかというと、
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
625 (length(2);not(length(2))) & true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
626 となるのが正しい。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
627 (length(2) & true) ; (not(length(2)) & true)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
628 は? これは Ok なはず。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
629
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
630 だったら、expansion する前にsingletonをチェックして、singleton
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
631 に対しては quantifiy してしまうってのは? うーむ...
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
632
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
633 じゃあ、なんで ^r -> ^r;not(^r) ではだめなのか?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
634 これは、終りを共有するものをいっしょにしているから。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
635
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
636 ^r on n+1
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
637 |--| T
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
638 |-| F
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
639 || F
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
640 |-| T
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
641 || F
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
642 || F
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
643
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
644 とする
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
645
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
646 ^r on n
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
647 |---|
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
648 |--|
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
649 |-|
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
650 ||
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
651
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
652 が新しいもの。これらは、独立。ふんふん。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
653
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
654 Tue Sep 19 23:53:19 JST 1995
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
655
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
656 どうも変だな。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
657 down(r^0) と true;false とはどこが違うんだ?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
658 state(1 , not(true& ?(^r,not(@ @empty),@ @empty)&true))
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
659 [a](^r = length(2))
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
660 [empty,down(r,0),up(r)]->false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
661 [empty,not(down(r,0)),up(r)]->empty
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
662 [empty,down(r,0),not(up(r))]->empty
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
663 [empty,not(down(r,0)),not(up(r))]->empty
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
664 [more,down(r,0),up(r),ev(r^0)]->false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
665 [more,not(down(r,0)),up(r),ev(r^0)]->2
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
666 not(true& ?(^r,not(@ @empty),@ @empty)&true);
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
667 [a](^r = length(2));
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
668 not(not(@empty)&true),not(@empty&true)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
669 [i](length(1)),not(length(1)&true)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
670 [more,down(r,0),not(up(r)),ev(r^0)]->3
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
671 not(true& ?(^r,not(@ @empty),@ @empty)&true);
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
672 [a](^r = length(2));
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
673 not(@empty&true)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
674 not(length(1)&true)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
675 [more,not(down(r,0)),not(up(r)),ev(r^0)]->3
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
676
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
677 やっぱり違う。true だと、length(1)でtrue length(2)でfalseという
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
678 技が出来ない。この選択はこの場所で独立に選択しなくてはならない。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
679 (ええ?だけど、true;false なんだから... だったらtrueか?)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
680 +r, -r の方がましか?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
681
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
682 Sat Sep 16 11:44:25 JST 1995
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
683
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
684 singleton ^r を true, false に置き換えると、[]true,[]false の意味に
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
685 なってしまう。実際は、true/false なのに。だから、singleton removal
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
686 はうまくない。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
687
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
688 t0: ^r = length(2)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
689 t1: r^0 = length(1) empty/not(r^0)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
690 t2: r^0 = mpty(1) empty/r^0
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
691
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
692 Quantifierに置き換える? だったら残しておいた方がまし?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
693 何かoperatorを作る?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
694 some -> true/false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
695 quantified true? <>false かな? not([](true)) = not(not(true & not true))).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
696 でも、これだといつかはfalseになってしまう。operatorにすると、deterministic
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
697 でなくなるか。それはまずい。negationが。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
698
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
699 Fri Sep 15 11:26:13 JST 1995
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
700
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
701 singleton check をitl時にすることはできない?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
702
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
703 Wed Sep 13 18:24:24 JST 1995
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
704
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
705 結局、RITLは CFG を含んでいるのだから、Regular Subset を決めることは
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
706 できない。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
707
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
708 ^r のdepthを制限すれば、ある程度はできる。しかし、これでは
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
709 fairnessにはならないね。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
710
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
711 depth 以外の制限は? 状態数の制限が望ましい。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
712
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
713 singleton の remove でかなりのことが出来ると言えば、そうなのだが。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
714
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
715 singleton remove のタイミング?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
716 itlの時に detect?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
717 itlstd の時に detect?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
718 remove の仕方
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
719 eventually(^r,N)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
720 eventually(not(^r,N))
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
721 を挿入する。ということは、itldecomp の show の直前で
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
722 行えば良い。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
723
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
724 しかし、これだと正確な状態出力ではない。ではないが原理的にトレース
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
725 できる部分をはしょっているだけ。mark を付けるのでは同じになってしまう。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
726 やはりremoveしたい。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
727
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
728 ^rの出現頻度を押さえることで、logicになるか? 例えば2つとか?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
729
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
730 * consistent にならない==safeでない(標準形を工夫すれば...)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
731 * でなくても良いという考え方もある。characterriseできる?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
732
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
733 いずれにせよ、singleton removal でどこまでいくかだな。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
734
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
735 Sun Jul 23 10:16:02 JST 1995
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
736
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
737 * ^r -> +r, -r depth によって独立に選択
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
738 * +r も r^depth により選択
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
739
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
740 これだと、[a](^r),<>(not(^r))がsatisfiable
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
741
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
742 * ^r -> +r, -r depth によって独立に選択しない
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
743
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
744 と、[a](^r=length(2))がunsatisfiable
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
745
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
746 うーむ、うまくいかん。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
747
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
748 Sat Jul 22 12:52:11 JST 1995
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
749
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
750 * depthの違いはchopの処理で行なう
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
751 * ^rのemptyと、+r, -rのemptyは独立
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
752 * ^rのmoreと、+r, -rの関係
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
753
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
754 +r, -r は、異なるdepthでT/Fの時に生じる
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
755 既に +r がある時は、それに合流して良い
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
756 +r/\-r となることはない。それはfalse。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
757
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
758 |-------| +r
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
759 |---------| -r
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
760 ^r +r とする
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
761 not(^r)があったら-rとする
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
762
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
763 これでいいか?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
764 tailを共有するrである not(^r),と^rの扱いは対称
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
765 ^r/-rの組合せは?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
766
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
767 +r, -r が解消される場合
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
768
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
769 * +r or -r がempryになるとき
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
770 -r はemptyにならない
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
771
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
772 +rが残って害があるか? -rがなければ関係ない
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
773 状態は増えるけど。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
774
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
775 Fri Jul 14 18:31:19 JST 1995
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
776
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
777 異なる chop で、異なるrの番号を付ける。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
778 その番号毎に up(^r), down(r,n) を行なう
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
779
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
780 これによって、すべての組合せが一応得られる。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
781
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
782 番号は状態には付加しない。(いいのか?)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
783 同じinterval上では、
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
784 r, not(r)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
785 があり得る... これは... 気まずいか。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
786 ^r -> +^r, -^r
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
787 とする? すると... +up, -up がある?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
788
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
789 まあ、試してみよう。(やっぱりだめだった...)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
790
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
791 Thu Jul 13 14:05:06 JST 1995
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
792
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
793 r^n の数を減らす
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
794 => 等価でユニークな表現
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
795
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
796 singleton r^n は消せる
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
797
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
798 doubleton r^nどうしを融合したい。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
799
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
800 新しいrをr^nに相対的に定義する (それはできるのだが... +r/-r)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
801 のは、うまくいったのだが、足りないものがある。状態数が
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
802 足りない。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
803
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
804 * 必要な状態数のみを区別する
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
805 * 同じ結果を生じる変数は区別しない
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
806
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
807 自分自身と同じかどうか / 違うということを覚えないといけない
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
808 同じだったら関係ない
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
809
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
810 What happen in next case? ([a](^r))
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
811
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
812 not(r^5) & true, r^5 & true, ^r & true, not(^r) & true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
813
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
814 ---|-----| r^5
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
815 ---|----| r
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
816
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
817 r^5が落ちれば一つ減る。減らなければr^6で一つ増える。しかし、
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
818 この場合は増えてはいけない。r^5 と ^r 自身は関係が無い。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
819 が、結果は同じという関係がある。( うがー、わからないよう.... )
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
820
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
821 st6:
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
822 not(r^5) & true, r^5 & true, ^r & true, not(^r) & true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
823
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
824 up(^r),down(r^5),down(^r) @not(r^5)&t, t, t, @not(r^6)&t
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
825 up(^r),down(r^5),not(down(^r)) @not(r^5)&t, t, @(r^6)&t, t
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
826 up(^r),not(down(r^5)),down(^r) t, @not(r^5)&t, t, @not(r^6)&t
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
827 up(^r),not(down(r^5)),not(down(^r))
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
828 t, @not(r^5)&t, @(r^6)&t, t
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
829
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
830
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
831 Mon Jul 10 20:01:46 JST 1995
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
832
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
833 f(^r) => contratint_1(^r) & continuation_1(^r)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
834 g(^r) => contratint_2(^r) & continuation_2(^r)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
835
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
836 r(r^n)&c(r^n) がnを除いて等しい時、
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
837 r^n => r^n' がいえる。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
838 けど、別に等しい必然性もない。(たしかに...)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
839
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
840 r^nはquantifyして良い。ということは、同じなら消して良いということ?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
841 ということか。cross term は?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
842 exists(^r, empty(^r)? ...)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
843
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
844 r0: { +r(const, continu),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
845 -r(const, continu) }
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
846 r1: { +r(const, continu),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
847 -r(const, continu) }
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
848
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
849 いつかは
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
850 +r(empty,continu)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
851 +r(true,continu)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
852 のどちらかにいく。いや、いかない。emptyなら問題無い。trueが問題(?)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
853 +r(fixpoint,contiu)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
854 という形になる。これがたくさん存在するということになる。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
855 +/-r^n(fixpoint_k,continu_k_i)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
856 というわけだ。この場合のr^nの重なりが解消できれば問題は解決。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
857 うまくいかないね...
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
858
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
859
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
860 で、同じものは消して良い。順序をそろえないと消しにくい。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
861 違うrでも同じカッコなら消して良い。(reular variableは、実質は
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
862 一つ, ^r => r,^common にするか? それはちょっと違う)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
863 この場合は消しても干渉のパターンが変わらない。干渉パターン
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
864 ごとにマッチングをとるから。(有限の組合せなのか?)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
865
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
866 消すのはterm levelでおこなう?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
867 c(r^n, i_n...) & ...
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
868 c(r^n, i_n...)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
869 というtermしかr^nに関してはでてこない。消せるんだったら、他の
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
870 方法はいい加減でも大丈夫。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
871
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
872 f(r^n)とf(r^n'1)の関係
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
873 |------|-|
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
874 |----|-|
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
875 r^n, r^n' 自身は独立
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
876
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
877 r^1(r,c)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
878 r^2(r,c)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
879 empty(r^1),empty(r^2),empty(r) => c
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
880 cross term
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
881 empty(r^1),more(r^2), empty(r) => c,(more(r),r^1(@(r),c))
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
882 more(r^1),more(r^2), more(r) =>
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
883 more(r),r^1(@(r),c),r^2(@(r),c)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
884 ==
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
885 r^1(c);c,more(r),r^1(@(r),c);more(r),r^1(@(r),c),r^2(@(r),c)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
886 他のr^nと干渉する方法が変わってしまう...
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
887
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
888
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
889 Sun Jul 9 15:32:43 JST 1995
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
890
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
891 r^1 & true;
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
892 r^2 & true;
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
893 r^3 & true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
894
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
895 一つにまとめられない?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
896
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
897 f(+/- r^n) (必ずtopにある/一度展開されているから)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
898 |-------------|-----------|
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
899 down(r^n) => true/false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
900
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
901 性質
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
902 f(+/- r^n)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
903 down(r^n) => f((+/-true ,empty))
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
904 not(down(r^n)) => f(+/- r^n)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
905 parallel termがある時は無くなるまで展開する
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
906 r^n, *length(3) などは? これは無視して良い
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
907 r^n, *length(3) & true が問題
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
908 => evenrually true + *length(3)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
909
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
910 だから、nが複数あっても、f((+/-true ,empty))が同じなら同じでよい(?)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
911
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
912 f(+/- r^n) => true & down(r^n),f(+/-true,empty)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
913 => down(r^n) = eventually(f(+/-true,empty))
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
914
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
915 ということは、やっぱりdown(r^n)を外に出せるということ?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
916 r^n & true なら eventually(true)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
917 not(r^n) & true なら?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
918
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
919 ふむ。そして eventually(f) の f にはr^nは入らない。これは
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
920 いけるかも知れない。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
921
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
922 chopの処理の時に、eventuality listをbdtの形で外に出せば良い。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
923 eventuality が満たされた時がr^nが成立した時。(これも
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
924 前考えたな...)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
925 ^r & ....
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
926 という形だけ?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
927
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
928 (^r, g) & f => ev(f),(g & f) ちょっと違う...
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
929 (^r & f),(g & f)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
930
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
931 とは少し異なるよ。not がうまくないはず。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
932 not(ev(f)); not(g & f) (?)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
933
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
934 そうか... ev(f)が満たされれば、^rは落ちて良い。(落ちれる)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
935 落ちなくてもいい。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
936
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
937 前もってevenruality formにITLを書き換えるのは?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
938 f(r) => g(eventualy(h))
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
939
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
940 本当にdiceidableなのか? 整数方程式が書けるとすれば...
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
941
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
942 Fri Jul 7 18:51:32 JST 1995
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
943
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
944 true & ^r & true =>
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
945 r^1 & true;
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
946 r^2 & true;
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
947 r^3 & true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
948 となる。ということは、ひとつのintervalだけを見て吸収することは出来ない。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
949
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
950 t1 t2
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
951 up(r) down(r^1)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
952 r&true |-------------|--------------------
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
953 not(r&true) |----------------|not(down(r^1)----
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
954 |---|up(r)----|not(down(r^2)-------
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
955
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
956 r^1 は競合するr^1がある時しか関係しない。したがって単独に
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
957 出てくるr^1は現在時点で
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
958 fin(r^1) => true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
959 fin(not(r^1)) => false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
960 を決めて良い。これだけで、true & ^r & true は収束する。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
961 が、それだけで収束するか? たぶん、しない。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
962
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
963 (1)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
964 複数の始点を持つ状態を一つにまとめられればできる。+r, -r はそういう
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
965 方法だった。が一つにはならない。有限な組合せになる。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
966
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
967 (2)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
968 収束するとすれば、共有されたr^nの組が有限な場合である。これは、finiteness
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
969 の条件に相当する。前もって共有される可能性のあるtermを生成できるか? (
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
970 たぶんできる)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
971
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
972 前もって複数出て来た(違うsytactical interval上の)^rに番号を付けて
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
973 識別しておく。競合は、異なる番号上でしか起きない?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
974 [](<>(^r)) = not(ture & not(true & ^r))
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
975 のような場合は? そうか。同じ番号上の共有は+r, -rで構わない。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
976 (true or false だから)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
977 [](<>(^r)) <-> [](<>(^r))
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
978 のような場合は?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
979
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
980 Fri Jun 30 20:08:47 JST 1995
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
981
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
982 f(r^1,r^2,r^3) & true,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
983 g(r^1,r^2,r^3) & true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
984
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
985 f(r^1,r^2,r^3)とg(r^1,r^2,r^3)を見ながらr^nの数を減らさないといけない。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
986
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
987 r^n は、emptyの時しか影響しない。moreの時はtrueと同じ。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
988
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
989 ^r のみが新しいr^nを増やす。これをいかに吸収するかを調べれば良い?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
990
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
991 f(r^cur,r^1,r^2,r^3) & true,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
992 => r^cur ? +f(r^1,r^2,r^3) : -f(r^1,r^2,r^3) & true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
993 g(r^cur,r^1,r^2,r^3) & true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
994 => r^cur ? +g(r^1,r^2,r^3) : -g(r^1,r^2,r^3) & true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
995
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
996
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
997 Fri Jun 30 10:48:46 JST 1995
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
998
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
999 各stateに、regular variableのmapを割り当てる。方法がいまいち
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1000 わからない。^rの生成された状態を識別することが必要。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1001
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1002 ^r(s) をやってみる。昔もやった。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1003 true & ^r
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1004 が爆発する
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1005 r^1 ; r^2; r^3; ... ; true & ^r
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1006 これが
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1007 r^1 true & ^r
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1008 となれば良い。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1009 r^1 .... r^2
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1010 は新しいr^nになる。(相互関係は?) ^r どうしの制約を保持した
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1011 もっとも少ないr^nを選択すれば良い。(この変換はsafe & compete?)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1012 相互関係を保存しないなら^rをすべて共通にすれば良い。が、
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1013 それはうまくいかない。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1014 r^1 , not(r^2) -> r^1, not(r^1) -> false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1015 のような場合があるから。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1016 r^1 , not(r^2) -> r^1
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1017 か?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1018
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1019 他の変数が入る場合は? r^1 .. r^n に依存するtermの変換を
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1020 計算する。= BDT の leaf の数。それを表現できる最小のr^nを
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1021 作る。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1022
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1023 そうすれば、temporal operatorのネストは変わらないのだから、
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1024 全体は有限になるはず。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1025
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1026 これでなんでfullでなくてregularになるの? ^r がcontext dependent
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1027 でないから。 r^1 , not(r^2) -> r^1 は、context dependent では
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1028 できない。(なるほど...)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1029
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1030 Wed May 24 20:32:34 JST 1995
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1031
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1032 ^rは、やはり、
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1033 ^r -> +r, -r
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1034 の変換でなんとかするべき。こうして生成したモデルは、正しいRITLを
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1035 含んでいる。あとは整合性のチェックをすれば良い。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1036
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1037 (1) local consstency check => regular variable
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1038 (2) global consistency check => regular constant
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1039
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1040 どういうようにcheckするの? ん....
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1041
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1042
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1043 昔のbdcomp.pl をbddlibで書き換える。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1044
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1045 characteristic function f(q)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1046 f(q) = more,fx_q(sbn,sbx,P);empty,fn_q(P)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1047
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1048 f(p&q) = f(q) & q
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1049
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1050
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1051 Tue May 2 17:49:35 JST 1995
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1052
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1053 BDDLIBを組み合わせたが、やっぱり Prolog <-> BDD の変換が入るだけ
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1054 遅くなるだけだった。bdtstd.pl は綺麗になるのだが。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1055
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1056 前作ったBDDの方式も遅くなるだけだった。(BDT/*) それは、
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1057 BDD の leaf をnext leafに展開
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1058 BDDの再構成
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1059 next leafを2-3 treeに登録
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1060 新しいnext leaf をさらに展開
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1061 というのがすごく遅かったから。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1062
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1063 Charcteristic Function を作り上げる方法は、今一だ。でもBDDLIBなら
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1064 うまくいくかもしれない。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1065
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1066 Subtermを前もって、すべて、
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1067 condition, next
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1068 というBDDに展開しておいたら?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1069
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1070 Quantifierなどは、Subtermの中に状態が現れてしまう。だから、
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1071 前もって、中を展開しておく。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1072
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1073 そうすれば、あとの処理は、BDDのみでできるはずだ。(しかし、CF法と
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1074 結果は同じ?)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1075
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1076 Wed Mar 29 17:22:43 JST 1995
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1077
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1078 regular(r,....r....)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1079 という形を使う ( QPTL <-> RITL だから... )
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1080
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1081 Quantifierを直接使うのは?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1082 st(0) = exists(c, c->st(1),not(c)->st(2))
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1083 さぁ...
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1084
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1085 begin(r,formuala) -> T/F
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1086 end(r,formula) -> T/F
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1087
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1088 異なるうformulaが実は同じだった。-> いつか regular(r, f)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1089 という同じ形になる。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1090
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1091 regular(r,f(r))
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1092 empty(f(r)) -> r=true,empty
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1093 not(empty(f(r))) -> r=false,empty
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1094 regular(r,f(r))
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1095 more(f(r)) -> r=true,regular(r,fx(r))
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1096 not(more(f(r))) -> r=false,regular(r,fx(r))
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1097
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1098 したがって生成されるモデルは冗長。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1099
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1100 chop が来た時に r をreset しないといけない。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1101 (だよね...) だったら、regular(r,f(r))はいらない?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1102 どうやって? r を前もって宣言するってのは?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1103
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1104 PDA との関係は?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1105
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1106 Thu Dec 15 20:21:58 JST 1994
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1107
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1108 Modelとの対応
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1109
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1110 t0 -[+-]-> t1 -[+-]-> t2 -[+-]-> t3
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1111
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1112 |---------|-----------|
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1113 r0 r1 r2
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1114 |-----------|-----------|
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1115 r0' r1' r2'
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1116
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1117 r0 は常に要素0から始める。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1118 から始める。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1119 r0 -[-]-> r1 で集合の要素にシフトする。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1120 r0 -[+]-> r1 で次の時間のものと違うFAであることを表す。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1121
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1122 Mon Nov 28 19:27:37 JST 1994
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1123
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1124 RITLステートをITL formulaのbool代数で表す。bool代数はBDDで表現する。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1125
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1126 もともとITL formula自身がsubtermの集合だから、二重のbool代数になる。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1127 したがって、double exponential algorithmとなる。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1128
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1129 r/not(r) flip では、すべての組合せは生じるが、すべての組合せの
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1130 連結は表現できない。したがって、生じたすべての組合せをとって
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1131 おけば良い。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1132
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1133 集合の作り方
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1134 r/not(r) flip で生じたLITLを集合として持つ (implementationは?)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1135
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1136 r の例
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1137 [1] r -(+r)-> r, r -(-r)-> not(r) {r,not(r)}
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1138 [2] r -> {r,not(r)} -> {r,not(r)} (終り)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1139
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1140 t & r の例 (detailは異なる。emptyの場合があるから)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1141 [1] t & r -(+r)-> r\/t & r, t & r -(-r)-> not(r)\/t & r
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1142 {r\/t&r, not(r)\/t&r}
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1143 [2] {r\/t&r, not(r)\/t&r} -> {r;t&r, not(r);t&r} (終り)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1144 [a](r=length(2))の例
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1145 [1] [a](r=length(2)) -(+r)- > r =length(1)/\[a](r=length(2))
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1146 -(-r)- > not(r)=length(1)/\[a](r=length(2))
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1147 {r =length(1)/\[a](r=length(2)),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1148 not(r)=length(1)/\[a](r=length(2))}
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1149 [2] {r =length(1)/\[a](r=length(2)),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1150 not(r)=length(1)/\[a](r=length(2))} =>
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1151 { r =length(0)/\ r =length(1)/\[a](r=length(2)), F
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1152 r =length(0)/\ ~r =length(1)/\[a](r=length(2)),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1153 ~r =length(0)/\ r =length(1)/\[a](r=length(2)),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1154 ~r =length(0)/\ ~r =length(1)/\[a](r=length(2))} F
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1155 [3] => [2] へ
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1156 or [1]'へ (r=length(1)がtrueの場合)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1157
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1158 もっとコンパクトになるんじゃない? (これだとfinitenessは明解だけど)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1159 ITL(r)は、rをr/not(r)に任意に置換したもののsubset。どれとどれが一致するかを
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1160 覚えれば良いのでは? => 開始時点が等しいものが一致。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1161 Indexを付けるのはダメ。=> モデルが有限にならない。(うーむ、わからない)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1162
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1163 ITL(r) => 展開 => subset
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1164
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1165
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1166 モデルの解釈
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1167
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1168 bool代数は、rのassignmentが与えられると解決する。しかし、一つの
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1169 ノードが別な解釈を共有することもあり得る。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1170
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1171 Term間は任意に遷移するのか?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1172 そうではなくて、同時に遷移する。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1173
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1174 異なる開始時点を持つrは、同時に異なる遷移を廻る
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1175 すべて可能な遷移があるわけではなく、いくつかはFとなり禁止となる
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1176 => r に対する制約
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1177
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1178 実行できる?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1179
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1180 bool節の一つのinstanceを適当に実行すれば良い
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1181
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1182 Rに単一のautomatonを割り振ることは可能か?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1183 [a](R = r) where r is automaton constant
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1184
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1185 時間を遡ってモデルを作る
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1186
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1187 これによって、state minimizationも同時に走らせることができる
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1188 Minimizationのテストプログラムを作って見ること
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1189
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1190 Thu Nov 24 14:54:00 JST 1994
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1191
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1192 LTTL = LITL < RE
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1193 LITL* = RE
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1194 RITL = RE RITL(= 2nd order LITL)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1195 RITL is decidable
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1196
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1197 LTTL = LITL on compact time
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1198
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1199 Even(p)は、LITLでもだめ。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1200 (p.)* ができない
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1201 (abac)* -> (a[bc])*
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1202
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1203 LITL -> LTTL converter
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1204
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1205 LITL/LTTLは、やっぱり群を構成する
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1206
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1207 []a & []b & []a
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1208 a...ab...ba...a -> a until (b until []a)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1209 だからconversionできる?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1210 a & b & aは
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1211 a, <>(b, <>a)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1212 か... うう、できそうな気がする...
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1213
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1214 P & Q -> start(P),(run(P) until lttl(Q)) に変形する
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1215 run(P)にはquantifierが入るのか? 入らない?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1216
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1217 events continue
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1218 |----------|..........|
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1219 |-> <>(events)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1220 |-> [](continue)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1221 <>events, <>(continue until Q))
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1222 というようにcompileする。ふむ。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1223
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1224 l(P) & Q l(P) = LTTL formula of P
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1225 <>(P) -> <>(P,<>(l(Q)))
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1226 [](P) -> P until l(Q)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1227
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1228
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1229 RITL decidability
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1230
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1231 Reverse Specification
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1232
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1233 R -> +(R) -(R) on Start Time
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1234
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1235 empty(R) は hidden だけど、+R/-R に関しては同期する
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1236 ここがまだ良く分からない。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1237
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1238 Modelを直接構成しない。filtrationの意味でも...大きすぎるから。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1239 その代わり、Model constraintを構成する。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1240
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1241 Generating C / In-kernel implementation
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1242
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1243 Wed Oct 5 15:30:19 JST 1994
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1244
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1245 Regular variable.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1246
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1247 ^r -> more(^r), @( ^r)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1248 not(more(^r)),@(not(^r))
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1249 ^r -> empty(^r), empty
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1250 not(empty(^r), not(empty)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1251
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1252 This gives ^r constraints, and produce finite state.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1253
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1254 Meaning of regular variable.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1255
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1256 Mij(^r) = f(Mi(more(^r),empty(^r)),Mi+1j(^r))
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1257
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1258 ^r's automaton is depend on clock, and fin time is controled
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1259 in finite state machine's way. Mij(^r) is f(Mi(p)...Mj(p)).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1260 ^r = lenght(3) & ^r = length(2) is statisfiable.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1261 Is this different from interval variable? Yes. But How?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1262
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1263 If we need all regular variable act the same automaton,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1264 exists(^c) [a](^r= ^c),...
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1265 where ^c is a time stable automaton.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1266
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1267 It is ok to show:,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1268 M |= not(^r),(^r & true)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1269
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1270 Problem.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1271
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1272 [a](^r=lenth(2)) , lenth(4) is unsatisfiable
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1273
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1274 empty(^r),(empty =^r) => ^r (true)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1275 empty(^r),(len(1)=^r) => not(^r) (false)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1276
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1277 ((empty = ^r)&true), ((length(1) = ^r)&true)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1278 but this is satisfiable.... ?-?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1279
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1280
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1281 Let's think about,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1282 exists_automatic(R) f(R) = g
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1283 automatic unification = boolean unification?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1284
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1285 Sat Jun 12 10:41:24 JST 1993
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1286
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1287 dvcomp uses subterm tree for decomposition and
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1288 ndcomp uses chop normal form. Since development
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1289 result is not the same, lazy generation of
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1290 state is not allowed.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1291
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1292 sb's and itl_state's hash and sharing is important.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1293 Time to write C version?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1294
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1295 Sun Jun 6 14:15:42 JST 1993
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1296
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1297 Now module system is supported.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1298 tgen/0 generates Tokio program and
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1299 kiss/0 generates KISS format for SIS.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1300
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1301 ex(300,X),ex(true proj ~X) becomes very large. Terminates?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1302 ex(300,(X,Y)),ex(true proj (X;Y)) is still very large, but
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1303 ex(300,(X,Y)),ex(true proj X) is Ok.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1304
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1305 old/bdcomp does not check sbterm early. This is the reason why this
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1306 method is slow.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1307 expansion ; subterm check is bad
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1308 expansion with subterm check will be ok.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1309
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1310 How about permutation?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1311 Declare permutation from the begining.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1312
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1313 |- permute V on F <-> F
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1314
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1315 How about anti-symmetry?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1316
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1317 |- odd-permute V on F <-> ~ F
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1318 |- even-permute V on F <-> ~ F
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1319
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1320 Mon Nov 9 15:18:49 JST 1992
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1321
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1322 prefix operator is wrong.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1323 length(2),prefix((length(3),fin(false)))
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1324 must be false.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1325
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1326 Mon Sep 21 20:16:39 JST 1992
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1327
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1328
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1329 I'm very sorry to send you rather large example. But it is
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1330 a little dificult to extract simple example.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1331
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1332 To compile and load,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1333
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1334 | ?- [bddi].
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1335
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1336
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1337 In next example, fixpoint predicates find a subtle counter example of ITL
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1338 formula.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1339 (p&&p&&p&&p&&p&& ~p&&p)->[](<>p)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1340
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1341 is tested by
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1342
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1343 | ?- ex(10,X),fixpoint(X).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1344
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1345 First, this formula is translated into a finite state automaton.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1346 Like this.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1347
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1348 +----------+
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1349 E,PL -------| Logic |---> E,PL
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1350 | |
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1351 Sn +------| |--->+ Sx
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1352 | | | |
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1353 | +----------+ |
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1354 | +----------+ |
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1355 +-<----| Latch |----+
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1356 +----------+
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1357
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1358 In this case, Sn/Sx pairs are vector of ITL subterm. "Logic" is
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1359 defined in boolean constraint on Sn/Sx.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1360
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1361 In fixpoint/10, fixpoint(F,Fix,Fix1,E,P,PL,Sn,Sx,S,N),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1362 F current possible state (boolean constraint of Sn)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1363 Fix disjunction of visit state
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1364 Fix1 previous visit state, if it is eqaul to Fix, everything is done.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1365 E,P,PL Input/Output value of variable in state diagram
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1366 Sn state variable
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1367 Sx next state variable
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1368 S for display subterm state.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1369 N depth count
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1370
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1371 fixpoint(_,Fix,Fix1,_E,_P,_PL,_Sn,_Sx,_S,_N):-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1372 bool:taut(Fix=:=Fix1,1),!,write('end'),nl.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1373 fixpoint(F0,_,Fix,E,P,PL,Sn,Sx,S,N):-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1374 quantify(Sn,F0,F0S),bool:sat(F00=:=F0S), % take all possible state
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1375 display_state(E,E*F00,P,PL,S,_,Sn), % find counter example
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1376 quantify([E|PL], ~E*F00,F0P), % for all possible I/O
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1377 bool:sat(F0Q=:=F0P),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1378 copy_term([E,Sx,F0Q],[0,Sn,F1]), % replace Sn/Sx
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1379 bool:sat(Fix1=:=Fix+F1), % for termination
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1380 write_state_number(N,N1,'depth:'),!,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1381 fixpoint(F1,Fix,Fix1,E,P,PL,Sn,Sx,S,N1).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1382
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1383 So this traces all possible execution in finite state automaton.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1384
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1385 | ?- ex(10,X),fixpoint(X).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1386 depth:0 % it becomes slower and slower...
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1387 depth:1
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1388 depth:2
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1389 depth:3
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1390 depth:4
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1391 depth:5
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1392 depth:6
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1393 depth:7
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1394 empty,[t(p,0)],[...] % find one counter example
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1395 |: % a return is required
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1396 depth:8
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1397 end
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1398
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1399 X = ((p&&p&&p&&p&&p&& ~p&&p)->[](<>p)) ?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1400
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1401 yes
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1402 | ?-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1403
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1404 I think I need something like setarg in boolean constraint.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1405 Sun Sep 20 18:10:30 JST 1992
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1406
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1407 Why not add exclusive status as a primitive?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1408 states([a,b,c,d,e,f]) -> [](( ~(( a,b)), ... )
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1409 2^n ... Wow!
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1410 It generates
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1411 status(a)-> ... ; status(b)-> ... status(f)-> .. ; status([])-> ...
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1412 generate n+1.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1413
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1414 Tue Sep 15 13:04:43 JST 1992
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1415
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1416 結局、Regular variable state を共有しないと収束しないし、
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1417 共有できるかどうかの判断は大域的だから、この方法では
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1418 できないらしい。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1419
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1420 Tue Sep 15 11:36:36 JST 1992
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1421
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1422 Regular variable must be non-deterministic.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1423 ^r
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1424 [more,up(r),down(r)] is not false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1425
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1426 If we don't care about down, we cannot distinguish
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1427 ^r& ^r ,not( ^r )
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1428
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1429 up(r) down(1) ~down(1)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1430 | | |
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1431 |----------------|-------|
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1432 up(r) down(2)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1433
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1434 Mon Sep 14 14:07:52 JST 1992
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1435
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1436 (^r & ^r),not(^r)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1437 itl:0 [empty,up(r),down(r,0)] -> false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1438 itl:0 [more,up(r),down(r,0)] -> false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1439 itl:0 [more,up(r),~down(r,0)] -> (stay(r,now)&^r),not(stay(r,now)) now=1
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1440 stay(^r,0)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1441
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1442 (stay(r,now)&^r),not(stay(r,now))
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1443 itl:1 [empty]->false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1444 itl:1 [more,down(r,1),up(r),down(r)]->false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1445 itl:1 [more,~down(r,1)]-> (stay(r,now)&^r),not(stay(r,now)) now = 1 2
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1446 itl:1 [more,down(r,1),~down(r,0)]]->
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1447 stay(r,1);(stay(r,now)&^r),not(stay(r,now)) 3
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1448 stay(2,1)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1449
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1450 stay(r,1);(stay(r,3)&^r),not(stay(r,3))
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1451 itl:3 [empty,down(1)]->empty
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1452 itl:3 [empty,~down(1)]->false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1453 itl:3 [more,down(r,1)]->true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1454 itl:3 [more,~down(r,1)]-> stay(r,2);(stay(r,4)&^r),not(stay(r,4)) = 3
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1455 itl:3 [more,down(r,1),~down(r,0)]]-> stay(r,1);(stay(r,3)&^r),not(stay(r,3)) 3
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1456 stay(2,1),stay(4,3)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1457
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1458 Mon Sep 14 00:25:08 JST 1992
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1459
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1460 ^r で生成されるautomatonは、^rを普通の変数と見て生成するtableauの
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1461 subsetである。従って、tableauのnodeを指し示すことで ^r のモデルを
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1462 作ることが出来る。しかし、うまくいかない...
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1463
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1464 (^r & true),not(^r) のモデルはないから
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1465
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1466 そこで、stay(r,N)を使う (up(r),emtpy & true & down(r),empty) ではだめ。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1467 ^r & ^r -> ^r になってしまうから。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1468
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1469 するとモデル構築が収束しない --> これは Full ITL だから
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1470
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1471 しかしRITLのモデルは有限だから stay(r,N)のかなりの部分は
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1472 相互に等しい。等しいかどうかをどう判断するかが問題。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1473
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1474 Deterministic Pathが等しければ同じstateと判断するのでは足りない
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1475 Loopが作れないから。
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1476
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1477 むしろすべて等しいのがDefaultで、必要な時だけ分離するのが望ましい
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1478
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1479 Mon Jan 1 11:05:38 JST 1990
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1480
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1481 ^r & ^r
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1482 itl:0 [empty,up(r),down(r)] -> empty
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1483 itl:0 [more,up(r),down(r)] -> false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1484 itl:0 [more,up(r),~down(r)] -> stay(r,[true])&^r 1
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1485 stay(r,[]) -> down,empty
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1486 stay(r,[]) -> ~down,more
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1487
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1488 stay(r,[])&^r
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1489 itl:1 [empty,down(r,[]),down(r,[true]),up(r)]
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1490 itl:1 [more,down(r,[true]),up(r),down(r,[])]->false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1491 itl:1 [more,~down(r,[true])]-> stay(r,[true,true])&^r 2
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1492 itl:1 [more,down(r,[true]),up(r),down(r,[])]->false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1493 itl:1 [more,down(r,[true]),up(r),~down(r,[])]->stay(r,[true]) 3 -> false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1494 itl:1 [more,down(r,[true]),~up(r)])]->false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1495 stay(r,[]) -> down,empty
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1496 stay(r,[true]) -> down,up(r),empty
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1497 stay(r,[true]) -> more, ~down, stay(r,[true,true])
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1498 stay(r,[true]) ?why not
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1499 stay(r,[true]) -> more, down, up(r), stay(r,[true]) -> false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1500
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1501 stay(r,[true,true]) -> down,up(r),empty
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1502 itl:2 [empty,down(r,[]),down(r,[true,true]),up(r)]
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1503 itl:2 [more,down(r,[true,true]),up(r),down(r,[])]->false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1504 itl:2 [more,~down(r,[true,true])]-> stay(r,[true,true,true])&^r 4
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1505 itl:2 [more,down(r,[true,true]),up(r),down(r,[])]->false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1506 itl:2 [more,down(r,[true,true]),up(r),~down(r,[])]->stay(r,[true]) 3 -> false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1507 itl:2 [more,down(r,[true,true]),~up(r)])]->false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1508 stay(r,[true,true]) -> down,up(r),empty
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1509 stay(r,[true,true]) -> more, ~down, stay(r,[true,true,true])
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1510 stay(r,[true,true]) ?why
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1511 stay(r,[true,true]) -> more, down.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1512
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1513 Sat Sep 12 18:05:26 JST 1992
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1514
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1515 How about contiion-history list?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1516
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1517 (p->^r),@((q->^r),@empty)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1518 itl:0 [more,p,up(r),~down(r,[])] -> stay(r,[p]),(q->^r,@empty) 1
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1519 itl:0 [more,~p]-> true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1520 stay(r,[]) p ->stay([p]),~down
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1521 ~p->true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1522
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1523 stay(r,[p]),q->^r,@empty
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1524 itl:1 [more,p,q,up(r),~down(r,[p]),~down(r,[])]
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1525 -> empty,stay(r,[(p,q),p]),stay(r,[p]),stay(r,[q]) 2
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1526 itl:1 [more,~p,q,up(r),~down(r,[p]),~down(r,[])]
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1527 -> empty,stay(r,[(~p,q),p]),stay(r,[q]) 3
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1528 itl:1 [more,~q] -> empty,stay(r,[~q,p]) 4
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1529 stay(r,[]) q ->stay(r,[q]),~down
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1530 ~q ->true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1531 stay(r,[p]) q ->stay(r,[(p,q),p]),~down
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1532 q ->stay(r,[(~p,q),p]),~down
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1533 ~q->true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1534
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1535 empty,stay(r,[(p,q),p]),stay(r,[p]),stay(r,[q])
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1536 itl:2 [empty,q] -> false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1537 itl:2 [empty,~q,down(r,1),down(r,0)] -> true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1538 stay(r,[(p,q),p]) ->down
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1539 stay(r,[p]) ~q->down
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1540 stay(r,[q]) ~q->down
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1541 stay(r,[(p,q),p]) ~q->down
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1542
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1543 empty,stay(r,[(~p,q),p]),stay(r,[q])
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1544 itl:3 [empty,down(r,1),down(r,0)] -> true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1545 stay(r,[(p,q),p]) ->down
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1546 stay(r,[q]) ->down
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1547
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1548 empty,stay(r,[~q,p])
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1549 itl:3 [empty,down(r,1)] -> true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1550 stay(r,[~q,p]) ->: down
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1551
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1552 Fri Sep 11 16:13:48 JST 1992
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1553
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1554 Parallel Regular variable construction
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1555
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1556 itl:0 [up(r),~down(r,0)] -> ... stay(r,0).... 1 -> stay(r,N1)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1557 [up(r),~down(r,0)] -> ... stay(r,0).... 2 -> stay(r,N2)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1558
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1559 ^r:0 [up(r),~down(r,0)] -> ... stay(r,N1).... 1
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1560 [up(r),~down(r,0)] -> ... stay(r,N2).... 2
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1561
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1562 equivalence list
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1563 stay(r,i) = stay(r,j)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1564 if stay(r,4) -f-> stay(r,i)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1565 stay(r,4) -g-> stay(r,j), f->g
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1566
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1567 stay(r,n) .... itl:n -> [x0,x1,x2...xk]
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1568
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1569 Tue Sep 8 22:13:51 JST 1992
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1570
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1571 true & ^r
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1572 [empty,up(r),down(r)]->true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1573 [more,up(r),down(r)]->(stay(r,1);true & ^r)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1574 [more,up(r),~down(r)]->(stay(r,1);true & ^r) = 3
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1575 [more,~up(r)]->(true & ^r)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1576
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1577 How to prevent stay(r,N) multiplier?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1578
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1579 state(3) = (stay(r,1);true & ^r)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1580 [empty,down(r,1)]->empty
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1581 [empty,down(r,3),up(r),not(down(r,1))]->empty
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1582 [empty,not(down(r,3)),up(r),not(down(r,1))]->false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1583 [empty,down(r,3),not(up(r)),not(down(r,1))]->false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1584 [empty,not(down(r,3)),not(up(r)),not(down(r,1))]->false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1585 [more,up(r)]->(stay(r,1);stay(r,3);true & ^r)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1586 [more,not(up(r))]->3
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1587
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1588 Why stay(3) = stay(1)? .... Finitarity?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1589
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1590 state(1 , ^r& ^r,not(^r))
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1591 [empty,down(r,1),up(r)]->false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1592 [empty,not(down(r,1)),up(r)]->false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1593 [empty,down(r,1),not(up(r))]->false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1594 [empty,not(down(r,1)),not(up(r))]->false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1595 [more,down(r,1),up(r)]->3 (stay(r,1);stay(r,1)& ^r),not(stay(r,1))
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1596 [more,not(down(r,1)),up(r)]->4 stay(r,1)& ^r,not(stay(r,1))
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1597 [more,down(r,1),not(up(r))]->false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1598 [more,not(down(r,1)),not(up(r))]->false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1599
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1600 state(3 , (stay(r,1);stay(r,1)& ^r),not(stay(r,1)))
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1601 [empty,down(r,1)]->false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1602 [empty,not(down(r,1))]->false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1603 [more,up(r),down(r,1)]->3
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1604 [more,not(up(r)),down(r,1)]->3
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1605 [more,not(down(r,1))]->3
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1606
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1607 state(4 , stay(r,1)& ^r,not(stay(r,1)))
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1608 [empty,down(r,4),up(r),down(r,1)]->false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1609 [empty,not(down(r,4)),up(r),down(r,1)]->false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1610 [empty,down(r,4),not(up(r)),down(r,1)]->false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1611 [empty,not(down(r,4)),not(up(r)),down(r,1)]->false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1612 [empty,not(down(r,1))]->false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1613 [more,up(r),down(r,1)]->3
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1614 [more,not(up(r)),down(r,1)]->4
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1615 [more,not(down(r,1))]->4
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1616
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1617 1.4510000000000002 sec.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1618
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1619
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1620 Tue Jun 30 17:01:37 JST 1992
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1621
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1622 Quantifier does not works well.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1623 ?-fixpoint(even(p)=evenp(p)).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1624 Projection looks like difficult.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1625
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1626 Tue Jun 30 08:58:27 JST 1992
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1627
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1628 fixpoint((a,(more = (more & more)))) terminates. why?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1629 fixpoint(more = (more & more)) causes loop. why?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1630
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1631 It looks like SICSuts's bug. Some how I avoid that.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1632
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1633 Sun Mar 01 01:01:57 1992 BST
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1634
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1635 Yes, I almost finish BDD version.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1636
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1637 Quantification is very subtle in SICStus.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1638
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1639 ?-bool:sat(_A=:= B*C),bool:sat(_A=:=A),bool:sat(E =:= ~B*A^A).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1640 ?-bool:sat(_A=:= B*C),bool:sat(A=:=_A),bool:sat(E =:= ~B*A^A).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1641 give us different result.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1642
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1643 ?-fixpoint(p-> [](<>(p)) causes quantifier failure.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1644
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1645 exists(p,..) is now working, but closure is not.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1646
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1647 Mon Feb 10 20:06:36 1992 BST
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1648
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1649 ?-fixpoint(p,X).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1650 subterm(p,N,_,[p(N)],[]) p =:= N
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1651 ?-tableau(N,F1,[],[])
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1652 F1 = exists(p,F*R)/replace(S,S')
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1653 N=p, F1=nil?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1654 copy_term([],[],N],[[],[],F]), no constrain on N/F
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1655 ?-bool:sat(F1=:=(N+F)).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1656 ?-bool:taut(N=:=F1,1) N=:=(N+F) x
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1657
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1658
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1659 Wed Nov 06 21:56:57 1991 BST
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1660
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1661 Dense time modification.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1662
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1663 more <-> more & more
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1664 discrete time:
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1665 more -> empty->false;more->true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1666 true -> empty->true; more->true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1667 more&more -> empty->false;more->true&more
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1668 true&more -> empty->false; <---- This makes difference
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1669 more->true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1670 dense time:
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1671 more&more* > empty->false;more->more*
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1672 more* -> empty->true ;more->more*
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1673
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1674 more -> empty->false;more->true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1675 true -> empty->true; more->true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1676 more&more -> empty->false;more->true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1677 true -> empty->true; more->true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1678
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1679
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1680 Tue Jun 25 07:21:11 1991 BST
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1681
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1682 2nd order local variable is also easily implemented. Notation?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1683 regurlar
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1684
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1685 Tue Jun 25 07:06:28 1991 BST
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1686
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1687 For verification,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1688 Information hiding is bad. Necessary information muse be accessed by
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1689 everyone for reliability. Only useless information is allow to hide.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1690 If some information does not change world, it is useless. Higer
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1691 abstraction makes many information useless, which can be hide.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1692
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1693 Tue Jun 25 06:52:32 1991 BST
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1694
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1695 Closure is easily implemented.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1696 Single varible quantifier is also easy. These are effectively
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1697 equivalent in expressiveness.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1698
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1699 But nested quantifier is very different. Its decomposition is
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1700 same as sigle variable case, but to make a standard form, it
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1701 requires P-space. Quantifier impelentation of bdtstd/itlstd
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1702 will be difficult.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1703
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1704 Derivation tree generation method is much suitable for quantifier.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1705 But is it worth implement? It is better to find out another
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1706 abstraction mechanism, such as multi-linear projection.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1707
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1708 The important this is not what IS existing, but how it DOES exists.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1709 Quantifier lacks synchronization type.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1710
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1711 Tue Jun 21 21:08:31 BST 1991
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1712
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1713 Problem on Theorem prover
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1714
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1715 1) it does not handle eventuality
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1716 |= true & empty ( compact interval )
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1717 |= finite -> (true & empty) <- eventuality axiom
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1718 ( open interval ) introducing topology? and differencial?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1719 d/dt f(x,t) is related to scheduling? very close to ....
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1720 2) dense time
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1721 what's wrong?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1722 3) 3-stages: itlstd, decomposition, checking are redundant each other.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1723 -> derivation tree construction ( do this first )
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1724 (bdcomp.pl must work faster)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1725 4) extensions
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1726 infinite interval
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1727 interval variable
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1728 projection
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1729 framing
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1730 multi-linear
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1731 scheduler
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1732 other standard form
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1733 interactive proof/protocol design
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1734 rational length operator
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1735 5) overupping interval (minus length)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1736
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1737 Tue Jun 18 16:45:35 BST 1991
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1738
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1739 true & q ->
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1740 NDST
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1741 e0, e1 q->true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1742 m0, e1 q->@true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1743 m0, m1 ->@(true & q)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1744 else false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1745 DST
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1746 [e0,q] -> true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1747 [m0,q] -> @true ;@(true & q)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1748 [e0,~q] -> false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1749 [m0,~q] -> @false;@(true & q)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1750
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1751 ~(true & q) ->
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1752 NDST
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1753 e0, e1 q->false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1754 m0, e1 q->@false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1755 m0, m1 ->@~(true & q)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1756 else true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1757 DST
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1758 [e0,q] -> false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1759 [m0,q] -> ~(@true ;@(true & q))
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1760 [e0,~q] -> true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1761 [m0,~q] -> ~(@false;@(true & q))
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1762
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1763 Tue Jun 18 15:49:21 BST 1991
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1764
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1765
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1766 %
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1767 % London 23:38 36.52 Newyork 18:38 Tokyo 07:38
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1768 %
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1769 p & q
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1770 -> |-----|-----|
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1771 1 0
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1772
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1773 ifEmpty(p) 1->p
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1774 ifNotEmpty(p) ~1->p
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1775
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1776
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1777 P & Q ->
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1778 0 P,Q
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1779 ~0, 1 beg(P),Q
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1780 ~0,~1 Pn, @(Px,Q)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1781
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1782 p & q ->
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1783 NDST
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1784 0 p,q->true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1785 ~0, 1 p,q->@true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1786 ~0,~1 p->@(true & q)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1787 else false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1788 DST
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1789 [p,q] -> [0]true +[~0,1]@true +[~0,~1]@(true & q) <- sometime?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1790 [p,~q] -> [0]false+[~0,1]@false+[~0,~1]@(true & q)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1791 [~p] -> []false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1792 a path must contain true eventuality
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1793
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1794 ~(p & q) ->
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1795 NDST
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1796 0 p,q->false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1797 ~0, 1 p,q->@false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1798 ~0,~1 p->@~(true & q)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1799 else true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1800 DST
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1801 [p,q] -> [0]false+[~0,1]@false+[~0,~1]@~(true & q) <- never?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1802 [p,~q] -> [0]true +[~0,1]@true +[~0,~1]@~(true & q)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1803 [~p] -> []true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1804 a path must not contain false eventuality
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1805
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1806
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1807 iのは式の中の&の数に等しい
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1808
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1809 empty
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1810 0 true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1811 ~0 false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1812 ~empty
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1813 0 false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1814 ~0 true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1815 fin(p)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1816 [p] -> [0]true +[~0]@fin(p)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1817 [~p] -> [0]false+[~0]@fin(p)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1818 keep(p)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1819 [p] -> [0]true+[~0]@keep(p)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1820 [~p] -> [0]true+[~0]false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1821 p & q & r ->
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1822 NDST
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1823 2, 1, 0 p,q,r->true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1824 2, 1,~0 p,q,r->@true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1825 2,~1,~0 p,q->@(true & r)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1826 ~2,~1,~0 p->@(true & q & r)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1827 DST
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1828 [~p] -> []false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1829 [p,~q] -> [ 0]false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1830 +[ 2, 1,~0]@false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1831 +[ 2,~1,~0]@(true & r)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1832 +[~2,~1,~0]@(true & q & r)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1833 [p,q,~r] -> [ 0]false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1834 +[ 2, 1,~0]@false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1835 +[ 2,~1,~0]@(true & r)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1836 +[~2,~1,~0]@(true & q & r)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1837 [p,q,r] -> [ 0]true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1838 +[ 2, 1,~0]@true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1839 +[ 2,~1,~0]@(true & r)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1840 +[~2,~1,~0]@(true & q & r)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1841
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1842 ~(p & q & r) ->
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1843 NDST
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1844 2, 1, 0 p,q,r->false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1845 2, 1,~0 p,q,r->@false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1846 2,~1,~0 p,q->@~(true & r)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1847 ~2,~1,~0 p->@~(true & q & r)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1848 DST
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1849 [~p] -> []true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1850 [p,~q] -> [ 0]true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1851 +[ 2, 1,~0]@true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1852 +[ 2,~1,~0]@~(true & r)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1853 +[~2,~1,~0]@~(true & q & r)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1854 [p,q,~r] -> [ 0]true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1855 +[ 2, 1,~0]@true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1856 +[ 2,~1,~0]@~(true & r)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1857 +[~2,~1,~0]@~(true & q & r)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1858 [p,q,r] -> [ 0]false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1859 +[ 2, 1,~0]@false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1860 +[ 2,~1,~0]@~(true & r)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1861 +[~2,~1,~0]@~(true & q & r)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1862
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1863
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1864 Thu Jun 13 12:00:39 BST 1991
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1865
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1866 Empty Queue should be incoporated into Cond part.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1867 Only true/false remains in Em_j part.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1868
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1869 S = \Sum_j Cond_j -> ( \Sum_i empty_i->Em_{i,j} -> More_j )
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1870 ~S = \Sum_j Cond_j -> ( \Sum_i empty_i->Em_{i,j} -> ~More_j )
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1871
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1872 Thu Jun 13 11:32:44 BST 1991
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1873
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1874 S = \Sum Cond_j -> ( empty->Em_j ; ~empty->More_j )
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1875 ~S = \Sum Cond_j -> ( empty->~Em_j ; ~empty->~More_j )
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1876 since empty is invisible, ; means non deterministic choice
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1877 More_j = Keep \and @ More => troubled on negation
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1878
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1879 Cond_j -> ( empty->Em_j + (Keep_j \and @ More_j) )
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1880 =>
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1881 Cond_j + Keep_j -> ( empty->Em_j + ~empty->@ More_j )
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1882 Cond_j + ~Keep_j -> ( empty->Em_j + ~empty->false )
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1883
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1884 Example
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1885
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1886 empty -> true -> (empty->true + ~empty->false)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1887 ~empty -> true -> (empty->false+ ~empty->true)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1888 fin(p) -> true -> (empty->p+ ~empty->@fin(p))
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1889 keep(p) -> p -> (empty->true + ~empty->@keep(p))
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1890 + ~p -> (empty->true + ~empty->false)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1891
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1892 Wed Jun 12 16:05:31 BST 1991
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1893
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1894 ITL->DST converter using BDT
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1895
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1896 varialbe order
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1897 p & q
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1898 ~p -> []
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1899 p,q -> [e0, (t & q)] e0 = (t & q)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1900 p,~q -> [~e0,(t & q)]
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1901 t & q (contains both ~e0, e0)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1902 ~q -> [~e0,(t & q)]
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1903 q -> [e0,t,(t & q)]
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1904 t -> [e1,(~e1,t)] e1 = (t)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1905
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1906 ITL model checker
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1907
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1908 Wed May 22 15:37:30 BST 1991
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1909
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1910 The problem is negation of state digram is time consuming task.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1911 To make a symmetrical treatment of negation on state digram,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1912 exclusion normal form is good.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1913
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1914 P == (ab -> empty) + ((~a)b -> false) + (a(~b)+~a~b -> @next)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1915 ~P == (ab -> false) + ((~a)b -> empty) + (a(~b)+~a~b -> @~next)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1916
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1917 True-Set + False-Set + Next-Set
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1918
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1919 It requires 2^numver(variables on expression) terms. (Sad..)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1920
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1921 P,Q -> PQ
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1922 P;Q -> PQ + ~PQ + P~Q
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1923
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1924 Tue May 21 19:16:12 BST 1991
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1925
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1926 Extenstion of state diagram is necessary.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1927
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1928 true & p = <>p
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1929 s0 -empty-> p
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1930 s0 -e(true)-> s0
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1931 s0 -e(p)-> true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1932 ~(true & ~p) = #p
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1933 s0 -empty-> p
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1934 s0 -a(~p)-> false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1935 s0 -e(true)-> s1(~true & ~p)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1936 ~(p & ~q) = #p
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1937 s0 -empty-> ~p;q
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1938 s0 -a(p)-> s1(~(true & ~q))
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1939 s1 -a(~q)-> false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1940 p & q
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1941 s0 -empty-> p,q
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1942 s0 -p-> s1(true&q)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1943 s1 -e(true)-> s1
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1944 s1 -e(q)-> true = s1 -a(~q)-> false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1945
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1946 Tue May 21 15:08:51 BST 1991
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1947
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1948 The point is the concurrent development of negation form.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1949 |- ~(On Some interval, P) <->
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1950 |- For all interval, ~P <->
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1951 |\- On Some interval, P
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1952 |- ~~P <-> |-P
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1953
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1954 |-P,|\-Q => |-P0,@Pnext , |\-Q0,@Qnext
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1955 => |\-Q0,@Qnext
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1956 |-(P0,~Q0),@Pnext
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1957 |-(P0,Q0),@(Pnext,~Qnext)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1958 example
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1959 |- ~(q & ~p) =>
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1960 |\- q,~p,empty
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1961 |- empty,~(q,~p)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1962 |\- empty(q),~p,~empty =>
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1963 |- q,p
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1964 |- ~q
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1965 |\- q,@(q & ~p) =>
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1966 |- ~q
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1967 |- q, @~(true & ~p)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1968 Anther problem is Empty/More state.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1969 An interval can be empty/~empty
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1970 ~(empty,P) -> ~empty;~P this is funny
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1971 |- ~(empty,P) <-> |\- empty,P
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1972 ~P,~(empty,P),empty is Ok
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1973 This means false transision has separate Empty flag
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1974 empty,(P&Q) -> empty,P,Q
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1975 Global variables maps
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1976 local variable state diagram -> {true, false}
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1977 How to calculate it comformity?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1978
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1979 Thu May 16 12:54:27 BST 1991
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1980
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1981 Decomposition Rule for Model Checking
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1982 ~ , ; & @
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1983 Failure Set
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1984 Success Set
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1985 ?-de(Proposition,Now,Next).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1986
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1987 de((P,Q),(NP,NQ),(XP,XQ),F) :- de(P,NP,XP,F),de(Q,NQ,XQ,F).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1988 de((P;Q),Now,Next,F) :- de(P,Now,Next,F).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1989 de((P;Q),Now,Next,F) :- de(Q,Now,Next,F).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1990 de(~P,Now,Next,(FN,FX)) :- de(P,FN,FX,(Now,Next)).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1991 de(@P,true,P,(FN,FX)) :- de(P,FN,FX,(Now,Next)). % weak?
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1992 de((P&Q),(PN,Now),Next,F) :- % empty case
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1993 de(P,PN,true,PF),de(Q,Now,Next).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1994 de((P&Q),Now,Next,F) :- % non empty case
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1995 de(P,PN,true,PF),de(Q,Now,Next).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1996
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1997 Now is allways classical/local.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1998
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1999 Using Binary Decision Tree on Interval Variable
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2000
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2001 <t>P = true & P
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2002 [t]P = ~<t>~P = ~(true & ~P)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2003 while i do j = i-> j&(while i do j) ; empty
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2004
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2005 so everything is & and ~ and ; and ,.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2006
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2007 Formula = { Interval Variable, Local Variable, connectives }
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2008
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2009 P = set of BDT on Interval Variables
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2010 P
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2011 /\
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2012 P ~P
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2013 There is only a finite number of interval variables.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2014
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2015 Clausal Form:
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2016 P :- x ; y ; P.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2017 P :- empty.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2018
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2019 P
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2020 x
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2021 /\
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2022
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2023 it is better to make BDT primitives...
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2024
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2025 variablesBDT
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2026 compBDT
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2027 andBDT
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2028 orBDT
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2029 negBDT
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2030 hashBDT
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2031
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2032 Mon May 20 14:24:59 BST 1991
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2033
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2034 ITL decomposition Rule for Model Checker
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2035
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2036 choices
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2037
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2038 interval is finite / infinite
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2039 interval is open / close
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2040 interval is empty / non-empty
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2041
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2042 ITL finite/close and has empty
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2043
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2044 p,q
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2045 p;q
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2046 ~p
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2047 p&q
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2048
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2049 local variable
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2050 non local variable
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2051
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2052 ~(true & ~p)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2053
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2054 s0
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2055 Success: nil
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2056 Failure: true & ~p
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2057
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2058 decompositon( Formula , Local State, Next Intervals )
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2059 Formula -> (Local-0, empty);
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2060 (Local-1, ~empty) & Next Intervals ( with eventuality )
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2061 ~empty contains eventuality (OK?)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2062
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2063 local variable
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2064 p -> p,empty ; (p,~empty & true)
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2065 P & Q -> (empty,P,Q); ( empty,P & ~empty,Q ); ( ~empty, P & Q )
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2066
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2067 local part should have standard form