test.py 689 Bytes
Newer Older
1

2 3 4
a = 0
b = 1
while b < 100:
5 6 7
  #@ invariant b >= a >= 0
  #@ invariant b >= 1
  #@ variant 200 - b - a
8 9
  print(a)
  b = a+b
10
  #@ assert b >= 1
11
  a = b-a
12 13

# lists
14
l = range(0, 10)
15
#@ assert forall i. 0 <= i < 10 -> l[i] >= 0
Jean-Christophe Filliâtre's avatar
Jean-Christophe Filliâtre committed
16
l[2] = 42
17
#@ assert l[2] == 42
Jean-Christophe Filliâtre's avatar
Jean-Christophe Filliâtre committed
18 19
i = 0
while i < 10:
20 21 22
  #@ invariant 0 <= i
  #@ invariant forall j. 0 <= j < i -> l[j] == 0
  #@ variant 10 - i
Jean-Christophe Filliâtre's avatar
Jean-Christophe Filliâtre committed
23 24
  l[i] = 0
  i = i+1
25

26 27 28 29 30 31 32 33 34 35 36
for x in l:
  print(x)

# # arithmetic
# # Python's division is not *Euclidean* division
# q = -4 // 3
# #@ assert q == -2
# r = -4 % 3
# #@ assert r == 2
# #@ assert 4 // -3 == -2
# #@ assert 4 % -3 == -2
37

38
# Local Variables:
39
# compile-command: "make -C ../.. && why3 prove -P alt-ergo test.py"
40
# End: