spot/tests/core/ltlsynt.test
Thibaud Michaud d6ae7af5f5 ltlsynt: translate winning strategy to AIGER
* bin/ltlsynt.cc: Here.
* doc/org/ltlsynt.org: Document it.
* tests/core/ltlsynt.test: Test it.
2017-09-25 12:23:47 +02:00

1090 lines
14 KiB
Bash

#! /bin/sh
# -*- coding: utf-8 -*-
# Copyright (C) 2014, 2015 Laboratoire de Recherche et Développement
# de l'Epita (LRDE).
#
# This file is part of Spot, a model checking library.
#
# Spot is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# Spot is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
# License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
. ./defs || exit 1
set -e
F0='(G ((((req) -> (X ((grant) && (X ((grant) && (X (grant))))))) && ((grant)
-> (X (! (grant))))) && ((cancel) -> (X ((! (grant)) U (go))))))'
IN0='cancel, go, req'
OUT0='grant'
EXP0='UNREALIZABLE'
F1='(G ((((req) -> (X ((grant) || (X ((grant) || (X (grant))))))) && ((grant)
-> (X (! (grant))))) && ((cancel) -> (X ((! (grant)) U (go))))))'
IN1='cancel, go, req'
OUT1='grant'
EXP1='UNREALIZABLE'
F2='((G ((cancel) -> (X (go)))) -> (G ((((req) -> (X ((grant) || (X ((grant) ||
(X (grant))))))) && ((grant) -> (X (! (grant))))) && ((cancel) -> (X ((!
(grant)) U (go)))))))'
IN2='cancel, go, req'
OUT2='grant'
EXP2='REALIZABLE'
F3='((G ((cancel) -> (X ((go) || (X (go)))))) -> (G ((((req) -> (X ((grant) ||
(X ((grant) || (X (grant))))))) && ((grant) -> (X (! (grant))))) && ((cancel)
-> (X ((! (grant)) U (go)))))))'
IN3='cancel, go, req'
OUT3='grant'
EXP3='REALIZABLE'
F4='((G ((cancel) -> (X ((go) || (X (go)))))) -> (G ((((req) -> (X (((grant) ||
(cancel)) || (X (((grant) || (cancel)) || (X ((grant) || (cancel)))))))) &&
((grant) -> (X (! (grant))))) && ((cancel) -> (X ((! (grant)) U (go)))))))'
IN4='cancel, go, req'
OUT4='grant'
EXP4='REALIZABLE'
F5='((G ((cancel) -> (X ((go) || (X ((go) || (X (go)))))))) -> (G ((((req) ->
(X (((grant) || (cancel)) || (X (((grant) || (cancel)) || (X ((grant) ||
(cancel)))))))) && ((grant) -> (X (! (grant))))) && ((cancel) -> (X ((!
(grant)) U (go)))))))'
IN5='cancel, go, req'
OUT5='grant'
EXP5='REALIZABLE'
F6='((G ((cancel) -> (X ((go) || (X (go)))))) -> (G ((((cancel) -> (X ((!
(grant)) U (go)))) && ((grant) -> (X (! (grant))))) && ((req) -> (((grant) ||
(cancel)) || (X (((grant) || (cancel)) || (X (((grant) || (cancel)) || (X
((grant) || (cancel))))))))))))'
IN6='cancel, go, req'
OUT6='grant'
EXP6='REALIZABLE'
F7='(! ((G ((req) -> (F (ack)))) && (G ((go) -> (F (grant))))))'
IN7='go, req'
OUT7='ack, grant'
EXP7='UNREALIZABLE'
F8='(((G ((((r1) -> (F (a1))) && ((r2) -> (F (a2)))) && (! ((a1) && (a2))))) &&
(((a1) U (r1)) || (G (a1)))) && (((a2) U (r2)) || (G (a2))))'
IN8='r1, r2'
OUT8='a1, a2'
EXP8='UNREALIZABLE'
F9='((((G (((((((r0) -> (F (a0))) && ((r1) -> (F (a1)))) && ((r2) -> (F (a2))))
&& (! ((a0) && (a1)))) && (! ((a0) && (a2)))) && (! ((a1) && (a2))))) && (((a0)
U (r0)) || (G (a0)))) && (((a1) U (r1)) || (G (a1)))) && (((a2) U (r2)) || (G
(a2))))'
IN9='r0, r1, r2'
OUT9='a0, a1, a2'
EXP9='UNREALIZABLE'
cat <<EOF >exp2
REALIZABLE
aag 144 3 4 1 132
2
4
6
8 211
10 245
12 271
14 289
271
16 13 15
18 11 16
20 3 9
26 6 20
28 26 18
30 2 9
32 7 30
34 32 18
36 6 30
38 36 18
40 3 8
42 7 40
44 42 18
46 6 40
48 46 18
50 2 8
52 7 50
54 52 18
56 6 50
58 56 18
60 9 10
62 60 16
64 3 4
66 7 64
70 6 64
72 70 62
74 2 4
76 7 74
78 76 62
80 6 74
82 80 62
84 10 16
86 5 9
88 86 84
90 8 10
92 90 16
94 66 92
96 70 92
98 76 92
100 80 92
102 5 8
104 102 84
106 12 15
108 11 106
112 26 108
114 32 108
116 36 108
118 40 108
120 50 108
122 60 106
126 70 122
128 76 122
130 80 122
132 10 106
134 86 132
136 4 8
138 3 136
140 138 132
142 2 136
144 142 132
146 102 132
148 13 14
150 9 11
152 150 148
154 11 148
156 42 154
158 46 154
160 52 154
162 56 154
164 10 148
166 86 164
168 60 148
170 66 168
172 70 168
174 76 168
176 80 168
178 173 177
180 163 178
182 141 159
184 182 180
186 127 131
188 117 119
190 188 186
192 190 184
194 101 113
196 97 194
198 73 83
200 198 196
202 49 59
204 29 39
206 204 202
208 206 200
210 208 192
212 175 177
214 163 212
216 145 161
218 216 214
220 129 131
222 117 121
224 222 220
226 224 218
228 101 115
230 99 228
232 79 83
234 232 230
236 55 59
238 35 39
240 238 236
242 240 234
244 242 226
246 171 173
248 246 212
250 161 163
252 157 159
254 252 250
256 254 248
258 99 101
260 95 97
262 260 258
264 45 49
266 264 236
268 266 262
270 268 256
272 153 167
274 147 272
276 141 145
278 276 274
280 121 135
282 119 280
284 89 105
286 284 282
288 286 278
i0 cancel
i1 go
i2 req
o0 grant
EOF
cat <<EOF >exp3
REALIZABLE
aag 264 3 4 1 257
2
4
6
8 313
10 377
12 443
14 483
529
16 13 15
18 11 16
20 3 9
22 7 20
24 22 18
26 2 9
28 7 26
30 28 18
32 6 26
34 32 18
36 6 20
38 36 18
40 3 8
42 7 40
44 42 18
46 2 8
48 7 46
50 48 18
52 6 46
54 52 18
56 6 40
58 56 18
60 9 10
62 60 16
64 3 4
66 7 64
68 66 62
70 2 4
72 7 70
74 72 62
76 6 70
78 76 62
80 6 64
82 80 62
84 10 16
86 5 9
88 7 86
90 88 84
92 6 86
94 92 84
96 5 8
98 96 84
100 8 10
102 100 16
104 66 102
106 72 102
108 76 102
110 80 102
112 12 15
114 11 112
116 22 114
118 28 114
120 32 114
122 36 114
124 42 114
126 48 114
128 52 114
130 56 114
132 60 112
134 66 132
136 72 132
138 76 132
140 80 132
142 10 112
144 88 142
146 92 142
148 96 142
150 4 8
152 3 150
154 152 142
156 2 150
158 156 142
160 13 14
162 11 160
164 20 162
166 26 162
168 42 162
170 48 162
172 52 162
174 56 162
176 60 160
178 66 176
180 72 176
182 76 176
184 80 176
186 10 160
188 86 186
190 96 186
192 100 160
194 66 192
196 72 192
198 76 192
200 80 192
202 12 14
204 9 11
206 204 202
208 11 202
210 96 208
212 8 11
214 212 202
216 66 214
218 72 214
220 76 214
222 80 214
224 60 202
226 66 224
228 72 224
230 76 224
232 80 224
234 10 202
236 86 234
238 100 202
240 66 238
242 72 238
244 76 238
246 80 238
248 96 234
250 241 245
252 231 250
254 221 227
256 254 252
258 199 217
260 189 195
262 260 258
264 262 256
266 179 183
268 169 173
270 268 266
272 155 165
274 147 149
276 274 272
278 276 270
280 278 264
282 135 139
284 125 129
286 284 282
288 117 121
290 105 109
292 290 288
294 292 286
296 95 99
298 69 79
300 298 296
302 45 55
304 25 35
306 304 302
308 306 300
310 308 294
312 310 280
314 243 245
316 231 314
318 221 229
320 318 316
322 199 219
324 189 197
326 324 322
328 326 320
330 181 183
332 171 173
334 332 330
336 159 167
338 145 147
340 338 336
342 340 334
344 342 328
346 137 139
348 127 129
350 348 346
352 119 121
354 107 109
356 354 352
358 356 350
360 91 95
362 75 79
364 362 360
366 51 55
368 31 35
370 368 366
372 370 364
374 372 358
376 374 344
378 245 249
380 243 378
382 237 241
384 382 380
386 221 233
388 219 386
390 211 217
392 390 388
394 392 384
396 199 207
398 197 396
400 191 195
402 400 398
404 173 179
406 404 330
408 406 402
410 408 394
412 169 171
414 149 412
416 338 414
418 131 141
420 121 418
422 117 119
424 422 420
426 424 416
428 105 354
430 296 428
432 83 91
434 39 59
436 434 432
438 436 430
440 438 426
442 440 410
444 247 249
446 237 444
448 211 223
450 207 448
452 450 446
454 191 201
456 189 454
458 175 185
460 167 458
462 460 456
464 462 452
466 159 165
468 155 466
470 145 274
472 470 468
474 111 123
476 99 474
478 360 476
480 478 472
482 480 464
484 245 247
486 241 243
488 486 484
490 221 223
492 219 490
494 492 488
496 201 217
498 197 199
500 498 496
502 185 195
504 183 502
506 504 500
508 506 494
510 179 181
512 173 175
514 512 510
516 123 412
518 516 514
520 111 117
522 520 352
524 428 522
526 524 518
528 526 508
i0 cancel
i1 go
i2 req
o0 grant
EOF
cat <<EOF >exp4
REALIZABLE
aag 174 3 4 1 163
2
4
6
8 251
10 299
12 325
14 333
349
16 13 15
18 11 16
20 7 9
22 3 20
26 6 9
28 3 26
30 28 18
32 2 20
34 32 18
36 2 26
38 36 18
40 7 8
42 2 40
44 42 18
46 6 8
48 2 46
50 48 18
52 3 40
54 52 18
56 3 46
58 56 18
60 9 10
62 60 16
64 7 4
66 3 64
70 6 4
72 3 70
74 72 62
76 2 64
78 76 62
80 2 70
82 80 62
84 10 16
86 5 9
88 7 86
90 88 84
92 6 86
94 92 84
96 8 10
98 96 16
100 76 98
102 80 98
104 66 98
106 72 98
108 7 5
110 2 108
112 110 98
114 6 5
116 2 114
118 116 98
120 5 8
122 3 120
124 122 84
126 12 15
128 11 126
132 28 128
134 32 128
136 36 128
138 42 128
140 48 128
142 3 8
144 142 128
146 60 126
150 72 146
152 76 146
154 80 146
156 10 126
158 86 156
160 96 126
162 76 160
164 80 160
166 66 160
168 72 160
170 120 156
172 13 14
174 9 11
176 174 172
178 76 176
180 80 176
182 66 176
184 72 176
186 11 172
188 86 186
190 8 11
192 190 172
194 10 172
196 32 194
198 36 194
200 22 194
202 28 194
204 199 203
206 189 193
208 206 204
210 181 185
212 171 210
214 212 208
216 165 169
218 159 216
220 151 155
222 141 220
224 222 218
226 224 214
228 133 137
230 119 228
232 103 107
234 95 232
236 234 230
238 75 83
240 59 238
242 39 51
244 31 242
246 244 240
248 246 236
250 248 226
252 197 199
254 179 181
256 254 252
258 163 165
260 155 258
262 260 256
264 145 153
266 141 264
268 137 139
270 135 268
272 270 266
274 272 262
276 113 119
278 103 276
280 95 101
282 91 280
284 282 278
286 79 83
288 51 286
290 39 45
292 35 290
294 292 288
296 294 284
298 296 274
300 201 203
302 183 185
304 302 300
306 167 169
308 119 306
310 308 304
312 107 113
314 95 105
316 314 312
318 59 91
320 55 318
322 320 316
324 322 310
326 171 206
328 145 159
330 125 328
332 330 326
334 185 300
336 169 183
338 336 334
340 107 167
342 105 340
344 55 59
346 344 342
348 346 338
i0 cancel
i1 go
i2 req
o0 grant
EOF
cat <<EOF >exp5
REALIZABLE
aag 289 3 4 1 282
2
4
6
8 367
10 455
12 509
14 547
579
16 13 15
18 11 16
20 7 9
22 3 20
24 22 18
26 2 20
28 26 18
30 6 9
32 2 30
34 32 18
36 3 30
38 36 18
40 7 8
42 3 40
44 42 18
46 2 40
48 46 18
50 6 8
52 2 50
54 52 18
56 3 50
58 56 18
60 9 10
62 60 16
64 7 4
66 3 64
68 66 62
70 2 64
72 70 62
74 6 4
76 2 74
78 76 62
80 3 74
82 80 62
84 10 16
86 5 9
88 7 86
90 88 84
92 6 86
94 92 84
96 8 10
98 96 16
100 70 98
102 76 98
104 7 5
106 2 104
108 106 98
110 6 5
112 2 110
114 112 98
116 5 8
118 3 116
120 118 84
122 66 98
124 80 98
126 12 15
128 11 126
130 26 128
132 32 128
134 22 128
136 36 128
138 46 128
140 52 128
142 3 8
144 142 128
146 10 126
148 26 146
150 32 146
152 22 146
154 36 146
156 96 126
158 66 156
160 70 156
162 76 156
164 80 156
166 7 116
168 166 146
170 6 116
172 170 146
174 13 14
176 9 11
178 176 174
180 70 178
182 76 178
184 66 178
186 80 178
188 106 178
190 112 178
192 11 174
194 3 86
196 194 192
198 8 11
200 198 174
202 70 200
204 76 200
206 106 200
208 112 200
210 118 192
212 66 200
214 80 200
216 60 174
218 66 216
220 70 216
222 76 216
224 80 216
226 10 174
228 86 226
230 96 174
232 70 230
234 76 230
236 66 230
238 80 230
240 116 226
242 12 14
244 176 242
246 70 244
248 76 244
250 11 242
252 86 250
254 66 244
256 80 244
258 198 242
260 10 242
262 22 260
264 26 260
266 32 260
268 36 260
270 96 242
272 70 270
274 76 270
276 66 270
278 80 270
280 116 260
282 279 281
284 277 282
286 267 275
288 259 286
290 288 284
292 255 257
294 253 292
296 241 249
298 296 294
300 298 290
302 237 239
304 235 302
306 223 229
308 215 306
310 308 304
312 209 213
314 205 312
316 191 197
318 316 314
320 318 310
322 320 300
324 185 187
326 183 324
328 163 173
330 155 328
332 330 326
334 151 153
336 141 334
338 135 137
340 338 336
342 340 332
344 125 133
346 123 344
348 109 121
350 103 348
352 350 346
354 79 91
356 55 354
358 25 35
360 358 356
362 360 352
364 362 342
366 364 322
368 273 275
370 267 368
372 263 265
374 249 372
376 374 370
378 235 247
380 233 378
382 221 223
384 219 382
386 384 380
388 386 376
390 207 209
392 205 390
394 197 203
396 191 394
398 396 392
400 183 189
402 181 400
404 169 173
406 404 402
408 406 398
410 408 388
412 161 163
414 159 412
416 149 151
418 145 416
420 418 414
422 139 141
424 133 422
426 109 131
428 426 424
430 428 420
432 101 103
434 91 432
436 73 79
438 69 436
440 438 434
442 49 55
444 45 442
446 29 35
448 446 444
450 448 440
452 450 430
454 452 410
456 263 269
458 456 282
460 257 259
462 241 253
464 462 460
466 464 458
468 229 239
470 219 225
472 470 468
474 211 215
476 197 474
478 476 472
480 478 466
482 165 187
484 155 159
486 484 482
488 137 145
490 125 488
492 490 486
494 91 109
496 69 83
498 496 494
500 45 59
502 39 500
504 502 498
506 504 492
508 506 480
510 263 281
512 259 510
514 229 462
516 514 512
518 211 219
520 209 518
522 197 207
524 522 520
526 524 516
528 189 191
530 173 528
532 159 169
534 532 530
536 115 121
538 95 536
540 45 69
542 540 538
544 542 534
546 544 526
548 277 279
550 257 548
552 239 255
554 552 550
556 215 237
558 187 213
560 558 556
562 560 554
564 155 185
566 137 153
568 566 564
570 125 135
572 25 123
574 572 570
576 574 568
578 576 562
i0 cancel
i1 go
i2 req
o0 grant
EOF
cat <<EOF >exp6
REALIZABLE
aag 76 3 3 1 63
2
4
6
8 125
10 141
12 147
153
14 11 13
16 2 9
18 16 14
20 9 14
26 3 6
28 26 20
30 8 14
32 2 4
34 32 30
42 6 4
44 3 42
46 44 30
48 6 5
50 3 48
52 50 30
54 2 5
56 54 30
58 7 5
60 58 30
62 10 13
64 16 62
66 9 62
70 26 66
72 2 8
74 72 62
76 3 8
78 76 62
80 11 12
82 9 80
84 32 82
86 3 4
88 86 82
90 5 9
92 90 80
94 8 80
96 32 94
100 44 94
102 5 8
104 102 80
106 10 12
108 9 106
110 85 97
112 75 110
114 65 71
116 114 112
118 57 61
120 19 35
122 120 118
124 122 116
126 105 109
128 101 126
130 89 93
132 130 128
134 71 79
136 29 47
138 136 134
140 138 132
142 93 126
144 53 118
146 144 142
148 89 101
150 79 148
152 136 150
i0 cancel
i1 go
i2 req
o0 grant
EOF
for i in 0 1 7 8 9; do
F=$(eval echo \$F$i)
IN=$(eval echo \$IN$i)
OUT=$(eval echo \$OUT$i)
EXP=$(eval echo \$EXP$i)
REAL_REC=$(ltlsynt -f "$F" --input="$IN" --output="$OUT" \
--realizability --algo=rec)
test $REAL_REC = UNREALIZABLE
REAL_QP=$(ltlsynt -f "$F" --input="$IN" --output="$OUT" \
--realizability --algo=qp)
test $REAL_QP = UNREALIZABLE
SYNT=$(ltlsynt -f "$F" --input="$IN" --output="$OUT")
test $SYNT = UNREALIZABLE
PG=$(mktemp)
done
for i in 2 3 4 5 6; do
F=$(eval echo \$F$i)
IN=$(eval echo \$IN$i)
OUT=$(eval echo \$OUT$i)
EXP=$(eval echo \$EXP$i)
REAL=$(ltlsynt -f "$F" --input="$IN" --output="$OUT" --realizability)
test $REAL = REALIZABLE
ltlsynt -f "$F" --input="$IN" --output="$OUT" > out$i
diff out$i exp$i
done