Skip to content

Commit

Permalink
Add Freiburg nondet_inc_with_ghosts examples
Browse files Browse the repository at this point in the history
  • Loading branch information
sim642 committed Oct 20, 2023
1 parent 4e7312b commit 4c54140
Show file tree
Hide file tree
Showing 3 changed files with 115 additions and 0 deletions.
43 changes: 43 additions & 0 deletions tests/regression/46-apron2/67-nondet_inc_with_ghosts.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
// PARAM: --enable ana.sv-comp.functions --set ana.activated[+] apron --set ana.relation.privatization mutex-meet --set sem.int.signed_overflow assume_none
#include <pthread.h>
#include <assert.h>

extern int __VERIFIER_nondet_int();
extern void __VERIFIER_atomic_begin();
extern void __VERIFIER_atomic_end();

int x = 0;
int g = 0;

void* inc()
{
int n = __VERIFIER_nondet_int();

while (x < n) {
__VERIFIER_atomic_begin();
x++;
__VERIFIER_atomic_end();

__VERIFIER_atomic_begin();
assert(x >= g); // TODO
__VERIFIER_atomic_end();
}

return 0;
}

int main()
{
pthread_t tid;
pthread_create(&tid, 0, inc, 0);

int val = __VERIFIER_nondet_int();
__VERIFIER_atomic_begin();
g = val; x = val;
__VERIFIER_atomic_end();

__VERIFIER_atomic_begin(); // TODO: atomic needed?
assert(x >= val); // TODO
__VERIFIER_atomic_end();
return 0;
}
38 changes: 38 additions & 0 deletions tests/regression/46-apron2/68-nondet_inc_with_ghosts-2.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
// PARAM: --enable ana.sv-comp.functions --set ana.activated[+] apron --set ana.relation.privatization mutex-meet --set sem.int.signed_overflow assume_none
#include <pthread.h>
#include <assert.h>

extern int __VERIFIER_nondet_int();
extern void __VERIFIER_atomic_begin();
extern void __VERIFIER_atomic_end();

int x = 0;
int g = 0;

void* inc()
{
__VERIFIER_atomic_begin();
x++;
__VERIFIER_atomic_end();

__VERIFIER_atomic_begin();
assert(x >= g); // TODO
__VERIFIER_atomic_end();
return 0;
}

int main()
{
pthread_t tid;
pthread_create(&tid, 0, inc, 0);

int val = __VERIFIER_nondet_int();
__VERIFIER_atomic_begin();
g = val; x = val;
__VERIFIER_atomic_end();

__VERIFIER_atomic_begin(); // TODO: atomic needed?
assert(x >= val); // TODO
__VERIFIER_atomic_end();
return 0;
}
34 changes: 34 additions & 0 deletions tests/regression/46-apron2/69-nondet_inc_with_ghosts-3.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
// PARAM: --enable ana.sv-comp.functions --set ana.activated[+] apron --set ana.relation.privatization mutex-meet --set sem.int.signed_overflow assume_none
#include <pthread.h>
#include <assert.h>

extern int __VERIFIER_nondet_int();
extern void __VERIFIER_atomic_begin();
extern void __VERIFIER_atomic_end();

int x = 0;
int g = 0;

void* inc()
{
__VERIFIER_atomic_begin();
assert(x >= g);
__VERIFIER_atomic_end();
return 0;
}

int main()
{
pthread_t tid;
pthread_create(&tid, 0, inc, 0);

int val = __VERIFIER_nondet_int();
__VERIFIER_atomic_begin();
g = val; x = val;
__VERIFIER_atomic_end();

__VERIFIER_atomic_begin(); // TODO: atomic needed?
assert(x >= val); // TODO
__VERIFIER_atomic_end();
return 0;
}

0 comments on commit 4c54140

Please sign in to comment.