4 print("usage: {} maxiterations".format(sys
.argv
[0]))
7 iterations
= int(sys
.argv
[1]) if len(sys
.argv
) > 1 else 11
10 # Print variables and preamble
11 print("(benchmark a4.smt")
12 print(":logic QF_UFLIA")
14 print("(a{} Int)".format(1))
15 print("(a{} Int)".format(numa
))
16 for i
in range(iterations
):
17 for v
in range(2, numa
):
18 print("(i{}a{} Int) ".format(i
, v
))
25 print("(= a{0} {0})".format(numa
, numa
))
26 for i
in range(2, numa
):
27 print("(= i0a{0} {0})".format(i
))
30 for i
in range(1, iterations
):
32 for v
in range(2, numa
):
34 for ov
in [k
for k
in range(2, numa
) if k
!= v
]:
35 print("(= i{0}a{1} i{2}a{1})".format(i
, ov
, i
-1))
36 im1
= 'a1' if v
== 2 else 'i{}a{}'.format(i
, v
-1)
37 ip1
= 'a{}'.format(numa
) if v
== numa
-1 else 'i{}a{}'.format(i
-1, v
+1)
38 print("(= i{}a{} (+ {} {}))".format(i
, v
, im1
, ip1
))
44 for v
in range(2, numa
):
45 print("(and (>= i{}a{} 50)".format(iterations
-1, v
))
47 for ov
in [k
for k
in range(2, numa
) if k
!= v
]:
48 print("(= i{0}a{1} i{0}a{2})".format(iterations
-1, v
, ov
))
52 # Close the and,benchmark parenthesis