forked from klee/klee
-
Notifications
You must be signed in to change notification settings - Fork 11
Expand file tree
/
Copy pathbtor2c-lazyMod.mul6.c
More file actions
261 lines (259 loc) · 10.4 KB
/
btor2c-lazyMod.mul6.c
File metadata and controls
261 lines (259 loc) · 10.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
// It requires bitwuzla because the script currently runs with bitwuzla solver backend
// REQUIRES: bitwuzla
// REQUIRES: target-x86_64
// RUN: %kleef --property-file=%S/coverage-error-call.prp --max-memory=7000000000 --max-cputime-soft=30 --64 --debug %s 2>&1 | FileCheck %s
// CHECK: KLEE: WARNING: 100.00% Reachable Reachable
// This file is part of the SV-Benchmarks collection of verification tasks:
// https://gitlab.com/sosy-lab/benchmarking/sv-benchmarks
//
// SPDX-FileCopyrightText: 2020 Aman Goel
// SPDX-FileCopyrightText: 2022 The SV-Benchmarks Community
//
// SPDX-License-Identifier: GPL-3.0-or-later
// This C program is converted from Btor2 by Btor2C version bfcfb8b
// with arguments: { architecture=64, lazy_modulo=true, use_memmove=false, unroll_inner_loops=false, shortest_type=true, diff_type=true, decimal_constant=true, zero_init=false, sra_extend_sign=true }
// Comments from the original Btor2 file:
// ; source: https://github.com/aman-goel/avr/tree/92362931700b66684418a991d018c9fbdbebc06f/tests
// ; BTOR description generated by Yosys 0.9+431 (git sha1 4a3b5437, clang 4.0.1-6 -fPIC -Os) for module main.
extern void abort(void);
void reach_error() {}
extern unsigned char __VERIFIER_nondet_uchar();
extern unsigned short __VERIFIER_nondet_ushort();
extern unsigned int __VERIFIER_nondet_uint();
extern unsigned long __VERIFIER_nondet_ulong();
extern unsigned __int128 __VERIFIER_nondet_uint128();
void __VERIFIER_assert(int cond) { if (!(cond)) { ERROR: { reach_error(); abort(); } } }
void assume_abort_if_not(int cond) { if (!cond) { abort(); } }
int main() {
// Defining sorts ...
typedef unsigned char SORT_1; // BV with 1 bits
const SORT_1 mask_SORT_1 = (SORT_1)-1 >> (sizeof(SORT_1) * 8 - 1);
const SORT_1 msb_SORT_1 = (SORT_1)1 << (1 - 1);
typedef unsigned long SORT_5; // BV with 64 bits
const SORT_5 mask_SORT_5 = (SORT_5)-1 >> (sizeof(SORT_5) * 8 - 64);
const SORT_5 msb_SORT_5 = (SORT_5)1 << (64 - 1);
typedef unsigned short SORT_8; // BV with 10 bits
const SORT_8 mask_SORT_8 = (SORT_8)-1 >> (sizeof(SORT_8) * 8 - 10);
const SORT_8 msb_SORT_8 = (SORT_8)1 << (10 - 1);
typedef unsigned __int128 SORT_14; // BV with 128 bits
const SORT_14 mask_SORT_14 = (SORT_14)-1 >> (sizeof(SORT_14) * 8 - 128);
const SORT_14 msb_SORT_14 = (SORT_14)1 << (128 - 1);
typedef unsigned int SORT_57; // BV with 32 bits
const SORT_57 mask_SORT_57 = (SORT_57)-1 >> (sizeof(SORT_57) * 8 - 32);
const SORT_57 msb_SORT_57 = (SORT_57)1 << (32 - 1);
// Initializing constants ...
const SORT_1 var_10 = 0;
const SORT_14 var_15 = 0;
const SORT_1 var_24 = 1;
const SORT_5 var_28 = 0;
const SORT_8 var_35 = 0;
const SORT_57 var_58 = 1;
const SORT_57 var_62 = 1000;
const SORT_5 var_64 = 9223372036854775807;
const SORT_5 var_67 = 12245771;
// Collecting input declarations ...
SORT_1 input_2;
SORT_1 input_3;
SORT_1 input_4;
SORT_5 input_6;
SORT_5 input_7;
SORT_8 input_9;
// Collecting state declarations ...
SORT_1 state_11 = __VERIFIER_nondet_uchar() & mask_SORT_1;
SORT_14 state_16 = __VERIFIER_nondet_uint128() & mask_SORT_14;
SORT_14 state_18 = __VERIFIER_nondet_uint128() & mask_SORT_14;
SORT_5 state_29 = __VERIFIER_nondet_ulong() & mask_SORT_5;
SORT_5 state_31 = __VERIFIER_nondet_ulong() & mask_SORT_5;
SORT_8 state_36 = __VERIFIER_nondet_ushort() & mask_SORT_8;
SORT_1 state_38 = __VERIFIER_nondet_uchar() & mask_SORT_1;
SORT_1 state_40 = __VERIFIER_nondet_uchar() & mask_SORT_1;
SORT_5 state_42 = __VERIFIER_nondet_ulong() & mask_SORT_5;
SORT_5 state_44 = __VERIFIER_nondet_ulong() & mask_SORT_5;
// Initializing states ...
SORT_1 init_12_arg_1 = var_10;
state_11 = init_12_arg_1;
SORT_14 init_17_arg_1 = var_15;
state_16 = init_17_arg_1;
SORT_14 init_19_arg_1 = var_15;
state_18 = init_19_arg_1;
SORT_5 init_30_arg_1 = var_28;
state_29 = init_30_arg_1;
SORT_5 init_32_arg_1 = var_28;
state_31 = init_32_arg_1;
SORT_8 init_37_arg_1 = var_35;
state_36 = init_37_arg_1;
SORT_1 init_39_arg_1 = var_24;
state_38 = init_39_arg_1;
SORT_1 init_41_arg_1 = var_24;
state_40 = init_41_arg_1;
SORT_5 init_43_arg_1 = var_28;
state_42 = init_43_arg_1;
SORT_5 init_45_arg_1 = var_28;
state_44 = init_45_arg_1;
for (;;) {
// Getting external input values ...
input_2 = __VERIFIER_nondet_uchar();
input_3 = __VERIFIER_nondet_uchar();
input_3 = input_3 & mask_SORT_1;
input_4 = __VERIFIER_nondet_uchar();
input_4 = input_4 & mask_SORT_1;
input_6 = __VERIFIER_nondet_ulong();
input_6 = input_6 & mask_SORT_5;
input_7 = __VERIFIER_nondet_ulong();
input_7 = input_7 & mask_SORT_5;
input_9 = __VERIFIER_nondet_ushort();
// Assuming invariants ...
// Asserting properties ...
SORT_1 var_13_arg_0 = state_11;
SORT_1 var_13 = ~var_13_arg_0;
SORT_14 var_20_arg_0 = state_16;
SORT_14 var_20_arg_1 = state_18;
SORT_1 var_20 = var_20_arg_0 == var_20_arg_1;
SORT_1 var_21_arg_0 = var_13;
SORT_1 var_21_arg_1 = var_20;
SORT_1 var_21 = var_21_arg_0 | var_21_arg_1;
SORT_1 var_25_arg_0 = var_21;
SORT_1 var_25 = ~var_25_arg_0;
SORT_1 var_26_arg_0 = var_24;
SORT_1 var_26_arg_1 = var_25;
SORT_1 var_26 = var_26_arg_0 & var_26_arg_1;
var_26 = var_26 & mask_SORT_1;
SORT_1 bad_27_arg_0 = var_26;
__VERIFIER_assert(!(bad_27_arg_0));
// Computing next states ...
SORT_1 next_51_arg_1 = var_24;
SORT_1 var_33_arg_0 = state_11;
SORT_1 var_33 = ~var_33_arg_0;
var_33 = var_33 & mask_SORT_1;
SORT_5 var_52_arg_0 = state_29;
var_52_arg_0 = var_52_arg_0 & mask_SORT_5;
SORT_14 var_52 = var_52_arg_0;
SORT_5 var_53_arg_0 = state_31;
var_53_arg_0 = var_53_arg_0 & mask_SORT_5;
SORT_14 var_53 = var_53_arg_0;
SORT_14 var_54_arg_0 = var_52;
SORT_14 var_54_arg_1 = var_53;
SORT_14 var_54 = var_54_arg_0 * var_54_arg_1;
SORT_1 var_55_arg_0 = var_33;
SORT_14 var_55_arg_1 = var_15;
SORT_14 var_55_arg_2 = var_54;
SORT_14 var_55 = var_55_arg_0 ? var_55_arg_1 : var_55_arg_2;
var_55 = var_55 & mask_SORT_14;
SORT_14 next_56_arg_1 = var_55;
SORT_1 var_71_arg_0 = state_38;
SORT_1 var_71_arg_1 = state_40;
SORT_1 var_71 = var_71_arg_0 | var_71_arg_1;
var_71 = var_71 & mask_SORT_1;
SORT_8 var_61_arg_0 = state_36;
var_61_arg_0 = var_61_arg_0 & mask_SORT_8;
SORT_57 var_61 = var_61_arg_0;
SORT_57 var_63_arg_0 = var_61;
SORT_57 var_63_arg_1 = var_62;
SORT_1 var_63 = var_63_arg_0 > var_63_arg_1;
SORT_5 var_65_arg_0 = input_6;
SORT_5 var_65_arg_1 = var_64;
SORT_1 var_65 = var_65_arg_0 == var_65_arg_1;
SORT_1 var_66_arg_0 = var_63;
SORT_1 var_66_arg_1 = var_65;
SORT_1 var_66 = var_66_arg_0 & var_66_arg_1;
SORT_5 var_68_arg_0 = input_7;
SORT_5 var_68_arg_1 = var_67;
SORT_1 var_68 = var_68_arg_0 == var_68_arg_1;
SORT_1 var_69_arg_0 = var_66;
SORT_1 var_69_arg_1 = var_68;
SORT_1 var_69 = var_69_arg_0 & var_69_arg_1;
var_69 = var_69 & mask_SORT_1;
SORT_5 var_46_arg_0 = state_42;
var_46_arg_0 = var_46_arg_0 & mask_SORT_5;
SORT_14 var_46 = var_46_arg_0;
SORT_5 var_47_arg_0 = state_44;
var_47_arg_0 = var_47_arg_0 & mask_SORT_5;
SORT_14 var_47 = var_47_arg_0;
SORT_14 var_48_arg_0 = var_46;
SORT_14 var_48_arg_1 = var_47;
SORT_14 var_48 = var_48_arg_0 * var_48_arg_1;
SORT_57 var_59_arg_0 = var_58;
var_59_arg_0 = var_59_arg_0 & mask_SORT_57;
SORT_14 var_59 = var_59_arg_0;
SORT_14 var_60_arg_0 = var_48;
SORT_14 var_60_arg_1 = var_59;
SORT_14 var_60 = var_60_arg_0 + var_60_arg_1;
SORT_1 var_70_arg_0 = var_69;
SORT_14 var_70_arg_1 = var_60;
SORT_14 var_70_arg_2 = var_48;
SORT_14 var_70 = var_70_arg_0 ? var_70_arg_1 : var_70_arg_2;
SORT_1 var_72_arg_0 = var_71;
SORT_14 var_72_arg_1 = var_70;
SORT_14 var_72_arg_2 = state_18;
SORT_14 var_72 = var_72_arg_0 ? var_72_arg_1 : var_72_arg_2;
SORT_1 var_73_arg_0 = var_33;
SORT_14 var_73_arg_1 = var_15;
SORT_14 var_73_arg_2 = var_72;
SORT_14 var_73 = var_73_arg_0 ? var_73_arg_1 : var_73_arg_2;
var_73 = var_73 & mask_SORT_14;
SORT_14 next_74_arg_1 = var_73;
SORT_1 var_75_arg_0 = input_3;
SORT_5 var_75_arg_1 = input_6;
SORT_5 var_75_arg_2 = state_29;
SORT_5 var_75 = var_75_arg_0 ? var_75_arg_1 : var_75_arg_2;
SORT_1 var_76_arg_0 = var_33;
SORT_5 var_76_arg_1 = var_28;
SORT_5 var_76_arg_2 = var_75;
SORT_5 var_76 = var_76_arg_0 ? var_76_arg_1 : var_76_arg_2;
SORT_5 next_77_arg_1 = var_76;
SORT_1 var_78_arg_0 = input_4;
SORT_5 var_78_arg_1 = input_7;
SORT_5 var_78_arg_2 = state_31;
SORT_5 var_78 = var_78_arg_0 ? var_78_arg_1 : var_78_arg_2;
SORT_1 var_79_arg_0 = var_33;
SORT_5 var_79_arg_1 = var_28;
SORT_5 var_79_arg_2 = var_78;
SORT_5 var_79 = var_79_arg_0 ? var_79_arg_1 : var_79_arg_2;
SORT_5 next_80_arg_1 = var_79;
SORT_1 var_81_arg_0 = var_33;
SORT_8 var_81_arg_1 = input_9;
SORT_8 var_81_arg_2 = state_36;
SORT_8 var_81 = var_81_arg_0 ? var_81_arg_1 : var_81_arg_2;
SORT_8 next_82_arg_1 = var_81;
SORT_1 var_83_arg_0 = var_33;
SORT_1 var_83_arg_1 = var_24;
SORT_1 var_83_arg_2 = input_3;
SORT_1 var_83 = var_83_arg_0 ? var_83_arg_1 : var_83_arg_2;
SORT_1 next_84_arg_1 = var_83;
SORT_1 var_85_arg_0 = var_33;
SORT_1 var_85_arg_1 = var_24;
SORT_1 var_85_arg_2 = input_4;
SORT_1 var_85 = var_85_arg_0 ? var_85_arg_1 : var_85_arg_2;
SORT_1 next_86_arg_1 = var_85;
SORT_1 var_87_arg_0 = input_3;
SORT_5 var_87_arg_1 = input_6;
SORT_5 var_87_arg_2 = state_42;
SORT_5 var_87 = var_87_arg_0 ? var_87_arg_1 : var_87_arg_2;
SORT_1 var_88_arg_0 = var_33;
SORT_5 var_88_arg_1 = var_28;
SORT_5 var_88_arg_2 = var_87;
SORT_5 var_88 = var_88_arg_0 ? var_88_arg_1 : var_88_arg_2;
SORT_5 next_89_arg_1 = var_88;
SORT_1 var_90_arg_0 = input_4;
SORT_5 var_90_arg_1 = input_7;
SORT_5 var_90_arg_2 = state_44;
SORT_5 var_90 = var_90_arg_0 ? var_90_arg_1 : var_90_arg_2;
SORT_1 var_91_arg_0 = var_33;
SORT_5 var_91_arg_1 = var_28;
SORT_5 var_91_arg_2 = var_90;
SORT_5 var_91 = var_91_arg_0 ? var_91_arg_1 : var_91_arg_2;
SORT_5 next_92_arg_1 = var_91;
// Assigning next states ...
state_11 = next_51_arg_1;
state_16 = next_56_arg_1;
state_18 = next_74_arg_1;
state_29 = next_77_arg_1;
state_31 = next_80_arg_1;
state_36 = next_82_arg_1;
state_38 = next_84_arg_1;
state_40 = next_86_arg_1;
state_42 = next_89_arg_1;
state_44 = next_92_arg_1;
}
return 0;
}