File tree Expand file tree Collapse file tree 12 files changed +115
-0
lines changed
regression/cbmc-incr-oneloop Expand file tree Collapse file tree 12 files changed +115
-0
lines changed Original file line number Diff line number Diff line change 1
1
CORE
2
2
main.c
3
3
--incremental-loop main.0 --unwind-max 15
4
+ activate-multi-line-match
4
5
^EXIT=0$
5
6
^SIGNAL=0$
6
7
^VERIFICATION SUCCESSFUL$
8
+ Incremental status: INCONCLUSIVE\nCurrent unwinding: 15
7
9
--
8
10
^warning: ignoring
Original file line number Diff line number Diff line change 5
5
^SIGNAL=0$
6
6
"messageText": "VERIFICATION FAILED"
7
7
"currentUnwinding": 1
8
+ "incrementalStatus": "INCONCLUSIVE"
8
9
--
9
10
^warning: ignoring
Original file line number Diff line number Diff line change 6
6
<text>VERIFICATION FAILED</text>
7
7
<current-unwinding>1</current-unwinding>
8
8
<refinement-iteration>1</refinement-iteration>
9
+ <incremental-status>INCONCLUSIVE</incremental-status>
9
10
--
10
11
^warning: ignoring
Original file line number Diff line number Diff line change 1
1
CORE
2
2
main.c
3
3
--incremental-loop main.0 --unwind-min 5 --unwind-max 10
4
+ activate-multi-line-match
4
5
Current unwinding: 1
6
+ Incremental status: INCONCLUSIVE
7
+ Incremental status: INCONCLUSIVE\nCurrent unwinding: 6
8
+ Incremental status: INCONCLUSIVE\nCurrent unwinding: 7
5
9
^EXIT=10$
6
10
^SIGNAL=0$
7
11
^VERIFICATION FAILED$
8
12
--
9
13
^warning: ignoring
14
+ --
15
+ The multi-line match is added to verify that an incremental status is printed immediately after each unwinding
Original file line number Diff line number Diff line change
1
+ CORE
2
+ test.c
3
+ --incremental-loop main.0 --no-propagation
4
+ activate-multi-line-match
5
+ Incremental status: INCONCLUSIVE\nCurrent unwinding: 2
6
+ Incremental status: INCONCLUSIVE\nCurrent unwinding: 6
7
+ Incremental status: FAILURE\nCurrent unwinding: 7
8
+ ^EXIT=10$
9
+ ^SIGNAL=0$
10
+ ^VERIFICATION FAILED$
11
+ --
12
+ ^warning: ignoring
13
+ --
14
+ Ensure that with multiple properties, the incremental status
15
+ switches to failure as soon as one property has been falsified
16
+ but keeps unwinding till it has resolved them all
17
+
18
+ Use `--no-propagation` to ensure that even the output is the same regardless of whether the asserts are checked via the solver or the constant propagator
Original file line number Diff line number Diff line change
1
+ int main ()
2
+ {
3
+ for (int i = 0 ; i < 10 ; ++ i )
4
+ {
5
+ assert (i != 5 );
6
+ assert (i != 8 );
7
+ }
8
+ return 0 ;
9
+ }
Original file line number Diff line number Diff line change
1
+ CORE
2
+ test.c
3
+ --incremental-loop main.0
4
+ activate-multi-line-match
5
+ Incremental status: INCONCLUSIVE\nCurrent unwinding: 2
6
+ Incremental status: INCONCLUSIVE\nCurrent unwinding: 6
7
+ Incremental status: FAILURE\nCurrent unwinding: 7
8
+ ^EXIT=10$
9
+ ^SIGNAL=0$
10
+ ^VERIFICATION FAILED$
11
+ --
12
+ ^warning: ignoring
13
+ --
14
+ Ensure that with multiple properties, the incremental status
15
+ switches to failure as soon as one property has been falsified
16
+ but keeps unwinding till it has resolved them all
Original file line number Diff line number Diff line change
1
+ int main ()
2
+ {
3
+ for (int i = 0 ; i < 10 ; ++ i )
4
+ {
5
+ }
6
+ // nothing to check
7
+ return 0 ;
8
+ }
Original file line number Diff line number Diff line change
1
+ CORE
2
+ test.c
3
+ --incremental-loop main.0
4
+ activate-multi-line-match
5
+ ^EXIT=0$
6
+ ^SIGNAL=0$
7
+ VERIFICATION SUCCESSFUL
8
+ --
9
+ Incremental status
10
+ --
11
+ Verify no incremental status updates when no properties to check
Original file line number Diff line number Diff line change
1
+ int main ()
2
+ {
3
+ for (int i = 0 ; i < 10 ; ++ i )
4
+ {
5
+ assert (i != 10 );
6
+ }
7
+ return 0 ;
8
+ }
You can’t perform that action at this time.
0 commit comments