Skip to content

Commit 1409e3d

Browse files
author
Remi Delmas
committed
Fixing tests where inferred clause does not pass verification
1 parent 0192dd0 commit 1409e3d

File tree

10 files changed

+40
-24
lines changed

10 files changed

+40
-24
lines changed

regression/contracts/invar_havoc_dynamic_array/main.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ void main()
99
data[5] = 0;
1010

1111
for(unsigned i = 0; i < SIZE; i++)
12+
__CPROVER_assigns(i, __CPROVER_POINTER_OBJECT(data))
1213
__CPROVER_loop_invariant(i <= SIZE)
1314
{
1415
data[i] = 1;

regression/contracts/invar_havoc_dynamic_array/test.desc

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@ main.c
33
--apply-loop-contracts
44
^EXIT=10$
55
^SIGNAL=0$
6-
^\[main.1\] .* Check loop invariant before entry: SUCCESS$
7-
^\[main.2\] .* Check that loop invariant is preserved: SUCCESS$
8-
^\[main.assertion.1\] .* assertion data\[5\] == 0: FAILURE$
9-
^\[main.assertion.2\] .* assertion data\[5\] == 1: FAILURE$
6+
^\[main\.\d+\] .* Check loop invariant before entry: SUCCESS$
7+
^\[main\.\d+\] .* Check that loop invariant is preserved: SUCCESS$
8+
^\[main\.\d+\] .* Check that i is assignable: SUCCESS$
9+
^\[main\.\d+\] .* Check that data\[\(signed long (long )?int\)i\] is assignable: SUCCESS$
10+
^\[main\.assertion\.\d+\] .* assertion data\[5\] == 0: FAILURE$
11+
^\[main\.assertion\.\d+\] .* assertion data\[5\] == 1: FAILURE$
1012
^VERIFICATION FAILED$
1113
--
1214
--

regression/contracts/invar_havoc_static_multi-dim_array_partial_const_idx/main.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ void main()
1111
data[4][5][6] = 0;
1212

1313
for(unsigned i = 0; i < SIZE; i++)
14-
__CPROVER_loop_invariant(i <= SIZE)
14+
__CPROVER_assigns(i, __CPROVER_POINTER_OBJECT(data))
15+
__CPROVER_loop_invariant(i <= SIZE)
1516
{
1617
data[4][i][6] = 1;
1718
}

regression/contracts/invar_havoc_static_multi-dim_array_partial_const_idx/test.desc

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@ main.c
33
--apply-loop-contracts
44
^EXIT=10$
55
^SIGNAL=0$
6-
^\[main.1\] .* Check loop invariant before entry: SUCCESS$
7-
^\[main.2\] .* Check that loop invariant is preserved: SUCCESS$
8-
^\[main.assertion.1\] .* assertion data\[1\]\[2\]\[3\] == 0: FAILURE$
9-
^\[main.assertion.2\] .* assertion data\[4\]\[5\]\[6\] == 0: FAILURE$
6+
^\[main\.\d+\] .* Check loop invariant before entry: SUCCESS$
7+
^\[main\.\d+\] .* Check that loop invariant is preserved: SUCCESS$
8+
^\[main\.\d+\] .* Check that i is assignable: SUCCESS$
9+
^\[main\.\d+\] .* Check that data\[\(signed long int\)4\]\[\(signed long int\)i\]\[\(signed long int\)6\] is assignable: SUCCESS$
10+
^\[main\.assertion\.\d+\] .* assertion data\[1\]\[2\]\[3\] == 0: FAILURE$
11+
^\[main\.assertion\.\d+\] .* assertion data\[4\]\[5\]\[6\] == 0: FAILURE$
1012
^VERIFICATION FAILED$
1113
--
1214
--

regression/contracts/quantifiers-loop-01/main.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ void main()
99

1010
for(int i = 0; i < N; ++i)
1111
// clang-format off
12+
__CPROVER_assigns(i, __CPROVER_POINTER_OBJECT(a))
1213
__CPROVER_loop_invariant(
1314
(0 <= i) && (i <= N) &&
1415
__CPROVER_forall {

regression/contracts/quantifiers-loop-01/test.desc

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
CORE
22
main.c
3-
--apply-loop-contracts
3+
--apply-loop-contracts _ --trace
44
^EXIT=0$
55
^SIGNAL=0$
6-
^\[main.1\] line .* Check loop invariant before entry: SUCCESS
7-
^\[main.2\] line .* Check that loop invariant is preserved: SUCCESS
8-
^\[main.assertion.1\] line .* assertion a\[10\] == 1: SUCCESS
6+
^\[main\.\d+\] line .* Check loop invariant before entry: SUCCESS$
7+
^\[main\.\d+\] line .* Check that loop invariant is preserved: SUCCESS$
8+
^\[main\.\d+\] line .* Check that i is assignable: SUCCESS$
9+
^\[main\.\d+\] line .* Check that a\[\(signed long (long )?int\)i\] is assignable: SUCCESS$
10+
^\[main\.assertion\.\d+\] line .* assertion a\[10\] == 1: SUCCESS$
911
^VERIFICATION SUCCESSFUL$
1012
--
1113
^warning: ignoring

regression/contracts/quantifiers-loop-02/main.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
#include <assert.h>
22

3+
const int MAX = 3;
34
void main()
45
{
5-
int N, a[64];
6-
__CPROVER_assume(0 <= N && N < 64);
6+
int N, a[MAX];
7+
__CPROVER_assume(0 <= N && N < MAX);
78

89
for(int i = 0; i < N; ++i)
910
// clang-format off
11+
__CPROVER_assigns(i, __CPROVER_POINTER_OBJECT(a))
1012
__CPROVER_loop_invariant(
1113
(0 <= i) && (i <= N) &&
1214
__CPROVER_forall {

regression/contracts/quantifiers-loop-02/test.desc

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1-
CORE smt-backend broken-cprover-smt-backend
1+
CORE smt-backend broken-cprover-smt-backend thorough-smt-backend
22
main.c
33
--apply-loop-contracts _ --z3
44
^EXIT=0$
55
^SIGNAL=0$
6-
^\[main.\d+\] line .* Check loop invariant before entry: SUCCESS
7-
^\[main.\d+\] line .* Check that loop invariant is preserved: SUCCESS
8-
^\[main.assertion.\d+\] line .* assertion .*: SUCCESS
6+
^\[main.\d+\] line .* Check loop invariant before entry: SUCCESS$
7+
^\[main.\d+\] line .* Check that loop invariant is preserved: SUCCESS$
8+
^\[main\.\d+\] line .* Check that i is assignable: SUCCESS$
9+
^\[main\.\d+\] line .* Check that a\[\(signed long (long )?int\)i\] is assignable: SUCCESS$
10+
^\[main.assertion.\d+\] line .* assertion .*: SUCCESS$
911
^VERIFICATION SUCCESSFUL$
1012
--
1113
^warning: ignoring

regression/contracts/quantifiers-loop-03/main.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,13 @@
66
void main()
77
{
88
unsigned N;
9-
__CPROVER_assume(N <= MAX_SIZE);
9+
__CPROVER_assume(0 < N && N <= MAX_SIZE);
1010

1111
int *a = malloc(N * sizeof(int));
1212

1313
for(int i = 0; i < N; ++i)
1414
// clang-format off
15+
__CPROVER_assigns(i, __CPROVER_POINTER_OBJECT(a))
1516
__CPROVER_loop_invariant(
1617
(0 <= i) && (i <= N) &&
1718
(i != 0 ==> __CPROVER_exists {

regression/contracts/quantifiers-loop-03/test.desc

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
CORE
22
main.c
3-
--apply-loop-contracts
3+
--apply-loop-contracts _ --trace
44
^EXIT=0$
55
^SIGNAL=0$
6-
^\[main.1\] line .* Check loop invariant before entry: SUCCESS
7-
^\[main.2\] line .* Check that loop invariant is preserved: SUCCESS
8-
^\[main.assertion.1\] line .* assertion .*: SUCCESS
6+
^\[main\.\d+\] .* Check loop invariant before entry: SUCCESS$
7+
^\[main\.\d+\] .* Check that loop invariant is preserved: SUCCESS$
8+
^\[main\.\d+\] .* Check that i is assignable: SUCCESS$
9+
^\[main\.\d+\] .* Check that a\[\(signed long (long )?int\)i\] is assignable: SUCCESS$
10+
^\[main\.assertion\.\d+\] line .* assertion .*: SUCCESS$
911
^VERIFICATION SUCCESSFUL$
1012
--
1113
^warning: ignoring

0 commit comments

Comments
 (0)