diff --git a/src/plugins/e-acsl/share/e-acsl/e_acsl.h b/src/plugins/e-acsl/share/e-acsl/e_acsl.h index 91e52a86c0b7e07463d08d91be4546513ccb0edd..0687691e0496236a44b4b7cf5f90ad98a8313dfd 100644 --- a/src/plugins/e-acsl/share/e-acsl/e_acsl.h +++ b/src/plugins/e-acsl/share/e-acsl/e_acsl.h @@ -36,7 +36,8 @@ extern int printf(const char *, ...); /* Dedicated E-ACSL function */ /*****************************/ -/*@ requires predicate != 0; */ +/*@ requires predicate != 0; + @ assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { printf("%s failed at line %d.\nThe failing predicate is:\n%s.\n", diff --git a/src/plugins/e-acsl/share/e-acsl/e_acsl_gmp.h b/src/plugins/e-acsl/share/e-acsl/e_acsl_gmp.h index 5b15d2ba3e6980b1625aba9faf295f19f4b25af0..44c74a1f63eb3f8ea2b9fb0fc29611ad01676959 100644 --- a/src/plugins/e-acsl/share/e-acsl/e_acsl_gmp.h +++ b/src/plugins/e-acsl/share/e-acsl/e_acsl_gmp.h @@ -28,25 +28,33 @@ /* Initializers */ /****************/ -/*@ ensures \valid(x); - @ assigns *x; */ -extern void __gmpz_init(mpz_t x); +/*@ ensures \valid(z); + @ allocates z; + @ assigns *z; */ +extern void __gmpz_init(mpz_t z); /*@ requires \valid(z_orig); + @ allocates z; @ ensures \valid(z); - @ assigns *z; */ +// @ ensures z->n == z_orig->n; + @ assigns *z \from *z_orig; */ extern void __gmpz_init_set(mpz_t z, const mpz_t z_orig); -/*@ ensures \valid(z); +/*@ allocates z; + @ ensures \valid(z); +// @ ensures z->n == n; @ assigns *z \from n; */ extern void __gmpz_init_set_ui(mpz_t z, unsigned long int n); -/*@ ensures \valid(z); +/*@ allocates z; + @ ensures \valid(z); +// @ ensures z->n == n; @ assigns *z \from n; */ extern void __gmpz_init_set_si(mpz_t z, signed long int n); -/*@ ensures \valid(z); - @ assigns *z; */ +/*@ allocates z; + @ ensures \valid(z); + @ assigns *z \from str,base; */ extern int __gmpz_init_set_str(mpz_t z, const char *str, int base); /***************/ @@ -55,14 +63,17 @@ extern int __gmpz_init_set_str(mpz_t z, const char *str, int base); /*@ requires \valid(z_orig); @ requires \valid(z); - @ assigns *z; */ +// @ ensures z->n == z_orig->n; + @ assigns *z \from *z_orig; */ extern void __gmpz_set(mpz_t z, const mpz_t z_orig); /*@ requires \valid(z); +// @ ensures z->n == n; @ assigns *z \from n; */ extern void __gmpz_set_ui(mpz_t z, unsigned long int n); /*@ requires \valid(z); +// @ ensures z->n == n; @ assigns *z \from n; */ extern void __gmpz_set_si(mpz_t z, signed long int n); @@ -71,6 +82,7 @@ extern void __gmpz_set_si(mpz_t z, signed long int n); /*************/ /*@ requires \valid(x); + @ frees x; @ assigns *x; */ extern void __gmpz_clear(mpz_t x); @@ -89,37 +101,37 @@ extern int __gmpz_cmp(const mpz_t z1, const mpz_t z2); /*@ requires \valid(z1); @ requires \valid(z2); - @ assigns *z1; */ + @ assigns *z1 \from *z2; */ extern void __gmpz_neg(mpz_t z1, const mpz_t z2); /*@ requires \valid(z1); @ requires \valid(z2); @ requires \valid(z3); - @ assigns *z1; */ + @ assigns *z1 \from *z2, *z3; */ extern void __gmpz_add(mpz_t z1, const mpz_t z2, const mpz_t z3); /*@ requires \valid(z1); @ requires \valid(z2); @ requires \valid(z3); - @ assigns *z1; */ + @ assigns *z1 \from *z2, *z3; */ extern void __gmpz_sub(mpz_t z1, const mpz_t z2, const mpz_t z3); /*@ requires \valid(z1); @ requires \valid(z2); @ requires \valid(z3); - @ assigns *z1; */ + @ assigns *z1 \from *z2, *z3; */ extern void __gmpz_mul(mpz_t z1, const mpz_t z2, const mpz_t z3); /*@ requires \valid(z1); @ requires \valid(z2); @ requires \valid(z3); - @ assigns *z1; */ + @ assigns *z1 \from *z2, *z3; */ extern void __gmpz_tdiv_q(mpz_t z1, const mpz_t z2, const mpz_t z3); /*@ requires \valid(z1); @ requires \valid(z2); @ requires \valid(z3); - @ assigns *z1; */ + @ assigns *z1 \from *z2, *z3; */ extern void __gmpz_tdiv_r(mpz_t z1, const mpz_t z2, const mpz_t z3); /*********************/ @@ -128,7 +140,7 @@ extern void __gmpz_tdiv_r(mpz_t z1, const mpz_t z2, const mpz_t z3); /*@ requires \valid(z1); @ requires \valid(z2); - @ assigns *z1; */ + @ assigns *z1 \from *z2; */ extern int __gmpz_com(mpz_t z1, const mpz_t z2); /************************/ diff --git a/src/plugins/e-acsl/share/e-acsl/e_acsl_gmp_types.h b/src/plugins/e-acsl/share/e-acsl/e_acsl_gmp_types.h index f1609a00da56909e456c26f3cd09ab1d8f1a3a0d..0d5d8621b001311821781cfee97e237e34a8e24c 100644 --- a/src/plugins/e-acsl/share/e-acsl/e_acsl_gmp_types.h +++ b/src/plugins/e-acsl/share/e-acsl/e_acsl_gmp_types.h @@ -24,14 +24,12 @@ /* GMP types */ /*************/ -// [TODO] utiliser un champ modèle de type integer pour modéliser -// l'entier exact correspondant à un mpz_t. -// Not yet implemented in ACSL. - typedef struct { int _mp_alloc; int _mp_size; unsigned long int *_mp_d; } __mpz_struct; +/*@ model __mpz_struct { integer n; }; */ + typedef __mpz_struct mpz_t[1]; diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/addrOf.1.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/addrOf.1.res.oracle index a2d9b51febce6783602fc15c5a0c7b27631d782c..ee9f953b749a62cd50436bcf5825b19ad75dedb9 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/addrOf.1.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/addrOf.1.res.oracle @@ -2,10 +2,10 @@ [value] Computing initial state [value] Initial state computed [value] Values of globals at initialization -PROJECT_FILE.i:235:[value] Assertion got status valid. +PROJECT_FILE.i:246:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:236. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status valid. + Called from PROJECT_FILE.i:247. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status valid. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] Recording results for main @@ -22,29 +22,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -56,6 +80,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -65,13 +91,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -79,7 +110,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -87,7 +120,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -95,7 +130,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -103,14 +140,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -125,7 +167,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/addrOf.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/addrOf.res.oracle index a2d9b51febce6783602fc15c5a0c7b27631d782c..ee9f953b749a62cd50436bcf5825b19ad75dedb9 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/addrOf.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/addrOf.res.oracle @@ -2,10 +2,10 @@ [value] Computing initial state [value] Initial state computed [value] Values of globals at initialization -PROJECT_FILE.i:235:[value] Assertion got status valid. +PROJECT_FILE.i:246:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:236. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status valid. + Called from PROJECT_FILE.i:247. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status valid. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] Recording results for main @@ -22,29 +22,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -56,6 +80,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -65,13 +91,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -79,7 +110,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -87,7 +120,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -95,7 +130,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -103,14 +140,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -125,7 +167,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/arith.1.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/arith.1.res.oracle index 6d5c2538d2094f294baae8a539c9da7544bba187..003e598f9766cff71fb71c57b4f12925983d1da5 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/arith.1.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/arith.1.res.oracle @@ -2,891 +2,891 @@ [value] Computing initial state [value] Initial state computed [value] Values of globals at initialization -PROJECT_FILE.i:237:[value] Assertion got status valid. +PROJECT_FILE.i:248:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:243. + Called from PROJECT_FILE.i:254. [value] using specification for function __gmpz_init_set_si -PROJECT_FILE.i:82:[value] Function __gmpz_init_set_si: postcondition got status valid. +PROJECT_FILE.i:86:[value] Function __gmpz_init_set_si: postcondition got status valid. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:244. + Called from PROJECT_FILE.i:255. [value] using specification for function __gmpz_init -PROJECT_FILE.i:69:[value] Function __gmpz_init: postcondition got status valid. +PROJECT_FILE.i:67:[value] Function __gmpz_init: postcondition got status valid. [value] Done for function __gmpz_init [value] computing for function __gmpz_neg <- main. - Called from PROJECT_FILE.i:245. + Called from PROJECT_FILE.i:256. [value] using specification for function __gmpz_neg -PROJECT_FILE.i:128:[value] Function __gmpz_neg: precondition got status valid. -PROJECT_FILE.i:129:[value] Function __gmpz_neg: precondition got status valid. +PROJECT_FILE.i:138:[value] Function __gmpz_neg: precondition got status valid. +PROJECT_FILE.i:139:[value] Function __gmpz_neg: precondition got status valid. [value] Done for function __gmpz_neg [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:246. + Called from PROJECT_FILE.i:257. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:247. + Called from PROJECT_FILE.i:258. [value] using specification for function __gmpz_cmp -PROJECT_FILE.i:119:[value] Function __gmpz_cmp: precondition got status valid. -PROJECT_FILE.i:120:[value] Function __gmpz_cmp: precondition got status valid. +PROJECT_FILE.i:129:[value] Function __gmpz_cmp: precondition got status valid. +PROJECT_FILE.i:130:[value] Function __gmpz_cmp: precondition got status valid. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:248. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status unknown. + Called from PROJECT_FILE.i:259. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status unknown. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:249. + Called from PROJECT_FILE.i:260. [value] using specification for function __gmpz_clear -PROJECT_FILE.i:111:[value] Function __gmpz_clear: precondition got status valid. +PROJECT_FILE.i:120:[value] Function __gmpz_clear: precondition got status valid. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:250. + Called from PROJECT_FILE.i:261. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:251. + Called from PROJECT_FILE.i:262. [value] Done for function __gmpz_clear -PROJECT_FILE.i:255:[value] Assertion got status valid. +PROJECT_FILE.i:266:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:261. + Called from PROJECT_FILE.i:272. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:262. + Called from PROJECT_FILE.i:273. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:263. + Called from PROJECT_FILE.i:274. [value] Done for function __gmpz_init [value] computing for function __gmpz_neg <- main. - Called from PROJECT_FILE.i:264. + Called from PROJECT_FILE.i:275. [value] Done for function __gmpz_neg [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:265. + Called from PROJECT_FILE.i:276. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:266. + Called from PROJECT_FILE.i:277. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:267. + Called from PROJECT_FILE.i:278. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:268. + Called from PROJECT_FILE.i:279. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:269. + Called from PROJECT_FILE.i:280. [value] Done for function __gmpz_clear -PROJECT_FILE.i:273:[value] Assertion got status valid. +PROJECT_FILE.i:284:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:278. + Called from PROJECT_FILE.i:289. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:279. + Called from PROJECT_FILE.i:290. [value] Done for function __gmpz_init [value] computing for function __gmpz_com <- main. - Called from PROJECT_FILE.i:280. + Called from PROJECT_FILE.i:291. [value] using specification for function __gmpz_com -PROJECT_FILE.i:167:[value] Function __gmpz_com: precondition got status valid. -PROJECT_FILE.i:168:[value] Function __gmpz_com: precondition got status valid. +PROJECT_FILE.i:177:[value] Function __gmpz_com: precondition got status valid. +PROJECT_FILE.i:178:[value] Function __gmpz_com: precondition got status valid. [value] Done for function __gmpz_com [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:281. + Called from PROJECT_FILE.i:292. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:282. + Called from PROJECT_FILE.i:293. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:283. + Called from PROJECT_FILE.i:294. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:284. + Called from PROJECT_FILE.i:295. [value] Done for function __gmpz_clear -PROJECT_FILE.i:288:[value] Assertion got status valid. +PROJECT_FILE.i:299:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:296. + Called from PROJECT_FILE.i:307. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:297. + Called from PROJECT_FILE.i:308. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:298. + Called from PROJECT_FILE.i:309. [value] Done for function __gmpz_init [value] computing for function __gmpz_add <- main. - Called from PROJECT_FILE.i:299. + Called from PROJECT_FILE.i:310. [value] using specification for function __gmpz_add -PROJECT_FILE.i:133:[value] Function __gmpz_add: precondition got status valid. -PROJECT_FILE.i:134:[value] Function __gmpz_add: precondition got status valid. -PROJECT_FILE.i:135:[value] Function __gmpz_add: precondition got status valid. +PROJECT_FILE.i:143:[value] Function __gmpz_add: precondition got status valid. +PROJECT_FILE.i:144:[value] Function __gmpz_add: precondition got status valid. +PROJECT_FILE.i:145:[value] Function __gmpz_add: precondition got status valid. [value] Done for function __gmpz_add [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:300. + Called from PROJECT_FILE.i:311. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:301. + Called from PROJECT_FILE.i:312. [value] Done for function __gmpz_init [value] computing for function __gmpz_neg <- main. - Called from PROJECT_FILE.i:302. + Called from PROJECT_FILE.i:313. [value] Done for function __gmpz_neg [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:303. + Called from PROJECT_FILE.i:314. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:304. + Called from PROJECT_FILE.i:315. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:305. + Called from PROJECT_FILE.i:316. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:306. + Called from PROJECT_FILE.i:317. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:307. + Called from PROJECT_FILE.i:318. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:308. + Called from PROJECT_FILE.i:319. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:309. + Called from PROJECT_FILE.i:320. [value] Done for function __gmpz_clear -PROJECT_FILE.i:313:[value] Assertion got status valid. +PROJECT_FILE.i:324:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:321. + Called from PROJECT_FILE.i:332. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:322. + Called from PROJECT_FILE.i:333. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:323. + Called from PROJECT_FILE.i:334. [value] Done for function __gmpz_init [value] computing for function __gmpz_sub <- main. - Called from PROJECT_FILE.i:324. + Called from PROJECT_FILE.i:335. [value] using specification for function __gmpz_sub -PROJECT_FILE.i:139:[value] Function __gmpz_sub: precondition got status valid. -PROJECT_FILE.i:140:[value] Function __gmpz_sub: precondition got status valid. -PROJECT_FILE.i:141:[value] Function __gmpz_sub: precondition got status valid. +PROJECT_FILE.i:149:[value] Function __gmpz_sub: precondition got status valid. +PROJECT_FILE.i:150:[value] Function __gmpz_sub: precondition got status valid. +PROJECT_FILE.i:151:[value] Function __gmpz_sub: precondition got status valid. [value] Done for function __gmpz_sub [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:325. + Called from PROJECT_FILE.i:336. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:326. + Called from PROJECT_FILE.i:337. [value] Done for function __gmpz_init [value] computing for function __gmpz_neg <- main. - Called from PROJECT_FILE.i:327. + Called from PROJECT_FILE.i:338. [value] Done for function __gmpz_neg [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:328. + Called from PROJECT_FILE.i:339. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:329. + Called from PROJECT_FILE.i:340. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:330. + Called from PROJECT_FILE.i:341. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:331. + Called from PROJECT_FILE.i:342. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:332. + Called from PROJECT_FILE.i:343. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:333. + Called from PROJECT_FILE.i:344. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:334. + Called from PROJECT_FILE.i:345. [value] Done for function __gmpz_clear -PROJECT_FILE.i:338:[value] Assertion got status valid. +PROJECT_FILE.i:349:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:346. + Called from PROJECT_FILE.i:357. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:347. + Called from PROJECT_FILE.i:358. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:348. + Called from PROJECT_FILE.i:359. [value] Done for function __gmpz_init [value] computing for function __gmpz_mul <- main. - Called from PROJECT_FILE.i:349. + Called from PROJECT_FILE.i:360. [value] using specification for function __gmpz_mul -PROJECT_FILE.i:145:[value] Function __gmpz_mul: precondition got status valid. -PROJECT_FILE.i:146:[value] Function __gmpz_mul: precondition got status valid. -PROJECT_FILE.i:147:[value] Function __gmpz_mul: precondition got status valid. +PROJECT_FILE.i:155:[value] Function __gmpz_mul: precondition got status valid. +PROJECT_FILE.i:156:[value] Function __gmpz_mul: precondition got status valid. +PROJECT_FILE.i:157:[value] Function __gmpz_mul: precondition got status valid. [value] Done for function __gmpz_mul [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:350. + Called from PROJECT_FILE.i:361. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:351. + Called from PROJECT_FILE.i:362. [value] Done for function __gmpz_init [value] computing for function __gmpz_neg <- main. - Called from PROJECT_FILE.i:352. + Called from PROJECT_FILE.i:363. [value] Done for function __gmpz_neg [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:353. + Called from PROJECT_FILE.i:364. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:354. + Called from PROJECT_FILE.i:365. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:355. + Called from PROJECT_FILE.i:366. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:356. + Called from PROJECT_FILE.i:367. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:357. + Called from PROJECT_FILE.i:368. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:358. + Called from PROJECT_FILE.i:369. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:359. + Called from PROJECT_FILE.i:370. [value] Done for function __gmpz_clear -PROJECT_FILE.i:363:[value] Assertion got status valid. +PROJECT_FILE.i:374:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:373. + Called from PROJECT_FILE.i:384. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:374. + Called from PROJECT_FILE.i:385. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:375. + Called from PROJECT_FILE.i:386. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:376. + Called from PROJECT_FILE.i:387. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:377. + Called from PROJECT_FILE.i:388. [value] Done for function __gmpz_init -PROJECT_FILE.i:378:[value] Assertion got status valid. +PROJECT_FILE.i:389:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:379. + Called from PROJECT_FILE.i:390. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_tdiv_q <- main. - Called from PROJECT_FILE.i:380. + Called from PROJECT_FILE.i:391. [value] using specification for function __gmpz_tdiv_q -PROJECT_FILE.i:151:[value] Function __gmpz_tdiv_q: precondition got status valid. -PROJECT_FILE.i:152:[value] Function __gmpz_tdiv_q: precondition got status valid. -PROJECT_FILE.i:153:[value] Function __gmpz_tdiv_q: precondition got status valid. +PROJECT_FILE.i:161:[value] Function __gmpz_tdiv_q: precondition got status valid. +PROJECT_FILE.i:162:[value] Function __gmpz_tdiv_q: precondition got status valid. +PROJECT_FILE.i:163:[value] Function __gmpz_tdiv_q: precondition got status valid. [value] Done for function __gmpz_tdiv_q [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:381. + Called from PROJECT_FILE.i:392. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:382. + Called from PROJECT_FILE.i:393. [value] Done for function __gmpz_init [value] computing for function __gmpz_neg <- main. - Called from PROJECT_FILE.i:383. + Called from PROJECT_FILE.i:394. [value] Done for function __gmpz_neg [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:384. + Called from PROJECT_FILE.i:395. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:385. + Called from PROJECT_FILE.i:396. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:386. + Called from PROJECT_FILE.i:397. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:387. + Called from PROJECT_FILE.i:398. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:388. + Called from PROJECT_FILE.i:399. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:389. + Called from PROJECT_FILE.i:400. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:390. + Called from PROJECT_FILE.i:401. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:391. + Called from PROJECT_FILE.i:402. [value] Done for function __gmpz_clear -PROJECT_FILE.i:395:[value] Assertion got status valid. +PROJECT_FILE.i:406:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_str <- main. - Called from PROJECT_FILE.i:403. + Called from PROJECT_FILE.i:414. [value] using specification for function __gmpz_init_set_str -PROJECT_FILE.i:86:[value] Function __gmpz_init_set_str: postcondition got status valid. +PROJECT_FILE.i:92:[value] Function __gmpz_init_set_str: postcondition got status valid. [value] Done for function __gmpz_init_set_str [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:404. + Called from PROJECT_FILE.i:415. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:405. + Called from PROJECT_FILE.i:416. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:406. + Called from PROJECT_FILE.i:417. [value] Done for function __gmpz_init -PROJECT_FILE.i:407:[value] Assertion got status valid. +PROJECT_FILE.i:418:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:408. + Called from PROJECT_FILE.i:419. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_tdiv_q <- main. - Called from PROJECT_FILE.i:410. + Called from PROJECT_FILE.i:421. [value] Done for function __gmpz_tdiv_q [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:411. + Called from PROJECT_FILE.i:422. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:412. + Called from PROJECT_FILE.i:423. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:413. + Called from PROJECT_FILE.i:424. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:415. + Called from PROJECT_FILE.i:426. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:416. + Called from PROJECT_FILE.i:427. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:417. + Called from PROJECT_FILE.i:428. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:418. + Called from PROJECT_FILE.i:429. [value] Done for function __gmpz_clear -PROJECT_FILE.i:422:[value] Assertion got status valid. +PROJECT_FILE.i:433:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:432. + Called from PROJECT_FILE.i:443. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:433. + Called from PROJECT_FILE.i:444. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:434. + Called from PROJECT_FILE.i:445. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:435. + Called from PROJECT_FILE.i:446. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:436. + Called from PROJECT_FILE.i:447. [value] Done for function __gmpz_init -PROJECT_FILE.i:437:[value] Assertion got status valid. +PROJECT_FILE.i:448:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:438. + Called from PROJECT_FILE.i:449. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_tdiv_r <- main. - Called from PROJECT_FILE.i:439. + Called from PROJECT_FILE.i:450. [value] using specification for function __gmpz_tdiv_r -PROJECT_FILE.i:157:[value] Function __gmpz_tdiv_r: precondition got status valid. -PROJECT_FILE.i:158:[value] Function __gmpz_tdiv_r: precondition got status valid. -PROJECT_FILE.i:159:[value] Function __gmpz_tdiv_r: precondition got status valid. +PROJECT_FILE.i:167:[value] Function __gmpz_tdiv_r: precondition got status valid. +PROJECT_FILE.i:168:[value] Function __gmpz_tdiv_r: precondition got status valid. +PROJECT_FILE.i:169:[value] Function __gmpz_tdiv_r: precondition got status valid. [value] Done for function __gmpz_tdiv_r [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:440. + Called from PROJECT_FILE.i:451. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:441. + Called from PROJECT_FILE.i:452. [value] Done for function __gmpz_init [value] computing for function __gmpz_neg <- main. - Called from PROJECT_FILE.i:442. + Called from PROJECT_FILE.i:453. [value] Done for function __gmpz_neg [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:443. + Called from PROJECT_FILE.i:454. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:444. + Called from PROJECT_FILE.i:455. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:445. + Called from PROJECT_FILE.i:456. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:446. + Called from PROJECT_FILE.i:457. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:447. + Called from PROJECT_FILE.i:458. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:448. + Called from PROJECT_FILE.i:459. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:449. + Called from PROJECT_FILE.i:460. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:450. + Called from PROJECT_FILE.i:461. [value] Done for function __gmpz_clear -PROJECT_FILE.i:454:[value] Assertion got status valid. +PROJECT_FILE.i:465:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:466. + Called from PROJECT_FILE.i:477. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:467. + Called from PROJECT_FILE.i:478. [value] Done for function __gmpz_init [value] computing for function __gmpz_neg <- main. - Called from PROJECT_FILE.i:468. + Called from PROJECT_FILE.i:479. [value] Done for function __gmpz_neg [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:469. + Called from PROJECT_FILE.i:480. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:470. + Called from PROJECT_FILE.i:481. [value] Done for function __gmpz_init [value] computing for function __gmpz_neg <- main. - Called from PROJECT_FILE.i:471. + Called from PROJECT_FILE.i:482. [value] Done for function __gmpz_neg [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:472. + Called from PROJECT_FILE.i:483. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:473. + Called from PROJECT_FILE.i:484. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:474. + Called from PROJECT_FILE.i:485. [value] Done for function __gmpz_init -PROJECT_FILE.i:475:[value] Assertion got status valid. +PROJECT_FILE.i:486:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:476. + Called from PROJECT_FILE.i:487. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_tdiv_r <- main. - Called from PROJECT_FILE.i:477. + Called from PROJECT_FILE.i:488. [value] Done for function __gmpz_tdiv_r [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:478. + Called from PROJECT_FILE.i:489. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:479. + Called from PROJECT_FILE.i:490. [value] Done for function __gmpz_init [value] computing for function __gmpz_neg <- main. - Called from PROJECT_FILE.i:480. + Called from PROJECT_FILE.i:491. [value] Done for function __gmpz_neg [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:481. + Called from PROJECT_FILE.i:492. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:482. + Called from PROJECT_FILE.i:493. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:483. + Called from PROJECT_FILE.i:494. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:484. + Called from PROJECT_FILE.i:495. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:485. + Called from PROJECT_FILE.i:496. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:486. + Called from PROJECT_FILE.i:497. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:487. + Called from PROJECT_FILE.i:498. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:488. + Called from PROJECT_FILE.i:499. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:489. + Called from PROJECT_FILE.i:500. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:490. + Called from PROJECT_FILE.i:501. [value] Done for function __gmpz_clear -PROJECT_FILE.i:494:[value] Assertion got status valid. +PROJECT_FILE.i:505:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:504. + Called from PROJECT_FILE.i:515. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:505. + Called from PROJECT_FILE.i:516. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:506. + Called from PROJECT_FILE.i:517. [value] Done for function __gmpz_init [value] computing for function __gmpz_neg <- main. - Called from PROJECT_FILE.i:507. + Called from PROJECT_FILE.i:518. [value] Done for function __gmpz_neg [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:508. + Called from PROJECT_FILE.i:519. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:509. + Called from PROJECT_FILE.i:520. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:510. + Called from PROJECT_FILE.i:521. [value] Done for function __gmpz_init -PROJECT_FILE.i:511:[value] Assertion got status valid. +PROJECT_FILE.i:522:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:512. + Called from PROJECT_FILE.i:523. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_tdiv_r <- main. - Called from PROJECT_FILE.i:513. + Called from PROJECT_FILE.i:524. [value] Done for function __gmpz_tdiv_r [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:514. + Called from PROJECT_FILE.i:525. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:515. + Called from PROJECT_FILE.i:526. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:516. + Called from PROJECT_FILE.i:527. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:517. + Called from PROJECT_FILE.i:528. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:518. + Called from PROJECT_FILE.i:529. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:519. + Called from PROJECT_FILE.i:530. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:520. + Called from PROJECT_FILE.i:531. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:521. + Called from PROJECT_FILE.i:532. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:522. + Called from PROJECT_FILE.i:533. [value] Done for function __gmpz_clear -PROJECT_FILE.i:526:[value] Assertion got status valid. +PROJECT_FILE.i:537:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:542. + Called from PROJECT_FILE.i:553. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:543. + Called from PROJECT_FILE.i:554. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:544. + Called from PROJECT_FILE.i:555. [value] Done for function __gmpz_init [value] computing for function __gmpz_mul <- main. - Called from PROJECT_FILE.i:545. + Called from PROJECT_FILE.i:556. [value] Done for function __gmpz_mul [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:546. + Called from PROJECT_FILE.i:557. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:547. + Called from PROJECT_FILE.i:558. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:548. + Called from PROJECT_FILE.i:559. [value] Done for function __gmpz_init [value] computing for function __gmpz_add <- main. - Called from PROJECT_FILE.i:549. + Called from PROJECT_FILE.i:560. [value] Done for function __gmpz_add [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:550. + Called from PROJECT_FILE.i:561. [value] Done for function __gmpz_init [value] computing for function __gmpz_add <- main. - Called from PROJECT_FILE.i:551. + Called from PROJECT_FILE.i:562. [value] Done for function __gmpz_add [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:552. + Called from PROJECT_FILE.i:563. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:553. + Called from PROJECT_FILE.i:564. [value] Done for function __gmpz_init [value] computing for function __gmpz_sub <- main. - Called from PROJECT_FILE.i:554. + Called from PROJECT_FILE.i:565. [value] Done for function __gmpz_sub [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:555. + Called from PROJECT_FILE.i:566. [value] Done for function __gmpz_init [value] computing for function __gmpz_sub <- main. - Called from PROJECT_FILE.i:556. + Called from PROJECT_FILE.i:567. [value] Done for function __gmpz_sub [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:557. + Called from PROJECT_FILE.i:568. [value] Done for function __gmpz_init [value] computing for function __gmpz_add <- main. - Called from PROJECT_FILE.i:558. + Called from PROJECT_FILE.i:569. [value] Done for function __gmpz_add [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:559. + Called from PROJECT_FILE.i:570. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:560. + Called from PROJECT_FILE.i:571. [value] Done for function __gmpz_init [value] computing for function __gmpz_neg <- main. - Called from PROJECT_FILE.i:561. + Called from PROJECT_FILE.i:572. [value] Done for function __gmpz_neg [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:562. + Called from PROJECT_FILE.i:573. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:563. + Called from PROJECT_FILE.i:574. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:565. + Called from PROJECT_FILE.i:576. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:566. + Called from PROJECT_FILE.i:577. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:567. + Called from PROJECT_FILE.i:578. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:568. + Called from PROJECT_FILE.i:579. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:569. + Called from PROJECT_FILE.i:580. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:570. + Called from PROJECT_FILE.i:581. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:571. + Called from PROJECT_FILE.i:582. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:572. + Called from PROJECT_FILE.i:583. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:573. + Called from PROJECT_FILE.i:584. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:574. + Called from PROJECT_FILE.i:585. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:575. + Called from PROJECT_FILE.i:586. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:576. + Called from PROJECT_FILE.i:587. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:577. + Called from PROJECT_FILE.i:588. [value] Done for function __gmpz_clear -PROJECT_FILE.i:581:[value] Assertion got status valid. +PROJECT_FILE.i:592:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:592. + Called from PROJECT_FILE.i:603. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:593. + Called from PROJECT_FILE.i:604. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:594. + Called from PROJECT_FILE.i:605. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:595. + Called from PROJECT_FILE.i:606. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:596. + Called from PROJECT_FILE.i:607. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:597. + Called from PROJECT_FILE.i:608. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:598. + Called from PROJECT_FILE.i:609. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:599. + Called from PROJECT_FILE.i:610. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:600. + Called from PROJECT_FILE.i:611. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:601. + Called from PROJECT_FILE.i:612. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:602. + Called from PROJECT_FILE.i:613. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:603. + Called from PROJECT_FILE.i:614. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:604. + Called from PROJECT_FILE.i:615. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:605. + Called from PROJECT_FILE.i:616. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:606. + Called from PROJECT_FILE.i:617. [value] Done for function __gmpz_clear -PROJECT_FILE.i:610:[value] Assertion got status valid. +PROJECT_FILE.i:621:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:620. + Called from PROJECT_FILE.i:631. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:621. + Called from PROJECT_FILE.i:632. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:622. + Called from PROJECT_FILE.i:633. [value] Done for function __gmpz_init [value] computing for function __gmpz_neg <- main. - Called from PROJECT_FILE.i:623. + Called from PROJECT_FILE.i:634. [value] Done for function __gmpz_neg [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:624. + Called from PROJECT_FILE.i:635. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:625. + Called from PROJECT_FILE.i:636. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:626. + Called from PROJECT_FILE.i:637. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:627. + Called from PROJECT_FILE.i:638. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:628. + Called from PROJECT_FILE.i:639. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:629. + Called from PROJECT_FILE.i:640. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:630. + Called from PROJECT_FILE.i:641. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:631. + Called from PROJECT_FILE.i:642. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:632. + Called from PROJECT_FILE.i:643. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:633. + Called from PROJECT_FILE.i:644. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:634. + Called from PROJECT_FILE.i:645. [value] Done for function __gmpz_clear -PROJECT_FILE.i:638:[value] Assertion got status valid. +PROJECT_FILE.i:649:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:648. + Called from PROJECT_FILE.i:659. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:649. + Called from PROJECT_FILE.i:660. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:650. + Called from PROJECT_FILE.i:661. [value] Done for function __gmpz_init [value] computing for function __gmpz_neg <- main. - Called from PROJECT_FILE.i:651. + Called from PROJECT_FILE.i:662. [value] Done for function __gmpz_neg [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:652. + Called from PROJECT_FILE.i:663. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:653. + Called from PROJECT_FILE.i:664. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:654. + Called from PROJECT_FILE.i:665. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:655. + Called from PROJECT_FILE.i:666. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:656. + Called from PROJECT_FILE.i:667. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:657. + Called from PROJECT_FILE.i:668. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:658. + Called from PROJECT_FILE.i:669. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:659. + Called from PROJECT_FILE.i:670. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:660. + Called from PROJECT_FILE.i:671. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:661. + Called from PROJECT_FILE.i:672. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:662. + Called from PROJECT_FILE.i:673. [value] Done for function __gmpz_clear -PROJECT_FILE.i:666:[value] Assertion got status valid. +PROJECT_FILE.i:677:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:677. + Called from PROJECT_FILE.i:688. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:678. + Called from PROJECT_FILE.i:689. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:679. + Called from PROJECT_FILE.i:690. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:680. + Called from PROJECT_FILE.i:691. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:681. + Called from PROJECT_FILE.i:692. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:682. + Called from PROJECT_FILE.i:693. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:683. + Called from PROJECT_FILE.i:694. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:684. + Called from PROJECT_FILE.i:695. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:685. + Called from PROJECT_FILE.i:696. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:686. + Called from PROJECT_FILE.i:697. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:687. + Called from PROJECT_FILE.i:698. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:688. + Called from PROJECT_FILE.i:699. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:689. + Called from PROJECT_FILE.i:700. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:690. + Called from PROJECT_FILE.i:701. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:691. + Called from PROJECT_FILE.i:702. [value] Done for function __gmpz_clear -PROJECT_FILE.i:695:[value] Assertion got status valid. +PROJECT_FILE.i:706:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:706. + Called from PROJECT_FILE.i:717. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:707. + Called from PROJECT_FILE.i:718. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:708. + Called from PROJECT_FILE.i:719. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:709. + Called from PROJECT_FILE.i:720. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:710. + Called from PROJECT_FILE.i:721. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:711. + Called from PROJECT_FILE.i:722. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:712. + Called from PROJECT_FILE.i:723. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:713. + Called from PROJECT_FILE.i:724. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:714. + Called from PROJECT_FILE.i:725. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:715. + Called from PROJECT_FILE.i:726. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:716. + Called from PROJECT_FILE.i:727. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:717. + Called from PROJECT_FILE.i:728. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:718. + Called from PROJECT_FILE.i:729. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:719. + Called from PROJECT_FILE.i:730. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:720. + Called from PROJECT_FILE.i:731. [value] Done for function __gmpz_clear [value] Recording results for main [value] done for function main @@ -904,33 +904,53 @@ struct __anonstruct___mpz_struct_1 { }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; typedef __mpz_struct mpz_t[1]; -/*@ ensures \valid(\old(x)); - allocates \nothing; - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); - allocates \nothing; + allocates \old(z); + assigns *z; assigns *z \from n; */ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - allocates \nothing; - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -942,7 +962,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); - allocates \nothing; + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -956,7 +977,9 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); allocates \nothing; - assigns *z1; + assigns *z1; + assigns *z1 \from *z2; + */ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); @@ -965,6 +988,7 @@ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, requires \valid(z3); allocates \nothing; assigns *z1; + assigns *z1 \from *z2, *z3; */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, @@ -975,6 +999,7 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, requires \valid(z3); allocates \nothing; assigns *z1; + assigns *z1 \from *z2, *z3; */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, @@ -985,6 +1010,7 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, requires \valid(z3); allocates \nothing; assigns *z1; + assigns *z1 \from *z2, *z3; */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, @@ -995,6 +1021,7 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, requires \valid(z3); allocates \nothing; assigns *z1; + assigns *z1 \from *z2, *z3; */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, @@ -1005,6 +1032,7 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, requires \valid(z3); allocates \nothing; assigns *z1; + assigns *z1 \from *z2, *z3; */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, @@ -1013,7 +1041,9 @@ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); allocates \nothing; - assigns *z1; + assigns *z1; + assigns *z1 \from *z2; + */ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); @@ -1029,7 +1059,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/arith.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/arith.res.oracle index 7de092274cb3c24e15fbacaf6e884bff16e99dc3..ad1477064567879433f48c8692b84e49ca885e8c 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/arith.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/arith.res.oracle @@ -2,115 +2,115 @@ [value] Computing initial state [value] Initial state computed [value] Values of globals at initialization -PROJECT_FILE.i:237:[value] Assertion got status valid. +PROJECT_FILE.i:248:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:238. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status valid. + Called from PROJECT_FILE.i:249. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status valid. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:240:[value] Assertion got status valid. +PROJECT_FILE.i:251:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:241. + Called from PROJECT_FILE.i:252. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:243:[value] Assertion got status valid. +PROJECT_FILE.i:254:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:244. + Called from PROJECT_FILE.i:255. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:246:[value] Assertion got status valid. +PROJECT_FILE.i:257:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:247. + Called from PROJECT_FILE.i:258. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:250:[value] Assertion got status valid. +PROJECT_FILE.i:261:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:251. + Called from PROJECT_FILE.i:262. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:254:[value] Assertion got status valid. +PROJECT_FILE.i:265:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:255. + Called from PROJECT_FILE.i:266. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:258:[value] Assertion got status valid. -PROJECT_FILE.i:261:[value] Assertion got status valid. +PROJECT_FILE.i:269:[value] Assertion got status valid. +PROJECT_FILE.i:272:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:262. + Called from PROJECT_FILE.i:273. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:264. + Called from PROJECT_FILE.i:275. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:268:[value] Assertion got status valid. -PROJECT_FILE.i:271:[value] Assertion got status valid. +PROJECT_FILE.i:279:[value] Assertion got status valid. +PROJECT_FILE.i:282:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:272. + Called from PROJECT_FILE.i:283. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:275. + Called from PROJECT_FILE.i:286. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:280:[value] Assertion got status valid. -PROJECT_FILE.i:283:[value] Assertion got status valid. +PROJECT_FILE.i:291:[value] Assertion got status valid. +PROJECT_FILE.i:294:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:284. + Called from PROJECT_FILE.i:295. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:286. + Called from PROJECT_FILE.i:297. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:290:[value] Assertion got status valid. -PROJECT_FILE.i:293:[value] Assertion got status valid. +PROJECT_FILE.i:301:[value] Assertion got status valid. +PROJECT_FILE.i:304:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:294. + Called from PROJECT_FILE.i:305. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:296. + Called from PROJECT_FILE.i:307. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:300:[value] Assertion got status valid. -PROJECT_FILE.i:303:[value] Assertion got status valid. +PROJECT_FILE.i:311:[value] Assertion got status valid. +PROJECT_FILE.i:314:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:304. + Called from PROJECT_FILE.i:315. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:306. + Called from PROJECT_FILE.i:317. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:310:[value] Assertion got status valid. +PROJECT_FILE.i:321:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:311. + Called from PROJECT_FILE.i:322. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:315:[value] Assertion got status valid. +PROJECT_FILE.i:326:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:316. + Called from PROJECT_FILE.i:327. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:318:[value] Assertion got status valid. +PROJECT_FILE.i:329:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:319. + Called from PROJECT_FILE.i:330. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:321:[value] Assertion got status valid. +PROJECT_FILE.i:332:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:322. + Called from PROJECT_FILE.i:333. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:324:[value] Assertion got status valid. +PROJECT_FILE.i:335:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:325. + Called from PROJECT_FILE.i:336. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:327:[value] Assertion got status valid. +PROJECT_FILE.i:338:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:328. + Called from PROJECT_FILE.i:339. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] Recording results for main @@ -128,29 +128,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -162,6 +186,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -171,13 +197,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -185,7 +216,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -193,7 +226,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -201,7 +236,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -209,14 +246,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -231,7 +273,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/array.1.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/array.1.res.oracle index 994ad872b432d0e4b4a5b429ae63902c2e14171d..c04bb45f4ead2df61c2f61e2658165729e07e073 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/array.1.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/array.1.res.oracle @@ -8,56 +8,56 @@ tests/e-acsl-runtime/array.i:15:[e-acsl] warning: missing guard for ensuring tha [value] Values of globals at initialization T1[0..2] ∈ {0} T2[0..3] ∈ {0} -PROJECT_FILE.i:237:[value] entering loop for the first time -PROJECT_FILE.i:241:[value] assigning non deterministic value for the first time -PROJECT_FILE.i:246:[value] entering loop for the first time -PROJECT_FILE.i:253:[value] Assertion got status unknown. +PROJECT_FILE.i:248:[value] entering loop for the first time +PROJECT_FILE.i:252:[value] assigning non deterministic value for the first time +PROJECT_FILE.i:257:[value] entering loop for the first time +PROJECT_FILE.i:264:[value] Assertion got status unknown. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:258. + Called from PROJECT_FILE.i:269. [value] using specification for function __gmpz_init_set_si -PROJECT_FILE.i:82:[value] Function __gmpz_init_set_si: postcondition got status valid. +PROJECT_FILE.i:86:[value] Function __gmpz_init_set_si: postcondition got status valid. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:259. + Called from PROJECT_FILE.i:270. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:260. + Called from PROJECT_FILE.i:271. [value] using specification for function __gmpz_cmp -PROJECT_FILE.i:119:[value] Function __gmpz_cmp: precondition got status valid. -PROJECT_FILE.i:120:[value] Function __gmpz_cmp: precondition got status valid. +PROJECT_FILE.i:129:[value] Function __gmpz_cmp: precondition got status valid. +PROJECT_FILE.i:130:[value] Function __gmpz_cmp: precondition got status valid. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:261. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status unknown. + Called from PROJECT_FILE.i:272. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status unknown. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:262. + Called from PROJECT_FILE.i:273. [value] using specification for function __gmpz_clear -PROJECT_FILE.i:111:[value] Function __gmpz_clear: precondition got status valid. +PROJECT_FILE.i:120:[value] Function __gmpz_clear: precondition got status valid. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:263. + Called from PROJECT_FILE.i:274. [value] Done for function __gmpz_clear -PROJECT_FILE.i:267:[value] Assertion got status unknown. +PROJECT_FILE.i:278:[value] Assertion got status unknown. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:272. + Called from PROJECT_FILE.i:283. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:273. + Called from PROJECT_FILE.i:284. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:274. + Called from PROJECT_FILE.i:285. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:275. + Called from PROJECT_FILE.i:286. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:276. + Called from PROJECT_FILE.i:287. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:277. + Called from PROJECT_FILE.i:288. [value] Done for function __gmpz_clear [value] Recording results for main [value] done for function main @@ -77,31 +77,53 @@ struct __anonstruct___mpz_struct_1 { }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; typedef __mpz_struct mpz_t[1]; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); - allocates \nothing; + allocates \old(z); + assigns *z; assigns *z \from n; */ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -113,7 +135,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); - allocates \nothing; + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -126,13 +149,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -140,7 +168,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -148,7 +178,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -156,7 +188,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -164,14 +198,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -186,7 +225,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/array.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/array.res.oracle index 2b385ff3c649605e81774e47dccc8bcf8aabe89b..96d488431aac1816be07520dbd7706dbaa1b80af 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/array.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/array.res.oracle @@ -8,18 +8,18 @@ tests/e-acsl-runtime/array.i:15:[e-acsl] warning: missing guard for ensuring tha [value] Values of globals at initialization T1[0..2] ∈ {0} T2[0..3] ∈ {0} -PROJECT_FILE.i:237:[value] entering loop for the first time -PROJECT_FILE.i:241:[value] assigning non deterministic value for the first time -PROJECT_FILE.i:246:[value] entering loop for the first time -PROJECT_FILE.i:253:[value] Assertion got status unknown. +PROJECT_FILE.i:248:[value] entering loop for the first time +PROJECT_FILE.i:252:[value] assigning non deterministic value for the first time +PROJECT_FILE.i:257:[value] entering loop for the first time +PROJECT_FILE.i:264:[value] Assertion got status unknown. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:254. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status unknown. + Called from PROJECT_FILE.i:265. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status unknown. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:256:[value] Assertion got status unknown. +PROJECT_FILE.i:267:[value] Assertion got status unknown. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:257. + Called from PROJECT_FILE.i:268. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] Recording results for main @@ -39,29 +39,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -73,6 +97,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -82,13 +108,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -96,7 +127,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -104,7 +137,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -112,7 +147,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -120,14 +157,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -142,7 +184,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/at.1.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/at.1.res.oracle index 1ef42679fd65765b6e8cc711958134a1e7ad0d4e..39f2d61baa64f8842d39ce9a5b04d152b5cbe9da 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/at.1.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/at.1.res.oracle @@ -10,293 +10,293 @@ tests/e-acsl-runtime/at.i:34:[e-acsl] warning: missing guard for ensuring that p [value] Values of globals at initialization A ∈ {0} [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:390. + Called from PROJECT_FILE.i:401. [value] using specification for function __gmpz_init_set_si -PROJECT_FILE.i:82:[value] Function __gmpz_init_set_si: postcondition got status valid. +PROJECT_FILE.i:86:[value] Function __gmpz_init_set_si: postcondition got status valid. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:391. + Called from PROJECT_FILE.i:402. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:392. + Called from PROJECT_FILE.i:403. [value] using specification for function __gmpz_init -PROJECT_FILE.i:69:[value] Function __gmpz_init: postcondition got status valid. +PROJECT_FILE.i:67:[value] Function __gmpz_init: postcondition got status valid. [value] Done for function __gmpz_init [value] computing for function __gmpz_add <- main. - Called from PROJECT_FILE.i:393. + Called from PROJECT_FILE.i:404. [value] using specification for function __gmpz_add -PROJECT_FILE.i:133:[value] Function __gmpz_add: precondition got status valid. -PROJECT_FILE.i:134:[value] Function __gmpz_add: precondition got status valid. -PROJECT_FILE.i:135:[value] Function __gmpz_add: precondition got status valid. +PROJECT_FILE.i:143:[value] Function __gmpz_add: precondition got status valid. +PROJECT_FILE.i:144:[value] Function __gmpz_add: precondition got status valid. +PROJECT_FILE.i:145:[value] Function __gmpz_add: precondition got status valid. [value] Done for function __gmpz_add [value] computing for function __gmpz_init_set <- main. - Called from PROJECT_FILE.i:394. + Called from PROJECT_FILE.i:405. [value] using specification for function __gmpz_init_set -PROJECT_FILE.i:73:[value] Function __gmpz_init_set: precondition got status valid. +PROJECT_FILE.i:72:[value] Function __gmpz_init_set: precondition got status valid. PROJECT_FILE.i:74:[value] Function __gmpz_init_set: postcondition got status valid. [value] Done for function __gmpz_init_set [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:395. + Called from PROJECT_FILE.i:406. [value] using specification for function __gmpz_clear -PROJECT_FILE.i:111:[value] Function __gmpz_clear: precondition got status valid. +PROJECT_FILE.i:120:[value] Function __gmpz_clear: precondition got status valid. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:396. + Called from PROJECT_FILE.i:407. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:397. + Called from PROJECT_FILE.i:408. [value] Done for function __gmpz_clear -PROJECT_FILE.i:401:[value] Assertion got status valid. +PROJECT_FILE.i:412:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:406. + Called from PROJECT_FILE.i:417. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:407. + Called from PROJECT_FILE.i:418. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:408. + Called from PROJECT_FILE.i:419. [value] using specification for function __gmpz_cmp -PROJECT_FILE.i:119:[value] Function __gmpz_cmp: precondition got status valid. -PROJECT_FILE.i:120:[value] Function __gmpz_cmp: precondition got status valid. +PROJECT_FILE.i:129:[value] Function __gmpz_cmp: precondition got status valid. +PROJECT_FILE.i:130:[value] Function __gmpz_cmp: precondition got status valid. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:409. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status unknown. + Called from PROJECT_FILE.i:420. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status unknown. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:410. + Called from PROJECT_FILE.i:421. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:411. + Called from PROJECT_FILE.i:422. [value] Done for function __gmpz_clear [value] computing for function f <- main. - Called from PROJECT_FILE.i:417. -PROJECT_FILE.i:247:[value] Assertion got status valid. + Called from PROJECT_FILE.i:428. +PROJECT_FILE.i:258:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- f <- main. - Called from PROJECT_FILE.i:252. + Called from PROJECT_FILE.i:263. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- f <- main. - Called from PROJECT_FILE.i:253. + Called from PROJECT_FILE.i:264. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- f <- main. - Called from PROJECT_FILE.i:254. + Called from PROJECT_FILE.i:265. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- f <- main. - Called from PROJECT_FILE.i:255. + Called from PROJECT_FILE.i:266. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- f <- main. - Called from PROJECT_FILE.i:256. + Called from PROJECT_FILE.i:267. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- f <- main. - Called from PROJECT_FILE.i:257. + Called from PROJECT_FILE.i:268. [value] Done for function __gmpz_clear -PROJECT_FILE.i:261:[value] cannot evaluate ACSL term, +PROJECT_FILE.i:272:[value] cannot evaluate ACSL term, unsupported ACSL construct: \at() on a C label -PROJECT_FILE.i:261:[value] Assertion got status unknown. +PROJECT_FILE.i:272:[value] Assertion got status unknown. [value] computing for function __gmpz_init_set_si <- f <- main. - Called from PROJECT_FILE.i:266. + Called from PROJECT_FILE.i:277. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- f <- main. - Called from PROJECT_FILE.i:267. + Called from PROJECT_FILE.i:278. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- f <- main. - Called from PROJECT_FILE.i:268. + Called from PROJECT_FILE.i:279. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- f <- main. - Called from PROJECT_FILE.i:269. + Called from PROJECT_FILE.i:280. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- f <- main. - Called from PROJECT_FILE.i:270. + Called from PROJECT_FILE.i:281. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- f <- main. - Called from PROJECT_FILE.i:271. + Called from PROJECT_FILE.i:282. [value] Done for function __gmpz_clear -PROJECT_FILE.i:275:[value] Assertion got status valid. +PROJECT_FILE.i:286:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- f <- main. - Called from PROJECT_FILE.i:281. + Called from PROJECT_FILE.i:292. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- f <- main. - Called from PROJECT_FILE.i:282. + Called from PROJECT_FILE.i:293. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- f <- main. - Called from PROJECT_FILE.i:283. + Called from PROJECT_FILE.i:294. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- f <- main. - Called from PROJECT_FILE.i:284. + Called from PROJECT_FILE.i:295. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- f <- main. - Called from PROJECT_FILE.i:285. + Called from PROJECT_FILE.i:296. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- f <- main. - Called from PROJECT_FILE.i:286. + Called from PROJECT_FILE.i:297. [value] Done for function __gmpz_clear -PROJECT_FILE.i:290:[value] cannot evaluate ACSL term, +PROJECT_FILE.i:301:[value] cannot evaluate ACSL term, unsupported ACSL construct: \at() on a C label -PROJECT_FILE.i:290:[value] Assertion got status unknown. +PROJECT_FILE.i:301:[value] Assertion got status unknown. [value] computing for function __gmpz_init_set_si <- f <- main. - Called from PROJECT_FILE.i:295. + Called from PROJECT_FILE.i:306. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- f <- main. - Called from PROJECT_FILE.i:296. + Called from PROJECT_FILE.i:307. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- f <- main. - Called from PROJECT_FILE.i:297. + Called from PROJECT_FILE.i:308. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- f <- main. - Called from PROJECT_FILE.i:298. + Called from PROJECT_FILE.i:309. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- f <- main. - Called from PROJECT_FILE.i:300. + Called from PROJECT_FILE.i:311. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- f <- main. - Called from PROJECT_FILE.i:301. + Called from PROJECT_FILE.i:312. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- f <- main. - Called from PROJECT_FILE.i:311. + Called from PROJECT_FILE.i:322. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- f <- main. - Called from PROJECT_FILE.i:312. + Called from PROJECT_FILE.i:323. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- f <- main. - Called from PROJECT_FILE.i:313. + Called from PROJECT_FILE.i:324. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- f <- main. - Called from PROJECT_FILE.i:314. + Called from PROJECT_FILE.i:325. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- f <- main. - Called from PROJECT_FILE.i:315. + Called from PROJECT_FILE.i:326. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- f <- main. - Called from PROJECT_FILE.i:316. + Called from PROJECT_FILE.i:327. [value] Done for function __gmpz_clear -PROJECT_FILE.i:231:[value] Function f: postcondition got status valid. +PROJECT_FILE.i:242:[value] Function f: postcondition got status valid. [value] Recording results for f [value] Done for function f -PROJECT_FILE.i:418:[value] cannot evaluate ACSL term, +PROJECT_FILE.i:429:[value] cannot evaluate ACSL term, unsupported ACSL construct: \at() on a C label -PROJECT_FILE.i:418:[value] Assertion got status unknown. +PROJECT_FILE.i:429:[value] Assertion got status unknown. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:423. + Called from PROJECT_FILE.i:434. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:424. + Called from PROJECT_FILE.i:435. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:425. + Called from PROJECT_FILE.i:436. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:426. + Called from PROJECT_FILE.i:437. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:427. + Called from PROJECT_FILE.i:438. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:428. + Called from PROJECT_FILE.i:439. [value] Done for function __gmpz_clear -PROJECT_FILE.i:432:[value] cannot evaluate ACSL term, +PROJECT_FILE.i:443:[value] cannot evaluate ACSL term, unsupported ACSL construct: \at() on a C label -PROJECT_FILE.i:432:[value] Assertion got status unknown. +PROJECT_FILE.i:443:[value] Assertion got status unknown. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:436. + Called from PROJECT_FILE.i:447. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:437. + Called from PROJECT_FILE.i:448. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:438. + Called from PROJECT_FILE.i:449. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:439. + Called from PROJECT_FILE.i:450. [value] Done for function __gmpz_clear -PROJECT_FILE.i:443:[value] cannot evaluate ACSL term, +PROJECT_FILE.i:454:[value] cannot evaluate ACSL term, unsupported ACSL construct: \at() on a C label -PROJECT_FILE.i:443:[value] Assertion got status unknown. +PROJECT_FILE.i:454:[value] Assertion got status unknown. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:449. + Called from PROJECT_FILE.i:460. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:450. + Called from PROJECT_FILE.i:461. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:451. + Called from PROJECT_FILE.i:462. [value] Done for function __gmpz_init [value] computing for function __gmpz_add <- main. - Called from PROJECT_FILE.i:452. + Called from PROJECT_FILE.i:463. [value] Done for function __gmpz_add [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:453. + Called from PROJECT_FILE.i:464. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:454. + Called from PROJECT_FILE.i:465. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:455. + Called from PROJECT_FILE.i:466. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:456. + Called from PROJECT_FILE.i:467. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:457. + Called from PROJECT_FILE.i:468. [value] Done for function __gmpz_clear [value] computing for function g <- main. - Called from PROJECT_FILE.i:461. -PROJECT_FILE.i:340:[value] cannot evaluate ACSL term, + Called from PROJECT_FILE.i:472. +PROJECT_FILE.i:351:[value] cannot evaluate ACSL term, unsupported ACSL construct: \at() on a C label -PROJECT_FILE.i:340:[value] Assertion got status unknown. +PROJECT_FILE.i:351:[value] Assertion got status unknown. [value] computing for function __gmpz_init_set_si <- g <- main. - Called from PROJECT_FILE.i:345. + Called from PROJECT_FILE.i:356. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- g <- main. - Called from PROJECT_FILE.i:346. + Called from PROJECT_FILE.i:357. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- g <- main. - Called from PROJECT_FILE.i:347. + Called from PROJECT_FILE.i:358. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- g <- main. - Called from PROJECT_FILE.i:348. + Called from PROJECT_FILE.i:359. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- g <- main. - Called from PROJECT_FILE.i:350. + Called from PROJECT_FILE.i:361. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- g <- main. - Called from PROJECT_FILE.i:351. + Called from PROJECT_FILE.i:362. [value] Done for function __gmpz_clear -PROJECT_FILE.i:356:[value] cannot evaluate ACSL term, +PROJECT_FILE.i:367:[value] cannot evaluate ACSL term, unsupported ACSL construct: \at() on a C label -PROJECT_FILE.i:356:[value] Assertion got status unknown. +PROJECT_FILE.i:367:[value] Assertion got status unknown. [value] computing for function __gmpz_init_set_si <- g <- main. - Called from PROJECT_FILE.i:362. + Called from PROJECT_FILE.i:373. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- g <- main. - Called from PROJECT_FILE.i:363. + Called from PROJECT_FILE.i:374. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- g <- main. - Called from PROJECT_FILE.i:364. + Called from PROJECT_FILE.i:375. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- g <- main. - Called from PROJECT_FILE.i:365. + Called from PROJECT_FILE.i:376. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- g <- main. - Called from PROJECT_FILE.i:367. + Called from PROJECT_FILE.i:378. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- g <- main. - Called from PROJECT_FILE.i:368. + Called from PROJECT_FILE.i:379. [value] Done for function __gmpz_clear [value] Recording results for g [value] Done for function g [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:463. + Called from PROJECT_FILE.i:474. [value] Done for function __gmpz_clear [value] Recording results for main [value] done for function main @@ -336,35 +336,53 @@ struct __anonstruct___mpz_struct_1 { }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; typedef __mpz_struct mpz_t[1]; -/*@ ensures \valid(\old(x)); - allocates \nothing; - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - allocates \nothing; + allocates \old(z); + assigns *z; + assigns *z \from *z_orig; */ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); - allocates \nothing; + allocates \old(z); + assigns *z; assigns *z \from n; */ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -376,7 +394,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); - allocates \nothing; + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -389,7 +408,10 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); @@ -397,6 +419,7 @@ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, requires \valid(z3); allocates \nothing; assigns *z1; + assigns *z1 \from *z2, *z3; */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, @@ -405,7 +428,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -413,7 +438,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -421,7 +448,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -429,14 +458,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -451,7 +485,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/at.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/at.res.oracle index 11c2e947f8959bef399aadf111dcfde0dae873a1..01e4d9a8f5f556e83ddb826c9ec1b175fb6bc418 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/at.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/at.res.oracle @@ -9,80 +9,80 @@ tests/e-acsl-runtime/at.i:34:[e-acsl] warning: missing guard for ensuring that p [value] Initial state computed [value] Values of globals at initialization A ∈ {0} -PROJECT_FILE.i:311:[value] Assertion got status valid. +PROJECT_FILE.i:322:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:312. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status valid. + Called from PROJECT_FILE.i:323. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status valid. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function f <- main. - Called from PROJECT_FILE.i:316. -PROJECT_FILE.i:247:[value] Assertion got status valid. + Called from PROJECT_FILE.i:327. +PROJECT_FILE.i:258:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- f <- main. - Called from PROJECT_FILE.i:248. + Called from PROJECT_FILE.i:259. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:250:[value] cannot evaluate ACSL term, +PROJECT_FILE.i:261:[value] cannot evaluate ACSL term, unsupported ACSL construct: \at() on a C label -PROJECT_FILE.i:250:[value] Assertion got status unknown. +PROJECT_FILE.i:261:[value] Assertion got status unknown. [value] computing for function e_acsl_assert <- f <- main. - Called from PROJECT_FILE.i:251. + Called from PROJECT_FILE.i:262. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:253:[value] Assertion got status valid. +PROJECT_FILE.i:264:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- f <- main. - Called from PROJECT_FILE.i:255. + Called from PROJECT_FILE.i:266. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:257:[value] cannot evaluate ACSL term, +PROJECT_FILE.i:268:[value] cannot evaluate ACSL term, unsupported ACSL construct: \at() on a C label -PROJECT_FILE.i:257:[value] Assertion got status unknown. +PROJECT_FILE.i:268:[value] Assertion got status unknown. [value] computing for function e_acsl_assert <- f <- main. - Called from PROJECT_FILE.i:258. + Called from PROJECT_FILE.i:269. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- f <- main. - Called from PROJECT_FILE.i:263. + Called from PROJECT_FILE.i:274. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:231:[value] Function f: postcondition got status valid. +PROJECT_FILE.i:242:[value] Function f: postcondition got status valid. [value] Recording results for f [value] Done for function f -PROJECT_FILE.i:317:[value] cannot evaluate ACSL term, +PROJECT_FILE.i:328:[value] cannot evaluate ACSL term, unsupported ACSL construct: \at() on a C label -PROJECT_FILE.i:317:[value] Assertion got status unknown. +PROJECT_FILE.i:328:[value] Assertion got status unknown. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:318. + Called from PROJECT_FILE.i:329. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:320:[value] cannot evaluate ACSL term, +PROJECT_FILE.i:331:[value] cannot evaluate ACSL term, unsupported ACSL construct: \at() on a C label -PROJECT_FILE.i:320:[value] Assertion got status unknown. +PROJECT_FILE.i:331:[value] Assertion got status unknown. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:321. + Called from PROJECT_FILE.i:332. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:324:[value] cannot evaluate ACSL term, +PROJECT_FILE.i:335:[value] cannot evaluate ACSL term, unsupported ACSL construct: \at() on a C label -PROJECT_FILE.i:324:[value] Assertion got status unknown. +PROJECT_FILE.i:335:[value] Assertion got status unknown. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:325. + Called from PROJECT_FILE.i:336. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function g <- main. - Called from PROJECT_FILE.i:328. -PROJECT_FILE.i:285:[value] cannot evaluate ACSL term, + Called from PROJECT_FILE.i:339. +PROJECT_FILE.i:296:[value] cannot evaluate ACSL term, unsupported ACSL construct: \at() on a C label -PROJECT_FILE.i:285:[value] Assertion got status unknown. +PROJECT_FILE.i:296:[value] Assertion got status unknown. [value] computing for function e_acsl_assert <- g <- main. - Called from PROJECT_FILE.i:286. + Called from PROJECT_FILE.i:297. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:290:[value] cannot evaluate ACSL term, +PROJECT_FILE.i:301:[value] cannot evaluate ACSL term, unsupported ACSL construct: \at() on a C label -PROJECT_FILE.i:290:[value] Assertion got status unknown. +PROJECT_FILE.i:301:[value] Assertion got status unknown. [value] computing for function e_acsl_assert <- g <- main. - Called from PROJECT_FILE.i:292. + Called from PROJECT_FILE.i:303. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] Recording results for g @@ -124,29 +124,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -158,6 +182,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -167,13 +193,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -181,7 +212,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -189,7 +222,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -197,7 +232,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -205,14 +242,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -227,7 +269,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/cast.1.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/cast.1.res.oracle index 11d52f4df4c21cc3001c83ca7c8ce23f5efabe9c..2f90dad8b22213469ee38eb1ae9dffe2bf3134a7 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/cast.1.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/cast.1.res.oracle @@ -4,157 +4,157 @@ tests/e-acsl-runtime/cast.i:19:[e-acsl] warning: missing guard for ensuring that [value] Computing initial state [value] Initial state computed [value] Values of globals at initialization -PROJECT_FILE.i:237:[value] Assertion got status valid. +PROJECT_FILE.i:248:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:242. + Called from PROJECT_FILE.i:253. [value] using specification for function __gmpz_init_set_si -PROJECT_FILE.i:82:[value] Function __gmpz_init_set_si: postcondition got status valid. +PROJECT_FILE.i:86:[value] Function __gmpz_init_set_si: postcondition got status valid. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:243. + Called from PROJECT_FILE.i:254. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:244. + Called from PROJECT_FILE.i:255. [value] using specification for function __gmpz_cmp -PROJECT_FILE.i:119:[value] Function __gmpz_cmp: precondition got status valid. -PROJECT_FILE.i:120:[value] Function __gmpz_cmp: precondition got status valid. +PROJECT_FILE.i:129:[value] Function __gmpz_cmp: precondition got status valid. +PROJECT_FILE.i:130:[value] Function __gmpz_cmp: precondition got status valid. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:245. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status unknown. + Called from PROJECT_FILE.i:256. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status unknown. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:246. + Called from PROJECT_FILE.i:257. [value] using specification for function __gmpz_clear -PROJECT_FILE.i:111:[value] Function __gmpz_clear: precondition got status valid. +PROJECT_FILE.i:120:[value] Function __gmpz_clear: precondition got status valid. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:247. + Called from PROJECT_FILE.i:258. [value] Done for function __gmpz_clear -PROJECT_FILE.i:251:[value] Assertion got status valid. +PROJECT_FILE.i:262:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:256. + Called from PROJECT_FILE.i:267. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:257. + Called from PROJECT_FILE.i:268. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:258. + Called from PROJECT_FILE.i:269. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:259. + Called from PROJECT_FILE.i:270. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:260. + Called from PROJECT_FILE.i:271. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:261. + Called from PROJECT_FILE.i:272. [value] Done for function __gmpz_clear -PROJECT_FILE.i:265:[value] Assertion got status valid. +PROJECT_FILE.i:276:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:270. + Called from PROJECT_FILE.i:281. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:271. + Called from PROJECT_FILE.i:282. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:272. + Called from PROJECT_FILE.i:283. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:273. + Called from PROJECT_FILE.i:284. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:274. + Called from PROJECT_FILE.i:285. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:275. + Called from PROJECT_FILE.i:286. [value] Done for function __gmpz_clear -PROJECT_FILE.i:279:[value] Assertion got status valid. +PROJECT_FILE.i:290:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_ui <- main. - Called from PROJECT_FILE.i:284. + Called from PROJECT_FILE.i:295. [value] using specification for function __gmpz_init_set_ui -PROJECT_FILE.i:78:[value] Function __gmpz_init_set_ui: postcondition got status valid. +PROJECT_FILE.i:80:[value] Function __gmpz_init_set_ui: postcondition got status valid. [value] Done for function __gmpz_init_set_ui [value] computing for function __gmpz_init_set_ui <- main. - Called from PROJECT_FILE.i:285. + Called from PROJECT_FILE.i:296. [value] Done for function __gmpz_init_set_ui [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:286. + Called from PROJECT_FILE.i:297. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:287. + Called from PROJECT_FILE.i:298. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:289. + Called from PROJECT_FILE.i:300. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:290. + Called from PROJECT_FILE.i:301. [value] Done for function __gmpz_clear -PROJECT_FILE.i:294:[value] Assertion got status valid. +PROJECT_FILE.i:305:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:301. + Called from PROJECT_FILE.i:312. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_str <- main. - Called from PROJECT_FILE.i:302. + Called from PROJECT_FILE.i:313. [value] using specification for function __gmpz_init_set_str -PROJECT_FILE.i:86:[value] Function __gmpz_init_set_str: postcondition got status valid. +PROJECT_FILE.i:92:[value] Function __gmpz_init_set_str: postcondition got status valid. [value] Done for function __gmpz_init_set_str [value] computing for function __gmpz_get_ui <- main. - Called from PROJECT_FILE.i:303. + Called from PROJECT_FILE.i:314. [value] using specification for function __gmpz_get_ui -PROJECT_FILE.i:180:[value] Function __gmpz_get_ui: precondition got status valid. +PROJECT_FILE.i:190:[value] Function __gmpz_get_ui: precondition got status valid. [value] Done for function __gmpz_get_ui [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:304. + Called from PROJECT_FILE.i:315. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:305. + Called from PROJECT_FILE.i:316. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:306. + Called from PROJECT_FILE.i:317. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:308. + Called from PROJECT_FILE.i:319. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:309. + Called from PROJECT_FILE.i:320. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:310. + Called from PROJECT_FILE.i:321. [value] Done for function __gmpz_clear -PROJECT_FILE.i:314:[value] Assertion got status valid. +PROJECT_FILE.i:325:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_ui <- main. - Called from PROJECT_FILE.i:321. + Called from PROJECT_FILE.i:332. [value] Done for function __gmpz_init_set_ui [value] computing for function __gmpz_init_set_str <- main. - Called from PROJECT_FILE.i:322. + Called from PROJECT_FILE.i:333. [value] Done for function __gmpz_init_set_str [value] computing for function __gmpz_get_ui <- main. - Called from PROJECT_FILE.i:323. + Called from PROJECT_FILE.i:334. [value] Done for function __gmpz_get_ui [value] computing for function __gmpz_init_set_ui <- main. - Called from PROJECT_FILE.i:324. + Called from PROJECT_FILE.i:335. [value] Done for function __gmpz_init_set_ui [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:325. + Called from PROJECT_FILE.i:336. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:326. + Called from PROJECT_FILE.i:337. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:328. + Called from PROJECT_FILE.i:339. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:329. + Called from PROJECT_FILE.i:340. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:330. + Called from PROJECT_FILE.i:341. [value] Done for function __gmpz_clear [value] Recording results for main [value] done for function main @@ -172,34 +172,53 @@ struct __anonstruct___mpz_struct_1 { }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; typedef __mpz_struct mpz_t[1]; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); - allocates \nothing; + allocates \old(z); + assigns *z; assigns *z \from n; */ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); - allocates \nothing; + allocates \old(z); + assigns *z; assigns *z \from n; */ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - allocates \nothing; - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -211,7 +230,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); - allocates \nothing; + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -224,13 +244,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -238,7 +263,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -246,7 +273,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -254,7 +283,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -262,14 +293,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -285,7 +321,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/cast.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/cast.res.oracle index 54ffcc42b94437969809624374cde8198e5fcb6e..33fb94eb3f2b20c8bac0c8550ae83c29729a614a 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/cast.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/cast.res.oracle @@ -2,35 +2,35 @@ [value] Computing initial state [value] Initial state computed [value] Values of globals at initialization -PROJECT_FILE.i:237:[value] Assertion got status valid. +PROJECT_FILE.i:248:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:238. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status valid. + Called from PROJECT_FILE.i:249. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status valid. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:240:[value] Assertion got status valid. +PROJECT_FILE.i:251:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:241. + Called from PROJECT_FILE.i:252. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:243:[value] Assertion got status valid. +PROJECT_FILE.i:254:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:244. + Called from PROJECT_FILE.i:255. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:246:[value] Assertion got status valid. +PROJECT_FILE.i:257:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:247. + Called from PROJECT_FILE.i:258. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:250:[value] Assertion got status valid. +PROJECT_FILE.i:261:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:251. + Called from PROJECT_FILE.i:262. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:254:[value] Assertion got status valid. +PROJECT_FILE.i:265:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:255. + Called from PROJECT_FILE.i:266. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] Recording results for main @@ -48,29 +48,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -82,6 +106,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -91,13 +117,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -105,7 +136,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -113,7 +146,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -121,7 +156,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -129,14 +166,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -151,7 +193,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/comparison.1.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/comparison.1.res.oracle index 3bbb69ed5dcfa5206fab0b9db878c3b7c56bb3be..acdc0b586bf4ec2067b9065715e9de7b24d2d1ab 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/comparison.1.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/comparison.1.res.oracle @@ -2,393 +2,393 @@ [value] Computing initial state [value] Initial state computed [value] Values of globals at initialization -PROJECT_FILE.i:238:[value] Assertion got status valid. +PROJECT_FILE.i:249:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:243. + Called from PROJECT_FILE.i:254. [value] using specification for function __gmpz_init_set_si -PROJECT_FILE.i:82:[value] Function __gmpz_init_set_si: postcondition got status valid. +PROJECT_FILE.i:86:[value] Function __gmpz_init_set_si: postcondition got status valid. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:244. + Called from PROJECT_FILE.i:255. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:245. + Called from PROJECT_FILE.i:256. [value] using specification for function __gmpz_cmp -PROJECT_FILE.i:119:[value] Function __gmpz_cmp: precondition got status valid. -PROJECT_FILE.i:120:[value] Function __gmpz_cmp: precondition got status valid. +PROJECT_FILE.i:129:[value] Function __gmpz_cmp: precondition got status valid. +PROJECT_FILE.i:130:[value] Function __gmpz_cmp: precondition got status valid. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:246. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status unknown. + Called from PROJECT_FILE.i:257. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status unknown. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:247. + Called from PROJECT_FILE.i:258. [value] using specification for function __gmpz_clear -PROJECT_FILE.i:111:[value] Function __gmpz_clear: precondition got status valid. +PROJECT_FILE.i:120:[value] Function __gmpz_clear: precondition got status valid. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:248. + Called from PROJECT_FILE.i:259. [value] Done for function __gmpz_clear -PROJECT_FILE.i:252:[value] Assertion got status valid. +PROJECT_FILE.i:263:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:257. + Called from PROJECT_FILE.i:268. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:258. + Called from PROJECT_FILE.i:269. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:259. + Called from PROJECT_FILE.i:270. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:260. + Called from PROJECT_FILE.i:271. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:261. + Called from PROJECT_FILE.i:272. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:262. + Called from PROJECT_FILE.i:273. [value] Done for function __gmpz_clear -PROJECT_FILE.i:266:[value] Assertion got status valid. +PROJECT_FILE.i:277:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:271. + Called from PROJECT_FILE.i:282. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:272. + Called from PROJECT_FILE.i:283. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:273. + Called from PROJECT_FILE.i:284. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:274. + Called from PROJECT_FILE.i:285. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:275. + Called from PROJECT_FILE.i:286. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:276. + Called from PROJECT_FILE.i:287. [value] Done for function __gmpz_clear -PROJECT_FILE.i:280:[value] Assertion got status valid. +PROJECT_FILE.i:291:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:285. + Called from PROJECT_FILE.i:296. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:286. + Called from PROJECT_FILE.i:297. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:287. + Called from PROJECT_FILE.i:298. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:288. + Called from PROJECT_FILE.i:299. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:289. + Called from PROJECT_FILE.i:300. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:290. + Called from PROJECT_FILE.i:301. [value] Done for function __gmpz_clear -PROJECT_FILE.i:295:[value] Assertion got status valid. +PROJECT_FILE.i:306:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:296. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status valid. + Called from PROJECT_FILE.i:307. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status valid. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:298:[value] cannot evaluate ACSL term, +PROJECT_FILE.i:309:[value] cannot evaluate ACSL term, unsupported ACSL construct: unsupported ACSL construct "toto" -PROJECT_FILE.i:298:[value] Assertion got status unknown. +PROJECT_FILE.i:309:[value] Assertion got status unknown. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:299. + Called from PROJECT_FILE.i:310. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:301:[value] Assertion got status valid. +PROJECT_FILE.i:312:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:306. + Called from PROJECT_FILE.i:317. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:307. + Called from PROJECT_FILE.i:318. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:308. + Called from PROJECT_FILE.i:319. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:309. + Called from PROJECT_FILE.i:320. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:310. + Called from PROJECT_FILE.i:321. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:311. + Called from PROJECT_FILE.i:322. [value] Done for function __gmpz_clear -PROJECT_FILE.i:315:[value] Assertion got status valid. +PROJECT_FILE.i:326:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:320. + Called from PROJECT_FILE.i:331. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:321. + Called from PROJECT_FILE.i:332. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:322. + Called from PROJECT_FILE.i:333. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:323. + Called from PROJECT_FILE.i:334. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:324. + Called from PROJECT_FILE.i:335. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:325. + Called from PROJECT_FILE.i:336. [value] Done for function __gmpz_clear -PROJECT_FILE.i:329:[value] Assertion got status valid. +PROJECT_FILE.i:340:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:334. + Called from PROJECT_FILE.i:345. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:335. + Called from PROJECT_FILE.i:346. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:336. + Called from PROJECT_FILE.i:347. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:337. + Called from PROJECT_FILE.i:348. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:338. + Called from PROJECT_FILE.i:349. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:339. + Called from PROJECT_FILE.i:350. [value] Done for function __gmpz_clear -PROJECT_FILE.i:343:[value] Assertion got status valid. +PROJECT_FILE.i:354:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:348. + Called from PROJECT_FILE.i:359. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:349. + Called from PROJECT_FILE.i:360. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:350. + Called from PROJECT_FILE.i:361. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:351. + Called from PROJECT_FILE.i:362. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:352. + Called from PROJECT_FILE.i:363. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:353. + Called from PROJECT_FILE.i:364. [value] Done for function __gmpz_clear -PROJECT_FILE.i:357:[value] Assertion got status valid. +PROJECT_FILE.i:368:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:361. + Called from PROJECT_FILE.i:372. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:362. + Called from PROJECT_FILE.i:373. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:363. + Called from PROJECT_FILE.i:374. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:364. + Called from PROJECT_FILE.i:375. [value] Done for function __gmpz_clear -PROJECT_FILE.i:368:[value] Assertion got status valid. +PROJECT_FILE.i:379:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:373. + Called from PROJECT_FILE.i:384. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:374. + Called from PROJECT_FILE.i:385. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:375. + Called from PROJECT_FILE.i:386. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:376. + Called from PROJECT_FILE.i:387. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:377. + Called from PROJECT_FILE.i:388. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:378. + Called from PROJECT_FILE.i:389. [value] Done for function __gmpz_clear -PROJECT_FILE.i:382:[value] Assertion got status valid. +PROJECT_FILE.i:393:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:388. + Called from PROJECT_FILE.i:399. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:389. + Called from PROJECT_FILE.i:400. [value] using specification for function __gmpz_init -PROJECT_FILE.i:69:[value] Function __gmpz_init: postcondition got status valid. +PROJECT_FILE.i:67:[value] Function __gmpz_init: postcondition got status valid. [value] Done for function __gmpz_init [value] computing for function __gmpz_neg <- main. - Called from PROJECT_FILE.i:390. + Called from PROJECT_FILE.i:401. [value] using specification for function __gmpz_neg -PROJECT_FILE.i:128:[value] Function __gmpz_neg: precondition got status valid. -PROJECT_FILE.i:129:[value] Function __gmpz_neg: precondition got status valid. +PROJECT_FILE.i:138:[value] Function __gmpz_neg: precondition got status valid. +PROJECT_FILE.i:139:[value] Function __gmpz_neg: precondition got status valid. [value] Done for function __gmpz_neg [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:391. + Called from PROJECT_FILE.i:402. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:392. + Called from PROJECT_FILE.i:403. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:393. + Called from PROJECT_FILE.i:404. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:394. + Called from PROJECT_FILE.i:405. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:395. + Called from PROJECT_FILE.i:406. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:396. + Called from PROJECT_FILE.i:407. [value] Done for function __gmpz_clear -PROJECT_FILE.i:400:[value] Assertion got status valid. +PROJECT_FILE.i:411:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:406. + Called from PROJECT_FILE.i:417. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:407. + Called from PROJECT_FILE.i:418. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:408. + Called from PROJECT_FILE.i:419. [value] Done for function __gmpz_init [value] computing for function __gmpz_neg <- main. - Called from PROJECT_FILE.i:409. + Called from PROJECT_FILE.i:420. [value] Done for function __gmpz_neg [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:410. + Called from PROJECT_FILE.i:421. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:411. + Called from PROJECT_FILE.i:422. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:412. + Called from PROJECT_FILE.i:423. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:413. + Called from PROJECT_FILE.i:424. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:414. + Called from PROJECT_FILE.i:425. [value] Done for function __gmpz_clear -PROJECT_FILE.i:418:[value] Assertion got status valid. +PROJECT_FILE.i:429:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:424. + Called from PROJECT_FILE.i:435. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:425. + Called from PROJECT_FILE.i:436. [value] Done for function __gmpz_init [value] computing for function __gmpz_neg <- main. - Called from PROJECT_FILE.i:426. + Called from PROJECT_FILE.i:437. [value] Done for function __gmpz_neg [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:427. + Called from PROJECT_FILE.i:438. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:428. + Called from PROJECT_FILE.i:439. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:429. + Called from PROJECT_FILE.i:440. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:430. + Called from PROJECT_FILE.i:441. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:431. + Called from PROJECT_FILE.i:442. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:432. + Called from PROJECT_FILE.i:443. [value] Done for function __gmpz_clear -PROJECT_FILE.i:436:[value] Assertion got status valid. +PROJECT_FILE.i:447:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:442. + Called from PROJECT_FILE.i:453. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:443. + Called from PROJECT_FILE.i:454. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:444. + Called from PROJECT_FILE.i:455. [value] Done for function __gmpz_init [value] computing for function __gmpz_neg <- main. - Called from PROJECT_FILE.i:445. + Called from PROJECT_FILE.i:456. [value] Done for function __gmpz_neg [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:446. + Called from PROJECT_FILE.i:457. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:447. + Called from PROJECT_FILE.i:458. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:448. + Called from PROJECT_FILE.i:459. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:449. + Called from PROJECT_FILE.i:460. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:450. + Called from PROJECT_FILE.i:461. [value] Done for function __gmpz_clear -PROJECT_FILE.i:454:[value] Assertion got status valid. +PROJECT_FILE.i:465:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:459. + Called from PROJECT_FILE.i:470. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:460. + Called from PROJECT_FILE.i:471. [value] Done for function __gmpz_init [value] computing for function __gmpz_neg <- main. - Called from PROJECT_FILE.i:461. + Called from PROJECT_FILE.i:472. [value] Done for function __gmpz_neg [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:462. + Called from PROJECT_FILE.i:473. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:463. + Called from PROJECT_FILE.i:474. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:464. + Called from PROJECT_FILE.i:475. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:465. + Called from PROJECT_FILE.i:476. [value] Done for function __gmpz_clear -PROJECT_FILE.i:469:[value] Assertion got status valid. +PROJECT_FILE.i:480:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:475. + Called from PROJECT_FILE.i:486. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:476. + Called from PROJECT_FILE.i:487. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:477. + Called from PROJECT_FILE.i:488. [value] Done for function __gmpz_init [value] computing for function __gmpz_neg <- main. - Called from PROJECT_FILE.i:478. + Called from PROJECT_FILE.i:489. [value] Done for function __gmpz_neg [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:479. + Called from PROJECT_FILE.i:490. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:480. + Called from PROJECT_FILE.i:491. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:481. + Called from PROJECT_FILE.i:492. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:482. + Called from PROJECT_FILE.i:493. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:483. + Called from PROJECT_FILE.i:494. [value] Done for function __gmpz_clear [value] Recording results for main [value] done for function main @@ -407,32 +407,53 @@ struct __anonstruct___mpz_struct_1 { }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; typedef __mpz_struct mpz_t[1]; -/*@ ensures \valid(\old(x)); - allocates \nothing; - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); - allocates \nothing; + allocates \old(z); + assigns *z; assigns *z \from n; */ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -444,7 +465,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); - allocates \nothing; + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -458,14 +480,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); allocates \nothing; - assigns *z1; + assigns *z1; + assigns *z1 \from *z2; + */ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -473,7 +499,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -481,7 +509,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -489,7 +519,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -497,14 +529,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -519,7 +556,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/comparison.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/comparison.res.oracle index d28013ed3c6e8fa05a81bcdd236d4d9d40e97ca2..a1c62138e59dcfbe0e1b2b1cb74a880bc1b44004 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/comparison.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/comparison.res.oracle @@ -2,97 +2,97 @@ [value] Computing initial state [value] Initial state computed [value] Values of globals at initialization -PROJECT_FILE.i:238:[value] Assertion got status valid. +PROJECT_FILE.i:249:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:239. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status valid. + Called from PROJECT_FILE.i:250. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status valid. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:241:[value] Assertion got status valid. +PROJECT_FILE.i:252:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:242. + Called from PROJECT_FILE.i:253. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:244:[value] Assertion got status valid. +PROJECT_FILE.i:255:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:245. + Called from PROJECT_FILE.i:256. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:247:[value] Assertion got status valid. +PROJECT_FILE.i:258:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:248. + Called from PROJECT_FILE.i:259. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:251:[value] Assertion got status valid. +PROJECT_FILE.i:262:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:252. + Called from PROJECT_FILE.i:263. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:254:[value] cannot evaluate ACSL term, +PROJECT_FILE.i:265:[value] cannot evaluate ACSL term, unsupported ACSL construct: unsupported ACSL construct "toto" -PROJECT_FILE.i:254:[value] Assertion got status unknown. +PROJECT_FILE.i:265:[value] Assertion got status unknown. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:255. + Called from PROJECT_FILE.i:266. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:257:[value] Assertion got status valid. +PROJECT_FILE.i:268:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:258. + Called from PROJECT_FILE.i:269. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:260:[value] Assertion got status valid. +PROJECT_FILE.i:271:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:261. + Called from PROJECT_FILE.i:272. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:263:[value] Assertion got status valid. +PROJECT_FILE.i:274:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:264. + Called from PROJECT_FILE.i:275. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:266:[value] Assertion got status valid. +PROJECT_FILE.i:277:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:267. + Called from PROJECT_FILE.i:278. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:269:[value] Assertion got status valid. +PROJECT_FILE.i:280:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:270. + Called from PROJECT_FILE.i:281. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:272:[value] Assertion got status valid. +PROJECT_FILE.i:283:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:273. + Called from PROJECT_FILE.i:284. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:275:[value] Assertion got status valid. +PROJECT_FILE.i:286:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:276. + Called from PROJECT_FILE.i:287. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:278:[value] Assertion got status valid. +PROJECT_FILE.i:289:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:279. + Called from PROJECT_FILE.i:290. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:281:[value] Assertion got status valid. +PROJECT_FILE.i:292:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:282. + Called from PROJECT_FILE.i:293. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:284:[value] Assertion got status valid. +PROJECT_FILE.i:295:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:285. + Called from PROJECT_FILE.i:296. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:287:[value] Assertion got status valid. +PROJECT_FILE.i:298:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:288. + Called from PROJECT_FILE.i:299. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:290:[value] Assertion got status valid. +PROJECT_FILE.i:301:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:291. + Called from PROJECT_FILE.i:302. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] Recording results for main @@ -111,29 +111,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -145,6 +169,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -154,13 +180,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -168,7 +199,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -176,7 +209,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -184,7 +219,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -192,14 +229,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -214,7 +256,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/empty.1.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/empty.1.res.oracle index bc28b3d231f829d9920f0b69927da74fcde906ba..47c9d714c13b1ad5b3ce4b2b0b2f7b76d47b38cf 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/empty.1.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/empty.1.res.oracle @@ -5,29 +5,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -39,6 +63,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -48,13 +74,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -62,7 +93,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -70,7 +103,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -78,7 +113,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -86,14 +123,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -108,7 +150,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/false.1.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/false.1.res.oracle index 1d8175ec54a9b6bb3ffe9d5ba91a48a565944dea..b72560a665557797f2c7b05816b557f6d9799c6c 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/false.1.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/false.1.res.oracle @@ -15,29 +15,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -49,6 +73,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -58,13 +84,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -72,7 +103,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -80,7 +113,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -88,7 +123,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -96,14 +133,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -118,7 +160,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/false.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/false.res.oracle index 1d8175ec54a9b6bb3ffe9d5ba91a48a565944dea..b72560a665557797f2c7b05816b557f6d9799c6c 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/false.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/false.res.oracle @@ -15,29 +15,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -49,6 +73,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -58,13 +84,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -72,7 +103,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -80,7 +113,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -88,7 +123,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -96,14 +133,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -118,7 +160,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/function_contract.1.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/function_contract.1.res.oracle index 4ffb9069ff0a15f3beddd4cc3e77836209e0ad8e..37e8f5401f12a1a12a7ccec04ed475db80ad436b 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/function_contract.1.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/function_contract.1.res.oracle @@ -5,598 +5,598 @@ X ∈ {0} Y ∈ {2} [value] computing for function f <- main. - Called from PROJECT_FILE.i:686. + Called from PROJECT_FILE.i:697. [value] computing for function __gmpz_init_set_si <- f <- main. - Called from PROJECT_FILE.i:240. + Called from PROJECT_FILE.i:251. [value] using specification for function __gmpz_init_set_si -PROJECT_FILE.i:82:[value] Function __gmpz_init_set_si: postcondition got status valid. +PROJECT_FILE.i:86:[value] Function __gmpz_init_set_si: postcondition got status valid. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- f <- main. - Called from PROJECT_FILE.i:241. + Called from PROJECT_FILE.i:252. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- f <- main. - Called from PROJECT_FILE.i:242. + Called from PROJECT_FILE.i:253. [value] using specification for function __gmpz_cmp -PROJECT_FILE.i:119:[value] Function __gmpz_cmp: precondition got status valid. -PROJECT_FILE.i:120:[value] Function __gmpz_cmp: precondition got status valid. +PROJECT_FILE.i:129:[value] Function __gmpz_cmp: precondition got status valid. +PROJECT_FILE.i:130:[value] Function __gmpz_cmp: precondition got status valid. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- f <- main. - Called from PROJECT_FILE.i:243. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status unknown. + Called from PROJECT_FILE.i:254. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status unknown. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- f <- main. - Called from PROJECT_FILE.i:244. + Called from PROJECT_FILE.i:255. [value] using specification for function __gmpz_clear -PROJECT_FILE.i:111:[value] Function __gmpz_clear: precondition got status valid. +PROJECT_FILE.i:120:[value] Function __gmpz_clear: precondition got status valid. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- f <- main. - Called from PROJECT_FILE.i:245. + Called from PROJECT_FILE.i:256. [value] Done for function __gmpz_clear -PROJECT_FILE.i:232:[value] Function f: postcondition got status valid. +PROJECT_FILE.i:243:[value] Function f: postcondition got status valid. [value] Recording results for f [value] Done for function f [value] computing for function g <- main. - Called from PROJECT_FILE.i:687. + Called from PROJECT_FILE.i:698. [value] computing for function __gmpz_init_set_si <- g <- main. - Called from PROJECT_FILE.i:262. + Called from PROJECT_FILE.i:273. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- g <- main. - Called from PROJECT_FILE.i:263. + Called from PROJECT_FILE.i:274. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- g <- main. - Called from PROJECT_FILE.i:264. + Called from PROJECT_FILE.i:275. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- g <- main. - Called from PROJECT_FILE.i:265. + Called from PROJECT_FILE.i:276. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_init_set_si <- g <- main. - Called from PROJECT_FILE.i:266. + Called from PROJECT_FILE.i:277. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- g <- main. - Called from PROJECT_FILE.i:267. + Called from PROJECT_FILE.i:278. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- g <- main. - Called from PROJECT_FILE.i:268. + Called from PROJECT_FILE.i:279. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- g <- main. - Called from PROJECT_FILE.i:269. + Called from PROJECT_FILE.i:280. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- g <- main. - Called from PROJECT_FILE.i:270. + Called from PROJECT_FILE.i:281. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- g <- main. - Called from PROJECT_FILE.i:271. + Called from PROJECT_FILE.i:282. [value] Done for function __gmpz_clear -PROJECT_FILE.i:251:[value] Function g: postcondition got status valid. -PROJECT_FILE.i:252:[value] Function g: postcondition got status valid. +PROJECT_FILE.i:262:[value] Function g: postcondition got status valid. +PROJECT_FILE.i:263:[value] Function g: postcondition got status valid. [value] Recording results for g [value] Done for function g [value] computing for function h <- main. - Called from PROJECT_FILE.i:688. -PROJECT_FILE.i:277:[value] Function h: precondition got status valid. + Called from PROJECT_FILE.i:699. +PROJECT_FILE.i:288:[value] Function h: precondition got status valid. [value] computing for function __gmpz_init_set_si <- h <- main. - Called from PROJECT_FILE.i:284. + Called from PROJECT_FILE.i:295. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- h <- main. - Called from PROJECT_FILE.i:285. + Called from PROJECT_FILE.i:296. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- h <- main. - Called from PROJECT_FILE.i:286. + Called from PROJECT_FILE.i:297. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- h <- main. - Called from PROJECT_FILE.i:287. + Called from PROJECT_FILE.i:298. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- h <- main. - Called from PROJECT_FILE.i:288. + Called from PROJECT_FILE.i:299. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- h <- main. - Called from PROJECT_FILE.i:289. + Called from PROJECT_FILE.i:300. [value] Done for function __gmpz_clear [value] Recording results for h [value] Done for function h [value] computing for function i <- main. - Called from PROJECT_FILE.i:689. -PROJECT_FILE.i:296:[value] Function i: precondition got status valid. -PROJECT_FILE.i:297:[value] Function i: precondition got status valid. + Called from PROJECT_FILE.i:700. +PROJECT_FILE.i:307:[value] Function i: precondition got status valid. +PROJECT_FILE.i:308:[value] Function i: precondition got status valid. [value] computing for function __gmpz_init_set_si <- i <- main. - Called from PROJECT_FILE.i:307. + Called from PROJECT_FILE.i:318. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- i <- main. - Called from PROJECT_FILE.i:308. + Called from PROJECT_FILE.i:319. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- i <- main. - Called from PROJECT_FILE.i:309. + Called from PROJECT_FILE.i:320. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- i <- main. - Called from PROJECT_FILE.i:310. + Called from PROJECT_FILE.i:321. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_init_set_si <- i <- main. - Called from PROJECT_FILE.i:311. + Called from PROJECT_FILE.i:322. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- i <- main. - Called from PROJECT_FILE.i:312. + Called from PROJECT_FILE.i:323. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- i <- main. - Called from PROJECT_FILE.i:313. + Called from PROJECT_FILE.i:324. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- i <- main. - Called from PROJECT_FILE.i:314. + Called from PROJECT_FILE.i:325. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- i <- main. - Called from PROJECT_FILE.i:315. + Called from PROJECT_FILE.i:326. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- i <- main. - Called from PROJECT_FILE.i:316. + Called from PROJECT_FILE.i:327. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- i <- main. - Called from PROJECT_FILE.i:317. + Called from PROJECT_FILE.i:328. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- i <- main. - Called from PROJECT_FILE.i:318. + Called from PROJECT_FILE.i:329. [value] Done for function __gmpz_clear [value] Recording results for i [value] Done for function i [value] computing for function j <- main. - Called from PROJECT_FILE.i:690. -PROJECT_FILE.i:326:[value] Function j, behavior b1: precondition got status valid. -PROJECT_FILE.i:330:[value] Function j, behavior b2: precondition got status valid. -PROJECT_FILE.i:331:[value] Function j, behavior b2: precondition got status valid. + Called from PROJECT_FILE.i:701. +PROJECT_FILE.i:337:[value] Function j, behavior b1: precondition got status valid. +PROJECT_FILE.i:341:[value] Function j, behavior b2: precondition got status valid. +PROJECT_FILE.i:342:[value] Function j, behavior b2: precondition got status valid. [value] computing for function __gmpz_init_set_si <- j <- main. - Called from PROJECT_FILE.i:348. + Called from PROJECT_FILE.i:359. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- j <- main. - Called from PROJECT_FILE.i:349. + Called from PROJECT_FILE.i:360. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- j <- main. - Called from PROJECT_FILE.i:350. + Called from PROJECT_FILE.i:361. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- j <- main. - Called from PROJECT_FILE.i:351. + Called from PROJECT_FILE.i:362. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_init_set_si <- j <- main. - Called from PROJECT_FILE.i:352. + Called from PROJECT_FILE.i:363. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- j <- main. - Called from PROJECT_FILE.i:353. + Called from PROJECT_FILE.i:364. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- j <- main. - Called from PROJECT_FILE.i:354. + Called from PROJECT_FILE.i:365. [value] using specification for function __gmpz_init -PROJECT_FILE.i:69:[value] Function __gmpz_init: postcondition got status valid. +PROJECT_FILE.i:67:[value] Function __gmpz_init: postcondition got status valid. [value] Done for function __gmpz_init [value] computing for function __gmpz_add <- j <- main. - Called from PROJECT_FILE.i:355. + Called from PROJECT_FILE.i:366. [value] using specification for function __gmpz_add -PROJECT_FILE.i:133:[value] Function __gmpz_add: precondition got status valid. -PROJECT_FILE.i:134:[value] Function __gmpz_add: precondition got status valid. -PROJECT_FILE.i:135:[value] Function __gmpz_add: precondition got status valid. +PROJECT_FILE.i:143:[value] Function __gmpz_add: precondition got status valid. +PROJECT_FILE.i:144:[value] Function __gmpz_add: precondition got status valid. +PROJECT_FILE.i:145:[value] Function __gmpz_add: precondition got status valid. [value] Done for function __gmpz_add [value] computing for function __gmpz_cmp <- j <- main. - Called from PROJECT_FILE.i:356. + Called from PROJECT_FILE.i:367. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- j <- main. - Called from PROJECT_FILE.i:357. + Called from PROJECT_FILE.i:368. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_init_set_si <- j <- main. - Called from PROJECT_FILE.i:358. + Called from PROJECT_FILE.i:369. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- j <- main. - Called from PROJECT_FILE.i:359. + Called from PROJECT_FILE.i:370. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- j <- main. - Called from PROJECT_FILE.i:360. + Called from PROJECT_FILE.i:371. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- j <- main. - Called from PROJECT_FILE.i:361. + Called from PROJECT_FILE.i:372. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- j <- main. - Called from PROJECT_FILE.i:362. + Called from PROJECT_FILE.i:373. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- j <- main. - Called from PROJECT_FILE.i:363. + Called from PROJECT_FILE.i:374. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- j <- main. - Called from PROJECT_FILE.i:364. + Called from PROJECT_FILE.i:375. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- j <- main. - Called from PROJECT_FILE.i:365. + Called from PROJECT_FILE.i:376. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- j <- main. - Called from PROJECT_FILE.i:366. + Called from PROJECT_FILE.i:377. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- j <- main. - Called from PROJECT_FILE.i:378. + Called from PROJECT_FILE.i:389. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- j <- main. - Called from PROJECT_FILE.i:379. + Called from PROJECT_FILE.i:390. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- j <- main. - Called from PROJECT_FILE.i:380. + Called from PROJECT_FILE.i:391. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- j <- main. - Called from PROJECT_FILE.i:381. + Called from PROJECT_FILE.i:392. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_init_set_si <- j <- main. - Called from PROJECT_FILE.i:382. + Called from PROJECT_FILE.i:393. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- j <- main. - Called from PROJECT_FILE.i:383. + Called from PROJECT_FILE.i:394. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- j <- main. - Called from PROJECT_FILE.i:384. + Called from PROJECT_FILE.i:395. [value] Done for function __gmpz_init [value] computing for function __gmpz_add <- j <- main. - Called from PROJECT_FILE.i:385. + Called from PROJECT_FILE.i:396. [value] Done for function __gmpz_add [value] computing for function __gmpz_cmp <- j <- main. - Called from PROJECT_FILE.i:386. + Called from PROJECT_FILE.i:397. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- j <- main. - Called from PROJECT_FILE.i:387. + Called from PROJECT_FILE.i:398. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- j <- main. - Called from PROJECT_FILE.i:388. + Called from PROJECT_FILE.i:399. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- j <- main. - Called from PROJECT_FILE.i:389. + Called from PROJECT_FILE.i:400. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- j <- main. - Called from PROJECT_FILE.i:390. + Called from PROJECT_FILE.i:401. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- j <- main. - Called from PROJECT_FILE.i:391. + Called from PROJECT_FILE.i:402. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- j <- main. - Called from PROJECT_FILE.i:392. + Called from PROJECT_FILE.i:403. [value] Done for function __gmpz_clear -PROJECT_FILE.i:327:[value] Function j, behavior b1: postcondition got status valid. -PROJECT_FILE.i:332:[value] Function j, behavior b2: postcondition got status valid. +PROJECT_FILE.i:338:[value] Function j, behavior b1: postcondition got status valid. +PROJECT_FILE.i:343:[value] Function j, behavior b2: postcondition got status valid. [value] Recording results for j [value] Done for function j [value] computing for function k <- main. - Called from PROJECT_FILE.i:691. -PROJECT_FILE.i:400:[value] Function k, behavior b1: assumption got status invalid; precondition not evaluated. -PROJECT_FILE.i:405:[value] Function k, behavior b2: precondition got status valid. -PROJECT_FILE.i:406:[value] Function k, behavior b2: precondition got status valid. + Called from PROJECT_FILE.i:702. +PROJECT_FILE.i:411:[value] Function k, behavior b1: assumption got status invalid; precondition not evaluated. +PROJECT_FILE.i:416:[value] Function k, behavior b2: precondition got status valid. +PROJECT_FILE.i:417:[value] Function k, behavior b2: precondition got status valid. [value] computing for function __gmpz_init_set_si <- k <- main. - Called from PROJECT_FILE.i:424. + Called from PROJECT_FILE.i:435. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- k <- main. - Called from PROJECT_FILE.i:425. + Called from PROJECT_FILE.i:436. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- k <- main. - Called from PROJECT_FILE.i:426. + Called from PROJECT_FILE.i:437. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- k <- main. - Called from PROJECT_FILE.i:432. + Called from PROJECT_FILE.i:443. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- k <- main. - Called from PROJECT_FILE.i:433. + Called from PROJECT_FILE.i:444. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- k <- main. - Called from PROJECT_FILE.i:434. + Called from PROJECT_FILE.i:445. [value] Done for function __gmpz_cmp -PROJECT_FILE.i:435:[value] assigning non deterministic value for the first time +PROJECT_FILE.i:446:[value] assigning non deterministic value for the first time [value] computing for function __gmpz_clear <- k <- main. - Called from PROJECT_FILE.i:436. + Called from PROJECT_FILE.i:447. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- k <- main. - Called from PROJECT_FILE.i:437. + Called from PROJECT_FILE.i:448. [value] Done for function __gmpz_clear [value] computing for function e_acsl_assert <- k <- main. - Called from PROJECT_FILE.i:439. + Called from PROJECT_FILE.i:450. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_init_set_si <- k <- main. - Called from PROJECT_FILE.i:440. + Called from PROJECT_FILE.i:451. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- k <- main. - Called from PROJECT_FILE.i:441. + Called from PROJECT_FILE.i:452. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- k <- main. - Called from PROJECT_FILE.i:446. + Called from PROJECT_FILE.i:457. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- k <- main. - Called from PROJECT_FILE.i:447. + Called from PROJECT_FILE.i:458. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- k <- main. - Called from PROJECT_FILE.i:448. + Called from PROJECT_FILE.i:459. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- k <- main. - Called from PROJECT_FILE.i:450. + Called from PROJECT_FILE.i:461. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- k <- main. - Called from PROJECT_FILE.i:451. + Called from PROJECT_FILE.i:462. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- k <- main. - Called from PROJECT_FILE.i:459. + Called from PROJECT_FILE.i:470. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- k <- main. - Called from PROJECT_FILE.i:460. + Called from PROJECT_FILE.i:471. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- k <- main. - Called from PROJECT_FILE.i:461. + Called from PROJECT_FILE.i:472. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- k <- main. - Called from PROJECT_FILE.i:463. + Called from PROJECT_FILE.i:474. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- k <- main. - Called from PROJECT_FILE.i:464. + Called from PROJECT_FILE.i:475. [value] Done for function __gmpz_clear [value] computing for function e_acsl_assert <- k <- main. - Called from PROJECT_FILE.i:466. + Called from PROJECT_FILE.i:477. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_cmp <- k <- main. - Called from PROJECT_FILE.i:468. + Called from PROJECT_FILE.i:479. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- k <- main. - Called from PROJECT_FILE.i:473. + Called from PROJECT_FILE.i:484. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- k <- main. - Called from PROJECT_FILE.i:474. + Called from PROJECT_FILE.i:485. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- k <- main. - Called from PROJECT_FILE.i:475. + Called from PROJECT_FILE.i:486. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- k <- main. - Called from PROJECT_FILE.i:477. + Called from PROJECT_FILE.i:488. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- k <- main. - Called from PROJECT_FILE.i:478. + Called from PROJECT_FILE.i:489. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- k <- main. - Called from PROJECT_FILE.i:488. + Called from PROJECT_FILE.i:499. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- k <- main. - Called from PROJECT_FILE.i:489. + Called from PROJECT_FILE.i:500. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- k <- main. - Called from PROJECT_FILE.i:490. + Called from PROJECT_FILE.i:501. [value] Done for function __gmpz_init [value] computing for function __gmpz_add <- k <- main. - Called from PROJECT_FILE.i:491. + Called from PROJECT_FILE.i:502. [value] Done for function __gmpz_add [value] computing for function __gmpz_init_set_si <- k <- main. - Called from PROJECT_FILE.i:492. + Called from PROJECT_FILE.i:503. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- k <- main. - Called from PROJECT_FILE.i:493. + Called from PROJECT_FILE.i:504. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- k <- main. - Called from PROJECT_FILE.i:495. + Called from PROJECT_FILE.i:506. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- k <- main. - Called from PROJECT_FILE.i:496. + Called from PROJECT_FILE.i:507. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- k <- main. - Called from PROJECT_FILE.i:497. + Called from PROJECT_FILE.i:508. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- k <- main. - Called from PROJECT_FILE.i:498. + Called from PROJECT_FILE.i:509. [value] Done for function __gmpz_clear [value] computing for function e_acsl_assert <- k <- main. - Called from PROJECT_FILE.i:500. + Called from PROJECT_FILE.i:511. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- k <- main. - Called from PROJECT_FILE.i:502. + Called from PROJECT_FILE.i:513. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- k <- main. - Called from PROJECT_FILE.i:503. + Called from PROJECT_FILE.i:514. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- k <- main. - Called from PROJECT_FILE.i:504. + Called from PROJECT_FILE.i:515. [value] Done for function __gmpz_clear [value] Recording results for k [value] Done for function k [value] computing for function l <- main. - Called from PROJECT_FILE.i:692. -PROJECT_FILE.i:514:[value] Assertion got status valid. + Called from PROJECT_FILE.i:703. +PROJECT_FILE.i:525:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- l <- main. - Called from PROJECT_FILE.i:519. + Called from PROJECT_FILE.i:530. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- l <- main. - Called from PROJECT_FILE.i:520. + Called from PROJECT_FILE.i:531. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- l <- main. - Called from PROJECT_FILE.i:521. + Called from PROJECT_FILE.i:532. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- l <- main. - Called from PROJECT_FILE.i:522. + Called from PROJECT_FILE.i:533. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- l <- main. - Called from PROJECT_FILE.i:523. + Called from PROJECT_FILE.i:534. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- l <- main. - Called from PROJECT_FILE.i:524. + Called from PROJECT_FILE.i:535. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- l <- main. - Called from PROJECT_FILE.i:532. + Called from PROJECT_FILE.i:543. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- l <- main. - Called from PROJECT_FILE.i:533. + Called from PROJECT_FILE.i:544. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- l <- main. - Called from PROJECT_FILE.i:534. + Called from PROJECT_FILE.i:545. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- l <- main. - Called from PROJECT_FILE.i:535. + Called from PROJECT_FILE.i:546. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- l <- main. - Called from PROJECT_FILE.i:536. + Called from PROJECT_FILE.i:547. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- l <- main. - Called from PROJECT_FILE.i:537. + Called from PROJECT_FILE.i:548. [value] Done for function __gmpz_clear -PROJECT_FILE.i:511:[value] Function l: postcondition got status valid. +PROJECT_FILE.i:522:[value] Function l: postcondition got status valid. [value] Recording results for l [value] Done for function l [value] computing for function m <- main. - Called from PROJECT_FILE.i:693. + Called from PROJECT_FILE.i:704. [value] computing for function __gmpz_init_set_si <- m <- main. - Called from PROJECT_FILE.i:567. + Called from PROJECT_FILE.i:578. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- m <- main. - Called from PROJECT_FILE.i:568. + Called from PROJECT_FILE.i:579. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- m <- main. - Called from PROJECT_FILE.i:569. + Called from PROJECT_FILE.i:580. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- m <- main. - Called from PROJECT_FILE.i:574. + Called from PROJECT_FILE.i:585. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- m <- main. - Called from PROJECT_FILE.i:575. + Called from PROJECT_FILE.i:586. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- m <- main. - Called from PROJECT_FILE.i:576. + Called from PROJECT_FILE.i:587. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- m <- main. - Called from PROJECT_FILE.i:578. + Called from PROJECT_FILE.i:589. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- m <- main. - Called from PROJECT_FILE.i:579. + Called from PROJECT_FILE.i:590. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- m <- main. - Called from PROJECT_FILE.i:583. + Called from PROJECT_FILE.i:594. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- m <- main. - Called from PROJECT_FILE.i:584. + Called from PROJECT_FILE.i:595. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- m <- main. - Called from PROJECT_FILE.i:592. + Called from PROJECT_FILE.i:603. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- m <- main. - Called from PROJECT_FILE.i:593. + Called from PROJECT_FILE.i:604. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- m <- main. - Called from PROJECT_FILE.i:594. + Called from PROJECT_FILE.i:605. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- m <- main. - Called from PROJECT_FILE.i:599. + Called from PROJECT_FILE.i:610. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- m <- main. - Called from PROJECT_FILE.i:600. + Called from PROJECT_FILE.i:611. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- m <- main. - Called from PROJECT_FILE.i:601. + Called from PROJECT_FILE.i:612. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- m <- main. - Called from PROJECT_FILE.i:603. + Called from PROJECT_FILE.i:614. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- m <- main. - Called from PROJECT_FILE.i:604. + Called from PROJECT_FILE.i:615. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- m <- main. - Called from PROJECT_FILE.i:608. + Called from PROJECT_FILE.i:619. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- m <- main. - Called from PROJECT_FILE.i:609. + Called from PROJECT_FILE.i:620. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- m <- main. - Called from PROJECT_FILE.i:616. + Called from PROJECT_FILE.i:627. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- m <- main. - Called from PROJECT_FILE.i:617. + Called from PROJECT_FILE.i:628. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- m <- main. - Called from PROJECT_FILE.i:618. + Called from PROJECT_FILE.i:629. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- m <- main. - Called from PROJECT_FILE.i:620. + Called from PROJECT_FILE.i:631. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- m <- main. - Called from PROJECT_FILE.i:621. + Called from PROJECT_FILE.i:632. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- m <- main. - Called from PROJECT_FILE.i:634. + Called from PROJECT_FILE.i:645. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- m <- main. - Called from PROJECT_FILE.i:635. + Called from PROJECT_FILE.i:646. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- m <- main. - Called from PROJECT_FILE.i:636. + Called from PROJECT_FILE.i:647. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- m <- main. - Called from PROJECT_FILE.i:638. + Called from PROJECT_FILE.i:649. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- m <- main. - Called from PROJECT_FILE.i:639. + Called from PROJECT_FILE.i:650. [value] Done for function __gmpz_clear [value] computing for function e_acsl_assert <- m <- main. - Called from PROJECT_FILE.i:641. + Called from PROJECT_FILE.i:652. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_init_set_si <- m <- main. - Called from PROJECT_FILE.i:648. + Called from PROJECT_FILE.i:659. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- m <- main. - Called from PROJECT_FILE.i:649. + Called from PROJECT_FILE.i:660. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- m <- main. - Called from PROJECT_FILE.i:650. + Called from PROJECT_FILE.i:661. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- m <- main. - Called from PROJECT_FILE.i:652. + Called from PROJECT_FILE.i:663. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- m <- main. - Called from PROJECT_FILE.i:653. + Called from PROJECT_FILE.i:664. [value] Done for function __gmpz_clear [value] computing for function e_acsl_assert <- m <- main. - Called from PROJECT_FILE.i:655. + Called from PROJECT_FILE.i:666. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_init_set_si <- m <- main. - Called from PROJECT_FILE.i:664. + Called from PROJECT_FILE.i:675. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- m <- main. - Called from PROJECT_FILE.i:665. + Called from PROJECT_FILE.i:676. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- m <- main. - Called from PROJECT_FILE.i:666. + Called from PROJECT_FILE.i:677. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- m <- main. - Called from PROJECT_FILE.i:667. + Called from PROJECT_FILE.i:678. [value] Done for function __gmpz_init [value] computing for function __gmpz_add <- m <- main. - Called from PROJECT_FILE.i:668. + Called from PROJECT_FILE.i:679. [value] Done for function __gmpz_add [value] computing for function __gmpz_cmp <- m <- main. - Called from PROJECT_FILE.i:669. + Called from PROJECT_FILE.i:680. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- m <- main. - Called from PROJECT_FILE.i:671. + Called from PROJECT_FILE.i:682. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- m <- main. - Called from PROJECT_FILE.i:672. + Called from PROJECT_FILE.i:683. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- m <- main. - Called from PROJECT_FILE.i:673. + Called from PROJECT_FILE.i:684. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- m <- main. - Called from PROJECT_FILE.i:674. + Called from PROJECT_FILE.i:685. [value] Done for function __gmpz_clear [value] computing for function e_acsl_assert <- m <- main. - Called from PROJECT_FILE.i:676. + Called from PROJECT_FILE.i:687. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:545:[value] Function m, behavior b1: assumes got status invalid; post-condition not evaluated. -PROJECT_FILE.i:550:[value] Function m, behavior b2: postcondition got status valid. -PROJECT_FILE.i:551:[value] Function m, behavior b2: postcondition got status valid. +PROJECT_FILE.i:556:[value] Function m, behavior b1: assumes got status invalid; post-condition not evaluated. +PROJECT_FILE.i:561:[value] Function m, behavior b2: postcondition got status valid. +PROJECT_FILE.i:562:[value] Function m, behavior b2: postcondition got status valid. [value] Recording results for m [value] Done for function m [value] Recording results for main @@ -633,32 +633,53 @@ struct __anonstruct___mpz_struct_1 { }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; typedef __mpz_struct mpz_t[1]; -/*@ ensures \valid(\old(x)); - allocates \nothing; - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); - allocates \nothing; + allocates \old(z); + assigns *z; assigns *z \from n; */ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -670,7 +691,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); - allocates \nothing; + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -683,7 +705,10 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); @@ -691,6 +716,7 @@ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, requires \valid(z3); allocates \nothing; assigns *z1; + assigns *z1 \from *z2, *z3; */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, @@ -699,7 +725,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -707,7 +735,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -715,7 +745,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -723,14 +755,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -745,7 +782,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/function_contract.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/function_contract.res.oracle index 400a73210d67fe9591165d4a0f6942778e4ec79d..b2a5014395865f8c0a836f6236bb5abd0d5763b2 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/function_contract.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/function_contract.res.oracle @@ -5,131 +5,131 @@ X ∈ {0} Y ∈ {2} [value] computing for function f <- main. - Called from PROJECT_FILE.i:403. + Called from PROJECT_FILE.i:414. [value] computing for function e_acsl_assert <- f <- main. - Called from PROJECT_FILE.i:236. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status valid. + Called from PROJECT_FILE.i:247. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status valid. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:232:[value] Function f: postcondition got status valid. +PROJECT_FILE.i:243:[value] Function f: postcondition got status valid. [value] Recording results for f [value] Done for function f [value] computing for function g <- main. - Called from PROJECT_FILE.i:404. + Called from PROJECT_FILE.i:415. [value] computing for function e_acsl_assert <- g <- main. - Called from PROJECT_FILE.i:245. + Called from PROJECT_FILE.i:256. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- g <- main. - Called from PROJECT_FILE.i:246. + Called from PROJECT_FILE.i:257. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:240:[value] Function g: postcondition got status valid. -PROJECT_FILE.i:241:[value] Function g: postcondition got status valid. +PROJECT_FILE.i:251:[value] Function g: postcondition got status valid. +PROJECT_FILE.i:252:[value] Function g: postcondition got status valid. [value] Recording results for g [value] Done for function g [value] computing for function h <- main. - Called from PROJECT_FILE.i:405. -PROJECT_FILE.i:250:[value] Function h: precondition got status valid. + Called from PROJECT_FILE.i:416. +PROJECT_FILE.i:261:[value] Function h: precondition got status valid. [value] computing for function e_acsl_assert <- h <- main. - Called from PROJECT_FILE.i:253. + Called from PROJECT_FILE.i:264. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] Recording results for h [value] Done for function h [value] computing for function i <- main. - Called from PROJECT_FILE.i:406. -PROJECT_FILE.i:258:[value] Function i: precondition got status valid. -PROJECT_FILE.i:259:[value] Function i: precondition got status valid. + Called from PROJECT_FILE.i:417. +PROJECT_FILE.i:269:[value] Function i: precondition got status valid. +PROJECT_FILE.i:270:[value] Function i: precondition got status valid. [value] computing for function e_acsl_assert <- i <- main. - Called from PROJECT_FILE.i:262. + Called from PROJECT_FILE.i:273. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- i <- main. - Called from PROJECT_FILE.i:263. + Called from PROJECT_FILE.i:274. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] Recording results for i [value] Done for function i [value] computing for function j <- main. - Called from PROJECT_FILE.i:407. -PROJECT_FILE.i:269:[value] Function j, behavior b1: precondition got status valid. -PROJECT_FILE.i:273:[value] Function j, behavior b2: precondition got status valid. -PROJECT_FILE.i:274:[value] Function j, behavior b2: precondition got status valid. + Called from PROJECT_FILE.i:418. +PROJECT_FILE.i:280:[value] Function j, behavior b1: precondition got status valid. +PROJECT_FILE.i:284:[value] Function j, behavior b2: precondition got status valid. +PROJECT_FILE.i:285:[value] Function j, behavior b2: precondition got status valid. [value] computing for function e_acsl_assert <- j <- main. - Called from PROJECT_FILE.i:281. + Called from PROJECT_FILE.i:292. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- j <- main. - Called from PROJECT_FILE.i:282. + Called from PROJECT_FILE.i:293. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- j <- main. - Called from PROJECT_FILE.i:284. + Called from PROJECT_FILE.i:295. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- j <- main. - Called from PROJECT_FILE.i:286. + Called from PROJECT_FILE.i:297. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- j <- main. - Called from PROJECT_FILE.i:287. + Called from PROJECT_FILE.i:298. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:270:[value] Function j, behavior b1: postcondition got status valid. -PROJECT_FILE.i:275:[value] Function j, behavior b2: postcondition got status valid. +PROJECT_FILE.i:281:[value] Function j, behavior b1: postcondition got status valid. +PROJECT_FILE.i:286:[value] Function j, behavior b2: postcondition got status valid. [value] Recording results for j [value] Done for function j [value] computing for function k <- main. - Called from PROJECT_FILE.i:408. -PROJECT_FILE.i:294:[value] Function k, behavior b1: assumption got status invalid; precondition not evaluated. -PROJECT_FILE.i:299:[value] Function k, behavior b2: precondition got status valid. -PROJECT_FILE.i:300:[value] Function k, behavior b2: precondition got status valid. + Called from PROJECT_FILE.i:419. +PROJECT_FILE.i:305:[value] Function k, behavior b1: assumption got status invalid; precondition not evaluated. +PROJECT_FILE.i:310:[value] Function k, behavior b2: precondition got status valid. +PROJECT_FILE.i:311:[value] Function k, behavior b2: precondition got status valid. [value] computing for function e_acsl_assert <- k <- main. - Called from PROJECT_FILE.i:314. + Called from PROJECT_FILE.i:325. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- k <- main. - Called from PROJECT_FILE.i:319. + Called from PROJECT_FILE.i:330. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- k <- main. - Called from PROJECT_FILE.i:326. + Called from PROJECT_FILE.i:337. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] Recording results for k [value] Done for function k [value] computing for function l <- main. - Called from PROJECT_FILE.i:409. -PROJECT_FILE.i:337:[value] Assertion got status valid. + Called from PROJECT_FILE.i:420. +PROJECT_FILE.i:348:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- l <- main. - Called from PROJECT_FILE.i:338. + Called from PROJECT_FILE.i:349. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- l <- main. - Called from PROJECT_FILE.i:340. + Called from PROJECT_FILE.i:351. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:334:[value] Function l: postcondition got status valid. +PROJECT_FILE.i:345:[value] Function l: postcondition got status valid. [value] Recording results for l [value] Done for function l [value] computing for function m <- main. - Called from PROJECT_FILE.i:410. + Called from PROJECT_FILE.i:421. [value] computing for function e_acsl_assert <- m <- main. - Called from PROJECT_FILE.i:383. + Called from PROJECT_FILE.i:394. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- m <- main. - Called from PROJECT_FILE.i:387. + Called from PROJECT_FILE.i:398. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- m <- main. - Called from PROJECT_FILE.i:393. + Called from PROJECT_FILE.i:404. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:346:[value] Function m, behavior b1: assumes got status invalid; post-condition not evaluated. -PROJECT_FILE.i:351:[value] Function m, behavior b2: postcondition got status valid. -PROJECT_FILE.i:352:[value] Function m, behavior b2: postcondition got status valid. +PROJECT_FILE.i:357:[value] Function m, behavior b1: assumes got status invalid; post-condition not evaluated. +PROJECT_FILE.i:362:[value] Function m, behavior b2: postcondition got status valid. +PROJECT_FILE.i:363:[value] Function m, behavior b2: postcondition got status valid. [value] Recording results for m [value] Done for function m [value] Recording results for main @@ -165,29 +165,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -199,6 +223,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -208,13 +234,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -222,7 +253,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -230,7 +263,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -238,7 +273,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -246,14 +283,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -268,7 +310,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_addrOf.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_addrOf.c index 02ba9483e3f9b18508716388fb244fb6e5204260..324201a12efa2e0418398f8ca84a3680c9f3fc53 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_addrOf.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_addrOf.c @@ -5,29 +5,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -39,6 +63,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -48,13 +74,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -62,7 +93,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -70,7 +103,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -78,7 +113,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -86,14 +123,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -108,7 +150,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_addrOf2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_addrOf2.c index 02ba9483e3f9b18508716388fb244fb6e5204260..324201a12efa2e0418398f8ca84a3680c9f3fc53 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_addrOf2.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_addrOf2.c @@ -5,29 +5,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -39,6 +63,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -48,13 +74,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -62,7 +93,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -70,7 +103,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -78,7 +113,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -86,14 +123,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -108,7 +150,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_arith.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_arith.c index c90a8d89fb5c502482a42d795ea38bf3945f981b..f6a9ba7a38bb6e008666278c006a053c882e0670 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_arith.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_arith.c @@ -5,29 +5,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -39,6 +63,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -48,13 +74,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -62,7 +93,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -70,7 +103,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -78,7 +113,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -86,14 +123,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -108,7 +150,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_arith2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_arith2.c index 501472caadeb20736542557023d4352be16a2550..4d0e3d6b08e5a2587527db4848f781f0ff43bb9d 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_arith2.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_arith2.c @@ -6,29 +6,53 @@ struct __anonstruct___mpz_struct_1 { }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; typedef __mpz_struct mpz_t[1]; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -40,6 +64,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -49,13 +75,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -63,7 +94,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -71,7 +104,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -79,7 +114,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -87,14 +124,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -109,7 +151,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_array.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_array.c index 14f0858316d47218f3959f9e7b60b486cb6ca5b0..e17e3f9289d0a7c11e95dbb638c268d9c58a36f5 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_array.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_array.c @@ -5,29 +5,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -39,6 +63,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -48,13 +74,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -62,7 +93,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -70,7 +103,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -78,7 +113,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -86,14 +123,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -108,7 +150,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_array2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_array2.c index 765225105ac4d6f9b842981fdaf902d88c559b1f..94d5692f7a2552f84eb8ae52ce783ea3b6ac0397 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_array2.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_array2.c @@ -6,29 +6,53 @@ struct __anonstruct___mpz_struct_1 { }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; typedef __mpz_struct mpz_t[1]; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -40,6 +64,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -49,13 +75,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -63,7 +94,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -71,7 +104,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -79,7 +114,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -87,14 +124,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -109,7 +151,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_at.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_at.c index d10663b18a49aa426d7dae528fff99560d2dfcf6..7566c4a2d8036782fc1aabcd4fb70932327fc4d0 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_at.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_at.c @@ -5,29 +5,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -39,6 +63,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -48,13 +74,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -62,7 +93,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -70,7 +103,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -78,7 +113,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -86,14 +123,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -108,7 +150,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_at2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_at2.c index 9fdc34f7abbded408a64a6910af183c2aec74f36..d087e374706f256f18d30f0543080eb2b8071e1c 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_at2.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_at2.c @@ -6,29 +6,53 @@ struct __anonstruct___mpz_struct_1 { }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; typedef __mpz_struct mpz_t[1]; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -40,6 +64,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -49,13 +75,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -63,7 +94,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -71,7 +104,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -79,7 +114,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -87,14 +124,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -109,7 +151,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_cast.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_cast.c index 9951c989eddfe4ca350c1116061ef9eaf27d8acd..039e46d60d88b3885a54d6afe9b408d5cbd095eb 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_cast.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_cast.c @@ -5,29 +5,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -39,6 +63,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -48,13 +74,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -62,7 +93,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -70,7 +103,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -78,7 +113,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -86,14 +123,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -108,7 +150,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_cast2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_cast2.c index 1d668b087d072ea6cc3157bff857416d8e033fcc..8a1bfb67724b1205d134ad959f216513854eb1e9 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_cast2.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_cast2.c @@ -6,29 +6,53 @@ struct __anonstruct___mpz_struct_1 { }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; typedef __mpz_struct mpz_t[1]; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -40,6 +64,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -49,13 +75,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -63,7 +94,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -71,7 +104,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -79,7 +114,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -87,14 +124,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -109,7 +151,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_comparison.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_comparison.c index c6ac392a84a2a79bfb757b213e3e7331710ae0ac..e5221ec573be49500980dcb92401d29a850115b0 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_comparison.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_comparison.c @@ -5,29 +5,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -39,6 +63,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -48,13 +74,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -62,7 +93,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -70,7 +103,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -78,7 +113,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -86,14 +123,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -108,7 +150,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_comparison2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_comparison2.c index 028172b274e5e171c100b0923337b802cc62bf9a..c92eedb5c3c35ceb98a021319ab5b932ad599e80 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_comparison2.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_comparison2.c @@ -6,29 +6,53 @@ struct __anonstruct___mpz_struct_1 { }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; typedef __mpz_struct mpz_t[1]; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -40,6 +64,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -49,13 +75,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -63,7 +94,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -71,7 +104,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -79,7 +114,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -87,14 +124,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -109,7 +151,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_false.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_false.c index 8e99a4e8bf799cf8296c5c0ead8d136f48edc868..8ced41200250c671d6a5b6afb0221d910a620b09 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_false.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_false.c @@ -5,29 +5,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -39,6 +63,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -48,13 +74,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -62,7 +93,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -70,7 +103,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -78,7 +113,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -86,14 +123,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -108,7 +150,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_false2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_false2.c index 8e99a4e8bf799cf8296c5c0ead8d136f48edc868..8ced41200250c671d6a5b6afb0221d910a620b09 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_false2.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_false2.c @@ -5,29 +5,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -39,6 +63,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -48,13 +74,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -62,7 +93,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -70,7 +103,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -78,7 +113,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -86,14 +123,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -108,7 +150,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_function_contract.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_function_contract.c index c901731124a47b6e92b946245dba4b3c11d39ac6..ce8fae0fee08da98f0e25fc16fd4e28b763630c9 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_function_contract.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_function_contract.c @@ -5,29 +5,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -39,6 +63,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -48,13 +74,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -62,7 +93,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -70,7 +103,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -78,7 +113,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -86,14 +123,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -108,7 +150,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_function_contract2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_function_contract2.c index 30a7e26d4aee2b8df74db4e27c8860f5736c7117..1161659d6ac5d600211a6bb7e2586ae32ff1b7a3 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_function_contract2.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_function_contract2.c @@ -6,29 +6,53 @@ struct __anonstruct___mpz_struct_1 { }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; typedef __mpz_struct mpz_t[1]; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -40,6 +64,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -49,13 +75,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -63,7 +94,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -71,7 +104,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -79,7 +114,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -87,14 +124,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -109,7 +151,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_integer_constant.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_integer_constant.c index 485f4f20a61551ecbe780cca75552ce6becb5d05..8a5c44a0f331df720a7d9c61696e956ddbddfc28 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_integer_constant.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_integer_constant.c @@ -5,29 +5,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -39,6 +63,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -48,13 +74,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -62,7 +93,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -70,7 +103,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -78,7 +113,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -86,14 +123,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -108,7 +150,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_integer_constant2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_integer_constant2.c index 09a6cc83032f454bb53ec33e2f5f88916a304504..ff384bdbd61829cc43e8078786ba62b3d1891f8f 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_integer_constant2.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_integer_constant2.c @@ -6,29 +6,53 @@ struct __anonstruct___mpz_struct_1 { }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; typedef __mpz_struct mpz_t[1]; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -40,6 +64,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -49,13 +75,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -63,7 +94,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -71,7 +104,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -79,7 +114,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -87,14 +124,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -109,7 +151,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_invariant.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_invariant.c index 685bd5edadd70a9c2db35cd6e101e67df24a10fc..77f3a8a7b24b530b620bbb5748641afc38534fa4 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_invariant.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_invariant.c @@ -5,29 +5,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -39,6 +63,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -48,13 +74,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -62,7 +93,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -70,7 +103,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -78,7 +113,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -86,14 +123,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -108,7 +150,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_invariant2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_invariant2.c index e9f51efe58646bb551b3f58b91bc924148db1d5d..5e1a8475aec0571c7a7f9c2031f13d475e024ad3 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_invariant2.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_invariant2.c @@ -6,29 +6,53 @@ struct __anonstruct___mpz_struct_1 { }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; typedef __mpz_struct mpz_t[1]; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -40,6 +64,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -49,13 +75,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -63,7 +94,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -71,7 +104,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -79,7 +114,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -87,14 +124,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -109,7 +151,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_labeled_stmt.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_labeled_stmt.c index bb8aab64743fd1a484aefd71d76cf5ec86213bca..349c06dfcafad8ba8f50ba18a7f97192ff5bcbe6 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_labeled_stmt.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_labeled_stmt.c @@ -5,29 +5,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -39,6 +63,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -48,13 +74,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -62,7 +93,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -70,7 +103,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -78,7 +113,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -86,14 +123,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -108,7 +150,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_labeled_stmt2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_labeled_stmt2.c index 30a9f60a01431446b1ed8fe4376ff4d51ca6da31..d6873d9b6df01937b8fbb4f6ad1c134ec33c16b9 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_labeled_stmt2.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_labeled_stmt2.c @@ -6,29 +6,53 @@ struct __anonstruct___mpz_struct_1 { }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; typedef __mpz_struct mpz_t[1]; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -40,6 +64,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -49,13 +75,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -63,7 +94,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -71,7 +104,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -79,7 +114,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -87,14 +124,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -109,7 +151,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_lazy.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_lazy.c index 5c32aeb27d16cb611d0e271bac1d5fd6c961a05e..dab5e82017f5ce3b15ee5afa50e8bd2573b0fb26 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_lazy.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_lazy.c @@ -5,29 +5,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -39,6 +63,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -48,13 +74,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -62,7 +93,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -70,7 +103,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -78,7 +113,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -86,14 +123,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -108,7 +150,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_lazy2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_lazy2.c index b95fc7452179d3e5c633254ab35dacdad8ee7ba5..9b03d6b67cdb090c4346dabba37046486dbd7ac8 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_lazy2.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_lazy2.c @@ -6,29 +6,53 @@ struct __anonstruct___mpz_struct_1 { }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; typedef __mpz_struct mpz_t[1]; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -40,6 +64,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -49,13 +75,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -63,7 +94,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -71,7 +104,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -79,7 +114,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -87,14 +124,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -109,7 +151,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_linear_search.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_linear_search.c index 1244d3b3c4cec8860e6821ea43126c95eef003c6..17764226bf2c22750632de49f27b5fc21e7b67ad 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_linear_search.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_linear_search.c @@ -5,29 +5,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -39,6 +63,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -48,13 +74,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -62,7 +93,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -70,7 +103,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -78,7 +113,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -86,14 +123,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -108,7 +150,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_linear_search2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_linear_search2.c index 9d65a683fa5054b24f0f2b099353a2a8a6879f9c..0abc7a6b206f569f9d72e23a7e8e4cdb6f388a27 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_linear_search2.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_linear_search2.c @@ -6,29 +6,53 @@ struct __anonstruct___mpz_struct_1 { }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; typedef __mpz_struct mpz_t[1]; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -40,6 +64,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -49,13 +75,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -63,7 +94,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -71,7 +104,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -79,7 +114,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -87,14 +124,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -109,7 +151,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_nested_code_annot.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_nested_code_annot.c index 24033162a7566cf584bedb73bf66e96e0ab79303..0b1ddbed92267ae6312e2479253dca7f81bbbff7 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_nested_code_annot.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_nested_code_annot.c @@ -5,29 +5,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -39,6 +63,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -48,13 +74,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -62,7 +93,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -70,7 +103,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -78,7 +113,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -86,14 +123,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -108,7 +150,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_nested_code_annot2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_nested_code_annot2.c index f89c038e6ebecc21ce75d8658911675e6536add3..c8dd1d45b0c43da2e9a461923157486f3e240d1a 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_nested_code_annot2.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_nested_code_annot2.c @@ -6,29 +6,53 @@ struct __anonstruct___mpz_struct_1 { }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; typedef __mpz_struct mpz_t[1]; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -40,6 +64,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -49,13 +75,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -63,7 +94,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -71,7 +104,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -79,7 +114,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -87,14 +124,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -109,7 +151,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_not.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_not.c index 1811eee6ea3f2651b7b20ad6ed523d16073be9d9..0b1e23e180d1aa56546a952d6545685dc8e57245 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_not.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_not.c @@ -5,29 +5,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -39,6 +63,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -48,13 +74,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -62,7 +93,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -70,7 +103,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -78,7 +113,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -86,14 +123,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -108,7 +150,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_not2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_not2.c index 6823615dfbd28ec9b82cecb25bcf6ef0fc74081d..9d0ec5e0db963f9ed82131bc461d34137f5ad388 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_not2.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_not2.c @@ -6,29 +6,53 @@ struct __anonstruct___mpz_struct_1 { }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; typedef __mpz_struct mpz_t[1]; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -40,6 +64,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -49,13 +75,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -63,7 +94,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -71,7 +104,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -79,7 +114,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -87,14 +124,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -109,7 +151,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_null.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_null.c index fa38fe3696dac14c445945acd0025f3e133d40c9..49cb49e5dd4c2ecea6811ac52f81089ccc7658d9 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_null.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_null.c @@ -5,29 +5,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -39,6 +63,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -48,13 +74,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -62,7 +93,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -70,7 +103,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -78,7 +113,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -86,14 +123,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -108,7 +150,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_null2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_null2.c index fa38fe3696dac14c445945acd0025f3e133d40c9..49cb49e5dd4c2ecea6811ac52f81089ccc7658d9 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_null2.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_null2.c @@ -5,29 +5,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -39,6 +63,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -48,13 +74,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -62,7 +93,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -70,7 +103,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -78,7 +113,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -86,14 +123,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -108,7 +150,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_other_constants.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_other_constants.c index a0a6d367f998ab911ad66cbe94c32036c0d6bb62..d637e277e36f4d306f283bb49c2506f58d17d81b 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_other_constants.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_other_constants.c @@ -9,29 +9,53 @@ enum bool { false = 0, true = 1 }; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -43,6 +67,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -52,13 +78,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -66,7 +97,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -74,7 +107,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -82,7 +117,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -90,14 +127,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -112,7 +154,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_other_constants2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_other_constants2.c index 3edbeb50aa1b93826de73c6bd0ddc06d6c896e5d..0ae61b3dadb9f877c315062920cf038346b34013 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_other_constants2.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_other_constants2.c @@ -10,29 +10,53 @@ enum bool { false = 0, true = 1 }; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -44,6 +68,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -53,13 +79,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -67,7 +98,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -75,7 +108,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -83,7 +118,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -91,14 +128,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -113,7 +155,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_ptr.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_ptr.c index 21d918c42af3ca3b07677be9e349105805c52db6..90d23eb947b05a7a066ccc96633dbfeffb31bd3f 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_ptr.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_ptr.c @@ -5,29 +5,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -39,6 +63,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -48,13 +74,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -62,7 +93,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -70,7 +103,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -78,7 +113,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -86,14 +123,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -108,7 +150,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_ptr2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_ptr2.c index 7f93020babbba6ed8a4e3394a548413cd710de28..1d9ff8b4cb09132cdefd8f6806793e4743852aaa 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_ptr2.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_ptr2.c @@ -6,29 +6,53 @@ struct __anonstruct___mpz_struct_1 { }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; typedef __mpz_struct mpz_t[1]; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -40,6 +64,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -49,13 +75,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -63,7 +94,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -71,7 +104,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -79,7 +114,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -87,14 +124,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -109,7 +151,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_quantif.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_quantif.c index 5929b6d4a3f2909b4469b7ab11c8fc9a95d2961f..5d8be06ba90db889be79dabed1227ba54377e85b 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_quantif.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_quantif.c @@ -5,29 +5,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -39,6 +63,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -48,13 +74,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -62,7 +93,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -70,7 +103,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -78,7 +113,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -86,14 +123,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -108,7 +150,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_quantif2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_quantif2.c index 5f77a0771d0af466f69e9609feff169cc8c4e220..5f696ba67a76ead42ab60dacf89b295bccbd9362 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_quantif2.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_quantif2.c @@ -6,29 +6,53 @@ struct __anonstruct___mpz_struct_1 { }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; typedef __mpz_struct mpz_t[1]; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -40,6 +64,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -49,13 +75,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -63,7 +94,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -71,7 +104,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -79,7 +114,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -87,14 +124,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -109,7 +151,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_result.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_result.c index d14ec1e98d286b75ca0f6751f732fc1bbed736de..be1882ab62a8fc248373faa57f800b64049a928e 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_result.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_result.c @@ -5,29 +5,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -39,6 +63,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -48,13 +74,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -62,7 +93,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -70,7 +103,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -78,7 +113,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -86,14 +123,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -108,7 +150,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_result2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_result2.c index f320bab0f979cdcae9cc3775f77e42f92a98cf26..67c3b2ce8360b50e54fb3458427f913f61a54832 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_result2.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_result2.c @@ -6,29 +6,53 @@ struct __anonstruct___mpz_struct_1 { }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; typedef __mpz_struct mpz_t[1]; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -40,6 +64,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -49,13 +75,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -63,7 +94,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -71,7 +104,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -79,7 +114,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -87,14 +124,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -109,7 +151,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_sizeof.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_sizeof.c index e98523ada8e71be0f60935999814f90660f16f3f..3728e71cbfd0dad2e5d9d77f704846ae892e4e31 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_sizeof.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_sizeof.c @@ -5,29 +5,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -39,6 +63,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -48,13 +74,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -62,7 +93,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -70,7 +103,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -78,7 +113,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -86,14 +123,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -108,7 +150,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_sizeof2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_sizeof2.c index ab47374b1cdc2af4fe4664310d52957fb75660b1..1aa492de8365cee09dbb81b2b9f8a95582dcd8a4 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_sizeof2.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_sizeof2.c @@ -6,29 +6,53 @@ struct __anonstruct___mpz_struct_1 { }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; typedef __mpz_struct mpz_t[1]; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -40,6 +64,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -49,13 +75,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -63,7 +94,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -71,7 +104,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -79,7 +114,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -87,14 +124,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -109,7 +151,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_stmt_contract.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_stmt_contract.c index 8914e200a4612449cd13d94a27baced2fb7eae8e..676c2fb05af7c768e5aeba908f0bb726ad665f17 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_stmt_contract.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_stmt_contract.c @@ -5,29 +5,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -39,6 +63,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -48,13 +74,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -62,7 +93,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -70,7 +103,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -78,7 +113,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -86,14 +123,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -108,7 +150,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_stmt_contract2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_stmt_contract2.c index 04395c4b086264d8f31008b361ad46affce69ef6..8db6c79818cae7224fb8359fada35327d8a53ac2 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_stmt_contract2.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_stmt_contract2.c @@ -6,29 +6,53 @@ struct __anonstruct___mpz_struct_1 { }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; typedef __mpz_struct mpz_t[1]; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -40,6 +64,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -49,13 +75,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -63,7 +94,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -71,7 +104,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -79,7 +114,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -87,14 +124,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -109,7 +151,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_true.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_true.c index f331974893717c67d8d9631a76ec694a0aa07976..df6ccbccf63233ff5369b7834178bf9180bbbcad 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_true.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_true.c @@ -5,29 +5,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -39,6 +63,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -48,13 +74,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -62,7 +93,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -70,7 +103,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -78,7 +113,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -86,14 +123,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -108,7 +150,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_true2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_true2.c index f331974893717c67d8d9631a76ec694a0aa07976..df6ccbccf63233ff5369b7834178bf9180bbbcad 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_true2.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_true2.c @@ -5,29 +5,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -39,6 +63,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -48,13 +74,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -62,7 +93,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -70,7 +103,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -78,7 +113,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -86,14 +123,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -108,7 +150,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_typedef.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_typedef.c index c5f507b0e1d2b91080e07a96158b388f270fe6aa..67498854f7aadbccce38a6d9f822fa3ff48b88d2 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_typedef.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_typedef.c @@ -6,29 +6,53 @@ struct __anonstruct___mpz_struct_1 { }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; typedef unsigned char uint8; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -40,6 +64,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -49,13 +75,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -63,7 +94,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -71,7 +104,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -79,7 +114,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -87,14 +124,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -109,7 +151,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_typedef2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_typedef2.c index 7d2ad8916ee0142842bd898f63dbe3d3bf7ccc38..8978ee94d3e4e853cfd6c877614ed44628aeb048 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_typedef2.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_typedef2.c @@ -7,29 +7,53 @@ struct __anonstruct___mpz_struct_1 { typedef struct __anonstruct___mpz_struct_1 __mpz_struct; typedef __mpz_struct mpz_t[1]; typedef unsigned char uint8; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -41,6 +65,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -50,13 +76,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -64,7 +95,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -72,7 +105,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -80,7 +115,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -88,14 +125,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -110,7 +152,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/integer_constant.1.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/integer_constant.1.res.oracle index 8d9f88f762817b1eae42f3a710b18960b2be6ece..b72bee8cf7ba16e574fdc49aaa7d2f9d6b925fa1 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/integer_constant.1.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/integer_constant.1.res.oracle @@ -2,63 +2,63 @@ [value] Computing initial state [value] Initial state computed [value] Values of globals at initialization -PROJECT_FILE.i:234:[value] Assertion got status valid. +PROJECT_FILE.i:245:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:238. + Called from PROJECT_FILE.i:249. [value] using specification for function __gmpz_init_set_si -PROJECT_FILE.i:82:[value] Function __gmpz_init_set_si: postcondition got status valid. +PROJECT_FILE.i:86:[value] Function __gmpz_init_set_si: postcondition got status valid. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:239. + Called from PROJECT_FILE.i:250. [value] using specification for function __gmpz_cmp -PROJECT_FILE.i:119:[value] Function __gmpz_cmp: precondition got status valid. -PROJECT_FILE.i:120:[value] Function __gmpz_cmp: precondition got status valid. +PROJECT_FILE.i:129:[value] Function __gmpz_cmp: precondition got status valid. +PROJECT_FILE.i:130:[value] Function __gmpz_cmp: precondition got status valid. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:240. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status unknown. + Called from PROJECT_FILE.i:251. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status unknown. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:241. + Called from PROJECT_FILE.i:252. [value] using specification for function __gmpz_clear -PROJECT_FILE.i:111:[value] Function __gmpz_clear: precondition got status valid. +PROJECT_FILE.i:120:[value] Function __gmpz_clear: precondition got status valid. [value] Done for function __gmpz_clear -PROJECT_FILE.i:246:[value] Assertion got status valid. +PROJECT_FILE.i:257:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:251. + Called from PROJECT_FILE.i:262. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:252. + Called from PROJECT_FILE.i:263. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:253. + Called from PROJECT_FILE.i:264. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:254. + Called from PROJECT_FILE.i:265. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:255. + Called from PROJECT_FILE.i:266. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:256. + Called from PROJECT_FILE.i:267. [value] Done for function __gmpz_clear -PROJECT_FILE.i:260:[value] Assertion got status valid. +PROJECT_FILE.i:271:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_str <- main. - Called from PROJECT_FILE.i:264. + Called from PROJECT_FILE.i:275. [value] using specification for function __gmpz_init_set_str -PROJECT_FILE.i:86:[value] Function __gmpz_init_set_str: postcondition got status valid. +PROJECT_FILE.i:92:[value] Function __gmpz_init_set_str: postcondition got status valid. [value] Done for function __gmpz_init_set_str [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:265. + Called from PROJECT_FILE.i:276. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:266. + Called from PROJECT_FILE.i:277. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:268. + Called from PROJECT_FILE.i:279. [value] Done for function __gmpz_clear [value] Recording results for main [value] done for function main @@ -75,32 +75,53 @@ struct __anonstruct___mpz_struct_1 { }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; typedef __mpz_struct mpz_t[1]; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); - allocates \nothing; + allocates \old(z); + assigns *z; assigns *z \from n; */ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - allocates \nothing; - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -112,7 +133,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); - allocates \nothing; + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -125,13 +147,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -139,7 +166,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -147,7 +176,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -155,7 +186,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -163,14 +196,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -185,7 +223,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/integer_constant.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/integer_constant.res.oracle index 6b5660d54810c5bf0e0b93c092a85f6a4aeb736e..1ba528da7e5a7b4b77eebe57c07d2aede8fa69de 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/integer_constant.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/integer_constant.res.oracle @@ -2,20 +2,20 @@ [value] Computing initial state [value] Initial state computed [value] Values of globals at initialization -PROJECT_FILE.i:234:[value] Assertion got status valid. +PROJECT_FILE.i:245:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:235. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status valid. + Called from PROJECT_FILE.i:246. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status valid. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:238:[value] Assertion got status valid. +PROJECT_FILE.i:249:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:239. + Called from PROJECT_FILE.i:250. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:241:[value] Assertion got status valid. +PROJECT_FILE.i:252:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:242. + Called from PROJECT_FILE.i:253. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] Recording results for main @@ -32,29 +32,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -66,6 +90,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -75,13 +101,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -89,7 +120,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -97,7 +130,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -105,7 +140,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -113,14 +150,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -135,7 +177,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/invariant.1.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/invariant.1.res.oracle index 13d6eaa560323ae7e42d745c961f990d05346388..acd7d831873997fef5290cbb730a56f0cf3583f2 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/invariant.1.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/invariant.1.res.oracle @@ -2,869 +2,869 @@ [value] Computing initial state [value] Initial state computed [value] Values of globals at initialization -PROJECT_FILE.i:238:[value] entering loop for the first time +PROJECT_FILE.i:249:[value] entering loop for the first time [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:247. + Called from PROJECT_FILE.i:258. [value] using specification for function __gmpz_init_set_si -PROJECT_FILE.i:82:[value] Function __gmpz_init_set_si: postcondition got status valid. +PROJECT_FILE.i:86:[value] Function __gmpz_init_set_si: postcondition got status valid. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:248. + Called from PROJECT_FILE.i:259. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:249. + Called from PROJECT_FILE.i:260. [value] using specification for function __gmpz_cmp -PROJECT_FILE.i:119:[value] Function __gmpz_cmp: precondition got status valid. -PROJECT_FILE.i:120:[value] Function __gmpz_cmp: precondition got status valid. +PROJECT_FILE.i:129:[value] Function __gmpz_cmp: precondition got status valid. +PROJECT_FILE.i:130:[value] Function __gmpz_cmp: precondition got status valid. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:254. + Called from PROJECT_FILE.i:265. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:255. + Called from PROJECT_FILE.i:266. [value] Done for function __gmpz_init_set_si [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:262. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status invalid. + Called from PROJECT_FILE.i:273. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status invalid. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:256. + Called from PROJECT_FILE.i:267. [value] Done for function __gmpz_cmp -PROJECT_FILE.i:257:[value] assigning non deterministic value for the first time +PROJECT_FILE.i:268:[value] assigning non deterministic value for the first time [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:258. + Called from PROJECT_FILE.i:269. [value] using specification for function __gmpz_clear -PROJECT_FILE.i:111:[value] Function __gmpz_clear: precondition got status valid. +PROJECT_FILE.i:120:[value] Function __gmpz_clear: precondition got status valid. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:259. + Called from PROJECT_FILE.i:270. [value] Done for function __gmpz_clear [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:262. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status unknown. + Called from PROJECT_FILE.i:273. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status unknown. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:263. + Called from PROJECT_FILE.i:274. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:264. + Called from PROJECT_FILE.i:275. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:274. + Called from PROJECT_FILE.i:285. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:275. + Called from PROJECT_FILE.i:286. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:276. + Called from PROJECT_FILE.i:287. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:277. + Called from PROJECT_FILE.i:288. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:278. + Called from PROJECT_FILE.i:289. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:279. + Called from PROJECT_FILE.i:290. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:247. + Called from PROJECT_FILE.i:258. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:248. + Called from PROJECT_FILE.i:259. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:249. + Called from PROJECT_FILE.i:260. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:254. + Called from PROJECT_FILE.i:265. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:255. + Called from PROJECT_FILE.i:266. [value] Done for function __gmpz_init_set_si [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:262. + Called from PROJECT_FILE.i:273. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:256. + Called from PROJECT_FILE.i:267. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:263. + Called from PROJECT_FILE.i:274. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:264. + Called from PROJECT_FILE.i:275. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:258. + Called from PROJECT_FILE.i:269. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:259. + Called from PROJECT_FILE.i:270. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:274. + Called from PROJECT_FILE.i:285. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:275. + Called from PROJECT_FILE.i:286. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:276. + Called from PROJECT_FILE.i:287. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:277. + Called from PROJECT_FILE.i:288. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:278. + Called from PROJECT_FILE.i:289. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:279. + Called from PROJECT_FILE.i:290. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:247. + Called from PROJECT_FILE.i:258. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:248. + Called from PROJECT_FILE.i:259. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:249. + Called from PROJECT_FILE.i:260. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:254. + Called from PROJECT_FILE.i:265. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:255. + Called from PROJECT_FILE.i:266. [value] Done for function __gmpz_init_set_si [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:262. + Called from PROJECT_FILE.i:273. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:256. + Called from PROJECT_FILE.i:267. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:263. + Called from PROJECT_FILE.i:274. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:264. + Called from PROJECT_FILE.i:275. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:258. + Called from PROJECT_FILE.i:269. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:259. + Called from PROJECT_FILE.i:270. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:274. + Called from PROJECT_FILE.i:285. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:275. + Called from PROJECT_FILE.i:286. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:276. + Called from PROJECT_FILE.i:287. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:277. + Called from PROJECT_FILE.i:288. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:278. + Called from PROJECT_FILE.i:289. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:279. + Called from PROJECT_FILE.i:290. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:247. + Called from PROJECT_FILE.i:258. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:248. + Called from PROJECT_FILE.i:259. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:249. + Called from PROJECT_FILE.i:260. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:254. + Called from PROJECT_FILE.i:265. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:255. + Called from PROJECT_FILE.i:266. [value] Done for function __gmpz_init_set_si [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:262. + Called from PROJECT_FILE.i:273. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:256. + Called from PROJECT_FILE.i:267. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:263. + Called from PROJECT_FILE.i:274. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:264. + Called from PROJECT_FILE.i:275. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:258. + Called from PROJECT_FILE.i:269. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:259. + Called from PROJECT_FILE.i:270. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:274. + Called from PROJECT_FILE.i:285. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:275. + Called from PROJECT_FILE.i:286. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:276. + Called from PROJECT_FILE.i:287. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:277. + Called from PROJECT_FILE.i:288. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:278. + Called from PROJECT_FILE.i:289. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:279. + Called from PROJECT_FILE.i:290. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:247. + Called from PROJECT_FILE.i:258. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:248. + Called from PROJECT_FILE.i:259. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:249. + Called from PROJECT_FILE.i:260. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:254. + Called from PROJECT_FILE.i:265. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:255. + Called from PROJECT_FILE.i:266. [value] Done for function __gmpz_init_set_si [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:262. + Called from PROJECT_FILE.i:273. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:256. + Called from PROJECT_FILE.i:267. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:263. + Called from PROJECT_FILE.i:274. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:264. + Called from PROJECT_FILE.i:275. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:258. + Called from PROJECT_FILE.i:269. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:259. + Called from PROJECT_FILE.i:270. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:274. + Called from PROJECT_FILE.i:285. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:275. + Called from PROJECT_FILE.i:286. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:276. + Called from PROJECT_FILE.i:287. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:277. + Called from PROJECT_FILE.i:288. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:278. + Called from PROJECT_FILE.i:289. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:279. + Called from PROJECT_FILE.i:290. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:247. + Called from PROJECT_FILE.i:258. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:248. + Called from PROJECT_FILE.i:259. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:249. + Called from PROJECT_FILE.i:260. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:254. + Called from PROJECT_FILE.i:265. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:255. + Called from PROJECT_FILE.i:266. [value] Done for function __gmpz_init_set_si [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:262. + Called from PROJECT_FILE.i:273. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:256. + Called from PROJECT_FILE.i:267. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:263. + Called from PROJECT_FILE.i:274. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:264. + Called from PROJECT_FILE.i:275. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:258. + Called from PROJECT_FILE.i:269. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:259. + Called from PROJECT_FILE.i:270. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:274. + Called from PROJECT_FILE.i:285. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:275. + Called from PROJECT_FILE.i:286. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:276. + Called from PROJECT_FILE.i:287. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:277. + Called from PROJECT_FILE.i:288. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:278. + Called from PROJECT_FILE.i:289. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:279. + Called from PROJECT_FILE.i:290. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:247. + Called from PROJECT_FILE.i:258. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:248. + Called from PROJECT_FILE.i:259. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:249. + Called from PROJECT_FILE.i:260. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:254. + Called from PROJECT_FILE.i:265. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:255. + Called from PROJECT_FILE.i:266. [value] Done for function __gmpz_init_set_si [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:262. + Called from PROJECT_FILE.i:273. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:256. + Called from PROJECT_FILE.i:267. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:263. + Called from PROJECT_FILE.i:274. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:264. + Called from PROJECT_FILE.i:275. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:258. + Called from PROJECT_FILE.i:269. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:259. + Called from PROJECT_FILE.i:270. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:274. + Called from PROJECT_FILE.i:285. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:275. + Called from PROJECT_FILE.i:286. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:276. + Called from PROJECT_FILE.i:287. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:277. + Called from PROJECT_FILE.i:288. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:278. + Called from PROJECT_FILE.i:289. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:279. + Called from PROJECT_FILE.i:290. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:247. + Called from PROJECT_FILE.i:258. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:248. + Called from PROJECT_FILE.i:259. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:249. + Called from PROJECT_FILE.i:260. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:254. + Called from PROJECT_FILE.i:265. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:255. + Called from PROJECT_FILE.i:266. [value] Done for function __gmpz_init_set_si [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:262. + Called from PROJECT_FILE.i:273. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:256. + Called from PROJECT_FILE.i:267. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:263. + Called from PROJECT_FILE.i:274. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:264. + Called from PROJECT_FILE.i:275. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:258. + Called from PROJECT_FILE.i:269. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:259. + Called from PROJECT_FILE.i:270. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:274. + Called from PROJECT_FILE.i:285. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:275. + Called from PROJECT_FILE.i:286. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:276. + Called from PROJECT_FILE.i:287. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:277. + Called from PROJECT_FILE.i:288. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:278. + Called from PROJECT_FILE.i:289. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:279. + Called from PROJECT_FILE.i:290. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:247. + Called from PROJECT_FILE.i:258. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:248. + Called from PROJECT_FILE.i:259. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:249. + Called from PROJECT_FILE.i:260. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:254. + Called from PROJECT_FILE.i:265. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:255. + Called from PROJECT_FILE.i:266. [value] Done for function __gmpz_init_set_si [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:262. + Called from PROJECT_FILE.i:273. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:256. + Called from PROJECT_FILE.i:267. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:263. + Called from PROJECT_FILE.i:274. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:264. + Called from PROJECT_FILE.i:275. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:258. + Called from PROJECT_FILE.i:269. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:259. + Called from PROJECT_FILE.i:270. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:274. + Called from PROJECT_FILE.i:285. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:275. + Called from PROJECT_FILE.i:286. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:276. + Called from PROJECT_FILE.i:287. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:277. + Called from PROJECT_FILE.i:288. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:278. + Called from PROJECT_FILE.i:289. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:279. + Called from PROJECT_FILE.i:290. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:247. + Called from PROJECT_FILE.i:258. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:248. + Called from PROJECT_FILE.i:259. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:249. + Called from PROJECT_FILE.i:260. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:254. + Called from PROJECT_FILE.i:265. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:255. + Called from PROJECT_FILE.i:266. [value] Done for function __gmpz_init_set_si [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:262. + Called from PROJECT_FILE.i:273. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:256. + Called from PROJECT_FILE.i:267. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:263. + Called from PROJECT_FILE.i:274. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:264. + Called from PROJECT_FILE.i:275. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:258. + Called from PROJECT_FILE.i:269. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:259. + Called from PROJECT_FILE.i:270. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:274. + Called from PROJECT_FILE.i:285. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:275. + Called from PROJECT_FILE.i:286. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:276. + Called from PROJECT_FILE.i:287. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:277. + Called from PROJECT_FILE.i:288. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:278. + Called from PROJECT_FILE.i:289. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:279. + Called from PROJECT_FILE.i:290. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:247. + Called from PROJECT_FILE.i:258. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:248. + Called from PROJECT_FILE.i:259. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:249. + Called from PROJECT_FILE.i:260. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:254. + Called from PROJECT_FILE.i:265. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:255. + Called from PROJECT_FILE.i:266. [value] Done for function __gmpz_init_set_si [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:262. + Called from PROJECT_FILE.i:273. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:256. + Called from PROJECT_FILE.i:267. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:263. + Called from PROJECT_FILE.i:274. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:264. + Called from PROJECT_FILE.i:275. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:258. + Called from PROJECT_FILE.i:269. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:259. + Called from PROJECT_FILE.i:270. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:274. + Called from PROJECT_FILE.i:285. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:275. + Called from PROJECT_FILE.i:286. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:276. + Called from PROJECT_FILE.i:287. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:277. + Called from PROJECT_FILE.i:288. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:278. + Called from PROJECT_FILE.i:289. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:279. + Called from PROJECT_FILE.i:290. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:247. + Called from PROJECT_FILE.i:258. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:248. + Called from PROJECT_FILE.i:259. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:249. + Called from PROJECT_FILE.i:260. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:254. + Called from PROJECT_FILE.i:265. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:255. + Called from PROJECT_FILE.i:266. [value] Done for function __gmpz_init_set_si [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:262. + Called from PROJECT_FILE.i:273. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:256. + Called from PROJECT_FILE.i:267. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:263. + Called from PROJECT_FILE.i:274. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:264. + Called from PROJECT_FILE.i:275. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:258. + Called from PROJECT_FILE.i:269. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:259. + Called from PROJECT_FILE.i:270. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:274. + Called from PROJECT_FILE.i:285. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:275. + Called from PROJECT_FILE.i:286. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:276. + Called from PROJECT_FILE.i:287. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:277. + Called from PROJECT_FILE.i:288. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:278. + Called from PROJECT_FILE.i:289. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:279. + Called from PROJECT_FILE.i:290. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:247. + Called from PROJECT_FILE.i:258. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:248. + Called from PROJECT_FILE.i:259. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:249. + Called from PROJECT_FILE.i:260. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:254. + Called from PROJECT_FILE.i:265. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:255. + Called from PROJECT_FILE.i:266. [value] Done for function __gmpz_init_set_si [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:262. + Called from PROJECT_FILE.i:273. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:256. + Called from PROJECT_FILE.i:267. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:263. + Called from PROJECT_FILE.i:274. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:264. + Called from PROJECT_FILE.i:275. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:258. + Called from PROJECT_FILE.i:269. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:259. + Called from PROJECT_FILE.i:270. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:274. + Called from PROJECT_FILE.i:285. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:275. + Called from PROJECT_FILE.i:286. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:276. + Called from PROJECT_FILE.i:287. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:277. + Called from PROJECT_FILE.i:288. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:278. + Called from PROJECT_FILE.i:289. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:279. + Called from PROJECT_FILE.i:290. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:247. + Called from PROJECT_FILE.i:258. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:248. + Called from PROJECT_FILE.i:259. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:249. + Called from PROJECT_FILE.i:260. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:254. + Called from PROJECT_FILE.i:265. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:255. + Called from PROJECT_FILE.i:266. [value] Done for function __gmpz_init_set_si [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:262. + Called from PROJECT_FILE.i:273. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:256. + Called from PROJECT_FILE.i:267. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:263. + Called from PROJECT_FILE.i:274. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:264. + Called from PROJECT_FILE.i:275. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:258. + Called from PROJECT_FILE.i:269. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:259. + Called from PROJECT_FILE.i:270. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:274. + Called from PROJECT_FILE.i:285. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:275. + Called from PROJECT_FILE.i:286. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:276. + Called from PROJECT_FILE.i:287. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:277. + Called from PROJECT_FILE.i:288. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:278. + Called from PROJECT_FILE.i:289. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:279. + Called from PROJECT_FILE.i:290. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:247. + Called from PROJECT_FILE.i:258. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:248. + Called from PROJECT_FILE.i:259. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:249. + Called from PROJECT_FILE.i:260. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:254. + Called from PROJECT_FILE.i:265. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:255. + Called from PROJECT_FILE.i:266. [value] Done for function __gmpz_init_set_si [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:262. + Called from PROJECT_FILE.i:273. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:256. + Called from PROJECT_FILE.i:267. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:263. + Called from PROJECT_FILE.i:274. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:264. + Called from PROJECT_FILE.i:275. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:258. + Called from PROJECT_FILE.i:269. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:259. + Called from PROJECT_FILE.i:270. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:274. + Called from PROJECT_FILE.i:285. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:275. + Called from PROJECT_FILE.i:286. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:276. + Called from PROJECT_FILE.i:287. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:277. + Called from PROJECT_FILE.i:288. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:278. + Called from PROJECT_FILE.i:289. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:279. + Called from PROJECT_FILE.i:290. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:247. + Called from PROJECT_FILE.i:258. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:248. + Called from PROJECT_FILE.i:259. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:249. + Called from PROJECT_FILE.i:260. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:254. + Called from PROJECT_FILE.i:265. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:255. + Called from PROJECT_FILE.i:266. [value] Done for function __gmpz_init_set_si [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:262. + Called from PROJECT_FILE.i:273. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:256. + Called from PROJECT_FILE.i:267. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:263. + Called from PROJECT_FILE.i:274. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:264. + Called from PROJECT_FILE.i:275. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:258. + Called from PROJECT_FILE.i:269. [value] Done for function __gmpz_clear -PROJECT_FILE.i:268:[value] warning: 2's complement assumed for overflow +PROJECT_FILE.i:279:[value] warning: 2's complement assumed for overflow [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:259. + Called from PROJECT_FILE.i:270. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:274. + Called from PROJECT_FILE.i:285. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:275. + Called from PROJECT_FILE.i:286. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:276. + Called from PROJECT_FILE.i:287. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:277. + Called from PROJECT_FILE.i:288. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:278. + Called from PROJECT_FILE.i:289. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:279. + Called from PROJECT_FILE.i:290. [value] Done for function __gmpz_clear [value] Recording results for main [value] done for function main @@ -881,31 +881,53 @@ struct __anonstruct___mpz_struct_1 { }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; typedef __mpz_struct mpz_t[1]; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); - allocates \nothing; + allocates \old(z); + assigns *z; assigns *z \from n; */ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -917,7 +939,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); - allocates \nothing; + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -930,13 +953,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -944,7 +972,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -952,7 +982,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -960,7 +992,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -968,14 +1002,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -990,7 +1029,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/invariant.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/invariant.res.oracle index 43471fb766e061672987a05819cd3d50ec6b86cc..e48c8cf6d5c1399ae060f38e1e7a880edd321c43 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/invariant.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/invariant.res.oracle @@ -2,137 +2,137 @@ [value] Computing initial state [value] Initial state computed [value] Values of globals at initialization -PROJECT_FILE.i:238:[value] entering loop for the first time +PROJECT_FILE.i:249:[value] entering loop for the first time [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:245. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status valid. + Called from PROJECT_FILE.i:256. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status valid. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:251. + Called from PROJECT_FILE.i:262. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:245. + Called from PROJECT_FILE.i:256. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:249:[value] assigning non deterministic value for the first time +PROJECT_FILE.i:260:[value] assigning non deterministic value for the first time [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:251. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status unknown. + Called from PROJECT_FILE.i:262. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status unknown. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:245. + Called from PROJECT_FILE.i:256. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:251. + Called from PROJECT_FILE.i:262. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:245. + Called from PROJECT_FILE.i:256. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:251. + Called from PROJECT_FILE.i:262. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:245. + Called from PROJECT_FILE.i:256. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:251. + Called from PROJECT_FILE.i:262. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:245. + Called from PROJECT_FILE.i:256. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:251. + Called from PROJECT_FILE.i:262. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:245. + Called from PROJECT_FILE.i:256. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:251. + Called from PROJECT_FILE.i:262. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:245. + Called from PROJECT_FILE.i:256. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:251. + Called from PROJECT_FILE.i:262. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:245. + Called from PROJECT_FILE.i:256. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:251. + Called from PROJECT_FILE.i:262. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:245. + Called from PROJECT_FILE.i:256. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:251. + Called from PROJECT_FILE.i:262. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:245. + Called from PROJECT_FILE.i:256. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:251. + Called from PROJECT_FILE.i:262. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:245. + Called from PROJECT_FILE.i:256. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:251. + Called from PROJECT_FILE.i:262. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:245. + Called from PROJECT_FILE.i:256. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:251. + Called from PROJECT_FILE.i:262. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:245. + Called from PROJECT_FILE.i:256. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:251. + Called from PROJECT_FILE.i:262. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:245. + Called from PROJECT_FILE.i:256. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:251. + Called from PROJECT_FILE.i:262. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:245. + Called from PROJECT_FILE.i:256. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:249:[value] warning: 2's complement assumed for overflow +PROJECT_FILE.i:260:[value] warning: 2's complement assumed for overflow [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:251. + Called from PROJECT_FILE.i:262. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] Recording results for main @@ -149,29 +149,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -183,6 +207,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -192,13 +218,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -206,7 +237,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -214,7 +247,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -222,7 +257,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -230,14 +267,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -252,7 +294,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/labeled_stmt.1.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/labeled_stmt.1.res.oracle index b2c81c570229684518e6cd8a69e88bd5328c498b..24039891d3da49c7a2beca6394cb2f2f9dc8c84e 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/labeled_stmt.1.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/labeled_stmt.1.res.oracle @@ -3,92 +3,92 @@ [value] Initial state computed [value] Values of globals at initialization X ∈ {0} -PROJECT_FILE.i:237:[value] Assertion got status valid. +PROJECT_FILE.i:248:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:242. + Called from PROJECT_FILE.i:253. [value] using specification for function __gmpz_init_set_si -PROJECT_FILE.i:82:[value] Function __gmpz_init_set_si: postcondition got status valid. +PROJECT_FILE.i:86:[value] Function __gmpz_init_set_si: postcondition got status valid. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:243. + Called from PROJECT_FILE.i:254. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:244. + Called from PROJECT_FILE.i:255. [value] using specification for function __gmpz_cmp -PROJECT_FILE.i:119:[value] Function __gmpz_cmp: precondition got status valid. -PROJECT_FILE.i:120:[value] Function __gmpz_cmp: precondition got status valid. +PROJECT_FILE.i:129:[value] Function __gmpz_cmp: precondition got status valid. +PROJECT_FILE.i:130:[value] Function __gmpz_cmp: precondition got status valid. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:245. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status unknown. + Called from PROJECT_FILE.i:256. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status unknown. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:246. + Called from PROJECT_FILE.i:257. [value] using specification for function __gmpz_clear -PROJECT_FILE.i:111:[value] Function __gmpz_clear: precondition got status valid. +PROJECT_FILE.i:120:[value] Function __gmpz_clear: precondition got status valid. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:247. + Called from PROJECT_FILE.i:258. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:264. + Called from PROJECT_FILE.i:275. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:265. + Called from PROJECT_FILE.i:276. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:266. + Called from PROJECT_FILE.i:277. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:267. + Called from PROJECT_FILE.i:278. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:268. + Called from PROJECT_FILE.i:279. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:269. + Called from PROJECT_FILE.i:280. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:273. + Called from PROJECT_FILE.i:284. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:274. + Called from PROJECT_FILE.i:285. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:275. + Called from PROJECT_FILE.i:286. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:276. + Called from PROJECT_FILE.i:287. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:277. + Called from PROJECT_FILE.i:288. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:278. + Called from PROJECT_FILE.i:289. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:291. + Called from PROJECT_FILE.i:302. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:292. + Called from PROJECT_FILE.i:303. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:293. + Called from PROJECT_FILE.i:304. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:294. + Called from PROJECT_FILE.i:305. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:295. + Called from PROJECT_FILE.i:306. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:296. + Called from PROJECT_FILE.i:307. [value] Done for function __gmpz_clear -PROJECT_FILE.i:231:[value] Function main: postcondition got status valid. +PROJECT_FILE.i:242:[value] Function main: postcondition got status valid. [value] Recording results for main [value] done for function main [value] ====== VALUES COMPUTED ====== @@ -104,31 +104,53 @@ struct __anonstruct___mpz_struct_1 { }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; typedef __mpz_struct mpz_t[1]; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); - allocates \nothing; + allocates \old(z); + assigns *z; assigns *z \from n; */ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -140,7 +162,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); - allocates \nothing; + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -153,13 +176,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -167,7 +195,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -175,7 +205,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -183,7 +215,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -191,14 +225,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -213,7 +252,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/labeled_stmt.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/labeled_stmt.res.oracle index 4f0037070f36d394e1fbe0a1b3d80e2aac44dc29..40bed2946cd60c33b3a6bf517cb62f172f7afeff 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/labeled_stmt.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/labeled_stmt.res.oracle @@ -3,25 +3,25 @@ [value] Initial state computed [value] Values of globals at initialization X ∈ {0} -PROJECT_FILE.i:237:[value] Assertion got status valid. +PROJECT_FILE.i:248:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:238. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status valid. + Called from PROJECT_FILE.i:249. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status valid. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:246. + Called from PROJECT_FILE.i:257. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:248. + Called from PROJECT_FILE.i:259. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:257. + Called from PROJECT_FILE.i:268. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:231:[value] Function main: postcondition got status valid. +PROJECT_FILE.i:242:[value] Function main: postcondition got status valid. [value] Recording results for main [value] done for function main [value] ====== VALUES COMPUTED ====== @@ -36,29 +36,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -70,6 +94,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -79,13 +105,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -93,7 +124,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -101,7 +134,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -109,7 +144,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -117,14 +154,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -139,7 +181,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/lazy.1.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/lazy.1.res.oracle index c8cee4189f95e5851889f2b2397948e9b33516bc..e346d6b2b256f70dd6978915e5ee3c7c84f5dfc6 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/lazy.1.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/lazy.1.res.oracle @@ -2,805 +2,805 @@ [value] Computing initial state [value] Initial state computed [value] Values of globals at initialization -PROJECT_FILE.i:237:[value] Assertion got status valid. +PROJECT_FILE.i:248:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:243. + Called from PROJECT_FILE.i:254. [value] using specification for function __gmpz_init_set_si -PROJECT_FILE.i:82:[value] Function __gmpz_init_set_si: postcondition got status valid. +PROJECT_FILE.i:86:[value] Function __gmpz_init_set_si: postcondition got status valid. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:244. + Called from PROJECT_FILE.i:255. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:245. + Called from PROJECT_FILE.i:256. [value] using specification for function __gmpz_cmp -PROJECT_FILE.i:119:[value] Function __gmpz_cmp: precondition got status valid. -PROJECT_FILE.i:120:[value] Function __gmpz_cmp: precondition got status valid. +PROJECT_FILE.i:129:[value] Function __gmpz_cmp: precondition got status valid. +PROJECT_FILE.i:130:[value] Function __gmpz_cmp: precondition got status valid. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:250. + Called from PROJECT_FILE.i:261. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:251. + Called from PROJECT_FILE.i:262. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:252. + Called from PROJECT_FILE.i:263. [value] Done for function __gmpz_cmp -PROJECT_FILE.i:253:[value] assigning non deterministic value for the first time +PROJECT_FILE.i:264:[value] assigning non deterministic value for the first time [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:254. + Called from PROJECT_FILE.i:265. [value] using specification for function __gmpz_clear -PROJECT_FILE.i:111:[value] Function __gmpz_clear: precondition got status valid. +PROJECT_FILE.i:120:[value] Function __gmpz_clear: precondition got status valid. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:255. + Called from PROJECT_FILE.i:266. [value] Done for function __gmpz_clear [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:258. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status unknown. + Called from PROJECT_FILE.i:269. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status unknown. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:259. + Called from PROJECT_FILE.i:270. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:260. + Called from PROJECT_FILE.i:271. [value] Done for function __gmpz_clear -PROJECT_FILE.i:264:[value] Assertion got status valid. +PROJECT_FILE.i:275:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:270. + Called from PROJECT_FILE.i:281. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:271. + Called from PROJECT_FILE.i:282. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:272. + Called from PROJECT_FILE.i:283. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:280. + Called from PROJECT_FILE.i:291. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:281. + Called from PROJECT_FILE.i:292. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:282. + Called from PROJECT_FILE.i:293. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:283. + Called from PROJECT_FILE.i:294. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:284. + Called from PROJECT_FILE.i:295. [value] using specification for function __gmpz_init -PROJECT_FILE.i:69:[value] Function __gmpz_init: postcondition got status valid. +PROJECT_FILE.i:67:[value] Function __gmpz_init: postcondition got status valid. [value] Done for function __gmpz_init -PROJECT_FILE.i:285:[value] Assertion got status invalid (stopping propagation). +PROJECT_FILE.i:296:[value] Assertion got status invalid (stopping propagation). [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:296. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status valid. + Called from PROJECT_FILE.i:307. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status valid. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:297. + Called from PROJECT_FILE.i:308. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:298. + Called from PROJECT_FILE.i:309. [value] Done for function __gmpz_clear -PROJECT_FILE.i:302:[value] Assertion got status valid. +PROJECT_FILE.i:313:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:308. + Called from PROJECT_FILE.i:319. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:309. + Called from PROJECT_FILE.i:320. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:310. + Called from PROJECT_FILE.i:321. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:316. + Called from PROJECT_FILE.i:327. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:317. + Called from PROJECT_FILE.i:328. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:318. + Called from PROJECT_FILE.i:329. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:320. + Called from PROJECT_FILE.i:331. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:321. + Called from PROJECT_FILE.i:332. [value] Done for function __gmpz_clear [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:323. + Called from PROJECT_FILE.i:334. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:324. + Called from PROJECT_FILE.i:335. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:325. + Called from PROJECT_FILE.i:336. [value] Done for function __gmpz_clear -PROJECT_FILE.i:329:[value] Assertion got status valid. +PROJECT_FILE.i:340:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:335. + Called from PROJECT_FILE.i:346. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:336. + Called from PROJECT_FILE.i:347. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:337. + Called from PROJECT_FILE.i:348. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:346. + Called from PROJECT_FILE.i:357. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:347. + Called from PROJECT_FILE.i:358. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:348. + Called from PROJECT_FILE.i:359. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:349. + Called from PROJECT_FILE.i:360. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:350. + Called from PROJECT_FILE.i:361. [value] Done for function __gmpz_init -PROJECT_FILE.i:351:[value] Assertion got status invalid (stopping propagation). +PROJECT_FILE.i:362:[value] Assertion got status invalid (stopping propagation). [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:361. + Called from PROJECT_FILE.i:372. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:362. + Called from PROJECT_FILE.i:373. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:363. + Called from PROJECT_FILE.i:374. [value] Done for function __gmpz_clear -PROJECT_FILE.i:367:[value] Assertion got status valid. +PROJECT_FILE.i:378:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:373. + Called from PROJECT_FILE.i:384. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:374. + Called from PROJECT_FILE.i:385. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:375. + Called from PROJECT_FILE.i:386. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:381. + Called from PROJECT_FILE.i:392. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:382. + Called from PROJECT_FILE.i:393. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:383. + Called from PROJECT_FILE.i:394. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:385. + Called from PROJECT_FILE.i:396. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:386. + Called from PROJECT_FILE.i:397. [value] Done for function __gmpz_clear [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:388. + Called from PROJECT_FILE.i:399. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:389. + Called from PROJECT_FILE.i:400. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:390. + Called from PROJECT_FILE.i:401. [value] Done for function __gmpz_clear -PROJECT_FILE.i:394:[value] Assertion got status valid. +PROJECT_FILE.i:405:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:400. + Called from PROJECT_FILE.i:411. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:401. + Called from PROJECT_FILE.i:412. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:402. + Called from PROJECT_FILE.i:413. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:411. + Called from PROJECT_FILE.i:422. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:412. + Called from PROJECT_FILE.i:423. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:413. + Called from PROJECT_FILE.i:424. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:414. + Called from PROJECT_FILE.i:425. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:415. + Called from PROJECT_FILE.i:426. [value] Done for function __gmpz_init -PROJECT_FILE.i:416:[value] Assertion got status invalid (stopping propagation). +PROJECT_FILE.i:427:[value] Assertion got status invalid (stopping propagation). [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:426. + Called from PROJECT_FILE.i:437. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:427. + Called from PROJECT_FILE.i:438. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:428. + Called from PROJECT_FILE.i:439. [value] Done for function __gmpz_clear -PROJECT_FILE.i:432:[value] Assertion got status unknown. +PROJECT_FILE.i:443:[value] Assertion got status unknown. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:438. + Called from PROJECT_FILE.i:449. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:439. + Called from PROJECT_FILE.i:450. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:440. + Called from PROJECT_FILE.i:451. [value] Done for function __gmpz_cmp -[value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:445. -[value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. Called from PROJECT_FILE.i:456. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:446. + Called from PROJECT_FILE.i:467. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. Called from PROJECT_FILE.i:457. [value] Done for function __gmpz_init_set_si +[value] computing for function __gmpz_init_set_si <- main. + Called from PROJECT_FILE.i:468. +[value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:447. + Called from PROJECT_FILE.i:458. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:458. + Called from PROJECT_FILE.i:469. [value] Done for function __gmpz_cmp -[value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:449. -[value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. Called from PROJECT_FILE.i:460. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:450. + Called from PROJECT_FILE.i:471. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. Called from PROJECT_FILE.i:461. [value] Done for function __gmpz_clear +[value] computing for function __gmpz_clear <- main. + Called from PROJECT_FILE.i:472. +[value] Done for function __gmpz_clear [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:463. + Called from PROJECT_FILE.i:474. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:464. + Called from PROJECT_FILE.i:475. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:465. + Called from PROJECT_FILE.i:476. [value] Done for function __gmpz_clear -PROJECT_FILE.i:469:[value] Assertion got status unknown. +PROJECT_FILE.i:480:[value] Assertion got status unknown. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:475. + Called from PROJECT_FILE.i:486. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:476. + Called from PROJECT_FILE.i:487. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:477. + Called from PROJECT_FILE.i:488. [value] Done for function __gmpz_cmp -[value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:482. -[value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. Called from PROJECT_FILE.i:493. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:483. + Called from PROJECT_FILE.i:504. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. Called from PROJECT_FILE.i:494. [value] Done for function __gmpz_init_set_si +[value] computing for function __gmpz_init_set_si <- main. + Called from PROJECT_FILE.i:505. +[value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:484. + Called from PROJECT_FILE.i:495. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:495. + Called from PROJECT_FILE.i:506. [value] Done for function __gmpz_cmp -[value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:486. -[value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. Called from PROJECT_FILE.i:497. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:487. + Called from PROJECT_FILE.i:508. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. Called from PROJECT_FILE.i:498. [value] Done for function __gmpz_clear +[value] computing for function __gmpz_clear <- main. + Called from PROJECT_FILE.i:509. +[value] Done for function __gmpz_clear [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:500. + Called from PROJECT_FILE.i:511. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:501. + Called from PROJECT_FILE.i:512. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:502. + Called from PROJECT_FILE.i:513. [value] Done for function __gmpz_clear -PROJECT_FILE.i:506:[value] Assertion got status unknown. +PROJECT_FILE.i:517:[value] Assertion got status unknown. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:512. + Called from PROJECT_FILE.i:523. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:513. + Called from PROJECT_FILE.i:524. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:514. + Called from PROJECT_FILE.i:525. [value] Done for function __gmpz_cmp -[value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:519. -[value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. Called from PROJECT_FILE.i:530. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:520. + Called from PROJECT_FILE.i:541. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. Called from PROJECT_FILE.i:531. [value] Done for function __gmpz_init_set_si +[value] computing for function __gmpz_init_set_si <- main. + Called from PROJECT_FILE.i:542. +[value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:521. + Called from PROJECT_FILE.i:532. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:532. + Called from PROJECT_FILE.i:543. [value] Done for function __gmpz_cmp -[value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:523. -[value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. Called from PROJECT_FILE.i:534. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:524. + Called from PROJECT_FILE.i:545. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. Called from PROJECT_FILE.i:535. [value] Done for function __gmpz_clear +[value] computing for function __gmpz_clear <- main. + Called from PROJECT_FILE.i:546. +[value] Done for function __gmpz_clear [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:537. + Called from PROJECT_FILE.i:548. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:538. + Called from PROJECT_FILE.i:549. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:539. + Called from PROJECT_FILE.i:550. [value] Done for function __gmpz_clear -PROJECT_FILE.i:543:[value] Assertion got status valid. +PROJECT_FILE.i:554:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:550. + Called from PROJECT_FILE.i:561. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:551. + Called from PROJECT_FILE.i:562. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:552. + Called from PROJECT_FILE.i:563. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:558. + Called from PROJECT_FILE.i:569. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:559. + Called from PROJECT_FILE.i:570. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:560. + Called from PROJECT_FILE.i:571. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:562. + Called from PROJECT_FILE.i:573. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:563. + Called from PROJECT_FILE.i:574. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:570. + Called from PROJECT_FILE.i:581. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:571. + Called from PROJECT_FILE.i:582. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:572. + Called from PROJECT_FILE.i:583. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:578. + Called from PROJECT_FILE.i:589. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:579. + Called from PROJECT_FILE.i:590. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:580. + Called from PROJECT_FILE.i:591. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:582. + Called from PROJECT_FILE.i:593. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:583. + Called from PROJECT_FILE.i:594. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:586. + Called from PROJECT_FILE.i:597. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:587. + Called from PROJECT_FILE.i:598. [value] Done for function __gmpz_clear [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:590. + Called from PROJECT_FILE.i:601. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:591. + Called from PROJECT_FILE.i:602. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:592. + Called from PROJECT_FILE.i:603. [value] Done for function __gmpz_clear -PROJECT_FILE.i:596:[value] Assertion got status valid. +PROJECT_FILE.i:607:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:603. + Called from PROJECT_FILE.i:614. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:604. + Called from PROJECT_FILE.i:615. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:605. + Called from PROJECT_FILE.i:616. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:611. + Called from PROJECT_FILE.i:622. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:612. + Called from PROJECT_FILE.i:623. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:613. + Called from PROJECT_FILE.i:624. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:615. + Called from PROJECT_FILE.i:626. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:616. + Called from PROJECT_FILE.i:627. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:623. + Called from PROJECT_FILE.i:634. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:624. + Called from PROJECT_FILE.i:635. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:625. + Called from PROJECT_FILE.i:636. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:631. + Called from PROJECT_FILE.i:642. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:632. + Called from PROJECT_FILE.i:643. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:633. + Called from PROJECT_FILE.i:644. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:635. + Called from PROJECT_FILE.i:646. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:636. + Called from PROJECT_FILE.i:647. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:639. + Called from PROJECT_FILE.i:650. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:640. + Called from PROJECT_FILE.i:651. [value] Done for function __gmpz_clear [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:643. + Called from PROJECT_FILE.i:654. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:644. + Called from PROJECT_FILE.i:655. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:645. + Called from PROJECT_FILE.i:656. [value] Done for function __gmpz_clear -PROJECT_FILE.i:649:[value] Assertion got status valid. +PROJECT_FILE.i:660:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:660. + Called from PROJECT_FILE.i:671. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:661. + Called from PROJECT_FILE.i:672. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:662. + Called from PROJECT_FILE.i:673. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:665. + Called from PROJECT_FILE.i:676. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:671. + Called from PROJECT_FILE.i:682. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set <- main. - Called from PROJECT_FILE.i:666. + Called from PROJECT_FILE.i:677. [value] using specification for function __gmpz_init_set -PROJECT_FILE.i:73:[value] Function __gmpz_init_set: precondition got status valid. +PROJECT_FILE.i:72:[value] Function __gmpz_init_set: precondition got status valid. PROJECT_FILE.i:74:[value] Function __gmpz_init_set: postcondition got status valid. [value] Done for function __gmpz_init_set [value] computing for function __gmpz_init_set <- main. - Called from PROJECT_FILE.i:672. + Called from PROJECT_FILE.i:683. [value] Done for function __gmpz_init_set [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:667. + Called from PROJECT_FILE.i:678. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:673. + Called from PROJECT_FILE.i:684. [value] Done for function __gmpz_clear [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:675. + Called from PROJECT_FILE.i:686. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:676. + Called from PROJECT_FILE.i:687. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:677. + Called from PROJECT_FILE.i:688. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:678. + Called from PROJECT_FILE.i:689. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:679. + Called from PROJECT_FILE.i:690. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:680. + Called from PROJECT_FILE.i:691. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:682. + Called from PROJECT_FILE.i:693. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:683. + Called from PROJECT_FILE.i:694. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:684. + Called from PROJECT_FILE.i:695. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:685. + Called from PROJECT_FILE.i:696. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:686. + Called from PROJECT_FILE.i:697. [value] Done for function __gmpz_clear -PROJECT_FILE.i:690:[value] Assertion got status valid. +PROJECT_FILE.i:701:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:697. + Called from PROJECT_FILE.i:708. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:698. + Called from PROJECT_FILE.i:709. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:699. + Called from PROJECT_FILE.i:710. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:704. + Called from PROJECT_FILE.i:715. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:705. + Called from PROJECT_FILE.i:716. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:706. + Called from PROJECT_FILE.i:717. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:708. + Called from PROJECT_FILE.i:719. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:709. + Called from PROJECT_FILE.i:720. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:717. + Called from PROJECT_FILE.i:728. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:718. + Called from PROJECT_FILE.i:729. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:719. + Called from PROJECT_FILE.i:730. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:721. + Called from PROJECT_FILE.i:732. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:722. + Called from PROJECT_FILE.i:733. [value] Done for function __gmpz_clear [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:724. + Called from PROJECT_FILE.i:735. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:726. + Called from PROJECT_FILE.i:737. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:727. + Called from PROJECT_FILE.i:738. [value] Done for function __gmpz_clear -PROJECT_FILE.i:731:[value] Assertion got status valid. +PROJECT_FILE.i:742:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:738. + Called from PROJECT_FILE.i:749. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:739. + Called from PROJECT_FILE.i:750. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:740. + Called from PROJECT_FILE.i:751. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:746. + Called from PROJECT_FILE.i:757. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:747. + Called from PROJECT_FILE.i:758. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:748. + Called from PROJECT_FILE.i:759. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:750. + Called from PROJECT_FILE.i:761. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:751. + Called from PROJECT_FILE.i:762. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:757. + Called from PROJECT_FILE.i:768. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:758. + Called from PROJECT_FILE.i:769. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:759. + Called from PROJECT_FILE.i:770. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:761. + Called from PROJECT_FILE.i:772. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:762. + Called from PROJECT_FILE.i:773. [value] Done for function __gmpz_clear [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:765. + Called from PROJECT_FILE.i:776. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:767. + Called from PROJECT_FILE.i:778. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:768. + Called from PROJECT_FILE.i:779. [value] Done for function __gmpz_clear -PROJECT_FILE.i:772:[value] Assertion got status valid. +PROJECT_FILE.i:783:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:782. + Called from PROJECT_FILE.i:793. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:783. + Called from PROJECT_FILE.i:794. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:784. + Called from PROJECT_FILE.i:795. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:785. + Called from PROJECT_FILE.i:796. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:791. + Called from PROJECT_FILE.i:802. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:792. + Called from PROJECT_FILE.i:803. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:793. + Called from PROJECT_FILE.i:804. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:794. + Called from PROJECT_FILE.i:805. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set <- main. - Called from PROJECT_FILE.i:795. + Called from PROJECT_FILE.i:806. [value] Done for function __gmpz_init_set [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:796. + Called from PROJECT_FILE.i:807. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:797. + Called from PROJECT_FILE.i:808. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:798. + Called from PROJECT_FILE.i:809. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:800. + Called from PROJECT_FILE.i:811. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:801. + Called from PROJECT_FILE.i:812. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:802. + Called from PROJECT_FILE.i:813. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:803. + Called from PROJECT_FILE.i:814. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:804. + Called from PROJECT_FILE.i:815. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:806. + Called from PROJECT_FILE.i:817. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:807. + Called from PROJECT_FILE.i:818. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:808. + Called from PROJECT_FILE.i:819. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:809. + Called from PROJECT_FILE.i:820. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:810. + Called from PROJECT_FILE.i:821. [value] Done for function __gmpz_clear -PROJECT_FILE.i:814:[value] Assertion got status valid. +PROJECT_FILE.i:825:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:823. + Called from PROJECT_FILE.i:834. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:824. + Called from PROJECT_FILE.i:835. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:825. + Called from PROJECT_FILE.i:836. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:831. + Called from PROJECT_FILE.i:842. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:840. + Called from PROJECT_FILE.i:851. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:832. + Called from PROJECT_FILE.i:843. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:833. + Called from PROJECT_FILE.i:844. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:834. + Called from PROJECT_FILE.i:845. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set <- main. - Called from PROJECT_FILE.i:835. + Called from PROJECT_FILE.i:846. [value] Done for function __gmpz_init_set [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:836. + Called from PROJECT_FILE.i:847. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:837. + Called from PROJECT_FILE.i:848. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:838. + Called from PROJECT_FILE.i:849. [value] Done for function __gmpz_clear [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:841. + Called from PROJECT_FILE.i:852. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:842. + Called from PROJECT_FILE.i:853. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:843. + Called from PROJECT_FILE.i:854. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:844. + Called from PROJECT_FILE.i:855. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:846. + Called from PROJECT_FILE.i:857. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:847. + Called from PROJECT_FILE.i:858. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:848. + Called from PROJECT_FILE.i:859. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:849. + Called from PROJECT_FILE.i:860. [value] Done for function __gmpz_clear [value] Recording results for main [value] done for function main @@ -818,35 +818,53 @@ struct __anonstruct___mpz_struct_1 { }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; typedef __mpz_struct mpz_t[1]; -/*@ ensures \valid(\old(x)); - allocates \nothing; - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - allocates \nothing; + allocates \old(z); + assigns *z; + assigns *z \from *z_orig; */ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); - allocates \nothing; + allocates \old(z); + assigns *z; assigns *z \from n; */ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -858,7 +876,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); - allocates \nothing; + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -871,13 +890,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -885,7 +909,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -893,7 +919,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -901,7 +929,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -909,14 +939,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -931,7 +966,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/lazy.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/lazy.res.oracle index b3f0f2a984a6b0ba43195de944c51b86efa2112e..43fc8db363599eb274b3058d893b65c6240a5670 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/lazy.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/lazy.res.oracle @@ -2,85 +2,85 @@ [value] Computing initial state [value] Initial state computed [value] Values of globals at initialization -PROJECT_FILE.i:237:[value] Assertion got status valid. +PROJECT_FILE.i:248:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:241. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status valid. + Called from PROJECT_FILE.i:252. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status valid. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:245:[value] Assertion got status valid. +PROJECT_FILE.i:256:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:256. + Called from PROJECT_FILE.i:267. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:260:[value] Assertion got status valid. +PROJECT_FILE.i:271:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:264. + Called from PROJECT_FILE.i:275. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:268:[value] Assertion got status valid. +PROJECT_FILE.i:279:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:279. + Called from PROJECT_FILE.i:290. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:283:[value] Assertion got status valid. +PROJECT_FILE.i:294:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:287. + Called from PROJECT_FILE.i:298. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:291:[value] Assertion got status valid. +PROJECT_FILE.i:302:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:302. + Called from PROJECT_FILE.i:313. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:306:[value] Assertion got status unknown. +PROJECT_FILE.i:317:[value] Assertion got status unknown. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:310. + Called from PROJECT_FILE.i:321. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:314:[value] Assertion got status unknown. +PROJECT_FILE.i:325:[value] Assertion got status unknown. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:318. + Called from PROJECT_FILE.i:329. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:322:[value] Assertion got status unknown. +PROJECT_FILE.i:333:[value] Assertion got status unknown. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:326. + Called from PROJECT_FILE.i:337. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:330:[value] Assertion got status valid. +PROJECT_FILE.i:341:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:343. + Called from PROJECT_FILE.i:354. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:347:[value] Assertion got status valid. +PROJECT_FILE.i:358:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:360. + Called from PROJECT_FILE.i:371. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:364:[value] Assertion got status valid. +PROJECT_FILE.i:375:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:368. + Called from PROJECT_FILE.i:379. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:373:[value] Assertion got status valid. +PROJECT_FILE.i:384:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:381. + Called from PROJECT_FILE.i:392. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:386:[value] Assertion got status valid. +PROJECT_FILE.i:397:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:393. + Called from PROJECT_FILE.i:404. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:398:[value] Assertion got status valid. +PROJECT_FILE.i:409:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:402. + Called from PROJECT_FILE.i:413. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:407:[value] Assertion got status valid. +PROJECT_FILE.i:418:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:411. + Called from PROJECT_FILE.i:422. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] Recording results for main @@ -98,29 +98,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -132,6 +156,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -141,13 +167,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -155,7 +186,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -163,7 +196,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -171,7 +206,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -179,14 +216,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -201,7 +243,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/linear_search.1.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/linear_search.1.res.oracle index d76477191ebfbaf3da6cba9371488cbd95dc89ac..7bee9590204071cb576d4e849ce616df123d77f4 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/linear_search.1.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/linear_search.1.res.oracle @@ -10,571 +10,571 @@ tests/e-acsl-runtime/linear_search.i:14:[e-acsl] warning: missing guard for ensu [value] Initial state computed [value] Values of globals at initialization A[0..9] ∈ {0} -PROJECT_FILE.i:488:[value] entering loop for the first time -PROJECT_FILE.i:491:[value] assigning non deterministic value for the first time +PROJECT_FILE.i:499:[value] entering loop for the first time +PROJECT_FILE.i:502:[value] assigning non deterministic value for the first time [value] computing for function search <- main. - Called from PROJECT_FILE.i:494. -PROJECT_FILE.i:231:[value] Function search: precondition got status unknown. + Called from PROJECT_FILE.i:505. +PROJECT_FILE.i:242:[value] Function search: precondition got status unknown. [value] computing for function __gmpz_init <- search <- main. - Called from PROJECT_FILE.i:252. + Called from PROJECT_FILE.i:263. [value] using specification for function __gmpz_init -PROJECT_FILE.i:69:[value] Function __gmpz_init: postcondition got status valid. +PROJECT_FILE.i:67:[value] Function __gmpz_init: postcondition got status valid. [value] Done for function __gmpz_init [value] computing for function __gmpz_init_set_si <- search <- main. - Called from PROJECT_FILE.i:255. + Called from PROJECT_FILE.i:266. [value] using specification for function __gmpz_init_set_si -PROJECT_FILE.i:82:[value] Function __gmpz_init_set_si: postcondition got status valid. +PROJECT_FILE.i:86:[value] Function __gmpz_init_set_si: postcondition got status valid. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_set <- search <- main. - Called from PROJECT_FILE.i:256. + Called from PROJECT_FILE.i:267. [value] using specification for function __gmpz_set -PROJECT_FILE.i:94:[value] Function __gmpz_set: precondition got status valid. -PROJECT_FILE.i:95:[value] Function __gmpz_set: precondition got status valid. +PROJECT_FILE.i:100:[value] Function __gmpz_set: precondition got status valid. +PROJECT_FILE.i:101:[value] Function __gmpz_set: precondition got status valid. [value] Done for function __gmpz_set [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:257. + Called from PROJECT_FILE.i:268. [value] using specification for function __gmpz_clear -PROJECT_FILE.i:111:[value] Function __gmpz_clear: precondition got status valid. +PROJECT_FILE.i:120:[value] Function __gmpz_clear: precondition got status valid. [value] Done for function __gmpz_clear -PROJECT_FILE.i:260:[value] entering loop for the first time +PROJECT_FILE.i:271:[value] entering loop for the first time [value] computing for function __gmpz_init_set_si <- search <- main. - Called from PROJECT_FILE.i:264. + Called from PROJECT_FILE.i:275. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- search <- main. - Called from PROJECT_FILE.i:265. + Called from PROJECT_FILE.i:276. [value] using specification for function __gmpz_cmp -PROJECT_FILE.i:119:[value] Function __gmpz_cmp: precondition got status valid. -PROJECT_FILE.i:120:[value] Function __gmpz_cmp: precondition got status valid. +PROJECT_FILE.i:129:[value] Function __gmpz_cmp: precondition got status valid. +PROJECT_FILE.i:130:[value] Function __gmpz_cmp: precondition got status valid. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:267. + Called from PROJECT_FILE.i:278. [value] Done for function __gmpz_clear [value] computing for function __gmpz_get_ui <- search <- main. - Called from PROJECT_FILE.i:278. + Called from PROJECT_FILE.i:289. [value] using specification for function __gmpz_get_ui -PROJECT_FILE.i:180:[value] Function __gmpz_get_ui: precondition got status valid. +PROJECT_FILE.i:190:[value] Function __gmpz_get_ui: precondition got status valid. [value] Done for function __gmpz_get_ui -PROJECT_FILE.i:279:[kernel] warning: accessing out of bounds index [0..4294967295]. assert __e_acsl_i_2 < 10; +PROJECT_FILE.i:290:[kernel] warning: accessing out of bounds index [0..4294967295]. assert __e_acsl_i_2 < 10; [value] computing for function __gmpz_init_set_si <- search <- main. - Called from PROJECT_FILE.i:279. + Called from PROJECT_FILE.i:290. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- search <- main. - Called from PROJECT_FILE.i:280. + Called from PROJECT_FILE.i:291. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- search <- main. - Called from PROJECT_FILE.i:281. + Called from PROJECT_FILE.i:292. [value] Done for function __gmpz_init [value] computing for function __gmpz_add <- search <- main. - Called from PROJECT_FILE.i:282. + Called from PROJECT_FILE.i:293. [value] using specification for function __gmpz_add -PROJECT_FILE.i:133:[value] Function __gmpz_add: precondition got status valid. -PROJECT_FILE.i:134:[value] Function __gmpz_add: precondition got status valid. -PROJECT_FILE.i:135:[value] Function __gmpz_add: precondition got status valid. +PROJECT_FILE.i:143:[value] Function __gmpz_add: precondition got status valid. +PROJECT_FILE.i:144:[value] Function __gmpz_add: precondition got status valid. +PROJECT_FILE.i:145:[value] Function __gmpz_add: precondition got status valid. [value] Done for function __gmpz_add [value] computing for function __gmpz_get_ui <- search <- main. - Called from PROJECT_FILE.i:283. + Called from PROJECT_FILE.i:294. [value] Done for function __gmpz_get_ui -PROJECT_FILE.i:284:[kernel] warning: accessing out of bounds index [0..4294967295]. assert __e_acsl_3 < 10; +PROJECT_FILE.i:295:[kernel] warning: accessing out of bounds index [0..4294967295]. assert __e_acsl_3 < 10; [value] computing for function __gmpz_init_set_si <- search <- main. - Called from PROJECT_FILE.i:284. + Called from PROJECT_FILE.i:295. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- search <- main. - Called from PROJECT_FILE.i:285. + Called from PROJECT_FILE.i:296. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:286. + Called from PROJECT_FILE.i:297. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:287. + Called from PROJECT_FILE.i:298. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:288. + Called from PROJECT_FILE.i:299. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:289. + Called from PROJECT_FILE.i:300. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- search <- main. - Called from PROJECT_FILE.i:299. + Called from PROJECT_FILE.i:310. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- search <- main. - Called from PROJECT_FILE.i:300. + Called from PROJECT_FILE.i:311. [value] Done for function __gmpz_init [value] computing for function __gmpz_add <- search <- main. - Called from PROJECT_FILE.i:301. + Called from PROJECT_FILE.i:312. [value] Done for function __gmpz_add [value] computing for function __gmpz_set <- search <- main. - Called from PROJECT_FILE.i:302. + Called from PROJECT_FILE.i:313. [value] Done for function __gmpz_set [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:303. + Called from PROJECT_FILE.i:314. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:304. + Called from PROJECT_FILE.i:315. [value] Done for function __gmpz_clear [value] computing for function e_acsl_assert <- search <- main. - Called from PROJECT_FILE.i:309. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status unknown. + Called from PROJECT_FILE.i:320. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status unknown. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:312. + Called from PROJECT_FILE.i:323. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init <- search <- main. - Called from PROJECT_FILE.i:317. + Called from PROJECT_FILE.i:328. [value] Done for function __gmpz_init [value] computing for function __gmpz_init_set_si <- search <- main. - Called from PROJECT_FILE.i:320. + Called from PROJECT_FILE.i:331. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_set <- search <- main. - Called from PROJECT_FILE.i:321. + Called from PROJECT_FILE.i:332. [value] Done for function __gmpz_set [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:322. + Called from PROJECT_FILE.i:333. [value] Done for function __gmpz_clear -PROJECT_FILE.i:325:[value] entering loop for the first time +PROJECT_FILE.i:336:[value] entering loop for the first time [value] computing for function __gmpz_init_set_si <- search <- main. - Called from PROJECT_FILE.i:329. + Called from PROJECT_FILE.i:340. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- search <- main. - Called from PROJECT_FILE.i:330. + Called from PROJECT_FILE.i:341. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:333. + Called from PROJECT_FILE.i:344. [value] Done for function __gmpz_clear [value] computing for function __gmpz_get_ui <- search <- main. - Called from PROJECT_FILE.i:341. + Called from PROJECT_FILE.i:352. [value] Done for function __gmpz_get_ui -PROJECT_FILE.i:342:[kernel] warning: accessing out of bounds index [0..4294967295]. assert __e_acsl_j_4 < 10; +PROJECT_FILE.i:353:[kernel] warning: accessing out of bounds index [0..4294967295]. assert __e_acsl_j_4 < 10; [value] computing for function __gmpz_init_set_si <- search <- main. - Called from PROJECT_FILE.i:342. + Called from PROJECT_FILE.i:353. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- search <- main. - Called from PROJECT_FILE.i:343. + Called from PROJECT_FILE.i:354. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- search <- main. - Called from PROJECT_FILE.i:344. + Called from PROJECT_FILE.i:355. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:345. + Called from PROJECT_FILE.i:356. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:346. + Called from PROJECT_FILE.i:357. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- search <- main. - Called from PROJECT_FILE.i:356. + Called from PROJECT_FILE.i:367. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- search <- main. - Called from PROJECT_FILE.i:357. + Called from PROJECT_FILE.i:368. [value] Done for function __gmpz_init [value] computing for function __gmpz_add <- search <- main. - Called from PROJECT_FILE.i:358. + Called from PROJECT_FILE.i:369. [value] Done for function __gmpz_add [value] computing for function __gmpz_set <- search <- main. - Called from PROJECT_FILE.i:359. + Called from PROJECT_FILE.i:370. [value] Done for function __gmpz_set [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:360. + Called from PROJECT_FILE.i:371. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:361. + Called from PROJECT_FILE.i:372. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:367. + Called from PROJECT_FILE.i:378. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init <- search <- main. - Called from PROJECT_FILE.i:374. + Called from PROJECT_FILE.i:385. [value] Done for function __gmpz_init [value] computing for function __gmpz_init_set_si <- search <- main. - Called from PROJECT_FILE.i:377. + Called from PROJECT_FILE.i:388. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_set <- search <- main. - Called from PROJECT_FILE.i:378. + Called from PROJECT_FILE.i:389. [value] Done for function __gmpz_set [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:379. + Called from PROJECT_FILE.i:390. [value] Done for function __gmpz_clear -PROJECT_FILE.i:382:[value] entering loop for the first time +PROJECT_FILE.i:393:[value] entering loop for the first time [value] computing for function __gmpz_init_set_si <- search <- main. - Called from PROJECT_FILE.i:386. + Called from PROJECT_FILE.i:397. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- search <- main. - Called from PROJECT_FILE.i:387. + Called from PROJECT_FILE.i:398. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:390. + Called from PROJECT_FILE.i:401. [value] Done for function __gmpz_clear [value] computing for function __gmpz_get_ui <- search <- main. - Called from PROJECT_FILE.i:398. + Called from PROJECT_FILE.i:409. [value] Done for function __gmpz_get_ui -PROJECT_FILE.i:399:[kernel] warning: accessing out of bounds index [0..4294967295]. assert __e_acsl_j_2 < 10; +PROJECT_FILE.i:410:[kernel] warning: accessing out of bounds index [0..4294967295]. assert __e_acsl_j_2 < 10; [value] computing for function __gmpz_init_set_si <- search <- main. - Called from PROJECT_FILE.i:399. + Called from PROJECT_FILE.i:410. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- search <- main. - Called from PROJECT_FILE.i:400. + Called from PROJECT_FILE.i:411. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- search <- main. - Called from PROJECT_FILE.i:401. + Called from PROJECT_FILE.i:412. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:402. + Called from PROJECT_FILE.i:413. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:403. + Called from PROJECT_FILE.i:414. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- search <- main. - Called from PROJECT_FILE.i:413. + Called from PROJECT_FILE.i:424. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- search <- main. - Called from PROJECT_FILE.i:414. + Called from PROJECT_FILE.i:425. [value] Done for function __gmpz_init [value] computing for function __gmpz_add <- search <- main. - Called from PROJECT_FILE.i:415. + Called from PROJECT_FILE.i:426. [value] Done for function __gmpz_add [value] computing for function __gmpz_set <- search <- main. - Called from PROJECT_FILE.i:416. + Called from PROJECT_FILE.i:427. [value] Done for function __gmpz_set [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:417. + Called from PROJECT_FILE.i:428. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:418. + Called from PROJECT_FILE.i:429. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:424. + Called from PROJECT_FILE.i:435. [value] Done for function __gmpz_clear -PROJECT_FILE.i:430:[value] entering loop for the first time +PROJECT_FILE.i:441:[value] entering loop for the first time [value] computing for function __gmpz_init_set_si <- search <- main. - Called from PROJECT_FILE.i:452. + Called from PROJECT_FILE.i:463. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- search <- main. - Called from PROJECT_FILE.i:453. + Called from PROJECT_FILE.i:464. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- search <- main. - Called from PROJECT_FILE.i:454. + Called from PROJECT_FILE.i:465. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:456. + Called from PROJECT_FILE.i:467. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:457. + Called from PROJECT_FILE.i:468. [value] Done for function __gmpz_clear [value] computing for function e_acsl_assert <- search <- main. - Called from PROJECT_FILE.i:459. + Called from PROJECT_FILE.i:470. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_init_set_si <- search <- main. - Called from PROJECT_FILE.i:467. + Called from PROJECT_FILE.i:478. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- search <- main. - Called from PROJECT_FILE.i:468. + Called from PROJECT_FILE.i:479. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- search <- main. - Called from PROJECT_FILE.i:469. + Called from PROJECT_FILE.i:480. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:471. + Called from PROJECT_FILE.i:482. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:472. + Called from PROJECT_FILE.i:483. [value] Done for function __gmpz_clear [value] computing for function e_acsl_assert <- search <- main. - Called from PROJECT_FILE.i:474. + Called from PROJECT_FILE.i:485. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:234:[value] Function search, behavior exists: postcondition got status unknown. -PROJECT_FILE.i:234:[value] Function search, behavior exists: postcondition got status unknown, but it is unknown if the behavior is active. -PROJECT_FILE.i:238:[value] Function search, behavior not_exists: postcondition got status unknown. -PROJECT_FILE.i:238:[value] Function search, behavior not_exists: postcondition got status unknown, but it is unknown if the behavior is active. +PROJECT_FILE.i:245:[value] Function search, behavior exists: postcondition got status unknown. +PROJECT_FILE.i:245:[value] Function search, behavior exists: postcondition got status unknown, but it is unknown if the behavior is active. +PROJECT_FILE.i:249:[value] Function search, behavior not_exists: postcondition got status unknown. +PROJECT_FILE.i:249:[value] Function search, behavior not_exists: postcondition got status unknown, but it is unknown if the behavior is active. [value] Recording results for search [value] Done for function search -PROJECT_FILE.i:495:[value] Assertion got status unknown. +PROJECT_FILE.i:506:[value] Assertion got status unknown. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:500. + Called from PROJECT_FILE.i:511. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:501. + Called from PROJECT_FILE.i:512. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:502. + Called from PROJECT_FILE.i:513. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:503. + Called from PROJECT_FILE.i:514. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:504. + Called from PROJECT_FILE.i:515. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:505. + Called from PROJECT_FILE.i:516. [value] Done for function __gmpz_clear [value] computing for function search <- main. - Called from PROJECT_FILE.i:509. + Called from PROJECT_FILE.i:520. [value] computing for function __gmpz_init <- search <- main. - Called from PROJECT_FILE.i:252. + Called from PROJECT_FILE.i:263. [value] Done for function __gmpz_init [value] computing for function __gmpz_init_set_si <- search <- main. - Called from PROJECT_FILE.i:255. + Called from PROJECT_FILE.i:266. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_set <- search <- main. - Called from PROJECT_FILE.i:256. + Called from PROJECT_FILE.i:267. [value] Done for function __gmpz_set [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:257. + Called from PROJECT_FILE.i:268. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- search <- main. - Called from PROJECT_FILE.i:264. + Called from PROJECT_FILE.i:275. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- search <- main. - Called from PROJECT_FILE.i:265. + Called from PROJECT_FILE.i:276. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:267. + Called from PROJECT_FILE.i:278. [value] Done for function __gmpz_clear [value] computing for function __gmpz_get_ui <- search <- main. - Called from PROJECT_FILE.i:278. + Called from PROJECT_FILE.i:289. [value] Done for function __gmpz_get_ui -PROJECT_FILE.i:279:[value] Assertion got status unknown. +PROJECT_FILE.i:290:[value] Assertion got status unknown. [value] computing for function __gmpz_init_set_si <- search <- main. - Called from PROJECT_FILE.i:279. + Called from PROJECT_FILE.i:290. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- search <- main. - Called from PROJECT_FILE.i:280. + Called from PROJECT_FILE.i:291. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- search <- main. - Called from PROJECT_FILE.i:281. + Called from PROJECT_FILE.i:292. [value] Done for function __gmpz_init [value] computing for function __gmpz_add <- search <- main. - Called from PROJECT_FILE.i:282. + Called from PROJECT_FILE.i:293. [value] Done for function __gmpz_add [value] computing for function __gmpz_get_ui <- search <- main. - Called from PROJECT_FILE.i:283. + Called from PROJECT_FILE.i:294. [value] Done for function __gmpz_get_ui -PROJECT_FILE.i:284:[value] Assertion got status unknown. +PROJECT_FILE.i:295:[value] Assertion got status unknown. [value] computing for function __gmpz_init_set_si <- search <- main. - Called from PROJECT_FILE.i:284. + Called from PROJECT_FILE.i:295. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- search <- main. - Called from PROJECT_FILE.i:285. + Called from PROJECT_FILE.i:296. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:286. + Called from PROJECT_FILE.i:297. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:287. + Called from PROJECT_FILE.i:298. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:288. + Called from PROJECT_FILE.i:299. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:289. + Called from PROJECT_FILE.i:300. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- search <- main. - Called from PROJECT_FILE.i:299. + Called from PROJECT_FILE.i:310. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- search <- main. - Called from PROJECT_FILE.i:300. + Called from PROJECT_FILE.i:311. [value] Done for function __gmpz_init [value] computing for function __gmpz_add <- search <- main. - Called from PROJECT_FILE.i:301. + Called from PROJECT_FILE.i:312. [value] Done for function __gmpz_add [value] computing for function __gmpz_set <- search <- main. - Called from PROJECT_FILE.i:302. + Called from PROJECT_FILE.i:313. [value] Done for function __gmpz_set [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:303. + Called from PROJECT_FILE.i:314. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:304. + Called from PROJECT_FILE.i:315. [value] Done for function __gmpz_clear [value] computing for function e_acsl_assert <- search <- main. - Called from PROJECT_FILE.i:309. + Called from PROJECT_FILE.i:320. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:312. + Called from PROJECT_FILE.i:323. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init <- search <- main. - Called from PROJECT_FILE.i:317. + Called from PROJECT_FILE.i:328. [value] Done for function __gmpz_init [value] computing for function __gmpz_init_set_si <- search <- main. - Called from PROJECT_FILE.i:320. + Called from PROJECT_FILE.i:331. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_set <- search <- main. - Called from PROJECT_FILE.i:321. + Called from PROJECT_FILE.i:332. [value] Done for function __gmpz_set [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:322. + Called from PROJECT_FILE.i:333. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- search <- main. - Called from PROJECT_FILE.i:329. + Called from PROJECT_FILE.i:340. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- search <- main. - Called from PROJECT_FILE.i:330. + Called from PROJECT_FILE.i:341. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:333. + Called from PROJECT_FILE.i:344. [value] Done for function __gmpz_clear [value] computing for function __gmpz_get_ui <- search <- main. - Called from PROJECT_FILE.i:341. + Called from PROJECT_FILE.i:352. [value] Done for function __gmpz_get_ui -PROJECT_FILE.i:342:[value] Assertion got status unknown. +PROJECT_FILE.i:353:[value] Assertion got status unknown. [value] computing for function __gmpz_init_set_si <- search <- main. - Called from PROJECT_FILE.i:342. + Called from PROJECT_FILE.i:353. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- search <- main. - Called from PROJECT_FILE.i:343. + Called from PROJECT_FILE.i:354. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- search <- main. - Called from PROJECT_FILE.i:344. + Called from PROJECT_FILE.i:355. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:345. + Called from PROJECT_FILE.i:356. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:346. + Called from PROJECT_FILE.i:357. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- search <- main. - Called from PROJECT_FILE.i:356. + Called from PROJECT_FILE.i:367. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- search <- main. - Called from PROJECT_FILE.i:357. + Called from PROJECT_FILE.i:368. [value] Done for function __gmpz_init [value] computing for function __gmpz_add <- search <- main. - Called from PROJECT_FILE.i:358. + Called from PROJECT_FILE.i:369. [value] Done for function __gmpz_add [value] computing for function __gmpz_set <- search <- main. - Called from PROJECT_FILE.i:359. + Called from PROJECT_FILE.i:370. [value] Done for function __gmpz_set [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:360. + Called from PROJECT_FILE.i:371. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:361. + Called from PROJECT_FILE.i:372. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:367. + Called from PROJECT_FILE.i:378. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init <- search <- main. - Called from PROJECT_FILE.i:374. + Called from PROJECT_FILE.i:385. [value] Done for function __gmpz_init [value] computing for function __gmpz_init_set_si <- search <- main. - Called from PROJECT_FILE.i:377. + Called from PROJECT_FILE.i:388. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_set <- search <- main. - Called from PROJECT_FILE.i:378. + Called from PROJECT_FILE.i:389. [value] Done for function __gmpz_set [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:379. + Called from PROJECT_FILE.i:390. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- search <- main. - Called from PROJECT_FILE.i:386. + Called from PROJECT_FILE.i:397. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- search <- main. - Called from PROJECT_FILE.i:387. + Called from PROJECT_FILE.i:398. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:390. + Called from PROJECT_FILE.i:401. [value] Done for function __gmpz_clear [value] computing for function __gmpz_get_ui <- search <- main. - Called from PROJECT_FILE.i:398. + Called from PROJECT_FILE.i:409. [value] Done for function __gmpz_get_ui -PROJECT_FILE.i:399:[value] Assertion got status unknown. +PROJECT_FILE.i:410:[value] Assertion got status unknown. [value] computing for function __gmpz_init_set_si <- search <- main. - Called from PROJECT_FILE.i:399. + Called from PROJECT_FILE.i:410. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- search <- main. - Called from PROJECT_FILE.i:400. + Called from PROJECT_FILE.i:411. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- search <- main. - Called from PROJECT_FILE.i:401. + Called from PROJECT_FILE.i:412. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:402. + Called from PROJECT_FILE.i:413. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:403. + Called from PROJECT_FILE.i:414. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- search <- main. - Called from PROJECT_FILE.i:413. + Called from PROJECT_FILE.i:424. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- search <- main. - Called from PROJECT_FILE.i:414. + Called from PROJECT_FILE.i:425. [value] Done for function __gmpz_init [value] computing for function __gmpz_add <- search <- main. - Called from PROJECT_FILE.i:415. + Called from PROJECT_FILE.i:426. [value] Done for function __gmpz_add [value] computing for function __gmpz_set <- search <- main. - Called from PROJECT_FILE.i:416. + Called from PROJECT_FILE.i:427. [value] Done for function __gmpz_set [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:417. + Called from PROJECT_FILE.i:428. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:418. + Called from PROJECT_FILE.i:429. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:424. + Called from PROJECT_FILE.i:435. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- search <- main. - Called from PROJECT_FILE.i:452. + Called from PROJECT_FILE.i:463. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- search <- main. - Called from PROJECT_FILE.i:453. + Called from PROJECT_FILE.i:464. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- search <- main. - Called from PROJECT_FILE.i:454. + Called from PROJECT_FILE.i:465. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:456. + Called from PROJECT_FILE.i:467. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:457. + Called from PROJECT_FILE.i:468. [value] Done for function __gmpz_clear [value] computing for function e_acsl_assert <- search <- main. - Called from PROJECT_FILE.i:459. + Called from PROJECT_FILE.i:470. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_init_set_si <- search <- main. - Called from PROJECT_FILE.i:467. + Called from PROJECT_FILE.i:478. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- search <- main. - Called from PROJECT_FILE.i:468. + Called from PROJECT_FILE.i:479. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- search <- main. - Called from PROJECT_FILE.i:469. + Called from PROJECT_FILE.i:480. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:471. + Called from PROJECT_FILE.i:482. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- search <- main. - Called from PROJECT_FILE.i:472. + Called from PROJECT_FILE.i:483. [value] Done for function __gmpz_clear [value] computing for function e_acsl_assert <- search <- main. - Called from PROJECT_FILE.i:474. + Called from PROJECT_FILE.i:485. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] Recording results for search [value] Done for function search -PROJECT_FILE.i:510:[value] Assertion got status unknown. +PROJECT_FILE.i:521:[value] Assertion got status unknown. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:515. + Called from PROJECT_FILE.i:526. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:516. + Called from PROJECT_FILE.i:527. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:517. + Called from PROJECT_FILE.i:528. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:518. + Called from PROJECT_FILE.i:529. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:519. + Called from PROJECT_FILE.i:530. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:520. + Called from PROJECT_FILE.i:531. [value] Done for function __gmpz_clear [value] Recording results for main [value] done for function main @@ -597,33 +597,53 @@ struct __anonstruct___mpz_struct_1 { }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; typedef __mpz_struct mpz_t[1]; -/*@ ensures \valid(\old(x)); - allocates \nothing; - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); - allocates \nothing; + allocates \old(z); + assigns *z; assigns *z \from n; */ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); allocates \nothing; - assigns *z; + assigns *z; + assigns *z \from *z_orig; + */ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); @@ -636,7 +656,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); - allocates \nothing; + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -649,7 +670,10 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); @@ -657,6 +681,7 @@ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, requires \valid(z3); allocates \nothing; assigns *z1; + assigns *z1 \from *z2, *z3; */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, @@ -665,7 +690,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -673,7 +700,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -681,7 +710,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -689,14 +720,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -712,7 +748,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/linear_search.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/linear_search.res.oracle index bf9aecd3cd3adba5c5660032de5d8dbdb031a983..77efeb421ceefea2f8c35d74aa343275ee99c711 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/linear_search.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/linear_search.res.oracle @@ -7,59 +7,59 @@ tests/e-acsl-runtime/linear_search.i:14:[e-acsl] warning: missing guard for ensu [value] Initial state computed [value] Values of globals at initialization A[0..9] ∈ {0} -PROJECT_FILE.i:342:[value] entering loop for the first time -PROJECT_FILE.i:345:[value] assigning non deterministic value for the first time +PROJECT_FILE.i:353:[value] entering loop for the first time +PROJECT_FILE.i:356:[value] assigning non deterministic value for the first time [value] computing for function search <- main. - Called from PROJECT_FILE.i:348. -PROJECT_FILE.i:231:[value] Function search: precondition got status unknown. -PROJECT_FILE.i:253:[value] entering loop for the first time + Called from PROJECT_FILE.i:359. +PROJECT_FILE.i:242:[value] Function search: precondition got status unknown. +PROJECT_FILE.i:264:[value] entering loop for the first time [value] computing for function e_acsl_assert <- search <- main. - Called from PROJECT_FILE.i:263. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status unknown. + Called from PROJECT_FILE.i:274. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status unknown. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:270:[value] entering loop for the first time -PROJECT_FILE.i:288:[value] entering loop for the first time -PROJECT_FILE.i:304:[value] entering loop for the first time +PROJECT_FILE.i:281:[value] entering loop for the first time +PROJECT_FILE.i:299:[value] entering loop for the first time +PROJECT_FILE.i:315:[value] entering loop for the first time [value] computing for function e_acsl_assert <- search <- main. - Called from PROJECT_FILE.i:323. + Called from PROJECT_FILE.i:334. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- search <- main. - Called from PROJECT_FILE.i:328. + Called from PROJECT_FILE.i:339. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:234:[value] Function search, behavior exists: postcondition got status unknown. -PROJECT_FILE.i:234:[value] Function search, behavior exists: postcondition got status unknown, but it is unknown if the behavior is active. -PROJECT_FILE.i:238:[value] Function search, behavior not_exists: postcondition got status unknown. -PROJECT_FILE.i:238:[value] Function search, behavior not_exists: postcondition got status unknown, but it is unknown if the behavior is active. +PROJECT_FILE.i:245:[value] Function search, behavior exists: postcondition got status unknown. +PROJECT_FILE.i:245:[value] Function search, behavior exists: postcondition got status unknown, but it is unknown if the behavior is active. +PROJECT_FILE.i:249:[value] Function search, behavior not_exists: postcondition got status unknown. +PROJECT_FILE.i:249:[value] Function search, behavior not_exists: postcondition got status unknown, but it is unknown if the behavior is active. [value] Recording results for search [value] Done for function search -PROJECT_FILE.i:349:[value] Assertion got status unknown. +PROJECT_FILE.i:360:[value] Assertion got status unknown. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:350. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status valid. + Called from PROJECT_FILE.i:361. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status valid. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function search <- main. - Called from PROJECT_FILE.i:352. + Called from PROJECT_FILE.i:363. [value] computing for function e_acsl_assert <- search <- main. - Called from PROJECT_FILE.i:263. + Called from PROJECT_FILE.i:274. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- search <- main. - Called from PROJECT_FILE.i:323. + Called from PROJECT_FILE.i:334. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- search <- main. - Called from PROJECT_FILE.i:328. + Called from PROJECT_FILE.i:339. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] Recording results for search [value] Done for function search -PROJECT_FILE.i:353:[value] Assertion got status unknown. +PROJECT_FILE.i:364:[value] Assertion got status unknown. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:354. + Called from PROJECT_FILE.i:365. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] Recording results for main @@ -82,29 +82,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -116,6 +140,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -125,13 +151,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -139,7 +170,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -147,7 +180,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -155,7 +190,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -163,14 +200,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -185,7 +227,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/nested_code_annot.1.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/nested_code_annot.1.res.oracle index 2772653ca1ded35812f52f62dcc70aed7ceb1e37..d5bb941d28d427c79e66d5405df1a3db4ee2c7aa 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/nested_code_annot.1.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/nested_code_annot.1.res.oracle @@ -2,147 +2,147 @@ [value] Computing initial state [value] Initial state computed [value] Values of globals at initialization -PROJECT_FILE.i:237:[value] Assertion got status valid. +PROJECT_FILE.i:248:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:242. + Called from PROJECT_FILE.i:253. [value] using specification for function __gmpz_init_set_si -PROJECT_FILE.i:82:[value] Function __gmpz_init_set_si: postcondition got status valid. +PROJECT_FILE.i:86:[value] Function __gmpz_init_set_si: postcondition got status valid. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:243. + Called from PROJECT_FILE.i:254. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:244. + Called from PROJECT_FILE.i:255. [value] using specification for function __gmpz_cmp -PROJECT_FILE.i:119:[value] Function __gmpz_cmp: precondition got status valid. -PROJECT_FILE.i:120:[value] Function __gmpz_cmp: precondition got status valid. +PROJECT_FILE.i:129:[value] Function __gmpz_cmp: precondition got status valid. +PROJECT_FILE.i:130:[value] Function __gmpz_cmp: precondition got status valid. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:245. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status unknown. + Called from PROJECT_FILE.i:256. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status unknown. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:246. + Called from PROJECT_FILE.i:257. [value] using specification for function __gmpz_clear -PROJECT_FILE.i:111:[value] Function __gmpz_clear: precondition got status valid. +PROJECT_FILE.i:120:[value] Function __gmpz_clear: precondition got status valid. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:247. + Called from PROJECT_FILE.i:258. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:261. + Called from PROJECT_FILE.i:272. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:262. + Called from PROJECT_FILE.i:273. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:263. + Called from PROJECT_FILE.i:274. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:264. + Called from PROJECT_FILE.i:275. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:265. + Called from PROJECT_FILE.i:276. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:266. + Called from PROJECT_FILE.i:277. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:283. + Called from PROJECT_FILE.i:294. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:284. + Called from PROJECT_FILE.i:295. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:285. + Called from PROJECT_FILE.i:296. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:286. + Called from PROJECT_FILE.i:297. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:287. + Called from PROJECT_FILE.i:298. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:288. + Called from PROJECT_FILE.i:299. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:292. + Called from PROJECT_FILE.i:303. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:293. + Called from PROJECT_FILE.i:304. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:294. + Called from PROJECT_FILE.i:305. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:295. + Called from PROJECT_FILE.i:306. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:296. + Called from PROJECT_FILE.i:307. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:297. + Called from PROJECT_FILE.i:308. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:311. + Called from PROJECT_FILE.i:322. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:312. + Called from PROJECT_FILE.i:323. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:313. + Called from PROJECT_FILE.i:324. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:314. + Called from PROJECT_FILE.i:325. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:315. + Called from PROJECT_FILE.i:326. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:316. + Called from PROJECT_FILE.i:327. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:320. + Called from PROJECT_FILE.i:331. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:321. + Called from PROJECT_FILE.i:332. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:322. + Called from PROJECT_FILE.i:333. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:323. + Called from PROJECT_FILE.i:334. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:324. + Called from PROJECT_FILE.i:335. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:325. + Called from PROJECT_FILE.i:336. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:337. + Called from PROJECT_FILE.i:348. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:338. + Called from PROJECT_FILE.i:349. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:339. + Called from PROJECT_FILE.i:350. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:340. + Called from PROJECT_FILE.i:351. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:341. + Called from PROJECT_FILE.i:352. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:342. + Called from PROJECT_FILE.i:353. [value] Done for function __gmpz_clear [value] Recording results for main [value] done for function main @@ -160,31 +160,53 @@ struct __anonstruct___mpz_struct_1 { }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; typedef __mpz_struct mpz_t[1]; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); - allocates \nothing; + allocates \old(z); + assigns *z; assigns *z \from n; */ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -196,7 +218,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); - allocates \nothing; + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -209,13 +232,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -223,7 +251,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -231,7 +261,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -239,7 +271,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -247,14 +281,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -269,7 +308,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/nested_code_annot.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/nested_code_annot.res.oracle index 9224a7f034c0ffc56887848c94b992c7439554fa..4c23fd18b9b23d6ea70b6f3d1923254f367e84fa 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/nested_code_annot.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/nested_code_annot.res.oracle @@ -2,34 +2,34 @@ [value] Computing initial state [value] Initial state computed [value] Values of globals at initialization -PROJECT_FILE.i:237:[value] Assertion got status valid. +PROJECT_FILE.i:248:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:238. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status valid. + Called from PROJECT_FILE.i:249. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status valid. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:243. + Called from PROJECT_FILE.i:254. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:253. + Called from PROJECT_FILE.i:264. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:255. + Called from PROJECT_FILE.i:266. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:262. + Called from PROJECT_FILE.i:273. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:264. + Called from PROJECT_FILE.i:275. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:274. + Called from PROJECT_FILE.i:285. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] Recording results for main @@ -47,29 +47,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -81,6 +105,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -90,13 +116,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -104,7 +135,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -112,7 +145,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -120,7 +155,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -128,14 +165,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -150,7 +192,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/not.1.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/not.1.res.oracle index bf61d223e3bb0c3836a75eb0f075f8f5db45d935..58c728c5e74a0fc133a7c4a93bc9f6296ab7a4c3 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/not.1.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/not.1.res.oracle @@ -2,33 +2,33 @@ [value] Computing initial state [value] Initial state computed [value] Values of globals at initialization -PROJECT_FILE.i:235:[value] Assertion got status valid. +PROJECT_FILE.i:246:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:240. + Called from PROJECT_FILE.i:251. [value] using specification for function __gmpz_init_set_si -PROJECT_FILE.i:82:[value] Function __gmpz_init_set_si: postcondition got status valid. +PROJECT_FILE.i:86:[value] Function __gmpz_init_set_si: postcondition got status valid. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:241. + Called from PROJECT_FILE.i:252. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:242. + Called from PROJECT_FILE.i:253. [value] using specification for function __gmpz_cmp -PROJECT_FILE.i:119:[value] Function __gmpz_cmp: precondition got status valid. -PROJECT_FILE.i:120:[value] Function __gmpz_cmp: precondition got status valid. +PROJECT_FILE.i:129:[value] Function __gmpz_cmp: precondition got status valid. +PROJECT_FILE.i:130:[value] Function __gmpz_cmp: precondition got status valid. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:243. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status unknown. + Called from PROJECT_FILE.i:254. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status unknown. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:244. + Called from PROJECT_FILE.i:255. [value] using specification for function __gmpz_clear -PROJECT_FILE.i:111:[value] Function __gmpz_clear: precondition got status valid. +PROJECT_FILE.i:120:[value] Function __gmpz_clear: precondition got status valid. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:245. + Called from PROJECT_FILE.i:256. [value] Done for function __gmpz_clear [value] Recording results for main [value] done for function main @@ -45,31 +45,53 @@ struct __anonstruct___mpz_struct_1 { }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; typedef __mpz_struct mpz_t[1]; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); - allocates \nothing; + allocates \old(z); + assigns *z; assigns *z \from n; */ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -81,7 +103,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); - allocates \nothing; + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -94,13 +117,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -108,7 +136,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -116,7 +146,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -124,7 +156,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -132,14 +166,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -154,7 +193,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/not.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/not.res.oracle index 4c3ac9bc97968ebd1adc20e0872fd0ed9f23ba98..6364fb7d9b736cf7c51e1b31be066fbbc3207b96 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/not.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/not.res.oracle @@ -2,10 +2,10 @@ [value] Computing initial state [value] Initial state computed [value] Values of globals at initialization -PROJECT_FILE.i:235:[value] Assertion got status valid. +PROJECT_FILE.i:246:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:236. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status valid. + Called from PROJECT_FILE.i:247. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status valid. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] Recording results for main @@ -22,29 +22,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -56,6 +80,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -65,13 +91,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -79,7 +110,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -87,7 +120,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -95,7 +130,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -103,14 +140,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -125,7 +167,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/null.1.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/null.1.res.oracle index be26a39c375869068565eac3a5fcbe8c88ae4f05..15ffb415518ed77ee6a4b8e9f08f169eb110f42b 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/null.1.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/null.1.res.oracle @@ -2,10 +2,10 @@ [value] Computing initial state [value] Initial state computed [value] Values of globals at initialization -PROJECT_FILE.i:233:[value] Assertion got status valid. +PROJECT_FILE.i:244:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:234. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status valid. + Called from PROJECT_FILE.i:245. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status valid. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] Recording results for main @@ -21,29 +21,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -55,6 +79,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -64,13 +90,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -78,7 +109,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -86,7 +119,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -94,7 +129,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -102,14 +139,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -124,7 +166,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/null.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/null.res.oracle index be26a39c375869068565eac3a5fcbe8c88ae4f05..15ffb415518ed77ee6a4b8e9f08f169eb110f42b 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/null.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/null.res.oracle @@ -2,10 +2,10 @@ [value] Computing initial state [value] Initial state computed [value] Values of globals at initialization -PROJECT_FILE.i:233:[value] Assertion got status valid. +PROJECT_FILE.i:244:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:234. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status valid. + Called from PROJECT_FILE.i:245. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status valid. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] Recording results for main @@ -21,29 +21,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -55,6 +79,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -64,13 +90,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -78,7 +109,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -86,7 +119,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -94,7 +129,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -102,14 +139,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -124,7 +166,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/other_constants.1.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/other_constants.1.res.oracle index e21ba3d18b09b78966f76b238370802dfa968152..f8580d0ae210f70a9ce4fd2bb4984bd602757c5c 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/other_constants.1.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/other_constants.1.res.oracle @@ -2,55 +2,55 @@ [value] Computing initial state [value] Initial state computed [value] Values of globals at initialization -PROJECT_FILE.i:237:[value] cannot evaluate ACSL term, +PROJECT_FILE.i:248:[value] cannot evaluate ACSL term, unsupported ACSL construct: unsupported ACSL construct "toto" -PROJECT_FILE.i:237:[value] Assertion got status unknown. +PROJECT_FILE.i:248:[value] Assertion got status unknown. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:238. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status valid. + Called from PROJECT_FILE.i:249. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status valid. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:240:[value] Assertion got status valid. +PROJECT_FILE.i:251:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:244. + Called from PROJECT_FILE.i:255. [value] using specification for function __gmpz_init_set_si -PROJECT_FILE.i:82:[value] Function __gmpz_init_set_si: postcondition got status valid. +PROJECT_FILE.i:86:[value] Function __gmpz_init_set_si: postcondition got status valid. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:245. + Called from PROJECT_FILE.i:256. [value] using specification for function __gmpz_cmp -PROJECT_FILE.i:119:[value] Function __gmpz_cmp: precondition got status valid. -PROJECT_FILE.i:120:[value] Function __gmpz_cmp: precondition got status valid. +PROJECT_FILE.i:129:[value] Function __gmpz_cmp: precondition got status valid. +PROJECT_FILE.i:130:[value] Function __gmpz_cmp: precondition got status valid. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:246. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status unknown. + Called from PROJECT_FILE.i:257. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status unknown. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:247. + Called from PROJECT_FILE.i:258. [value] using specification for function __gmpz_clear -PROJECT_FILE.i:111:[value] Function __gmpz_clear: precondition got status valid. +PROJECT_FILE.i:120:[value] Function __gmpz_clear: precondition got status valid. [value] Done for function __gmpz_clear -PROJECT_FILE.i:251:[value] Assertion got status valid. +PROJECT_FILE.i:262:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:256. + Called from PROJECT_FILE.i:267. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:257. + Called from PROJECT_FILE.i:268. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:258. + Called from PROJECT_FILE.i:269. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:259. + Called from PROJECT_FILE.i:270. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:260. + Called from PROJECT_FILE.i:271. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:261. + Called from PROJECT_FILE.i:272. [value] Done for function __gmpz_clear [value] Recording results for main [value] done for function main @@ -70,31 +70,53 @@ enum bool { false = 0, true = 1 }; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); - allocates \nothing; + allocates \old(z); + assigns *z; assigns *z \from n; */ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -106,7 +128,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); - allocates \nothing; + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -119,13 +142,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -133,7 +161,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -141,7 +171,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -149,7 +181,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -157,14 +191,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -179,7 +218,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/other_constants.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/other_constants.res.oracle index 5b085420e3919b94f0a8f914ef2e58cd4428942d..2ff86ae97cd59caf91cf3b77f9474966bca8649d 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/other_constants.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/other_constants.res.oracle @@ -2,22 +2,22 @@ [value] Computing initial state [value] Initial state computed [value] Values of globals at initialization -PROJECT_FILE.i:237:[value] cannot evaluate ACSL term, +PROJECT_FILE.i:248:[value] cannot evaluate ACSL term, unsupported ACSL construct: unsupported ACSL construct "toto" -PROJECT_FILE.i:237:[value] Assertion got status unknown. +PROJECT_FILE.i:248:[value] Assertion got status unknown. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:238. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status valid. + Called from PROJECT_FILE.i:249. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status valid. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:240:[value] Assertion got status valid. +PROJECT_FILE.i:251:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:241. + Called from PROJECT_FILE.i:252. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:243:[value] Assertion got status valid. +PROJECT_FILE.i:254:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:244. + Called from PROJECT_FILE.i:255. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] Recording results for main @@ -37,29 +37,53 @@ enum bool { false = 0, true = 1 }; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -71,6 +95,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -80,13 +106,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -94,7 +125,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -102,7 +135,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -110,7 +145,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -118,14 +155,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -140,7 +182,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/ptr.1.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/ptr.1.res.oracle index 17573c0bd0746d8b38b55d5e8d74d2a007eb10d6..55b823fb245b3b1efc983eac910e2f2f9d40e100 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/ptr.1.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/ptr.1.res.oracle @@ -15,437 +15,437 @@ tests/e-acsl-runtime/ptr.i:27:[e-acsl] warning: missing guard for ensuring that [value] Computing initial state [value] Initial state computed [value] Values of globals at initialization -PROJECT_FILE.i:241:[value] Assertion got status valid. +PROJECT_FILE.i:252:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:246. + Called from PROJECT_FILE.i:257. [value] using specification for function __gmpz_init_set_si -PROJECT_FILE.i:82:[value] Function __gmpz_init_set_si: postcondition got status valid. +PROJECT_FILE.i:86:[value] Function __gmpz_init_set_si: postcondition got status valid. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:247. + Called from PROJECT_FILE.i:258. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:248. + Called from PROJECT_FILE.i:259. [value] using specification for function __gmpz_cmp -PROJECT_FILE.i:119:[value] Function __gmpz_cmp: precondition got status valid. -PROJECT_FILE.i:120:[value] Function __gmpz_cmp: precondition got status valid. +PROJECT_FILE.i:129:[value] Function __gmpz_cmp: precondition got status valid. +PROJECT_FILE.i:130:[value] Function __gmpz_cmp: precondition got status valid. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:249. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status unknown. + Called from PROJECT_FILE.i:260. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status unknown. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:250. + Called from PROJECT_FILE.i:261. [value] using specification for function __gmpz_clear -PROJECT_FILE.i:111:[value] Function __gmpz_clear: precondition got status valid. +PROJECT_FILE.i:120:[value] Function __gmpz_clear: precondition got status valid. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:251. + Called from PROJECT_FILE.i:262. [value] Done for function __gmpz_clear -PROJECT_FILE.i:255:[value] Assertion got status valid. +PROJECT_FILE.i:266:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:260. + Called from PROJECT_FILE.i:271. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:261. + Called from PROJECT_FILE.i:272. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:262. + Called from PROJECT_FILE.i:273. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:263. + Called from PROJECT_FILE.i:274. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:264. + Called from PROJECT_FILE.i:275. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:265. + Called from PROJECT_FILE.i:276. [value] Done for function __gmpz_clear -PROJECT_FILE.i:269:[value] Assertion got status valid. +PROJECT_FILE.i:280:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:274. + Called from PROJECT_FILE.i:285. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:275. + Called from PROJECT_FILE.i:286. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:276. + Called from PROJECT_FILE.i:287. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:277. + Called from PROJECT_FILE.i:288. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:278. + Called from PROJECT_FILE.i:289. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:279. + Called from PROJECT_FILE.i:290. [value] Done for function __gmpz_clear -PROJECT_FILE.i:283:[value] Assertion got status valid. +PROJECT_FILE.i:294:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:296. + Called from PROJECT_FILE.i:307. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:297. + Called from PROJECT_FILE.i:308. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:298. + Called from PROJECT_FILE.i:309. [value] using specification for function __gmpz_init -PROJECT_FILE.i:69:[value] Function __gmpz_init: postcondition got status valid. +PROJECT_FILE.i:67:[value] Function __gmpz_init: postcondition got status valid. [value] Done for function __gmpz_init [value] computing for function __gmpz_mul <- main. - Called from PROJECT_FILE.i:299. + Called from PROJECT_FILE.i:310. [value] using specification for function __gmpz_mul -PROJECT_FILE.i:145:[value] Function __gmpz_mul: precondition got status valid. -PROJECT_FILE.i:146:[value] Function __gmpz_mul: precondition got status valid. -PROJECT_FILE.i:147:[value] Function __gmpz_mul: precondition got status valid. +PROJECT_FILE.i:155:[value] Function __gmpz_mul: precondition got status valid. +PROJECT_FILE.i:156:[value] Function __gmpz_mul: precondition got status valid. +PROJECT_FILE.i:157:[value] Function __gmpz_mul: precondition got status valid. [value] Done for function __gmpz_mul [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:300. + Called from PROJECT_FILE.i:311. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:301. + Called from PROJECT_FILE.i:312. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:302. + Called from PROJECT_FILE.i:313. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:303. + Called from PROJECT_FILE.i:314. [value] Done for function __gmpz_init -PROJECT_FILE.i:304:[value] Assertion got status valid. +PROJECT_FILE.i:315:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:305. + Called from PROJECT_FILE.i:316. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_tdiv_q <- main. - Called from PROJECT_FILE.i:307. + Called from PROJECT_FILE.i:318. [value] using specification for function __gmpz_tdiv_q -PROJECT_FILE.i:151:[value] Function __gmpz_tdiv_q: precondition got status valid. -PROJECT_FILE.i:152:[value] Function __gmpz_tdiv_q: precondition got status valid. -PROJECT_FILE.i:153:[value] Function __gmpz_tdiv_q: precondition got status valid. +PROJECT_FILE.i:161:[value] Function __gmpz_tdiv_q: precondition got status valid. +PROJECT_FILE.i:162:[value] Function __gmpz_tdiv_q: precondition got status valid. +PROJECT_FILE.i:163:[value] Function __gmpz_tdiv_q: precondition got status valid. [value] Done for function __gmpz_tdiv_q [value] computing for function __gmpz_get_ui <- main. - Called from PROJECT_FILE.i:308. + Called from PROJECT_FILE.i:319. [value] using specification for function __gmpz_get_ui -PROJECT_FILE.i:180:[value] Function __gmpz_get_ui: precondition got status valid. +PROJECT_FILE.i:190:[value] Function __gmpz_get_ui: precondition got status valid. [value] Done for function __gmpz_get_ui -PROJECT_FILE.i:309:[kernel] warning: accessing out of bounds index [0..4294967295]. assert __e_acsl_9 < 3; +PROJECT_FILE.i:320:[kernel] warning: accessing out of bounds index [0..4294967295]. assert __e_acsl_9 < 3; [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:309. + Called from PROJECT_FILE.i:320. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:310. + Called from PROJECT_FILE.i:321. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:311. + Called from PROJECT_FILE.i:322. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:312. + Called from PROJECT_FILE.i:323. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:314. + Called from PROJECT_FILE.i:325. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:315. + Called from PROJECT_FILE.i:326. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:316. + Called from PROJECT_FILE.i:327. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:317. + Called from PROJECT_FILE.i:328. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:318. + Called from PROJECT_FILE.i:329. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:319. + Called from PROJECT_FILE.i:330. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:320. + Called from PROJECT_FILE.i:331. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:321. + Called from PROJECT_FILE.i:332. [value] Done for function __gmpz_clear -PROJECT_FILE.i:328:[value] entering loop for the first time -PROJECT_FILE.i:331:[value] Assertion got status valid. +PROJECT_FILE.i:339:[value] entering loop for the first time +PROJECT_FILE.i:342:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:338. + Called from PROJECT_FILE.i:349. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:339. + Called from PROJECT_FILE.i:350. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:340. + Called from PROJECT_FILE.i:351. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:341. + Called from PROJECT_FILE.i:352. [value] Done for function __gmpz_init [value] computing for function __gmpz_add <- main. - Called from PROJECT_FILE.i:342. + Called from PROJECT_FILE.i:353. [value] using specification for function __gmpz_add -PROJECT_FILE.i:133:[value] Function __gmpz_add: precondition got status valid. -PROJECT_FILE.i:134:[value] Function __gmpz_add: precondition got status valid. -PROJECT_FILE.i:135:[value] Function __gmpz_add: precondition got status valid. +PROJECT_FILE.i:143:[value] Function __gmpz_add: precondition got status valid. +PROJECT_FILE.i:144:[value] Function __gmpz_add: precondition got status valid. +PROJECT_FILE.i:145:[value] Function __gmpz_add: precondition got status valid. [value] Done for function __gmpz_add [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:343. + Called from PROJECT_FILE.i:354. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:344. + Called from PROJECT_FILE.i:355. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:345. + Called from PROJECT_FILE.i:356. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:346. + Called from PROJECT_FILE.i:357. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:347. + Called from PROJECT_FILE.i:358. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:348. + Called from PROJECT_FILE.i:359. [value] Done for function __gmpz_clear -PROJECT_FILE.i:352:[value] Assertion got status valid. +PROJECT_FILE.i:363:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:362. + Called from PROJECT_FILE.i:373. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:363. + Called from PROJECT_FILE.i:374. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:364. + Called from PROJECT_FILE.i:375. [value] Done for function __gmpz_init [value] computing for function __gmpz_sub <- main. - Called from PROJECT_FILE.i:365. + Called from PROJECT_FILE.i:376. [value] using specification for function __gmpz_sub -PROJECT_FILE.i:139:[value] Function __gmpz_sub: precondition got status valid. -PROJECT_FILE.i:140:[value] Function __gmpz_sub: precondition got status valid. -PROJECT_FILE.i:141:[value] Function __gmpz_sub: precondition got status valid. +PROJECT_FILE.i:149:[value] Function __gmpz_sub: precondition got status valid. +PROJECT_FILE.i:150:[value] Function __gmpz_sub: precondition got status valid. +PROJECT_FILE.i:151:[value] Function __gmpz_sub: precondition got status valid. [value] Done for function __gmpz_sub [value] computing for function __gmpz_get_ui <- main. - Called from PROJECT_FILE.i:366. + Called from PROJECT_FILE.i:377. [value] Done for function __gmpz_get_ui -PROJECT_FILE.i:367:[kernel] warning: accessing out of bounds index [0..4294967295]. assert __e_acsl_15 < 3; +PROJECT_FILE.i:378:[kernel] warning: accessing out of bounds index [0..4294967295]. assert __e_acsl_15 < 3; [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:367. + Called from PROJECT_FILE.i:378. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:368. + Called from PROJECT_FILE.i:379. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:369. + Called from PROJECT_FILE.i:380. [value] Done for function __gmpz_init [value] computing for function __gmpz_sub <- main. - Called from PROJECT_FILE.i:370. + Called from PROJECT_FILE.i:381. [value] Done for function __gmpz_sub [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:371. + Called from PROJECT_FILE.i:382. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:372. + Called from PROJECT_FILE.i:383. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:373. + Called from PROJECT_FILE.i:384. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:374. + Called from PROJECT_FILE.i:385. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:375. + Called from PROJECT_FILE.i:386. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:376. + Called from PROJECT_FILE.i:387. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:377. + Called from PROJECT_FILE.i:388. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:378. + Called from PROJECT_FILE.i:389. [value] Done for function __gmpz_clear -PROJECT_FILE.i:382:[value] Assertion got status valid. +PROJECT_FILE.i:393:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:389. + Called from PROJECT_FILE.i:400. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:390. + Called from PROJECT_FILE.i:401. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:391. + Called from PROJECT_FILE.i:402. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:392. + Called from PROJECT_FILE.i:403. [value] Done for function __gmpz_init [value] computing for function __gmpz_sub <- main. - Called from PROJECT_FILE.i:393. + Called from PROJECT_FILE.i:404. [value] Done for function __gmpz_sub [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:394. + Called from PROJECT_FILE.i:405. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:395. + Called from PROJECT_FILE.i:406. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:397. + Called from PROJECT_FILE.i:408. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:398. + Called from PROJECT_FILE.i:409. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:399. + Called from PROJECT_FILE.i:410. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:400. + Called from PROJECT_FILE.i:411. [value] Done for function __gmpz_clear -PROJECT_FILE.i:331:[value] Assertion got status unknown. +PROJECT_FILE.i:342:[value] Assertion got status unknown. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:338. + Called from PROJECT_FILE.i:349. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:339. + Called from PROJECT_FILE.i:350. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:340. + Called from PROJECT_FILE.i:351. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:341. + Called from PROJECT_FILE.i:352. [value] Done for function __gmpz_init [value] computing for function __gmpz_add <- main. - Called from PROJECT_FILE.i:342. + Called from PROJECT_FILE.i:353. [value] Done for function __gmpz_add [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:343. + Called from PROJECT_FILE.i:354. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:344. + Called from PROJECT_FILE.i:355. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:345. + Called from PROJECT_FILE.i:356. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:346. + Called from PROJECT_FILE.i:357. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:347. + Called from PROJECT_FILE.i:358. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:348. + Called from PROJECT_FILE.i:359. [value] Done for function __gmpz_clear -PROJECT_FILE.i:352:[value] Assertion got status unknown. +PROJECT_FILE.i:363:[value] Assertion got status unknown. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:362. + Called from PROJECT_FILE.i:373. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:363. + Called from PROJECT_FILE.i:374. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:364. + Called from PROJECT_FILE.i:375. [value] Done for function __gmpz_init [value] computing for function __gmpz_sub <- main. - Called from PROJECT_FILE.i:365. + Called from PROJECT_FILE.i:376. [value] Done for function __gmpz_sub [value] computing for function __gmpz_get_ui <- main. - Called from PROJECT_FILE.i:366. + Called from PROJECT_FILE.i:377. [value] Done for function __gmpz_get_ui -PROJECT_FILE.i:367:[value] Assertion got status unknown. +PROJECT_FILE.i:378:[value] Assertion got status unknown. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:367. + Called from PROJECT_FILE.i:378. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:368. + Called from PROJECT_FILE.i:379. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:369. + Called from PROJECT_FILE.i:380. [value] Done for function __gmpz_init [value] computing for function __gmpz_sub <- main. - Called from PROJECT_FILE.i:370. + Called from PROJECT_FILE.i:381. [value] Done for function __gmpz_sub [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:371. + Called from PROJECT_FILE.i:382. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:372. + Called from PROJECT_FILE.i:383. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:373. + Called from PROJECT_FILE.i:384. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:374. + Called from PROJECT_FILE.i:385. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:375. + Called from PROJECT_FILE.i:386. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:376. + Called from PROJECT_FILE.i:387. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:377. + Called from PROJECT_FILE.i:388. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:378. + Called from PROJECT_FILE.i:389. [value] Done for function __gmpz_clear -PROJECT_FILE.i:382:[value] Assertion got status unknown. +PROJECT_FILE.i:393:[value] Assertion got status unknown. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:389. + Called from PROJECT_FILE.i:400. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:390. + Called from PROJECT_FILE.i:401. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:391. + Called from PROJECT_FILE.i:402. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:392. + Called from PROJECT_FILE.i:403. [value] Done for function __gmpz_init [value] computing for function __gmpz_sub <- main. - Called from PROJECT_FILE.i:393. + Called from PROJECT_FILE.i:404. [value] Done for function __gmpz_sub [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:394. + Called from PROJECT_FILE.i:405. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:395. + Called from PROJECT_FILE.i:406. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:397. + Called from PROJECT_FILE.i:408. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:398. + Called from PROJECT_FILE.i:409. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:399. + Called from PROJECT_FILE.i:410. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:400. + Called from PROJECT_FILE.i:411. [value] Done for function __gmpz_clear -PROJECT_FILE.i:404:[value] assigning non deterministic value for the first time -PROJECT_FILE.i:410:[value] Assertion got status valid. +PROJECT_FILE.i:415:[value] assigning non deterministic value for the first time +PROJECT_FILE.i:421:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:415. + Called from PROJECT_FILE.i:426. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:416. + Called from PROJECT_FILE.i:427. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:417. + Called from PROJECT_FILE.i:428. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:418. + Called from PROJECT_FILE.i:429. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:419. + Called from PROJECT_FILE.i:430. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:420. + Called from PROJECT_FILE.i:431. [value] Done for function __gmpz_clear [value] Recording results for main [value] done for function main @@ -466,32 +466,53 @@ struct __anonstruct___mpz_struct_1 { }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; typedef __mpz_struct mpz_t[1]; -/*@ ensures \valid(\old(x)); - allocates \nothing; - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); - allocates \nothing; + allocates \old(z); + assigns *z; assigns *z \from n; */ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -503,7 +524,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); - allocates \nothing; + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -516,7 +538,10 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); @@ -524,6 +549,7 @@ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, requires \valid(z3); allocates \nothing; assigns *z1; + assigns *z1 \from *z2, *z3; */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, @@ -534,6 +560,7 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, requires \valid(z3); allocates \nothing; assigns *z1; + assigns *z1 \from *z2, *z3; */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, @@ -544,6 +571,7 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, requires \valid(z3); allocates \nothing; assigns *z1; + assigns *z1 \from *z2, *z3; */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, @@ -554,6 +582,7 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, requires \valid(z3); allocates \nothing; assigns *z1; + assigns *z1 \from *z2, *z3; */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, @@ -562,14 +591,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -585,7 +619,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/ptr.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/ptr.res.oracle index 076fa27db9470179e35bdfe46d7eadd7d3000b59..fefc82a7361dd076217f40131bcb7eba8a26d4e4 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/ptr.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/ptr.res.oracle @@ -13,68 +13,68 @@ tests/e-acsl-runtime/ptr.i:27:[e-acsl] warning: missing guard for ensuring that [value] Computing initial state [value] Initial state computed [value] Values of globals at initialization -PROJECT_FILE.i:241:[value] Assertion got status valid. +PROJECT_FILE.i:252:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:242. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status valid. + Called from PROJECT_FILE.i:253. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status valid. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:244:[value] Assertion got status valid. +PROJECT_FILE.i:255:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:245. + Called from PROJECT_FILE.i:256. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:247:[value] Assertion got status valid. +PROJECT_FILE.i:258:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:248. + Called from PROJECT_FILE.i:259. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:250:[value] Assertion got status valid. -PROJECT_FILE.i:253:[value] Assertion got status valid. +PROJECT_FILE.i:261:[value] Assertion got status valid. +PROJECT_FILE.i:264:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:254. + Called from PROJECT_FILE.i:265. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:256. + Called from PROJECT_FILE.i:267. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:264:[value] entering loop for the first time -PROJECT_FILE.i:267:[value] Assertion got status valid. +PROJECT_FILE.i:275:[value] entering loop for the first time +PROJECT_FILE.i:278:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:268. + Called from PROJECT_FILE.i:279. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:271:[value] Assertion got status valid. +PROJECT_FILE.i:282:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:272. + Called from PROJECT_FILE.i:283. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:275:[value] Assertion got status valid. +PROJECT_FILE.i:286:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:276. + Called from PROJECT_FILE.i:287. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:267:[value] Assertion got status unknown. +PROJECT_FILE.i:278:[value] Assertion got status unknown. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:268. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status unknown. + Called from PROJECT_FILE.i:279. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status unknown. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:271:[value] Assertion got status unknown. +PROJECT_FILE.i:282:[value] Assertion got status unknown. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:272. + Called from PROJECT_FILE.i:283. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:275:[value] Assertion got status unknown. +PROJECT_FILE.i:286:[value] Assertion got status unknown. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:276. + Called from PROJECT_FILE.i:287. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:279:[value] assigning non deterministic value for the first time -PROJECT_FILE.i:285:[value] Assertion got status valid. +PROJECT_FILE.i:290:[value] assigning non deterministic value for the first time +PROJECT_FILE.i:296:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:286. + Called from PROJECT_FILE.i:297. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] Recording results for main @@ -95,29 +95,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -129,6 +153,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -138,13 +164,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -152,7 +183,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -160,7 +193,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -168,7 +203,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -176,14 +213,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -198,7 +240,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/quantif.1.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/quantif.1.res.oracle index 8a0d0d725d714ba2a73d89c772ac1e9215c9f043..b54ee09ce3a8f2b61473ed852f39271369a3f840 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/quantif.1.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/quantif.1.res.oracle @@ -2,666 +2,666 @@ [value] Computing initial state [value] Initial state computed [value] Values of globals at initialization -PROJECT_FILE.i:233:[value] Assertion got status unknown. +PROJECT_FILE.i:244:[value] Assertion got status unknown. [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:238. + Called from PROJECT_FILE.i:249. [value] using specification for function __gmpz_init -PROJECT_FILE.i:69:[value] Function __gmpz_init: postcondition got status valid. +PROJECT_FILE.i:67:[value] Function __gmpz_init: postcondition got status valid. [value] Done for function __gmpz_init [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:241. + Called from PROJECT_FILE.i:252. [value] using specification for function __gmpz_init_set_si -PROJECT_FILE.i:82:[value] Function __gmpz_init_set_si: postcondition got status valid. +PROJECT_FILE.i:86:[value] Function __gmpz_init_set_si: postcondition got status valid. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_set <- main. - Called from PROJECT_FILE.i:242. + Called from PROJECT_FILE.i:253. [value] using specification for function __gmpz_set -PROJECT_FILE.i:94:[value] Function __gmpz_set: precondition got status valid. -PROJECT_FILE.i:95:[value] Function __gmpz_set: precondition got status valid. +PROJECT_FILE.i:100:[value] Function __gmpz_set: precondition got status valid. +PROJECT_FILE.i:101:[value] Function __gmpz_set: precondition got status valid. [value] Done for function __gmpz_set [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:243. + Called from PROJECT_FILE.i:254. [value] using specification for function __gmpz_clear -PROJECT_FILE.i:111:[value] Function __gmpz_clear: precondition got status valid. +PROJECT_FILE.i:120:[value] Function __gmpz_clear: precondition got status valid. [value] Done for function __gmpz_clear -PROJECT_FILE.i:246:[value] entering loop for the first time +PROJECT_FILE.i:257:[value] entering loop for the first time [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:250. + Called from PROJECT_FILE.i:261. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:251. + Called from PROJECT_FILE.i:262. [value] using specification for function __gmpz_cmp -PROJECT_FILE.i:119:[value] Function __gmpz_cmp: precondition got status valid. -PROJECT_FILE.i:120:[value] Function __gmpz_cmp: precondition got status valid. +PROJECT_FILE.i:129:[value] Function __gmpz_cmp: precondition got status valid. +PROJECT_FILE.i:130:[value] Function __gmpz_cmp: precondition got status valid. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:253. + Called from PROJECT_FILE.i:264. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:260. + Called from PROJECT_FILE.i:271. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:261. + Called from PROJECT_FILE.i:272. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:266. + Called from PROJECT_FILE.i:277. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:271. + Called from PROJECT_FILE.i:282. [value] Done for function __gmpz_clear [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:267. + Called from PROJECT_FILE.i:278. [value] Done for function __gmpz_cmp -PROJECT_FILE.i:268:[value] assigning non deterministic value for the first time +PROJECT_FILE.i:279:[value] assigning non deterministic value for the first time [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:269. + Called from PROJECT_FILE.i:280. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:281. + Called from PROJECT_FILE.i:292. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:271. + Called from PROJECT_FILE.i:282. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:282. + Called from PROJECT_FILE.i:293. [value] Done for function __gmpz_init [value] computing for function __gmpz_add <- main. - Called from PROJECT_FILE.i:283. + Called from PROJECT_FILE.i:294. [value] using specification for function __gmpz_add -PROJECT_FILE.i:133:[value] Function __gmpz_add: precondition got status valid. -PROJECT_FILE.i:134:[value] Function __gmpz_add: precondition got status valid. -PROJECT_FILE.i:135:[value] Function __gmpz_add: precondition got status valid. +PROJECT_FILE.i:143:[value] Function __gmpz_add: precondition got status valid. +PROJECT_FILE.i:144:[value] Function __gmpz_add: precondition got status valid. +PROJECT_FILE.i:145:[value] Function __gmpz_add: precondition got status valid. [value] Done for function __gmpz_add [value] computing for function __gmpz_set <- main. - Called from PROJECT_FILE.i:284. + Called from PROJECT_FILE.i:295. [value] Done for function __gmpz_set [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:285. + Called from PROJECT_FILE.i:296. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:286. + Called from PROJECT_FILE.i:297. [value] Done for function __gmpz_clear [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:291. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status unknown. + Called from PROJECT_FILE.i:302. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status unknown. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:294. + Called from PROJECT_FILE.i:305. [value] Done for function __gmpz_clear -PROJECT_FILE.i:298:[value] Assertion got status unknown. +PROJECT_FILE.i:309:[value] Assertion got status unknown. [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:303. + Called from PROJECT_FILE.i:314. [value] Done for function __gmpz_init [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:308. + Called from PROJECT_FILE.i:319. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:309. + Called from PROJECT_FILE.i:320. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:310. + Called from PROJECT_FILE.i:321. [value] Done for function __gmpz_init [value] computing for function __gmpz_add <- main. - Called from PROJECT_FILE.i:311. + Called from PROJECT_FILE.i:322. [value] Done for function __gmpz_add [value] computing for function __gmpz_set <- main. - Called from PROJECT_FILE.i:312. + Called from PROJECT_FILE.i:323. [value] Done for function __gmpz_set [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:313. + Called from PROJECT_FILE.i:324. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:314. + Called from PROJECT_FILE.i:325. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:315. + Called from PROJECT_FILE.i:326. [value] Done for function __gmpz_clear -PROJECT_FILE.i:318:[value] entering loop for the first time +PROJECT_FILE.i:329:[value] entering loop for the first time [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:322. + Called from PROJECT_FILE.i:333. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:323. + Called from PROJECT_FILE.i:334. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:326. + Called from PROJECT_FILE.i:337. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:332. + Called from PROJECT_FILE.i:343. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:333. + Called from PROJECT_FILE.i:344. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:334. + Called from PROJECT_FILE.i:345. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:344. + Called from PROJECT_FILE.i:355. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:345. + Called from PROJECT_FILE.i:356. [value] Done for function __gmpz_init [value] computing for function __gmpz_add <- main. - Called from PROJECT_FILE.i:346. + Called from PROJECT_FILE.i:357. [value] Done for function __gmpz_add [value] computing for function __gmpz_set <- main. - Called from PROJECT_FILE.i:347. + Called from PROJECT_FILE.i:358. [value] Done for function __gmpz_set [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:348. + Called from PROJECT_FILE.i:359. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:349. + Called from PROJECT_FILE.i:360. [value] Done for function __gmpz_clear [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:354. + Called from PROJECT_FILE.i:365. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:356. + Called from PROJECT_FILE.i:367. [value] Done for function __gmpz_clear -PROJECT_FILE.i:360:[value] Assertion got status unknown. +PROJECT_FILE.i:371:[value] Assertion got status unknown. [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:365. + Called from PROJECT_FILE.i:376. [value] Done for function __gmpz_init [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:370. + Called from PROJECT_FILE.i:381. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:371. + Called from PROJECT_FILE.i:382. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:372. + Called from PROJECT_FILE.i:383. [value] Done for function __gmpz_init [value] computing for function __gmpz_add <- main. - Called from PROJECT_FILE.i:373. + Called from PROJECT_FILE.i:384. [value] Done for function __gmpz_add [value] computing for function __gmpz_set <- main. - Called from PROJECT_FILE.i:374. + Called from PROJECT_FILE.i:385. [value] Done for function __gmpz_set [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:375. + Called from PROJECT_FILE.i:386. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:376. + Called from PROJECT_FILE.i:387. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:377. + Called from PROJECT_FILE.i:388. [value] Done for function __gmpz_clear -PROJECT_FILE.i:380:[value] entering loop for the first time +PROJECT_FILE.i:391:[value] entering loop for the first time [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:384. + Called from PROJECT_FILE.i:395. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:385. + Called from PROJECT_FILE.i:396. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:387. + Called from PROJECT_FILE.i:398. [value] Done for function __gmpz_clear [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:407. + Called from PROJECT_FILE.i:418. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:409. + Called from PROJECT_FILE.i:420. [value] Done for function __gmpz_clear -PROJECT_FILE.i:413:[value] Assertion got status unknown. +PROJECT_FILE.i:424:[value] Assertion got status unknown. [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:418. + Called from PROJECT_FILE.i:429. [value] Done for function __gmpz_init [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:421. + Called from PROJECT_FILE.i:432. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_set <- main. - Called from PROJECT_FILE.i:422. + Called from PROJECT_FILE.i:433. [value] Done for function __gmpz_set [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:423. + Called from PROJECT_FILE.i:434. [value] Done for function __gmpz_clear -PROJECT_FILE.i:426:[value] entering loop for the first time +PROJECT_FILE.i:437:[value] entering loop for the first time [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:430. + Called from PROJECT_FILE.i:441. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:431. + Called from PROJECT_FILE.i:442. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:434. + Called from PROJECT_FILE.i:445. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:440. + Called from PROJECT_FILE.i:451. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:441. + Called from PROJECT_FILE.i:452. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:442. + Called from PROJECT_FILE.i:453. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:452. + Called from PROJECT_FILE.i:463. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:453. + Called from PROJECT_FILE.i:464. [value] Done for function __gmpz_init [value] computing for function __gmpz_add <- main. - Called from PROJECT_FILE.i:454. + Called from PROJECT_FILE.i:465. [value] Done for function __gmpz_add [value] computing for function __gmpz_set <- main. - Called from PROJECT_FILE.i:455. + Called from PROJECT_FILE.i:466. [value] Done for function __gmpz_set [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:456. + Called from PROJECT_FILE.i:467. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:457. + Called from PROJECT_FILE.i:468. [value] Done for function __gmpz_clear [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:462. + Called from PROJECT_FILE.i:473. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:464. + Called from PROJECT_FILE.i:475. [value] Done for function __gmpz_clear -PROJECT_FILE.i:468:[value] Assertion got status unknown. +PROJECT_FILE.i:479:[value] Assertion got status unknown. [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:478. + Called from PROJECT_FILE.i:489. [value] Done for function __gmpz_init [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:479. + Called from PROJECT_FILE.i:490. [value] Done for function __gmpz_init [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:480. + Called from PROJECT_FILE.i:491. [value] Done for function __gmpz_init [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:483. + Called from PROJECT_FILE.i:494. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_set <- main. - Called from PROJECT_FILE.i:484. + Called from PROJECT_FILE.i:495. [value] Done for function __gmpz_set [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:485. + Called from PROJECT_FILE.i:496. [value] Done for function __gmpz_clear -PROJECT_FILE.i:488:[value] entering loop for the first time +PROJECT_FILE.i:499:[value] entering loop for the first time [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:492. + Called from PROJECT_FILE.i:503. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:493. + Called from PROJECT_FILE.i:504. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:496. + Called from PROJECT_FILE.i:507. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:501. + Called from PROJECT_FILE.i:512. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_set <- main. - Called from PROJECT_FILE.i:502. + Called from PROJECT_FILE.i:513. [value] Done for function __gmpz_set [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:503. + Called from PROJECT_FILE.i:514. [value] Done for function __gmpz_clear -PROJECT_FILE.i:506:[value] entering loop for the first time +PROJECT_FILE.i:517:[value] entering loop for the first time [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:510. + Called from PROJECT_FILE.i:521. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:511. + Called from PROJECT_FILE.i:522. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:514. + Called from PROJECT_FILE.i:525. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:519. + Called from PROJECT_FILE.i:530. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:578. + Called from PROJECT_FILE.i:589. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_set <- main. - Called from PROJECT_FILE.i:520. + Called from PROJECT_FILE.i:531. [value] Done for function __gmpz_set [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:579. + Called from PROJECT_FILE.i:590. [value] Done for function __gmpz_init [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:521. + Called from PROJECT_FILE.i:532. [value] Done for function __gmpz_clear [value] computing for function __gmpz_add <- main. - Called from PROJECT_FILE.i:580. + Called from PROJECT_FILE.i:591. [value] Done for function __gmpz_add -PROJECT_FILE.i:524:[value] entering loop for the first time +PROJECT_FILE.i:535:[value] entering loop for the first time [value] computing for function __gmpz_set <- main. - Called from PROJECT_FILE.i:581. + Called from PROJECT_FILE.i:592. [value] Done for function __gmpz_set [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:582. + Called from PROJECT_FILE.i:593. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:583. + Called from PROJECT_FILE.i:594. [value] Done for function __gmpz_clear [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:527. + Called from PROJECT_FILE.i:538. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:536. + Called from PROJECT_FILE.i:547. [value] Done for function __gmpz_init [value] computing for function __gmpz_add <- main. - Called from PROJECT_FILE.i:537. + Called from PROJECT_FILE.i:548. [value] Done for function __gmpz_add [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:566. + Called from PROJECT_FILE.i:577. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:538. + Called from PROJECT_FILE.i:549. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:567. + Called from PROJECT_FILE.i:578. [value] Done for function __gmpz_init [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:539. + Called from PROJECT_FILE.i:550. [value] Done for function __gmpz_init [value] computing for function __gmpz_add <- main. - Called from PROJECT_FILE.i:568. + Called from PROJECT_FILE.i:579. [value] Done for function __gmpz_add [value] computing for function __gmpz_add <- main. - Called from PROJECT_FILE.i:540. + Called from PROJECT_FILE.i:551. [value] Done for function __gmpz_add [value] computing for function __gmpz_set <- main. - Called from PROJECT_FILE.i:569. + Called from PROJECT_FILE.i:580. [value] Done for function __gmpz_set [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:541. + Called from PROJECT_FILE.i:552. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:570. + Called from PROJECT_FILE.i:581. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:542. + Called from PROJECT_FILE.i:553. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:571. + Called from PROJECT_FILE.i:582. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:543. + Called from PROJECT_FILE.i:554. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:544. + Called from PROJECT_FILE.i:555. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:554. + Called from PROJECT_FILE.i:565. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:555. + Called from PROJECT_FILE.i:566. [value] Done for function __gmpz_init [value] computing for function __gmpz_add <- main. - Called from PROJECT_FILE.i:556. + Called from PROJECT_FILE.i:567. [value] Done for function __gmpz_add [value] computing for function __gmpz_set <- main. - Called from PROJECT_FILE.i:557. + Called from PROJECT_FILE.i:568. [value] Done for function __gmpz_set [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:558. + Called from PROJECT_FILE.i:569. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:559. + Called from PROJECT_FILE.i:570. [value] Done for function __gmpz_clear [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:588. + Called from PROJECT_FILE.i:599. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:591. + Called from PROJECT_FILE.i:602. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:592. + Called from PROJECT_FILE.i:603. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:593. + Called from PROJECT_FILE.i:604. [value] Done for function __gmpz_clear -PROJECT_FILE.i:597:[value] Assertion got status unknown. +PROJECT_FILE.i:608:[value] Assertion got status unknown. [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:602. + Called from PROJECT_FILE.i:613. [value] Done for function __gmpz_init [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:605. + Called from PROJECT_FILE.i:616. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_set <- main. - Called from PROJECT_FILE.i:606. + Called from PROJECT_FILE.i:617. [value] Done for function __gmpz_set [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:607. + Called from PROJECT_FILE.i:618. [value] Done for function __gmpz_clear -PROJECT_FILE.i:610:[value] entering loop for the first time +PROJECT_FILE.i:621:[value] entering loop for the first time [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:614. + Called from PROJECT_FILE.i:625. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:615. + Called from PROJECT_FILE.i:626. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:618. + Called from PROJECT_FILE.i:629. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:624. + Called from PROJECT_FILE.i:635. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:625. + Called from PROJECT_FILE.i:636. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:626. + Called from PROJECT_FILE.i:637. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:636. + Called from PROJECT_FILE.i:647. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:637. + Called from PROJECT_FILE.i:648. [value] Done for function __gmpz_init [value] computing for function __gmpz_add <- main. - Called from PROJECT_FILE.i:638. + Called from PROJECT_FILE.i:649. [value] Done for function __gmpz_add [value] computing for function __gmpz_set <- main. - Called from PROJECT_FILE.i:639. + Called from PROJECT_FILE.i:650. [value] Done for function __gmpz_set [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:640. + Called from PROJECT_FILE.i:651. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:641. + Called from PROJECT_FILE.i:652. [value] Done for function __gmpz_clear [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:646. + Called from PROJECT_FILE.i:657. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:648. + Called from PROJECT_FILE.i:659. [value] Done for function __gmpz_clear -PROJECT_FILE.i:652:[value] Assertion got status unknown. +PROJECT_FILE.i:663:[value] Assertion got status unknown. [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:659. + Called from PROJECT_FILE.i:670. [value] Done for function __gmpz_init [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:662. + Called from PROJECT_FILE.i:673. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_set <- main. - Called from PROJECT_FILE.i:663. + Called from PROJECT_FILE.i:674. [value] Done for function __gmpz_set [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:664. + Called from PROJECT_FILE.i:675. [value] Done for function __gmpz_clear -PROJECT_FILE.i:667:[value] entering loop for the first time +PROJECT_FILE.i:678:[value] entering loop for the first time [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:671. + Called from PROJECT_FILE.i:682. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:672. + Called from PROJECT_FILE.i:683. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:675. + Called from PROJECT_FILE.i:686. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:685. + Called from PROJECT_FILE.i:696. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:686. + Called from PROJECT_FILE.i:697. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:687. + Called from PROJECT_FILE.i:698. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:688. + Called from PROJECT_FILE.i:699. [value] Done for function __gmpz_init -PROJECT_FILE.i:689:[value] Assertion got status valid. +PROJECT_FILE.i:700:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:690. + Called from PROJECT_FILE.i:701. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_tdiv_r <- main. - Called from PROJECT_FILE.i:691. + Called from PROJECT_FILE.i:702. [value] using specification for function __gmpz_tdiv_r -PROJECT_FILE.i:157:[value] Function __gmpz_tdiv_r: precondition got status valid. -PROJECT_FILE.i:158:[value] Function __gmpz_tdiv_r: precondition got status valid. -PROJECT_FILE.i:159:[value] Function __gmpz_tdiv_r: precondition got status valid. +PROJECT_FILE.i:167:[value] Function __gmpz_tdiv_r: precondition got status valid. +PROJECT_FILE.i:168:[value] Function __gmpz_tdiv_r: precondition got status valid. +PROJECT_FILE.i:169:[value] Function __gmpz_tdiv_r: precondition got status valid. [value] Done for function __gmpz_tdiv_r [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:692. + Called from PROJECT_FILE.i:703. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:761. + Called from PROJECT_FILE.i:772. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:698. + Called from PROJECT_FILE.i:709. [value] Done for function __gmpz_init [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:762. + Called from PROJECT_FILE.i:773. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:763. + Called from PROJECT_FILE.i:774. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:701. + Called from PROJECT_FILE.i:712. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_set <- main. - Called from PROJECT_FILE.i:702. + Called from PROJECT_FILE.i:713. [value] Done for function __gmpz_set [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:703. + Called from PROJECT_FILE.i:714. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:773. + Called from PROJECT_FILE.i:784. [value] Done for function __gmpz_init_set_si -PROJECT_FILE.i:706:[value] entering loop for the first time +PROJECT_FILE.i:717:[value] entering loop for the first time [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:774. + Called from PROJECT_FILE.i:785. [value] Done for function __gmpz_init [value] computing for function __gmpz_add <- main. - Called from PROJECT_FILE.i:775. + Called from PROJECT_FILE.i:786. [value] Done for function __gmpz_add [value] computing for function __gmpz_set <- main. - Called from PROJECT_FILE.i:776. + Called from PROJECT_FILE.i:787. [value] Done for function __gmpz_set [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:713. + Called from PROJECT_FILE.i:724. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:777. + Called from PROJECT_FILE.i:788. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:714. + Called from PROJECT_FILE.i:725. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:778. + Called from PROJECT_FILE.i:789. [value] Done for function __gmpz_clear [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:715. + Called from PROJECT_FILE.i:726. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:716. + Called from PROJECT_FILE.i:727. [value] Done for function __gmpz_init -PROJECT_FILE.i:717:[value] Assertion got status valid. +PROJECT_FILE.i:728:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:718. + Called from PROJECT_FILE.i:729. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_tdiv_q <- main. - Called from PROJECT_FILE.i:720. + Called from PROJECT_FILE.i:731. [value] using specification for function __gmpz_tdiv_q -PROJECT_FILE.i:151:[value] Function __gmpz_tdiv_q: precondition got status valid. -PROJECT_FILE.i:152:[value] Function __gmpz_tdiv_q: precondition got status valid. -PROJECT_FILE.i:153:[value] Function __gmpz_tdiv_q: precondition got status valid. +PROJECT_FILE.i:161:[value] Function __gmpz_tdiv_q: precondition got status valid. +PROJECT_FILE.i:162:[value] Function __gmpz_tdiv_q: precondition got status valid. +PROJECT_FILE.i:163:[value] Function __gmpz_tdiv_q: precondition got status valid. [value] Done for function __gmpz_tdiv_q [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:721. + Called from PROJECT_FILE.i:732. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:724. + Called from PROJECT_FILE.i:735. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:725. + Called from PROJECT_FILE.i:736. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:726. + Called from PROJECT_FILE.i:737. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:759. + Called from PROJECT_FILE.i:770. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:733. + Called from PROJECT_FILE.i:744. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:761. + Called from PROJECT_FILE.i:772. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:734. + Called from PROJECT_FILE.i:745. [value] Done for function __gmpz_init [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:762. + Called from PROJECT_FILE.i:773. [value] Done for function __gmpz_clear [value] computing for function __gmpz_mul <- main. - Called from PROJECT_FILE.i:735. + Called from PROJECT_FILE.i:746. [value] using specification for function __gmpz_mul -PROJECT_FILE.i:145:[value] Function __gmpz_mul: precondition got status valid. -PROJECT_FILE.i:146:[value] Function __gmpz_mul: precondition got status valid. -PROJECT_FILE.i:147:[value] Function __gmpz_mul: precondition got status valid. +PROJECT_FILE.i:155:[value] Function __gmpz_mul: precondition got status valid. +PROJECT_FILE.i:156:[value] Function __gmpz_mul: precondition got status valid. +PROJECT_FILE.i:157:[value] Function __gmpz_mul: precondition got status valid. [value] Done for function __gmpz_mul [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:763. + Called from PROJECT_FILE.i:774. [value] Done for function __gmpz_clear [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:736. + Called from PROJECT_FILE.i:747. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:737. + Called from PROJECT_FILE.i:748. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:738. + Called from PROJECT_FILE.i:749. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:748. + Called from PROJECT_FILE.i:759. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:749. + Called from PROJECT_FILE.i:760. [value] Done for function __gmpz_init [value] computing for function __gmpz_add <- main. - Called from PROJECT_FILE.i:750. + Called from PROJECT_FILE.i:761. [value] Done for function __gmpz_add [value] computing for function __gmpz_set <- main. - Called from PROJECT_FILE.i:751. + Called from PROJECT_FILE.i:762. [value] Done for function __gmpz_set [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:759. + Called from PROJECT_FILE.i:770. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:752. + Called from PROJECT_FILE.i:763. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:753. + Called from PROJECT_FILE.i:764. [value] Done for function __gmpz_clear [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:783. + Called from PROJECT_FILE.i:794. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:786. + Called from PROJECT_FILE.i:797. [value] Done for function __gmpz_clear [value] Recording results for main [value] done for function main @@ -677,33 +677,53 @@ struct __anonstruct___mpz_struct_1 { }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; typedef __mpz_struct mpz_t[1]; -/*@ ensures \valid(\old(x)); - allocates \nothing; - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); - allocates \nothing; + allocates \old(z); + assigns *z; assigns *z \from n; */ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); allocates \nothing; - assigns *z; + assigns *z; + assigns *z \from *z_orig; + */ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); @@ -716,7 +736,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); - allocates \nothing; + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -729,7 +750,10 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); @@ -737,6 +761,7 @@ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, requires \valid(z3); allocates \nothing; assigns *z1; + assigns *z1 \from *z2, *z3; */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, @@ -745,7 +770,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -755,6 +782,7 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, requires \valid(z3); allocates \nothing; assigns *z1; + assigns *z1 \from *z2, *z3; */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, @@ -765,6 +793,7 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, requires \valid(z3); allocates \nothing; assigns *z1; + assigns *z1 \from *z2, *z3; */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, @@ -775,6 +804,7 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, requires \valid(z3); allocates \nothing; assigns *z1; + assigns *z1 \from *z2, *z3; */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, @@ -782,7 +812,10 @@ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -797,7 +830,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/quantif.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/quantif.res.oracle index 6f90ee2cb0f5a5e869b5c3d2787e7e0ec8f19924..ea6aea5ba33793f51f0735ca9c037e2468f79073 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/quantif.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/quantif.res.oracle @@ -2,110 +2,110 @@ [value] Computing initial state [value] Initial state computed [value] Values of globals at initialization -PROJECT_FILE.i:233:[value] Assertion got status unknown. -PROJECT_FILE.i:239:[value] entering loop for the first time -PROJECT_FILE.i:251:[value] assigning non deterministic value for the first time +PROJECT_FILE.i:244:[value] Assertion got status unknown. +PROJECT_FILE.i:250:[value] entering loop for the first time +PROJECT_FILE.i:262:[value] assigning non deterministic value for the first time [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:254. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status valid. + Called from PROJECT_FILE.i:265. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status valid. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:260:[value] Assertion got status unknown. -PROJECT_FILE.i:266:[value] entering loop for the first time +PROJECT_FILE.i:271:[value] Assertion got status unknown. +PROJECT_FILE.i:277:[value] entering loop for the first time [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:276. + Called from PROJECT_FILE.i:287. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:281:[value] Assertion got status unknown. -PROJECT_FILE.i:287:[value] entering loop for the first time +PROJECT_FILE.i:292:[value] Assertion got status unknown. +PROJECT_FILE.i:298:[value] entering loop for the first time [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:297. + Called from PROJECT_FILE.i:308. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:302:[value] Assertion got status unknown. -PROJECT_FILE.i:308:[value] entering loop for the first time +PROJECT_FILE.i:313:[value] Assertion got status unknown. +PROJECT_FILE.i:319:[value] entering loop for the first time [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:318. + Called from PROJECT_FILE.i:329. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:323:[value] Assertion got status unknown. -PROJECT_FILE.i:334:[value] entering loop for the first time -PROJECT_FILE.i:338:[value] entering loop for the first time -PROJECT_FILE.i:342:[value] entering loop for the first time +PROJECT_FILE.i:334:[value] Assertion got status unknown. +PROJECT_FILE.i:345:[value] entering loop for the first time +PROJECT_FILE.i:349:[value] entering loop for the first time +PROJECT_FILE.i:353:[value] entering loop for the first time [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:356. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status unknown. + Called from PROJECT_FILE.i:367. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status unknown. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:362:[value] Assertion got status unknown. -PROJECT_FILE.i:368:[value] entering loop for the first time +PROJECT_FILE.i:373:[value] Assertion got status unknown. +PROJECT_FILE.i:379:[value] entering loop for the first time [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:378. + Called from PROJECT_FILE.i:389. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:383:[value] Assertion got status unknown. -PROJECT_FILE.i:391:[value] entering loop for the first time -PROJECT_FILE.i:397:[value] Assertion got status valid. +PROJECT_FILE.i:394:[value] Assertion got status unknown. +PROJECT_FILE.i:402:[value] entering loop for the first time +PROJECT_FILE.i:408:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:398. + Called from PROJECT_FILE.i:409. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:406:[value] entering loop for the first time -PROJECT_FILE.i:409:[value] Assertion got status valid. +PROJECT_FILE.i:417:[value] entering loop for the first time +PROJECT_FILE.i:420:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:410. + Called from PROJECT_FILE.i:421. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:398. + Called from PROJECT_FILE.i:409. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:410. + Called from PROJECT_FILE.i:421. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:398. + Called from PROJECT_FILE.i:409. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:410. + Called from PROJECT_FILE.i:421. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:410. + Called from PROJECT_FILE.i:421. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:398. + Called from PROJECT_FILE.i:409. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:410. + Called from PROJECT_FILE.i:421. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:398. + Called from PROJECT_FILE.i:409. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:410. + Called from PROJECT_FILE.i:421. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:398. + Called from PROJECT_FILE.i:409. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:410. + Called from PROJECT_FILE.i:421. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:410. + Called from PROJECT_FILE.i:421. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:433. + Called from PROJECT_FILE.i:444. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] Recording results for main @@ -121,29 +121,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -155,6 +179,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -164,13 +190,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -178,7 +209,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -186,7 +219,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -194,7 +229,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -202,14 +239,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -224,7 +266,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/result.1.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/result.1.res.oracle index f01ff012335edb9f16b4f0d53c1d0afa648930e9..4aa35975e36e93060c175257b1b3d014746e7624 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/result.1.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/result.1.res.oracle @@ -5,109 +5,109 @@ tests/e-acsl-runtime/result.i:7:[e-acsl] warning: missing guard for ensuring tha [value] Values of globals at initialization Y ∈ {1} [value] computing for function f <- main. - Called from PROJECT_FILE.i:305. + Called from PROJECT_FILE.i:316. [value] computing for function __gmpz_init_set_si <- f <- main. - Called from PROJECT_FILE.i:245. + Called from PROJECT_FILE.i:256. [value] using specification for function __gmpz_init_set_si -PROJECT_FILE.i:82:[value] Function __gmpz_init_set_si: postcondition got status valid. +PROJECT_FILE.i:86:[value] Function __gmpz_init_set_si: postcondition got status valid. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- f <- main. - Called from PROJECT_FILE.i:246. + Called from PROJECT_FILE.i:257. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- f <- main. - Called from PROJECT_FILE.i:247. + Called from PROJECT_FILE.i:258. [value] using specification for function __gmpz_init -PROJECT_FILE.i:69:[value] Function __gmpz_init: postcondition got status valid. +PROJECT_FILE.i:67:[value] Function __gmpz_init: postcondition got status valid. [value] Done for function __gmpz_init [value] computing for function __gmpz_sub <- f <- main. - Called from PROJECT_FILE.i:248. + Called from PROJECT_FILE.i:259. [value] using specification for function __gmpz_sub -PROJECT_FILE.i:139:[value] Function __gmpz_sub: precondition got status valid. -PROJECT_FILE.i:140:[value] Function __gmpz_sub: precondition got status valid. -PROJECT_FILE.i:141:[value] Function __gmpz_sub: precondition got status valid. +PROJECT_FILE.i:149:[value] Function __gmpz_sub: precondition got status valid. +PROJECT_FILE.i:150:[value] Function __gmpz_sub: precondition got status valid. +PROJECT_FILE.i:151:[value] Function __gmpz_sub: precondition got status valid. [value] Done for function __gmpz_sub [value] computing for function __gmpz_get_ui <- f <- main. - Called from PROJECT_FILE.i:249. + Called from PROJECT_FILE.i:260. [value] using specification for function __gmpz_get_ui -PROJECT_FILE.i:180:[value] Function __gmpz_get_ui: precondition got status valid. +PROJECT_FILE.i:190:[value] Function __gmpz_get_ui: precondition got status valid. [value] Done for function __gmpz_get_ui [value] computing for function __gmpz_init_set_si <- f <- main. - Called from PROJECT_FILE.i:250. + Called from PROJECT_FILE.i:261. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- f <- main. - Called from PROJECT_FILE.i:251. + Called from PROJECT_FILE.i:262. [value] using specification for function __gmpz_cmp -PROJECT_FILE.i:119:[value] Function __gmpz_cmp: precondition got status valid. -PROJECT_FILE.i:120:[value] Function __gmpz_cmp: precondition got status valid. +PROJECT_FILE.i:129:[value] Function __gmpz_cmp: precondition got status valid. +PROJECT_FILE.i:130:[value] Function __gmpz_cmp: precondition got status valid. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- f <- main. - Called from PROJECT_FILE.i:252. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status unknown. + Called from PROJECT_FILE.i:263. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status unknown. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- f <- main. - Called from PROJECT_FILE.i:254. + Called from PROJECT_FILE.i:265. [value] using specification for function __gmpz_clear -PROJECT_FILE.i:111:[value] Function __gmpz_clear: precondition got status valid. +PROJECT_FILE.i:120:[value] Function __gmpz_clear: precondition got status valid. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- f <- main. - Called from PROJECT_FILE.i:255. + Called from PROJECT_FILE.i:266. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- f <- main. - Called from PROJECT_FILE.i:256. + Called from PROJECT_FILE.i:267. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- f <- main. - Called from PROJECT_FILE.i:257. + Called from PROJECT_FILE.i:268. [value] Done for function __gmpz_clear -PROJECT_FILE.i:230:[value] Function f: postcondition got status valid. +PROJECT_FILE.i:241:[value] Function f: postcondition got status valid. [value] Recording results for f [value] Done for function f [value] computing for function g <- main. - Called from PROJECT_FILE.i:306. + Called from PROJECT_FILE.i:317. [value] computing for function __gmpz_init_set_si <- g <- main. - Called from PROJECT_FILE.i:271. + Called from PROJECT_FILE.i:282. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- g <- main. - Called from PROJECT_FILE.i:272. + Called from PROJECT_FILE.i:283. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- g <- main. - Called from PROJECT_FILE.i:273. + Called from PROJECT_FILE.i:284. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- g <- main. - Called from PROJECT_FILE.i:274. + Called from PROJECT_FILE.i:285. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- g <- main. - Called from PROJECT_FILE.i:275. + Called from PROJECT_FILE.i:286. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- g <- main. - Called from PROJECT_FILE.i:276. + Called from PROJECT_FILE.i:287. [value] Done for function __gmpz_clear -PROJECT_FILE.i:264:[value] Function g: postcondition got status valid. +PROJECT_FILE.i:275:[value] Function g: postcondition got status valid. [value] Recording results for g [value] Done for function g [value] computing for function h <- main. - Called from PROJECT_FILE.i:307. + Called from PROJECT_FILE.i:318. [value] computing for function __gmpz_init_set_si <- h <- main. - Called from PROJECT_FILE.i:291. + Called from PROJECT_FILE.i:302. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- h <- main. - Called from PROJECT_FILE.i:292. + Called from PROJECT_FILE.i:303. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- h <- main. - Called from PROJECT_FILE.i:293. + Called from PROJECT_FILE.i:304. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- h <- main. - Called from PROJECT_FILE.i:294. + Called from PROJECT_FILE.i:305. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- h <- main. - Called from PROJECT_FILE.i:295. + Called from PROJECT_FILE.i:306. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- h <- main. - Called from PROJECT_FILE.i:296. + Called from PROJECT_FILE.i:307. [value] Done for function __gmpz_clear -PROJECT_FILE.i:282:[value] Function h: postcondition got status valid. +PROJECT_FILE.i:293:[value] Function h: postcondition got status valid. [value] Recording results for h [value] Done for function h [value] Recording results for main @@ -134,32 +134,53 @@ struct __anonstruct___mpz_struct_1 { }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; typedef __mpz_struct mpz_t[1]; -/*@ ensures \valid(\old(x)); - allocates \nothing; - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); - allocates \nothing; + allocates \old(z); + assigns *z; assigns *z \from n; */ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -171,7 +192,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); - allocates \nothing; + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -184,13 +206,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -200,6 +227,7 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, requires \valid(z3); allocates \nothing; assigns *z1; + assigns *z1 \from *z2, *z3; */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, @@ -208,7 +236,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -216,7 +246,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -224,14 +256,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -247,7 +284,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/result.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/result.res.oracle index bb6f07a5fded769c379206f3ab5a075fac083fb8..2c3e4bcb077e6c92d3d4ecdf8b3e961b6a95d834 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/result.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/result.res.oracle @@ -4,31 +4,31 @@ [value] Values of globals at initialization Y ∈ {1} [value] computing for function f <- main. - Called from PROJECT_FILE.i:263. + Called from PROJECT_FILE.i:274. [value] computing for function e_acsl_assert <- f <- main. - Called from PROJECT_FILE.i:238. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status valid. + Called from PROJECT_FILE.i:249. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status valid. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:230:[value] Function f: postcondition got status valid. +PROJECT_FILE.i:241:[value] Function f: postcondition got status valid. [value] Recording results for f [value] Done for function f [value] computing for function g <- main. - Called from PROJECT_FILE.i:264. + Called from PROJECT_FILE.i:275. [value] computing for function e_acsl_assert <- g <- main. - Called from PROJECT_FILE.i:247. + Called from PROJECT_FILE.i:258. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:244:[value] Function g: postcondition got status valid. +PROJECT_FILE.i:255:[value] Function g: postcondition got status valid. [value] Recording results for g [value] Done for function g [value] computing for function h <- main. - Called from PROJECT_FILE.i:265. + Called from PROJECT_FILE.i:276. [value] computing for function e_acsl_assert <- h <- main. - Called from PROJECT_FILE.i:256. + Called from PROJECT_FILE.i:267. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:251:[value] Function h: postcondition got status valid. +PROJECT_FILE.i:262:[value] Function h: postcondition got status valid. [value] Recording results for h [value] Done for function h [value] Recording results for main @@ -51,29 +51,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -85,6 +109,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -94,13 +120,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -108,7 +139,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -116,7 +149,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -124,7 +159,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -132,14 +169,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -154,7 +196,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/sizeof.1.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/sizeof.1.res.oracle index a86fb6666f0bef5e73ba42250e8b6de576f87d13..6bf690899cf42b7ac5748530295a1806c92bf239 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/sizeof.1.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/sizeof.1.res.oracle @@ -2,53 +2,53 @@ [value] Computing initial state [value] Initial state computed [value] Values of globals at initialization -PROJECT_FILE.i:235:[value] Assertion got status valid. +PROJECT_FILE.i:246:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:240. + Called from PROJECT_FILE.i:251. [value] using specification for function __gmpz_init_set_si -PROJECT_FILE.i:82:[value] Function __gmpz_init_set_si: postcondition got status valid. +PROJECT_FILE.i:86:[value] Function __gmpz_init_set_si: postcondition got status valid. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:241. + Called from PROJECT_FILE.i:252. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:242. + Called from PROJECT_FILE.i:253. [value] using specification for function __gmpz_cmp -PROJECT_FILE.i:119:[value] Function __gmpz_cmp: precondition got status valid. -PROJECT_FILE.i:120:[value] Function __gmpz_cmp: precondition got status valid. +PROJECT_FILE.i:129:[value] Function __gmpz_cmp: precondition got status valid. +PROJECT_FILE.i:130:[value] Function __gmpz_cmp: precondition got status valid. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:243. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status unknown. + Called from PROJECT_FILE.i:254. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status unknown. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:245. + Called from PROJECT_FILE.i:256. [value] using specification for function __gmpz_clear -PROJECT_FILE.i:111:[value] Function __gmpz_clear: precondition got status valid. +PROJECT_FILE.i:120:[value] Function __gmpz_clear: precondition got status valid. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:246. + Called from PROJECT_FILE.i:257. [value] Done for function __gmpz_clear -PROJECT_FILE.i:250:[value] Assertion got status valid. +PROJECT_FILE.i:261:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:255. + Called from PROJECT_FILE.i:266. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:256. + Called from PROJECT_FILE.i:267. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:257. + Called from PROJECT_FILE.i:268. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:258. + Called from PROJECT_FILE.i:269. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:260. + Called from PROJECT_FILE.i:271. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:261. + Called from PROJECT_FILE.i:272. [value] Done for function __gmpz_clear [value] Recording results for main [value] done for function main @@ -65,31 +65,53 @@ struct __anonstruct___mpz_struct_1 { }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; typedef __mpz_struct mpz_t[1]; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); - allocates \nothing; + allocates \old(z); + assigns *z; assigns *z \from n; */ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -101,7 +123,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); - allocates \nothing; + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -114,13 +137,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -128,7 +156,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -136,7 +166,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -144,7 +176,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -152,14 +186,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -174,7 +213,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/sizeof.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/sizeof.res.oracle index a5e581636b3907e3a7e4dfb274a401fdda6de4a9..2fc2258fa7165776809bf087fd88ecbca3715fe3 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/sizeof.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/sizeof.res.oracle @@ -2,15 +2,15 @@ [value] Computing initial state [value] Initial state computed [value] Values of globals at initialization -PROJECT_FILE.i:235:[value] Assertion got status valid. +PROJECT_FILE.i:246:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:236. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status valid. + Called from PROJECT_FILE.i:247. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status valid. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert -PROJECT_FILE.i:238:[value] Assertion got status valid. +PROJECT_FILE.i:249:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:239. + Called from PROJECT_FILE.i:250. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] Recording results for main @@ -27,29 +27,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -61,6 +85,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -70,13 +96,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -84,7 +115,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -92,7 +125,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -100,7 +135,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -108,14 +145,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -130,7 +172,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/stmt_contract.1.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/stmt_contract.1.res.oracle index 0d645b4a265e8e7b07e10ad86faad5ebaf911b73..d15dc0362d9dd6dba70af8f25e25c1fbb4905bd6 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/stmt_contract.1.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/stmt_contract.1.res.oracle @@ -3,439 +3,439 @@ [value] Initial state computed [value] Values of globals at initialization [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:243. + Called from PROJECT_FILE.i:254. [value] using specification for function __gmpz_init_set_si -PROJECT_FILE.i:82:[value] Function __gmpz_init_set_si: postcondition got status valid. +PROJECT_FILE.i:86:[value] Function __gmpz_init_set_si: postcondition got status valid. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:244. + Called from PROJECT_FILE.i:255. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:245. + Called from PROJECT_FILE.i:256. [value] using specification for function __gmpz_cmp -PROJECT_FILE.i:119:[value] Function __gmpz_cmp: precondition got status valid. -PROJECT_FILE.i:120:[value] Function __gmpz_cmp: precondition got status valid. +PROJECT_FILE.i:129:[value] Function __gmpz_cmp: precondition got status valid. +PROJECT_FILE.i:130:[value] Function __gmpz_cmp: precondition got status valid. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:246. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status unknown. + Called from PROJECT_FILE.i:257. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status unknown. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:247. + Called from PROJECT_FILE.i:258. [value] using specification for function __gmpz_clear -PROJECT_FILE.i:111:[value] Function __gmpz_clear: precondition got status valid. +PROJECT_FILE.i:120:[value] Function __gmpz_clear: precondition got status valid. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:248. + Called from PROJECT_FILE.i:259. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:260. + Called from PROJECT_FILE.i:271. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:261. + Called from PROJECT_FILE.i:272. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:262. + Called from PROJECT_FILE.i:273. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:263. + Called from PROJECT_FILE.i:274. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:264. + Called from PROJECT_FILE.i:275. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:265. + Called from PROJECT_FILE.i:276. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:266. + Called from PROJECT_FILE.i:277. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:267. + Called from PROJECT_FILE.i:278. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:268. + Called from PROJECT_FILE.i:279. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:269. + Called from PROJECT_FILE.i:280. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:277. + Called from PROJECT_FILE.i:288. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:278. + Called from PROJECT_FILE.i:289. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:279. + Called from PROJECT_FILE.i:290. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:280. + Called from PROJECT_FILE.i:291. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:281. + Called from PROJECT_FILE.i:292. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:282. + Called from PROJECT_FILE.i:293. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:295. + Called from PROJECT_FILE.i:306. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:296. + Called from PROJECT_FILE.i:307. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:297. + Called from PROJECT_FILE.i:308. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:298. + Called from PROJECT_FILE.i:309. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:299. + Called from PROJECT_FILE.i:310. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:300. + Called from PROJECT_FILE.i:311. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:301. + Called from PROJECT_FILE.i:312. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:302. + Called from PROJECT_FILE.i:313. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:303. + Called from PROJECT_FILE.i:314. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:304. + Called from PROJECT_FILE.i:315. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:305. + Called from PROJECT_FILE.i:316. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:306. + Called from PROJECT_FILE.i:317. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:338. + Called from PROJECT_FILE.i:349. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:339. + Called from PROJECT_FILE.i:350. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:340. + Called from PROJECT_FILE.i:351. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:341. + Called from PROJECT_FILE.i:352. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:342. + Called from PROJECT_FILE.i:353. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:343. + Called from PROJECT_FILE.i:354. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:344. + Called from PROJECT_FILE.i:355. [value] using specification for function __gmpz_init -PROJECT_FILE.i:69:[value] Function __gmpz_init: postcondition got status valid. +PROJECT_FILE.i:67:[value] Function __gmpz_init: postcondition got status valid. [value] Done for function __gmpz_init [value] computing for function __gmpz_add <- main. - Called from PROJECT_FILE.i:345. + Called from PROJECT_FILE.i:356. [value] using specification for function __gmpz_add -PROJECT_FILE.i:133:[value] Function __gmpz_add: precondition got status valid. -PROJECT_FILE.i:134:[value] Function __gmpz_add: precondition got status valid. -PROJECT_FILE.i:135:[value] Function __gmpz_add: precondition got status valid. +PROJECT_FILE.i:143:[value] Function __gmpz_add: precondition got status valid. +PROJECT_FILE.i:144:[value] Function __gmpz_add: precondition got status valid. +PROJECT_FILE.i:145:[value] Function __gmpz_add: precondition got status valid. [value] Done for function __gmpz_add [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:346. + Called from PROJECT_FILE.i:357. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:347. + Called from PROJECT_FILE.i:358. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:348. + Called from PROJECT_FILE.i:359. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:349. + Called from PROJECT_FILE.i:360. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:350. + Called from PROJECT_FILE.i:361. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:351. + Called from PROJECT_FILE.i:362. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:352. + Called from PROJECT_FILE.i:363. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:353. + Called from PROJECT_FILE.i:364. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:354. + Called from PROJECT_FILE.i:365. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:355. + Called from PROJECT_FILE.i:366. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:356. + Called from PROJECT_FILE.i:367. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:360. + Called from PROJECT_FILE.i:371. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:361. + Called from PROJECT_FILE.i:372. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:362. + Called from PROJECT_FILE.i:373. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:363. + Called from PROJECT_FILE.i:374. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:364. + Called from PROJECT_FILE.i:375. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:365. + Called from PROJECT_FILE.i:376. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:366. + Called from PROJECT_FILE.i:377. [value] Done for function __gmpz_init [value] computing for function __gmpz_add <- main. - Called from PROJECT_FILE.i:367. + Called from PROJECT_FILE.i:378. [value] Done for function __gmpz_add [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:368. + Called from PROJECT_FILE.i:379. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:369. + Called from PROJECT_FILE.i:380. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:370. + Called from PROJECT_FILE.i:381. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:371. + Called from PROJECT_FILE.i:382. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:372. + Called from PROJECT_FILE.i:383. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:373. + Called from PROJECT_FILE.i:384. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:374. + Called from PROJECT_FILE.i:385. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:400. + Called from PROJECT_FILE.i:411. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:401. + Called from PROJECT_FILE.i:412. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:402. + Called from PROJECT_FILE.i:413. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:408. + Called from PROJECT_FILE.i:419. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:409. + Called from PROJECT_FILE.i:420. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:410. + Called from PROJECT_FILE.i:421. [value] Done for function __gmpz_cmp -PROJECT_FILE.i:411:[value] assigning non deterministic value for the first time +PROJECT_FILE.i:422:[value] assigning non deterministic value for the first time [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:412. + Called from PROJECT_FILE.i:423. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:413. + Called from PROJECT_FILE.i:424. [value] Done for function __gmpz_clear [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:415. + Called from PROJECT_FILE.i:426. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:416. + Called from PROJECT_FILE.i:427. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:417. + Called from PROJECT_FILE.i:428. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:422. + Called from PROJECT_FILE.i:433. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:423. + Called from PROJECT_FILE.i:434. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:424. + Called from PROJECT_FILE.i:435. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:426. + Called from PROJECT_FILE.i:437. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:427. + Called from PROJECT_FILE.i:438. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:435. + Called from PROJECT_FILE.i:446. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:436. + Called from PROJECT_FILE.i:447. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:437. + Called from PROJECT_FILE.i:448. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:439. + Called from PROJECT_FILE.i:450. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:440. + Called from PROJECT_FILE.i:451. [value] Done for function __gmpz_clear [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:442. + Called from PROJECT_FILE.i:453. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:444. + Called from PROJECT_FILE.i:455. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:449. + Called from PROJECT_FILE.i:460. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:450. + Called from PROJECT_FILE.i:461. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:451. + Called from PROJECT_FILE.i:462. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:453. + Called from PROJECT_FILE.i:464. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:454. + Called from PROJECT_FILE.i:465. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:464. + Called from PROJECT_FILE.i:475. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:465. + Called from PROJECT_FILE.i:476. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init <- main. - Called from PROJECT_FILE.i:466. + Called from PROJECT_FILE.i:477. [value] Done for function __gmpz_init [value] computing for function __gmpz_add <- main. - Called from PROJECT_FILE.i:467. + Called from PROJECT_FILE.i:478. [value] Done for function __gmpz_add [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:468. + Called from PROJECT_FILE.i:479. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:469. + Called from PROJECT_FILE.i:480. [value] Done for function __gmpz_cmp [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:471. + Called from PROJECT_FILE.i:482. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:472. + Called from PROJECT_FILE.i:483. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:473. + Called from PROJECT_FILE.i:484. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:474. + Called from PROJECT_FILE.i:485. [value] Done for function __gmpz_clear [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:476. + Called from PROJECT_FILE.i:487. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:478. + Called from PROJECT_FILE.i:489. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:479. + Called from PROJECT_FILE.i:490. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:480. + Called from PROJECT_FILE.i:491. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:489. + Called from PROJECT_FILE.i:500. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:490. + Called from PROJECT_FILE.i:501. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:491. + Called from PROJECT_FILE.i:502. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:492. + Called from PROJECT_FILE.i:503. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:493. + Called from PROJECT_FILE.i:504. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:494. + Called from PROJECT_FILE.i:505. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:500. + Called from PROJECT_FILE.i:511. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:501. + Called from PROJECT_FILE.i:512. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:502. + Called from PROJECT_FILE.i:513. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:503. + Called from PROJECT_FILE.i:514. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:504. + Called from PROJECT_FILE.i:515. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:505. + Called from PROJECT_FILE.i:516. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:520. + Called from PROJECT_FILE.i:531. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:521. + Called from PROJECT_FILE.i:532. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:522. + Called from PROJECT_FILE.i:533. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:523. + Called from PROJECT_FILE.i:534. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:524. + Called from PROJECT_FILE.i:535. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:525. + Called from PROJECT_FILE.i:536. [value] Done for function __gmpz_clear [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:529. + Called from PROJECT_FILE.i:540. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:530. + Called from PROJECT_FILE.i:541. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:531. + Called from PROJECT_FILE.i:542. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:532. + Called from PROJECT_FILE.i:543. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:533. + Called from PROJECT_FILE.i:544. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:534. + Called from PROJECT_FILE.i:545. [value] Done for function __gmpz_clear [value] Recording results for main [value] done for function main @@ -453,32 +453,53 @@ struct __anonstruct___mpz_struct_1 { }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; typedef __mpz_struct mpz_t[1]; -/*@ ensures \valid(\old(x)); - allocates \nothing; - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); - allocates \nothing; + allocates \old(z); + assigns *z; assigns *z \from n; */ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -490,7 +511,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); - allocates \nothing; + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -503,7 +525,10 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); @@ -511,6 +536,7 @@ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, requires \valid(z3); allocates \nothing; assigns *z1; + assigns *z1 \from *z2, *z3; */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, @@ -519,7 +545,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -527,7 +555,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -535,7 +565,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -543,14 +575,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -565,7 +602,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/stmt_contract.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/stmt_contract.res.oracle index b88df09198c04377dd6495293249d1e73f60074b..9b2ba4827051e080f84682a9169803ac47761472 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/stmt_contract.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/stmt_contract.res.oracle @@ -3,76 +3,76 @@ [value] Initial state computed [value] Values of globals at initialization [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:239. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status valid. + Called from PROJECT_FILE.i:250. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status valid. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:245. + Called from PROJECT_FILE.i:256. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:246. + Called from PROJECT_FILE.i:257. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:250. + Called from PROJECT_FILE.i:261. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:254. + Called from PROJECT_FILE.i:265. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:255. + Called from PROJECT_FILE.i:266. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:268. + Called from PROJECT_FILE.i:279. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:269. + Called from PROJECT_FILE.i:280. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:271. + Called from PROJECT_FILE.i:282. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:273. + Called from PROJECT_FILE.i:284. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:274. + Called from PROJECT_FILE.i:285. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:297. + Called from PROJECT_FILE.i:308. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:302. + Called from PROJECT_FILE.i:313. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:309. + Called from PROJECT_FILE.i:320. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:315. + Called from PROJECT_FILE.i:326. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:317. + Called from PROJECT_FILE.i:328. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:322. + Called from PROJECT_FILE.i:333. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:324. + Called from PROJECT_FILE.i:335. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] Recording results for main @@ -90,29 +90,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -124,6 +148,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -133,13 +159,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -147,7 +178,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -155,7 +188,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -163,7 +198,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -171,14 +208,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -193,7 +235,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/true.1.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/true.1.res.oracle index 51e4462d8b056700a6681e77d7e6c10e9107193b..75adf887ac9e64e00ff2f2466ffc7a1cdfd634d9 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/true.1.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/true.1.res.oracle @@ -2,10 +2,10 @@ [value] Computing initial state [value] Initial state computed [value] Values of globals at initialization -PROJECT_FILE.i:235:[value] Assertion got status valid. +PROJECT_FILE.i:246:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:236. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status valid. + Called from PROJECT_FILE.i:247. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status valid. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] Recording results for main @@ -22,29 +22,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -56,6 +80,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -65,13 +91,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -79,7 +110,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -87,7 +120,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -95,7 +130,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -103,14 +140,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -125,7 +167,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/true.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/true.res.oracle index 51e4462d8b056700a6681e77d7e6c10e9107193b..75adf887ac9e64e00ff2f2466ffc7a1cdfd634d9 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/true.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/true.res.oracle @@ -2,10 +2,10 @@ [value] Computing initial state [value] Initial state computed [value] Values of globals at initialization -PROJECT_FILE.i:235:[value] Assertion got status valid. +PROJECT_FILE.i:246:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:236. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status valid. + Called from PROJECT_FILE.i:247. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status valid. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] Recording results for main @@ -22,29 +22,53 @@ struct __anonstruct___mpz_struct_1 { unsigned long *_mp_d ; }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -56,6 +80,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -65,13 +91,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -79,7 +110,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -87,7 +120,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -95,7 +130,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -103,14 +140,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -125,7 +167,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/typedef.1.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/typedef.1.res.oracle index 8449ee85fd09156876c5c597f4749d6bafb7b372..7f78fdbeef003ec4bc0839de17dd2c2086f0ae10 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/typedef.1.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/typedef.1.res.oracle @@ -2,35 +2,35 @@ [value] Computing initial state [value] Initial state computed [value] Values of globals at initialization -PROJECT_FILE.i:236:[value] Assertion got status valid. +PROJECT_FILE.i:247:[value] Assertion got status valid. [value] computing for function __gmpz_init_set_ui <- main. - Called from PROJECT_FILE.i:241. + Called from PROJECT_FILE.i:252. [value] using specification for function __gmpz_init_set_ui -PROJECT_FILE.i:78:[value] Function __gmpz_init_set_ui: postcondition got status valid. +PROJECT_FILE.i:80:[value] Function __gmpz_init_set_ui: postcondition got status valid. [value] Done for function __gmpz_init_set_ui [value] computing for function __gmpz_init_set_si <- main. - Called from PROJECT_FILE.i:242. + Called from PROJECT_FILE.i:253. [value] using specification for function __gmpz_init_set_si -PROJECT_FILE.i:82:[value] Function __gmpz_init_set_si: postcondition got status valid. +PROJECT_FILE.i:86:[value] Function __gmpz_init_set_si: postcondition got status valid. [value] Done for function __gmpz_init_set_si [value] computing for function __gmpz_cmp <- main. - Called from PROJECT_FILE.i:243. + Called from PROJECT_FILE.i:254. [value] using specification for function __gmpz_cmp -PROJECT_FILE.i:119:[value] Function __gmpz_cmp: precondition got status valid. -PROJECT_FILE.i:120:[value] Function __gmpz_cmp: precondition got status valid. +PROJECT_FILE.i:129:[value] Function __gmpz_cmp: precondition got status valid. +PROJECT_FILE.i:130:[value] Function __gmpz_cmp: precondition got status valid. [value] Done for function __gmpz_cmp [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:244. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status unknown. + Called from PROJECT_FILE.i:255. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status unknown. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:245. + Called from PROJECT_FILE.i:256. [value] using specification for function __gmpz_clear -PROJECT_FILE.i:111:[value] Function __gmpz_clear: precondition got status valid. +PROJECT_FILE.i:120:[value] Function __gmpz_clear: precondition got status valid. [value] Done for function __gmpz_clear [value] computing for function __gmpz_clear <- main. - Called from PROJECT_FILE.i:246. + Called from PROJECT_FILE.i:257. [value] Done for function __gmpz_clear [value] Recording results for main [value] done for function main @@ -48,33 +48,53 @@ struct __anonstruct___mpz_struct_1 { typedef struct __anonstruct___mpz_struct_1 __mpz_struct; typedef __mpz_struct mpz_t[1]; typedef unsigned char uint8; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); - allocates \nothing; + allocates \old(z); + assigns *z; assigns *z \from n; */ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); - allocates \nothing; + allocates \old(z); + assigns *z; assigns *z \from n; */ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -86,7 +106,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); - allocates \nothing; + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -99,13 +120,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -113,7 +139,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -121,7 +149,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -129,7 +159,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -137,14 +169,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -159,7 +196,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) { diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/typedef.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/typedef.res.oracle index 4f3305384f5bd76e7a408bd701c0a3e7773822df..1e004a6afe5eee43dbac88edbad90e048a65a194 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/typedef.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/typedef.res.oracle @@ -2,10 +2,10 @@ [value] Computing initial state [value] Initial state computed [value] Values of globals at initialization -PROJECT_FILE.i:236:[value] Assertion got status valid. +PROJECT_FILE.i:247:[value] Assertion got status valid. [value] computing for function e_acsl_assert <- main. - Called from PROJECT_FILE.i:237. -PROJECT_FILE.i:221:[value] Function e_acsl_assert: precondition got status valid. + Called from PROJECT_FILE.i:248. +PROJECT_FILE.i:231:[value] Function e_acsl_assert: precondition got status valid. [value] Recording results for e_acsl_assert [value] Done for function e_acsl_assert [value] Recording results for main @@ -23,29 +23,53 @@ struct __anonstruct___mpz_struct_1 { }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; typedef unsigned char uint8; -/*@ ensures \valid(\old(x)); - assigns *x; */ -extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ +model __mpz_struct { ℤ n }; +*/ +/*@ ensures \valid(\old(z)); + allocates \old(z); + + assigns *z; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ z); /*@ requires \valid(z_orig); ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_init_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); /*@ ensures \valid(\old(z)); + allocates \old(z); + assigns *z; - assigns *z \from n; */ + assigns *z \from n; +*/ extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ ensures \valid(\old(z)); - assigns *z; */ + allocates \old(z); + + assigns *z; + assigns *z \from str, base; + +*/ extern int __gmpz_init_set_str(__mpz_struct * /*[1]*/ z, char const *str, int base); /*@ requires \valid(z_orig); requires \valid(z); - assigns *z; */ + assigns *z; + assigns *z \from *z_orig; + +*/ extern void __gmpz_set(__mpz_struct * /*[1]*/ z, __mpz_struct const * /*[1]*/ z_orig); /*@ requires \valid(z); @@ -57,6 +81,8 @@ extern void __gmpz_set_ui(__mpz_struct * /*[1]*/ z, unsigned long n); assigns *z \from n; */ extern void __gmpz_set_si(__mpz_struct * /*[1]*/ z, long n); /*@ requires \valid(x); + frees x; + assigns *x; */ extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); /*@ requires \valid(z1); @@ -66,13 +92,18 @@ extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -80,7 +111,9 @@ extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -88,7 +121,9 @@ extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -96,7 +131,9 @@ extern void __gmpz_mul(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, @@ -104,14 +141,19 @@ extern void __gmpz_tdiv_q(__mpz_struct * /*[1]*/ z1, /*@ requires \valid(z1); requires \valid(z2); requires \valid(z3); - assigns *z1; + assigns *z1; + assigns *z1 \from *z2, *z3; + */ extern void __gmpz_tdiv_r(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2, __mpz_struct const * /*[1]*/ z3); /*@ requires \valid(z1); requires \valid(z2); - assigns *z1; */ + assigns *z1; + assigns *z1 \from *z2; + +*/ extern int __gmpz_com(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); /*@ requires \valid(z); @@ -126,7 +168,8 @@ extern unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z); extern void exit(int status); /*@ assigns \nothing; */ extern int printf(char const * , ...); -/*@ requires predicate ≢ 0; */ +/*@ requires predicate ≢ 0; + assigns \nothing; */ void e_acsl_assert(int predicate, char *kind, char *pred_txt, int line) { if (! predicate) {