use implications to encode while and break filters
[pet.git] / tests / for_while_inc.scop
blob7f49451bde28cc8dabd765c76be6b87dd4fff509
1 start: 83
2 end: 234
3 context: '[n] -> {  : n <= 2147483647 and n >= -2147483648 }'
4 arrays:
5 - context: '{  :  }'
6   extent: '[n] -> { __pet_test_0[x1, x2] : exists (e0 = [(-1 + x2)/2]: 2e0 = -1 +
7     x2 and x1 <= -1 + n and x1 >= 0 and x2 >= 9) }'
8   value_bounds: '{ [i0] : i0 >= 0 and i0 <= 1 }'
9   element_type: int
10   element_size: 4
11   uniquely_defined: 1
12 - context: '{  :  }'
13   extent: '[n] -> { s[] }'
14   element_type: int
15   element_size: 4
16 statements:
17 - line: 12
18   domain: '[n] -> { S1[x1] : x1 <= -1 + n and x1 >= 0 }'
19   schedule: '[n] -> { S1[x1] -> [0, x1, 0] }'
20   body:
21     type: binary
22     operation: =
23     arguments:
24     - type: access
25       relation: '[n] -> { S1[x1] -> s[] }'
26       reference: __pet_ref_0
27       read: 0
28       write: 1
29     - type: call
30       name: f
31 - line: 13
32   domain: '[n] -> { [S_1[x1, x2] -> [1]] : exists (e0 = [(-1 + x2)/2]: 2e0 = -1 +
33     x2 and x1 <= -1 + n and x1 >= 0 and x2 >= 9) }'
34   schedule: '[n] -> { S_1[x1, x2] -> [0, x1, 1, x2, 0] }'
35   body:
36     type: binary
37     operation: =
38     arguments:
39     - type: access
40       relation: '[n] -> { S_1[x1, x2] -> __pet_test_0[x1, x2] }'
41       reference: __pet_ref_2
42       read: 0
43       write: 1
44     - type: call
45       name: P
46       arguments:
47       - type: access
48         relation: '[n] -> { S_1[x1, x2] -> [x1] }'
49         reference: __pet_ref_3
50         read: 1
51         write: 0
52       - type: access
53         relation: '[n] -> { S_1[x1, x2] -> [x2] }'
54         reference: __pet_ref_4
55         read: 1
56         write: 0
57   arguments:
58   - type: access
59     relation: '[n] -> { S_1[x1, x2] -> __pet_test_0[x1, -2 + x2] : x2 >= 11 }'
60     reference: __pet_ref_1
61     read: 1
62     write: 0
63 - line: 14
64   domain: '[n] -> { [S2[x1, x2] -> [1]] : exists (e0 = [(-1 + x2)/2]: 2e0 = -1 + x2
65     and x1 <= -1 + n and x1 >= 0 and x2 >= 9) }'
66   schedule: '[n] -> { S2[x1, x2] -> [0, x1, 1, x2, 1, 0] }'
67   body:
68     type: binary
69     operation: =
70     arguments:
71     - type: access
72       relation: '[n] -> { S2[x1, x2] -> s[] }'
73       reference: __pet_ref_6
74       read: 0
75       write: 1
76     - type: call
77       name: g
78       arguments:
79       - type: access
80         relation: '[n] -> { S2[x1, x2] -> s[] }'
81         reference: __pet_ref_7
82         read: 1
83         write: 0
84   arguments:
85   - type: access
86     relation: '[n] -> { S2[x1, x2] -> __pet_test_0[x1, x2] }'
87     reference: __pet_ref_5
88     read: 1
89     write: 0
90 - line: 16
91   domain: '[n] -> { R[x1] : x1 <= -1 + n and x1 >= 0 }'
92   schedule: '[n] -> { R[x1] -> [0, x1, 2] }'
93   body:
94     type: call
95     name: h
96     arguments:
97     - type: access
98       relation: '[n] -> { R[x1] -> s[] }'
99       reference: __pet_ref_8
100       read: 1
101       write: 0
102 implications:
103 - satisfied: 1
104   extension: '[n] -> { __pet_test_0[x1, x2] -> __pet_test_0[x1, x2''] : exists (e0
105     = [(-1 + x2'')/2]: 2e0 = -1 + x2'' and x1 >= 0 and x1 <= -1 + n and x2'' <= x2
106     and x2'' >= 9) }'