1 |
3
|
krennw
|
types
|
2 |
|
|
MyInt = int [2..100];
|
3 |
|
|
LengthInt = int [0..40];
|
4 |
|
|
Primes = autocons system
|
5 |
|
|
|[
|
6 |
|
|
var
|
7 |
|
|
initialized : bool = false ;
|
8 |
|
|
primes : list [ 40 ] of MyInt = [3]
|
9 |
|
|
actions
|
10 |
|
|
obs init = requires initialized = false :
|
11 |
|
|
primes := [ x | var x: MyInt & (forall tmp : MyInt :
|
12 |
|
|
(tmp < x => (x mod tmp <> 0 ))) ] ;
|
13 |
|
|
initialized := true end;
|
14 |
|
|
|
15 |
|
|
obs Prime(a: MyInt) =
|
16 |
|
|
requires (exists i : LengthInt : (primes[i] = a)) :
|
17 |
|
|
skip
|
18 |
|
|
end
|
19 |
|
|
|
20 |
|
|
do
|
21 |
|
|
init() // var A : MyInt : Prime(A)
|
22 |
|
|
od
|
23 |
|
|
]|
|
24 |
|
|
system
|
25 |
|
|
Primes
|