From 5467035764643e01bdfe024e8fa5e10f626d317b Mon Sep 17 00:00:00 2001 From: Fonenantsoa Maurica <maurica.fonenantsoa@gmail.com> Date: Thu, 15 Nov 2018 15:11:50 +0100 Subject: [PATCH] Empty quantif --- src/plugins/e-acsl/doc/Changelog | 7 +- src/plugins/e-acsl/quantif.ml | 41 ++ .../e-acsl/tests/gmp/oracle/gen_quantif.c | 171 +++-- .../e-acsl/tests/gmp/oracle/gen_quantif2.c | 690 +++++++++--------- .../tests/gmp/oracle/quantif.0.res.oracle | 33 +- .../tests/gmp/oracle/quantif.1.res.oracle | 31 +- src/plugins/e-acsl/tests/gmp/quantif.i | 8 +- 7 files changed, 494 insertions(+), 487 deletions(-) diff --git a/src/plugins/e-acsl/doc/Changelog b/src/plugins/e-acsl/doc/Changelog index 567f7012139..2329e350cf8 100644 --- a/src/plugins/e-acsl/doc/Changelog +++ b/src/plugins/e-acsl/doc/Changelog @@ -19,13 +19,16 @@ # configure configure ############################################################################### +- E-ACSL [2018/11/15] Predicates with empty quantifications + directly generate \true or \false instead of nested loops. + ########################## Plugin E-ACSL 18.0 (Argon) ########################## -* E-ACSL [2018/11/13] Fix typing bug in quantifications when the - guards of the quantifier variable cannot be represented into - its type. + guards of the quantifier variable cannot be represented into + its type. -* runtime [2018/11/13] Fix bug #!2405 about memory initialization in presence of GCC constructors. -* E-ACSL [2018/10/23] Fix bug #2406 about monitoring of variables diff --git a/src/plugins/e-acsl/quantif.ml b/src/plugins/e-acsl/quantif.ml index 30a72c560b5..dfc19db37bb 100644 --- a/src/plugins/e-acsl/quantif.ml +++ b/src/plugins/e-acsl/quantif.ml @@ -101,6 +101,36 @@ let compute_quantif_guards quantif bounded_vars hyps = Error.untypable msg); List.rev acc +(* It could happen that the bounds provided for a quantified [lv] are empty + in the sense that [min <= lv <= max] but [min > max]. In such cases, \true + (or \false depending on the quantification) should be generated instead of + nested loops. + [has_empty_quantif_with_false_negative] partially detects such cases: + Case 1: an empty qunatification was detected for sure, return true. + Case 2: we don't know, return false. *) +let rec has_empty_quantif_with_false_negative = function + | [] -> + (* case 2 *) + false + | (t1, rel1, _, rel2, t2) :: guards -> + let i1 = Interval.infer t1 in + let i2 = Interval.infer t2 in + if Ival.is_singleton_int i1 && Ival.is_singleton_int i2 then + (* we know the precise values of the bounds *) + let lower_bound, _ = Misc.finite_min_and_max i1 in + let upper_bound, _ = Misc.finite_min_and_max i2 in + let res = match rel1, rel2 with + | Rle, Rle -> lower_bound > upper_bound + | Rle, Rlt -> lower_bound >= upper_bound + | Rlt, Rle -> lower_bound >= upper_bound + | Rlt, Rlt -> lower_bound >= Z.sub upper_bound Z.one + | _ -> assert false + in + if res then (* case 1 *) res + else has_empty_quantif_with_false_negative guards + else + has_empty_quantif_with_false_negative guards + let () = Typing.compute_quantif_guards_ref := compute_quantif_guards module Label_ids = @@ -117,6 +147,16 @@ let convert kf env loc is_forall p bounded_vars hyps goal = in (* universal quantification over integers (or a subtype of integer) *) let guards = compute_quantif_guards p bounded_vars hyps in + let has_empty_quantif_with_false_negative = + has_empty_quantif_with_false_negative guards + in + match has_empty_quantif_with_false_negative, is_forall with + | true, true -> + Cil.one ~loc, env + | true, false -> + Cil.zero ~loc, env + | false, _ -> + begin (* transform [guards] into [lscope_var list], and update logic scope in the process *) let lvs_guards, env = List.fold_right @@ -179,6 +219,7 @@ let convert kf env loc is_forall p bounded_vars hyps goal = end_loop_ref := end_loop; let env = Env.add_stmt env end_loop in res, env + end let quantif_to_exp kf env p = let loc = p.pred_loc in diff --git a/src/plugins/e-acsl/tests/gmp/oracle/gen_quantif.c b/src/plugins/e-acsl/tests/gmp/oracle/gen_quantif.c index 9b077626b45..3da7cdb090e 100644 --- a/src/plugins/e-acsl/tests/gmp/oracle/gen_quantif.c +++ b/src/plugins/e-acsl/tests/gmp/oracle/gen_quantif.c @@ -49,15 +49,15 @@ int main(void) __e_acsl_assert(__gen_e_acsl_forall_2,(char *)"Assertion",(char *)"main", (char *)"\\forall integer x; 0 < x <= 1 ==> x == 1",10); } - /*@ assert ∀ ℤ x; 0 < x < 1 ⇒ \false; */ + /*@ assert ∀ ℤ x; 0 ≤ x < 1 ⇒ x ≡ 0; */ { int __gen_e_acsl_forall_3; int __gen_e_acsl_x_3; __gen_e_acsl_forall_3 = 1; - __gen_e_acsl_x_3 = 0 + 1; + __gen_e_acsl_x_3 = 0; while (1) { if (__gen_e_acsl_x_3 < 1) ; else break; - if (0) ; + if (__gen_e_acsl_x_3 == 0) ; else { __gen_e_acsl_forall_3 = 0; goto e_acsl_end_loop3; @@ -66,81 +66,62 @@ int main(void) } e_acsl_end_loop3: ; __e_acsl_assert(__gen_e_acsl_forall_3,(char *)"Assertion",(char *)"main", - (char *)"\\forall integer x; 0 < x < 1 ==> \\false",11); - } - /*@ assert ∀ ℤ x; 0 ≤ x < 1 ⇒ x ≡ 0; */ - { - int __gen_e_acsl_forall_4; - int __gen_e_acsl_x_4; - __gen_e_acsl_forall_4 = 1; - __gen_e_acsl_x_4 = 0; - while (1) { - if (__gen_e_acsl_x_4 < 1) ; else break; - if (__gen_e_acsl_x_4 == 0) ; - else { - __gen_e_acsl_forall_4 = 0; - goto e_acsl_end_loop4; - } - __gen_e_acsl_x_4 ++; - } - e_acsl_end_loop4: ; - __e_acsl_assert(__gen_e_acsl_forall_4,(char *)"Assertion",(char *)"main", - (char *)"\\forall integer x; 0 <= x < 1 ==> x == 0",12); + (char *)"\\forall integer x; 0 <= x < 1 ==> x == 0",11); } /*@ assert ∀ ℤ x, ℤ y, ℤ z; 0 ≤ x < 2 ∧ 0 ≤ y < 5 ∧ 0 ≤ z ≤ y ⇒ x + z ≤ y + 1; */ { - int __gen_e_acsl_forall_5; - int __gen_e_acsl_x_5; + int __gen_e_acsl_forall_4; + int __gen_e_acsl_x_4; int __gen_e_acsl_y; int __gen_e_acsl_z; - __gen_e_acsl_forall_5 = 1; - __gen_e_acsl_x_5 = 0; + __gen_e_acsl_forall_4 = 1; + __gen_e_acsl_x_4 = 0; while (1) { - if (__gen_e_acsl_x_5 < 2) ; else break; + if (__gen_e_acsl_x_4 < 2) ; else break; __gen_e_acsl_y = 0; while (1) { if (__gen_e_acsl_y < 5) ; else break; __gen_e_acsl_z = 0; while (1) { if (__gen_e_acsl_z <= __gen_e_acsl_y) ; else break; - if (__gen_e_acsl_x_5 + __gen_e_acsl_z <= __gen_e_acsl_y + 1) + if (__gen_e_acsl_x_4 + __gen_e_acsl_z <= __gen_e_acsl_y + 1) ; else { - __gen_e_acsl_forall_5 = 0; - goto e_acsl_end_loop5; + __gen_e_acsl_forall_4 = 0; + goto e_acsl_end_loop4; } __gen_e_acsl_z ++; } __gen_e_acsl_y ++; } - __gen_e_acsl_x_5 ++; + __gen_e_acsl_x_4 ++; } - e_acsl_end_loop5: ; - __e_acsl_assert(__gen_e_acsl_forall_5,(char *)"Assertion",(char *)"main", + e_acsl_end_loop4: ; + __e_acsl_assert(__gen_e_acsl_forall_4,(char *)"Assertion",(char *)"main", (char *)"\\forall integer x, integer y, integer z;\n 0 <= x < 2 && 0 <= y < 5 && 0 <= z <= y ==> x + z <= y + 1", - 16); + 15); } /*@ assert ∃ int x; 0 ≤ x < 10 ∧ x ≡ 5; */ { int __gen_e_acsl_exists; - int __gen_e_acsl_x_6; + int __gen_e_acsl_x_5; __gen_e_acsl_exists = 0; - __gen_e_acsl_x_6 = 0; + __gen_e_acsl_x_5 = 0; while (1) { - if (__gen_e_acsl_x_6 < 10) ; else break; - if (! (__gen_e_acsl_x_6 == 5)) ; + if (__gen_e_acsl_x_5 < 10) ; else break; + if (! (__gen_e_acsl_x_5 == 5)) ; else { __gen_e_acsl_exists = 1; - goto e_acsl_end_loop6; + goto e_acsl_end_loop5; } - __gen_e_acsl_x_6 ++; + __gen_e_acsl_x_5 ++; } - e_acsl_end_loop6: ; + e_acsl_end_loop5: ; __e_acsl_assert(__gen_e_acsl_exists,(char *)"Assertion",(char *)"main", - (char *)"\\exists int x; 0 <= x < 10 && x == 5",21); + (char *)"\\exists int x; 0 <= x < 10 && x == 5",20); } /*@ assert ∀ int x; @@ -148,44 +129,44 @@ int main(void) x % 2 ≡ 0 ⇒ (∃ ℤ y; 0 ≤ y ≤ x / 2 ∧ x ≡ 2 * y); */ { - int __gen_e_acsl_forall_6; - int __gen_e_acsl_x_7; - __gen_e_acsl_forall_6 = 1; - __gen_e_acsl_x_7 = 0; + int __gen_e_acsl_forall_5; + int __gen_e_acsl_x_6; + __gen_e_acsl_forall_5 = 1; + __gen_e_acsl_x_6 = 0; while (1) { - if (__gen_e_acsl_x_7 < 10) ; else break; + if (__gen_e_acsl_x_6 < 10) ; else break; { int __gen_e_acsl_implies; - if (! (__gen_e_acsl_x_7 % 2 == 0)) __gen_e_acsl_implies = 1; + if (! (__gen_e_acsl_x_6 % 2 == 0)) __gen_e_acsl_implies = 1; else { int __gen_e_acsl_exists_2; int __gen_e_acsl_y_2; __gen_e_acsl_exists_2 = 0; __gen_e_acsl_y_2 = 0; while (1) { - if (__gen_e_acsl_y_2 <= __gen_e_acsl_x_7 / 2) ; else break; - if (! (__gen_e_acsl_x_7 == 2 * __gen_e_acsl_y_2)) ; + if (__gen_e_acsl_y_2 <= __gen_e_acsl_x_6 / 2) ; else break; + if (! (__gen_e_acsl_x_6 == 2 * __gen_e_acsl_y_2)) ; else { __gen_e_acsl_exists_2 = 1; - goto e_acsl_end_loop7; + goto e_acsl_end_loop6; } __gen_e_acsl_y_2 ++; } - e_acsl_end_loop7: ; + e_acsl_end_loop6: ; __gen_e_acsl_implies = __gen_e_acsl_exists_2; } if (__gen_e_acsl_implies) ; else { - __gen_e_acsl_forall_6 = 0; - goto e_acsl_end_loop8; + __gen_e_acsl_forall_5 = 0; + goto e_acsl_end_loop7; } } - __gen_e_acsl_x_7 ++; + __gen_e_acsl_x_6 ++; } - e_acsl_end_loop8: ; - __e_acsl_assert(__gen_e_acsl_forall_6,(char *)"Assertion",(char *)"main", + e_acsl_end_loop7: ; + __e_acsl_assert(__gen_e_acsl_forall_5,(char *)"Assertion",(char *)"main", (char *)"\\forall int x;\n 0 <= x < 10 ==>\n x % 2 == 0 ==> (\\exists integer y; 0 <= y <= x / 2 && x == 2 * y)", - 25); + 24); } { int buf[10]; @@ -193,9 +174,9 @@ int main(void) unsigned long len = (unsigned long)9; /*@ assert ∀ ℤ i; 0 ≤ i < 10 ⇒ \valid(&buf[i]); */ { - int __gen_e_acsl_forall_7; + int __gen_e_acsl_forall_6; int __gen_e_acsl_i; - __gen_e_acsl_forall_7 = 1; + __gen_e_acsl_forall_6 = 1; __gen_e_acsl_i = 0; while (1) { if (__gen_e_acsl_i < 10) ; else break; @@ -207,23 +188,23 @@ int main(void) (void *)0); if (__gen_e_acsl_valid) ; else { - __gen_e_acsl_forall_7 = 0; - goto e_acsl_end_loop9; + __gen_e_acsl_forall_6 = 0; + goto e_acsl_end_loop8; } } __gen_e_acsl_i ++; } - e_acsl_end_loop9: ; - __e_acsl_assert(__gen_e_acsl_forall_7,(char *)"Assertion", + e_acsl_end_loop8: ; + __e_acsl_assert(__gen_e_acsl_forall_6,(char *)"Assertion", (char *)"main", (char *)"\\forall integer i; 0 <= i < 10 ==> \\valid(&buf[i])", - 31); + 30); } /*@ assert ∀ char i; 0 ≤ i < 10 ⇒ \valid(&buf[i]); */ { - int __gen_e_acsl_forall_8; + int __gen_e_acsl_forall_7; int __gen_e_acsl_i_2; - __gen_e_acsl_forall_8 = 1; + __gen_e_acsl_forall_7 = 1; __gen_e_acsl_i_2 = (char)0; while (1) { if (__gen_e_acsl_i_2 < 10) ; else break; @@ -235,23 +216,23 @@ int main(void) (void *)0); if (__gen_e_acsl_valid_2) ; else { - __gen_e_acsl_forall_8 = 0; - goto e_acsl_end_loop10; + __gen_e_acsl_forall_7 = 0; + goto e_acsl_end_loop9; } } __gen_e_acsl_i_2 ++; } - e_acsl_end_loop10: ; - __e_acsl_assert(__gen_e_acsl_forall_8,(char *)"Assertion", + e_acsl_end_loop9: ; + __e_acsl_assert(__gen_e_acsl_forall_7,(char *)"Assertion", (char *)"main", (char *)"\\forall char i; 0 <= i < 10 ==> \\valid(&buf[i])", - 32); + 31); } /*@ assert ∀ ℤ i; 0 ≤ i < len ⇒ \valid(&buf[i]); */ { - int __gen_e_acsl_forall_9; + int __gen_e_acsl_forall_8; unsigned long __gen_e_acsl_i_3; - __gen_e_acsl_forall_9 = 1; + __gen_e_acsl_forall_8 = 1; __gen_e_acsl_i_3 = 0UL; while (1) { if (__gen_e_acsl_i_3 < len) ; else break; @@ -263,23 +244,23 @@ int main(void) (void *)0); if (__gen_e_acsl_valid_3) ; else { - __gen_e_acsl_forall_9 = 0; - goto e_acsl_end_loop11; + __gen_e_acsl_forall_8 = 0; + goto e_acsl_end_loop10; } } __gen_e_acsl_i_3 ++; } - e_acsl_end_loop11: ; - __e_acsl_assert(__gen_e_acsl_forall_9,(char *)"Assertion", + e_acsl_end_loop10: ; + __e_acsl_assert(__gen_e_acsl_forall_8,(char *)"Assertion", (char *)"main", (char *)"\\forall integer i; 0 <= i < len ==> \\valid(&buf[i])", - 33); + 32); } /*@ assert ∀ ℤ i; 0 ≤ i ≤ len ⇒ \valid(&buf[i]); */ { - int __gen_e_acsl_forall_10; + int __gen_e_acsl_forall_9; __e_acsl_mpz_t __gen_e_acsl_i_4; - __gen_e_acsl_forall_10 = 1; + __gen_e_acsl_forall_9 = 1; __gmpz_init(__gen_e_acsl_i_4); { __e_acsl_mpz_t __gen_e_acsl_; @@ -308,8 +289,8 @@ int main(void) (void *)0); if (__gen_e_acsl_valid_4) ; else { - __gen_e_acsl_forall_10 = 0; - goto e_acsl_end_loop12; + __gen_e_acsl_forall_9 = 0; + goto e_acsl_end_loop11; } } { @@ -326,15 +307,31 @@ int main(void) __gmpz_clear(__gen_e_acsl_add); } } - e_acsl_end_loop12: ; - __e_acsl_assert(__gen_e_acsl_forall_10,(char *)"Assertion", + e_acsl_end_loop11: ; + __e_acsl_assert(__gen_e_acsl_forall_9,(char *)"Assertion", (char *)"main", (char *)"\\forall integer i; 0 <= i <= len ==> \\valid(&buf[i])", - 34); + 33); __gmpz_clear(__gen_e_acsl_i_4); __e_acsl_delete_block((void *)(buf)); } } + /*@ assert ∀ ℤ x; 0 < x < 1 ⇒ \false; */ + __e_acsl_assert(1,(char *)"Assertion",(char *)"main", + (char *)"\\forall integer x; 0 < x < 1 ==> \\false",37); + /*@ assert ¬(∃ char c; 10 ≤ c < 10 ∧ c ≡ 10); */ + __e_acsl_assert(! 0,(char *)"Assertion",(char *)"main", + (char *)"!(\\exists char c; 10 <= c < 10 && c == 10)",38); + /*@ assert \let u = 5; + ∀ ℤ x, ℤ y; 0 ≤ x < 2 ∧ 4 < y < u ⇒ \false; + */ + { + int __gen_e_acsl_u; + __gen_e_acsl_u = 5; + __e_acsl_assert(1,(char *)"Assertion",(char *)"main", + (char *)"\\let u = 5;\n\\forall integer x, integer y; 0 <= x < 2 && 4 < y < u ==> \\false", + 40); + } __retres = 0; __e_acsl_memory_clean(); return __retres; diff --git a/src/plugins/e-acsl/tests/gmp/oracle/gen_quantif2.c b/src/plugins/e-acsl/tests/gmp/oracle/gen_quantif2.c index 505ab56a8bc..4559cf6c2d5 100644 --- a/src/plugins/e-acsl/tests/gmp/oracle/gen_quantif2.c +++ b/src/plugins/e-acsl/tests/gmp/oracle/gen_quantif2.c @@ -136,27 +136,18 @@ int main(void) (char *)"\\forall integer x; 0 < x <= 1 ==> x == 1",10); __gmpz_clear(__gen_e_acsl_x_2); } - /*@ assert ∀ ℤ x; 0 < x < 1 ⇒ \false; */ + /*@ assert ∀ ℤ x; 0 ≤ x < 1 ⇒ x ≡ 0; */ { int __gen_e_acsl_forall_3; __e_acsl_mpz_t __gen_e_acsl_x_3; __gen_e_acsl_forall_3 = 1; __gmpz_init(__gen_e_acsl_x_3); { - __e_acsl_mpz_t __gen_e_acsl__11; __e_acsl_mpz_t __gen_e_acsl__12; - __e_acsl_mpz_t __gen_e_acsl_add_4; - __gmpz_init_set_si(__gen_e_acsl__11,0L); - __gmpz_init_set_si(__gen_e_acsl__12,1L); - __gmpz_init(__gen_e_acsl_add_4); - __gmpz_add(__gen_e_acsl_add_4, - (__e_acsl_mpz_struct const *)(__gen_e_acsl__11), - (__e_acsl_mpz_struct const *)(__gen_e_acsl__12)); + __gmpz_init_set_si(__gen_e_acsl__12,0L); __gmpz_set(__gen_e_acsl_x_3, - (__e_acsl_mpz_struct const *)(__gen_e_acsl_add_4)); - __gmpz_clear(__gen_e_acsl__11); + (__e_acsl_mpz_struct const *)(__gen_e_acsl__12)); __gmpz_clear(__gen_e_acsl__12); - __gmpz_clear(__gen_e_acsl_add_4); } while (1) { { @@ -168,138 +159,91 @@ int main(void) if (__gen_e_acsl_lt < 0) ; else break; __gmpz_clear(__gen_e_acsl__13); } - if (0) ; - else { - __gen_e_acsl_forall_3 = 0; - goto e_acsl_end_loop3; + { + __e_acsl_mpz_t __gen_e_acsl__11; + int __gen_e_acsl_eq_4; + __gmpz_init_set_si(__gen_e_acsl__11,0L); + __gen_e_acsl_eq_4 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_x_3), + (__e_acsl_mpz_struct const *)(__gen_e_acsl__11)); + __gmpz_clear(__gen_e_acsl__11); + if (__gen_e_acsl_eq_4 == 0) ; + else { + __gen_e_acsl_forall_3 = 0; + goto e_acsl_end_loop3; + } } { __e_acsl_mpz_t __gen_e_acsl__14; - __e_acsl_mpz_t __gen_e_acsl_add_5; + __e_acsl_mpz_t __gen_e_acsl_add_4; __gmpz_init_set_str(__gen_e_acsl__14,"1",10); - __gmpz_init(__gen_e_acsl_add_5); - __gmpz_add(__gen_e_acsl_add_5, + __gmpz_init(__gen_e_acsl_add_4); + __gmpz_add(__gen_e_acsl_add_4, (__e_acsl_mpz_struct const *)(__gen_e_acsl_x_3), (__e_acsl_mpz_struct const *)(__gen_e_acsl__14)); __gmpz_set(__gen_e_acsl_x_3, - (__e_acsl_mpz_struct const *)(__gen_e_acsl_add_5)); + (__e_acsl_mpz_struct const *)(__gen_e_acsl_add_4)); __gmpz_clear(__gen_e_acsl__14); - __gmpz_clear(__gen_e_acsl_add_5); + __gmpz_clear(__gen_e_acsl_add_4); } } e_acsl_end_loop3: ; __e_acsl_assert(__gen_e_acsl_forall_3,(char *)"Assertion",(char *)"main", - (char *)"\\forall integer x; 0 < x < 1 ==> \\false",11); + (char *)"\\forall integer x; 0 <= x < 1 ==> x == 0",11); __gmpz_clear(__gen_e_acsl_x_3); } - /*@ assert ∀ ℤ x; 0 ≤ x < 1 ⇒ x ≡ 0; */ - { - int __gen_e_acsl_forall_4; - __e_acsl_mpz_t __gen_e_acsl_x_4; - __gen_e_acsl_forall_4 = 1; - __gmpz_init(__gen_e_acsl_x_4); - { - __e_acsl_mpz_t __gen_e_acsl__16; - __gmpz_init_set_si(__gen_e_acsl__16,0L); - __gmpz_set(__gen_e_acsl_x_4, - (__e_acsl_mpz_struct const *)(__gen_e_acsl__16)); - __gmpz_clear(__gen_e_acsl__16); - } - while (1) { - { - __e_acsl_mpz_t __gen_e_acsl__17; - int __gen_e_acsl_lt_2; - __gmpz_init_set_si(__gen_e_acsl__17,1L); - __gen_e_acsl_lt_2 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_x_4), - (__e_acsl_mpz_struct const *)(__gen_e_acsl__17)); - if (__gen_e_acsl_lt_2 < 0) ; else break; - __gmpz_clear(__gen_e_acsl__17); - } - { - __e_acsl_mpz_t __gen_e_acsl__15; - int __gen_e_acsl_eq_4; - __gmpz_init_set_si(__gen_e_acsl__15,0L); - __gen_e_acsl_eq_4 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_x_4), - (__e_acsl_mpz_struct const *)(__gen_e_acsl__15)); - __gmpz_clear(__gen_e_acsl__15); - if (__gen_e_acsl_eq_4 == 0) ; - else { - __gen_e_acsl_forall_4 = 0; - goto e_acsl_end_loop4; - } - } - { - __e_acsl_mpz_t __gen_e_acsl__18; - __e_acsl_mpz_t __gen_e_acsl_add_6; - __gmpz_init_set_str(__gen_e_acsl__18,"1",10); - __gmpz_init(__gen_e_acsl_add_6); - __gmpz_add(__gen_e_acsl_add_6, - (__e_acsl_mpz_struct const *)(__gen_e_acsl_x_4), - (__e_acsl_mpz_struct const *)(__gen_e_acsl__18)); - __gmpz_set(__gen_e_acsl_x_4, - (__e_acsl_mpz_struct const *)(__gen_e_acsl_add_6)); - __gmpz_clear(__gen_e_acsl__18); - __gmpz_clear(__gen_e_acsl_add_6); - } - } - e_acsl_end_loop4: ; - __e_acsl_assert(__gen_e_acsl_forall_4,(char *)"Assertion",(char *)"main", - (char *)"\\forall integer x; 0 <= x < 1 ==> x == 0",12); - __gmpz_clear(__gen_e_acsl_x_4); - } /*@ assert ∀ ℤ x, ℤ y, ℤ z; 0 ≤ x < 2 ∧ 0 ≤ y < 5 ∧ 0 ≤ z ≤ y ⇒ x + z ≤ y + 1; */ { - int __gen_e_acsl_forall_5; - __e_acsl_mpz_t __gen_e_acsl_x_5; + int __gen_e_acsl_forall_4; + __e_acsl_mpz_t __gen_e_acsl_x_4; __e_acsl_mpz_t __gen_e_acsl_y; __e_acsl_mpz_t __gen_e_acsl_z; - __gen_e_acsl_forall_5 = 1; - __gmpz_init(__gen_e_acsl_x_5); + __gen_e_acsl_forall_4 = 1; + __gmpz_init(__gen_e_acsl_x_4); __gmpz_init(__gen_e_acsl_y); __gmpz_init(__gen_e_acsl_z); { - __e_acsl_mpz_t __gen_e_acsl__25; - __gmpz_init_set_si(__gen_e_acsl__25,0L); - __gmpz_set(__gen_e_acsl_x_5, - (__e_acsl_mpz_struct const *)(__gen_e_acsl__25)); - __gmpz_clear(__gen_e_acsl__25); + __e_acsl_mpz_t __gen_e_acsl__21; + __gmpz_init_set_si(__gen_e_acsl__21,0L); + __gmpz_set(__gen_e_acsl_x_4, + (__e_acsl_mpz_struct const *)(__gen_e_acsl__21)); + __gmpz_clear(__gen_e_acsl__21); } while (1) { { - __e_acsl_mpz_t __gen_e_acsl__26; - int __gen_e_acsl_lt_4; - __gmpz_init_set_si(__gen_e_acsl__26,2L); - __gen_e_acsl_lt_4 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_x_5), - (__e_acsl_mpz_struct const *)(__gen_e_acsl__26)); - if (__gen_e_acsl_lt_4 < 0) ; else break; - __gmpz_clear(__gen_e_acsl__26); + __e_acsl_mpz_t __gen_e_acsl__22; + int __gen_e_acsl_lt_3; + __gmpz_init_set_si(__gen_e_acsl__22,2L); + __gen_e_acsl_lt_3 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_x_4), + (__e_acsl_mpz_struct const *)(__gen_e_acsl__22)); + if (__gen_e_acsl_lt_3 < 0) ; else break; + __gmpz_clear(__gen_e_acsl__22); } { - __e_acsl_mpz_t __gen_e_acsl__22; - __gmpz_init_set_si(__gen_e_acsl__22,0L); + __e_acsl_mpz_t __gen_e_acsl__18; + __gmpz_init_set_si(__gen_e_acsl__18,0L); __gmpz_set(__gen_e_acsl_y, - (__e_acsl_mpz_struct const *)(__gen_e_acsl__22)); - __gmpz_clear(__gen_e_acsl__22); + (__e_acsl_mpz_struct const *)(__gen_e_acsl__18)); + __gmpz_clear(__gen_e_acsl__18); } while (1) { { - __e_acsl_mpz_t __gen_e_acsl__23; - int __gen_e_acsl_lt_3; - __gmpz_init_set_si(__gen_e_acsl__23,5L); - __gen_e_acsl_lt_3 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_y), - (__e_acsl_mpz_struct const *)(__gen_e_acsl__23)); - if (__gen_e_acsl_lt_3 < 0) ; else break; - __gmpz_clear(__gen_e_acsl__23); + __e_acsl_mpz_t __gen_e_acsl__19; + int __gen_e_acsl_lt_2; + __gmpz_init_set_si(__gen_e_acsl__19,5L); + __gen_e_acsl_lt_2 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_y), + (__e_acsl_mpz_struct const *)(__gen_e_acsl__19)); + if (__gen_e_acsl_lt_2 < 0) ; else break; + __gmpz_clear(__gen_e_acsl__19); } { - __e_acsl_mpz_t __gen_e_acsl__20; - __gmpz_init_set_si(__gen_e_acsl__20,0L); + __e_acsl_mpz_t __gen_e_acsl__16; + __gmpz_init_set_si(__gen_e_acsl__16,0L); __gmpz_set(__gen_e_acsl_z, - (__e_acsl_mpz_struct const *)(__gen_e_acsl__20)); - __gmpz_clear(__gen_e_acsl__20); + (__e_acsl_mpz_struct const *)(__gen_e_acsl__16)); + __gmpz_clear(__gen_e_acsl__16); } while (1) { { @@ -309,134 +253,134 @@ int main(void) if (__gen_e_acsl_le_4 <= 0) ; else break; } { - __e_acsl_mpz_t __gen_e_acsl_add_7; - __e_acsl_mpz_t __gen_e_acsl__19; - __e_acsl_mpz_t __gen_e_acsl_add_8; + __e_acsl_mpz_t __gen_e_acsl_add_5; + __e_acsl_mpz_t __gen_e_acsl__15; + __e_acsl_mpz_t __gen_e_acsl_add_6; int __gen_e_acsl_le_3; - __gmpz_init(__gen_e_acsl_add_7); - __gmpz_add(__gen_e_acsl_add_7, - (__e_acsl_mpz_struct const *)(__gen_e_acsl_x_5), + __gmpz_init(__gen_e_acsl_add_5); + __gmpz_add(__gen_e_acsl_add_5, + (__e_acsl_mpz_struct const *)(__gen_e_acsl_x_4), (__e_acsl_mpz_struct const *)(__gen_e_acsl_z)); - __gmpz_init_set_si(__gen_e_acsl__19,1L); - __gmpz_init(__gen_e_acsl_add_8); - __gmpz_add(__gen_e_acsl_add_8, + __gmpz_init_set_si(__gen_e_acsl__15,1L); + __gmpz_init(__gen_e_acsl_add_6); + __gmpz_add(__gen_e_acsl_add_6, (__e_acsl_mpz_struct const *)(__gen_e_acsl_y), - (__e_acsl_mpz_struct const *)(__gen_e_acsl__19)); - __gen_e_acsl_le_3 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_add_7), - (__e_acsl_mpz_struct const *)(__gen_e_acsl_add_8)); - __gmpz_clear(__gen_e_acsl_add_7); - __gmpz_clear(__gen_e_acsl__19); - __gmpz_clear(__gen_e_acsl_add_8); + (__e_acsl_mpz_struct const *)(__gen_e_acsl__15)); + __gen_e_acsl_le_3 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_add_5), + (__e_acsl_mpz_struct const *)(__gen_e_acsl_add_6)); + __gmpz_clear(__gen_e_acsl_add_5); + __gmpz_clear(__gen_e_acsl__15); + __gmpz_clear(__gen_e_acsl_add_6); if (__gen_e_acsl_le_3 <= 0) ; else { - __gen_e_acsl_forall_5 = 0; - goto e_acsl_end_loop5; + __gen_e_acsl_forall_4 = 0; + goto e_acsl_end_loop4; } } { - __e_acsl_mpz_t __gen_e_acsl__21; - __e_acsl_mpz_t __gen_e_acsl_add_9; - __gmpz_init_set_str(__gen_e_acsl__21,"1",10); - __gmpz_init(__gen_e_acsl_add_9); - __gmpz_add(__gen_e_acsl_add_9, + __e_acsl_mpz_t __gen_e_acsl__17; + __e_acsl_mpz_t __gen_e_acsl_add_7; + __gmpz_init_set_str(__gen_e_acsl__17,"1",10); + __gmpz_init(__gen_e_acsl_add_7); + __gmpz_add(__gen_e_acsl_add_7, (__e_acsl_mpz_struct const *)(__gen_e_acsl_z), - (__e_acsl_mpz_struct const *)(__gen_e_acsl__21)); + (__e_acsl_mpz_struct const *)(__gen_e_acsl__17)); __gmpz_set(__gen_e_acsl_z, - (__e_acsl_mpz_struct const *)(__gen_e_acsl_add_9)); - __gmpz_clear(__gen_e_acsl__21); - __gmpz_clear(__gen_e_acsl_add_9); + (__e_acsl_mpz_struct const *)(__gen_e_acsl_add_7)); + __gmpz_clear(__gen_e_acsl__17); + __gmpz_clear(__gen_e_acsl_add_7); } } { - __e_acsl_mpz_t __gen_e_acsl__24; - __e_acsl_mpz_t __gen_e_acsl_add_10; - __gmpz_init_set_str(__gen_e_acsl__24,"1",10); - __gmpz_init(__gen_e_acsl_add_10); - __gmpz_add(__gen_e_acsl_add_10, + __e_acsl_mpz_t __gen_e_acsl__20; + __e_acsl_mpz_t __gen_e_acsl_add_8; + __gmpz_init_set_str(__gen_e_acsl__20,"1",10); + __gmpz_init(__gen_e_acsl_add_8); + __gmpz_add(__gen_e_acsl_add_8, (__e_acsl_mpz_struct const *)(__gen_e_acsl_y), - (__e_acsl_mpz_struct const *)(__gen_e_acsl__24)); + (__e_acsl_mpz_struct const *)(__gen_e_acsl__20)); __gmpz_set(__gen_e_acsl_y, - (__e_acsl_mpz_struct const *)(__gen_e_acsl_add_10)); - __gmpz_clear(__gen_e_acsl__24); - __gmpz_clear(__gen_e_acsl_add_10); + (__e_acsl_mpz_struct const *)(__gen_e_acsl_add_8)); + __gmpz_clear(__gen_e_acsl__20); + __gmpz_clear(__gen_e_acsl_add_8); } } { - __e_acsl_mpz_t __gen_e_acsl__27; - __e_acsl_mpz_t __gen_e_acsl_add_11; - __gmpz_init_set_str(__gen_e_acsl__27,"1",10); - __gmpz_init(__gen_e_acsl_add_11); - __gmpz_add(__gen_e_acsl_add_11, - (__e_acsl_mpz_struct const *)(__gen_e_acsl_x_5), - (__e_acsl_mpz_struct const *)(__gen_e_acsl__27)); - __gmpz_set(__gen_e_acsl_x_5, - (__e_acsl_mpz_struct const *)(__gen_e_acsl_add_11)); - __gmpz_clear(__gen_e_acsl__27); - __gmpz_clear(__gen_e_acsl_add_11); + __e_acsl_mpz_t __gen_e_acsl__23; + __e_acsl_mpz_t __gen_e_acsl_add_9; + __gmpz_init_set_str(__gen_e_acsl__23,"1",10); + __gmpz_init(__gen_e_acsl_add_9); + __gmpz_add(__gen_e_acsl_add_9, + (__e_acsl_mpz_struct const *)(__gen_e_acsl_x_4), + (__e_acsl_mpz_struct const *)(__gen_e_acsl__23)); + __gmpz_set(__gen_e_acsl_x_4, + (__e_acsl_mpz_struct const *)(__gen_e_acsl_add_9)); + __gmpz_clear(__gen_e_acsl__23); + __gmpz_clear(__gen_e_acsl_add_9); } } - e_acsl_end_loop5: ; - __e_acsl_assert(__gen_e_acsl_forall_5,(char *)"Assertion",(char *)"main", + e_acsl_end_loop4: ; + __e_acsl_assert(__gen_e_acsl_forall_4,(char *)"Assertion",(char *)"main", (char *)"\\forall integer x, integer y, integer z;\n 0 <= x < 2 && 0 <= y < 5 && 0 <= z <= y ==> x + z <= y + 1", - 16); - __gmpz_clear(__gen_e_acsl_x_5); + 15); + __gmpz_clear(__gen_e_acsl_x_4); __gmpz_clear(__gen_e_acsl_y); __gmpz_clear(__gen_e_acsl_z); } /*@ assert ∃ int x; 0 ≤ x < 10 ∧ x ≡ 5; */ { int __gen_e_acsl_exists; - __e_acsl_mpz_t __gen_e_acsl_x_6; + __e_acsl_mpz_t __gen_e_acsl_x_5; __gen_e_acsl_exists = 0; - __gmpz_init(__gen_e_acsl_x_6); + __gmpz_init(__gen_e_acsl_x_5); { - __e_acsl_mpz_t __gen_e_acsl__29; - __gmpz_init_set_si(__gen_e_acsl__29,0L); - __gmpz_set(__gen_e_acsl_x_6, - (__e_acsl_mpz_struct const *)(__gen_e_acsl__29)); - __gmpz_clear(__gen_e_acsl__29); + __e_acsl_mpz_t __gen_e_acsl__25; + __gmpz_init_set_si(__gen_e_acsl__25,0L); + __gmpz_set(__gen_e_acsl_x_5, + (__e_acsl_mpz_struct const *)(__gen_e_acsl__25)); + __gmpz_clear(__gen_e_acsl__25); } while (1) { { - __e_acsl_mpz_t __gen_e_acsl__30; - int __gen_e_acsl_lt_5; - __gmpz_init_set_si(__gen_e_acsl__30,10L); - __gen_e_acsl_lt_5 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_x_6), - (__e_acsl_mpz_struct const *)(__gen_e_acsl__30)); - if (__gen_e_acsl_lt_5 < 0) ; else break; - __gmpz_clear(__gen_e_acsl__30); + __e_acsl_mpz_t __gen_e_acsl__26; + int __gen_e_acsl_lt_4; + __gmpz_init_set_si(__gen_e_acsl__26,10L); + __gen_e_acsl_lt_4 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_x_5), + (__e_acsl_mpz_struct const *)(__gen_e_acsl__26)); + if (__gen_e_acsl_lt_4 < 0) ; else break; + __gmpz_clear(__gen_e_acsl__26); } { - __e_acsl_mpz_t __gen_e_acsl__28; + __e_acsl_mpz_t __gen_e_acsl__24; int __gen_e_acsl_eq_5; - __gmpz_init_set_si(__gen_e_acsl__28,5L); - __gen_e_acsl_eq_5 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_x_6), - (__e_acsl_mpz_struct const *)(__gen_e_acsl__28)); - __gmpz_clear(__gen_e_acsl__28); + __gmpz_init_set_si(__gen_e_acsl__24,5L); + __gen_e_acsl_eq_5 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_x_5), + (__e_acsl_mpz_struct const *)(__gen_e_acsl__24)); + __gmpz_clear(__gen_e_acsl__24); if (! (__gen_e_acsl_eq_5 == 0)) ; else { __gen_e_acsl_exists = 1; - goto e_acsl_end_loop6; + goto e_acsl_end_loop5; } } { - __e_acsl_mpz_t __gen_e_acsl__31; - __e_acsl_mpz_t __gen_e_acsl_add_12; - __gmpz_init_set_str(__gen_e_acsl__31,"1",10); - __gmpz_init(__gen_e_acsl_add_12); - __gmpz_add(__gen_e_acsl_add_12, - (__e_acsl_mpz_struct const *)(__gen_e_acsl_x_6), - (__e_acsl_mpz_struct const *)(__gen_e_acsl__31)); - __gmpz_set(__gen_e_acsl_x_6, - (__e_acsl_mpz_struct const *)(__gen_e_acsl_add_12)); - __gmpz_clear(__gen_e_acsl__31); - __gmpz_clear(__gen_e_acsl_add_12); + __e_acsl_mpz_t __gen_e_acsl__27; + __e_acsl_mpz_t __gen_e_acsl_add_10; + __gmpz_init_set_str(__gen_e_acsl__27,"1",10); + __gmpz_init(__gen_e_acsl_add_10); + __gmpz_add(__gen_e_acsl_add_10, + (__e_acsl_mpz_struct const *)(__gen_e_acsl_x_5), + (__e_acsl_mpz_struct const *)(__gen_e_acsl__27)); + __gmpz_set(__gen_e_acsl_x_5, + (__e_acsl_mpz_struct const *)(__gen_e_acsl_add_10)); + __gmpz_clear(__gen_e_acsl__27); + __gmpz_clear(__gen_e_acsl_add_10); } } - e_acsl_end_loop6: ; + e_acsl_end_loop5: ; __e_acsl_assert(__gen_e_acsl_exists,(char *)"Assertion",(char *)"main", - (char *)"\\exists int x; 0 <= x < 10 && x == 5",21); - __gmpz_clear(__gen_e_acsl_x_6); + (char *)"\\exists int x; 0 <= x < 10 && x == 5",20); + __gmpz_clear(__gen_e_acsl_x_5); } /*@ assert ∀ int x; @@ -444,47 +388,47 @@ int main(void) x % 2 ≡ 0 ⇒ (∃ ℤ y; 0 ≤ y ≤ x / 2 ∧ x ≡ 2 * y); */ { - int __gen_e_acsl_forall_6; - __e_acsl_mpz_t __gen_e_acsl_x_7; - __gen_e_acsl_forall_6 = 1; - __gmpz_init(__gen_e_acsl_x_7); + int __gen_e_acsl_forall_5; + __e_acsl_mpz_t __gen_e_acsl_x_6; + __gen_e_acsl_forall_5 = 1; + __gmpz_init(__gen_e_acsl_x_6); { - __e_acsl_mpz_t __gen_e_acsl__39; - __gmpz_init_set_si(__gen_e_acsl__39,0L); - __gmpz_set(__gen_e_acsl_x_7, - (__e_acsl_mpz_struct const *)(__gen_e_acsl__39)); - __gmpz_clear(__gen_e_acsl__39); + __e_acsl_mpz_t __gen_e_acsl__35; + __gmpz_init_set_si(__gen_e_acsl__35,0L); + __gmpz_set(__gen_e_acsl_x_6, + (__e_acsl_mpz_struct const *)(__gen_e_acsl__35)); + __gmpz_clear(__gen_e_acsl__35); } while (1) { { - __e_acsl_mpz_t __gen_e_acsl__40; - int __gen_e_acsl_lt_6; - __gmpz_init_set_si(__gen_e_acsl__40,10L); - __gen_e_acsl_lt_6 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_x_7), - (__e_acsl_mpz_struct const *)(__gen_e_acsl__40)); - if (__gen_e_acsl_lt_6 < 0) ; else break; - __gmpz_clear(__gen_e_acsl__40); + __e_acsl_mpz_t __gen_e_acsl__36; + int __gen_e_acsl_lt_5; + __gmpz_init_set_si(__gen_e_acsl__36,10L); + __gen_e_acsl_lt_5 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_x_6), + (__e_acsl_mpz_struct const *)(__gen_e_acsl__36)); + if (__gen_e_acsl_lt_5 < 0) ; else break; + __gmpz_clear(__gen_e_acsl__36); } { - __e_acsl_mpz_t __gen_e_acsl__32; - __e_acsl_mpz_t __gen_e_acsl__33; + __e_acsl_mpz_t __gen_e_acsl__28; + __e_acsl_mpz_t __gen_e_acsl__29; int __gen_e_acsl_mod_guard; __e_acsl_mpz_t __gen_e_acsl_mod; int __gen_e_acsl_eq_6; int __gen_e_acsl_implies; - __gmpz_init_set_si(__gen_e_acsl__32,2L); - __gmpz_init_set_si(__gen_e_acsl__33,0L); - __gen_e_acsl_mod_guard = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl__32), - (__e_acsl_mpz_struct const *)(__gen_e_acsl__33)); + __gmpz_init_set_si(__gen_e_acsl__28,2L); + __gmpz_init_set_si(__gen_e_acsl__29,0L); + __gen_e_acsl_mod_guard = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl__28), + (__e_acsl_mpz_struct const *)(__gen_e_acsl__29)); __gmpz_init(__gen_e_acsl_mod); /*@ assert E_ACSL: 2 ≢ 0; */ __e_acsl_assert(! (__gen_e_acsl_mod_guard == 0),(char *)"Assertion", - (char *)"main",(char *)"2 == 0",26); + (char *)"main",(char *)"2 == 0",25); __gmpz_tdiv_r(__gen_e_acsl_mod, - (__e_acsl_mpz_struct const *)(__gen_e_acsl_x_7), - (__e_acsl_mpz_struct const *)(__gen_e_acsl__32)); + (__e_acsl_mpz_struct const *)(__gen_e_acsl_x_6), + (__e_acsl_mpz_struct const *)(__gen_e_acsl__28)); __gen_e_acsl_eq_6 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_mod), - (__e_acsl_mpz_struct const *)(__gen_e_acsl__33)); + (__e_acsl_mpz_struct const *)(__gen_e_acsl__29)); if (! (__gen_e_acsl_eq_6 == 0)) __gen_e_acsl_implies = 1; else { int __gen_e_acsl_exists_2; @@ -492,103 +436,103 @@ int main(void) __gen_e_acsl_exists_2 = 0; __gmpz_init(__gen_e_acsl_y_2); { - __e_acsl_mpz_t __gen_e_acsl__35; - __gmpz_init_set_si(__gen_e_acsl__35,0L); + __e_acsl_mpz_t __gen_e_acsl__31; + __gmpz_init_set_si(__gen_e_acsl__31,0L); __gmpz_set(__gen_e_acsl_y_2, - (__e_acsl_mpz_struct const *)(__gen_e_acsl__35)); - __gmpz_clear(__gen_e_acsl__35); + (__e_acsl_mpz_struct const *)(__gen_e_acsl__31)); + __gmpz_clear(__gen_e_acsl__31); } while (1) { { - __e_acsl_mpz_t __gen_e_acsl__36; - __e_acsl_mpz_t __gen_e_acsl__37; + __e_acsl_mpz_t __gen_e_acsl__32; + __e_acsl_mpz_t __gen_e_acsl__33; int __gen_e_acsl_div_guard; __e_acsl_mpz_t __gen_e_acsl_div; int __gen_e_acsl_le_5; - __gmpz_init_set_si(__gen_e_acsl__36,2L); - __gmpz_init_set_si(__gen_e_acsl__37,0L); - __gen_e_acsl_div_guard = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl__36), - (__e_acsl_mpz_struct const *)(__gen_e_acsl__37)); + __gmpz_init_set_si(__gen_e_acsl__32,2L); + __gmpz_init_set_si(__gen_e_acsl__33,0L); + __gen_e_acsl_div_guard = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl__32), + (__e_acsl_mpz_struct const *)(__gen_e_acsl__33)); __gmpz_init(__gen_e_acsl_div); /*@ assert E_ACSL: 2 ≢ 0; */ __e_acsl_assert(! (__gen_e_acsl_div_guard == 0), (char *)"Assertion",(char *)"main", - (char *)"2 == 0",26); + (char *)"2 == 0",25); __gmpz_tdiv_q(__gen_e_acsl_div, - (__e_acsl_mpz_struct const *)(__gen_e_acsl_x_7), - (__e_acsl_mpz_struct const *)(__gen_e_acsl__36)); + (__e_acsl_mpz_struct const *)(__gen_e_acsl_x_6), + (__e_acsl_mpz_struct const *)(__gen_e_acsl__32)); __gen_e_acsl_le_5 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_y_2), (__e_acsl_mpz_struct const *)(__gen_e_acsl_div)); if (__gen_e_acsl_le_5 <= 0) ; else break; - __gmpz_clear(__gen_e_acsl__36); - __gmpz_clear(__gen_e_acsl__37); + __gmpz_clear(__gen_e_acsl__32); + __gmpz_clear(__gen_e_acsl__33); __gmpz_clear(__gen_e_acsl_div); } { - __e_acsl_mpz_t __gen_e_acsl__34; + __e_acsl_mpz_t __gen_e_acsl__30; __e_acsl_mpz_t __gen_e_acsl_mul; int __gen_e_acsl_eq_7; - __gmpz_init_set_si(__gen_e_acsl__34,2L); + __gmpz_init_set_si(__gen_e_acsl__30,2L); __gmpz_init(__gen_e_acsl_mul); __gmpz_mul(__gen_e_acsl_mul, - (__e_acsl_mpz_struct const *)(__gen_e_acsl__34), + (__e_acsl_mpz_struct const *)(__gen_e_acsl__30), (__e_acsl_mpz_struct const *)(__gen_e_acsl_y_2)); - __gen_e_acsl_eq_7 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_x_7), + __gen_e_acsl_eq_7 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_x_6), (__e_acsl_mpz_struct const *)(__gen_e_acsl_mul)); - __gmpz_clear(__gen_e_acsl__34); + __gmpz_clear(__gen_e_acsl__30); __gmpz_clear(__gen_e_acsl_mul); if (! (__gen_e_acsl_eq_7 == 0)) ; else { __gen_e_acsl_exists_2 = 1; - goto e_acsl_end_loop7; + goto e_acsl_end_loop6; } } { - __e_acsl_mpz_t __gen_e_acsl__38; - __e_acsl_mpz_t __gen_e_acsl_add_13; - __gmpz_init_set_str(__gen_e_acsl__38,"1",10); - __gmpz_init(__gen_e_acsl_add_13); - __gmpz_add(__gen_e_acsl_add_13, + __e_acsl_mpz_t __gen_e_acsl__34; + __e_acsl_mpz_t __gen_e_acsl_add_11; + __gmpz_init_set_str(__gen_e_acsl__34,"1",10); + __gmpz_init(__gen_e_acsl_add_11); + __gmpz_add(__gen_e_acsl_add_11, (__e_acsl_mpz_struct const *)(__gen_e_acsl_y_2), - (__e_acsl_mpz_struct const *)(__gen_e_acsl__38)); + (__e_acsl_mpz_struct const *)(__gen_e_acsl__34)); __gmpz_set(__gen_e_acsl_y_2, - (__e_acsl_mpz_struct const *)(__gen_e_acsl_add_13)); - __gmpz_clear(__gen_e_acsl__38); - __gmpz_clear(__gen_e_acsl_add_13); + (__e_acsl_mpz_struct const *)(__gen_e_acsl_add_11)); + __gmpz_clear(__gen_e_acsl__34); + __gmpz_clear(__gen_e_acsl_add_11); } } - e_acsl_end_loop7: ; + e_acsl_end_loop6: ; __gen_e_acsl_implies = __gen_e_acsl_exists_2; __gmpz_clear(__gen_e_acsl_y_2); } - __gmpz_clear(__gen_e_acsl__32); - __gmpz_clear(__gen_e_acsl__33); + __gmpz_clear(__gen_e_acsl__28); + __gmpz_clear(__gen_e_acsl__29); __gmpz_clear(__gen_e_acsl_mod); if (__gen_e_acsl_implies) ; else { - __gen_e_acsl_forall_6 = 0; - goto e_acsl_end_loop8; + __gen_e_acsl_forall_5 = 0; + goto e_acsl_end_loop7; } } { - __e_acsl_mpz_t __gen_e_acsl__41; - __e_acsl_mpz_t __gen_e_acsl_add_14; - __gmpz_init_set_str(__gen_e_acsl__41,"1",10); - __gmpz_init(__gen_e_acsl_add_14); - __gmpz_add(__gen_e_acsl_add_14, - (__e_acsl_mpz_struct const *)(__gen_e_acsl_x_7), - (__e_acsl_mpz_struct const *)(__gen_e_acsl__41)); - __gmpz_set(__gen_e_acsl_x_7, - (__e_acsl_mpz_struct const *)(__gen_e_acsl_add_14)); - __gmpz_clear(__gen_e_acsl__41); - __gmpz_clear(__gen_e_acsl_add_14); + __e_acsl_mpz_t __gen_e_acsl__37; + __e_acsl_mpz_t __gen_e_acsl_add_12; + __gmpz_init_set_str(__gen_e_acsl__37,"1",10); + __gmpz_init(__gen_e_acsl_add_12); + __gmpz_add(__gen_e_acsl_add_12, + (__e_acsl_mpz_struct const *)(__gen_e_acsl_x_6), + (__e_acsl_mpz_struct const *)(__gen_e_acsl__37)); + __gmpz_set(__gen_e_acsl_x_6, + (__e_acsl_mpz_struct const *)(__gen_e_acsl_add_12)); + __gmpz_clear(__gen_e_acsl__37); + __gmpz_clear(__gen_e_acsl_add_12); } } - e_acsl_end_loop8: ; - __e_acsl_assert(__gen_e_acsl_forall_6,(char *)"Assertion",(char *)"main", + e_acsl_end_loop7: ; + __e_acsl_assert(__gen_e_acsl_forall_5,(char *)"Assertion",(char *)"main", (char *)"\\forall int x;\n 0 <= x < 10 ==>\n x % 2 == 0 ==> (\\exists integer y; 0 <= y <= x / 2 && x == 2 * y)", - 25); - __gmpz_clear(__gen_e_acsl_x_7); + 24); + __gmpz_clear(__gen_e_acsl_x_6); } { int buf[10]; @@ -596,26 +540,26 @@ int main(void) unsigned long len = (unsigned long)9; /*@ assert ∀ ℤ i; 0 ≤ i < 10 ⇒ \valid(&buf[i]); */ { - int __gen_e_acsl_forall_7; + int __gen_e_acsl_forall_6; __e_acsl_mpz_t __gen_e_acsl_i; - __gen_e_acsl_forall_7 = 1; + __gen_e_acsl_forall_6 = 1; __gmpz_init(__gen_e_acsl_i); { - __e_acsl_mpz_t __gen_e_acsl__42; - __gmpz_init_set_si(__gen_e_acsl__42,0L); + __e_acsl_mpz_t __gen_e_acsl__38; + __gmpz_init_set_si(__gen_e_acsl__38,0L); __gmpz_set(__gen_e_acsl_i, - (__e_acsl_mpz_struct const *)(__gen_e_acsl__42)); - __gmpz_clear(__gen_e_acsl__42); + (__e_acsl_mpz_struct const *)(__gen_e_acsl__38)); + __gmpz_clear(__gen_e_acsl__38); } while (1) { { - __e_acsl_mpz_t __gen_e_acsl__43; - int __gen_e_acsl_lt_7; - __gmpz_init_set_si(__gen_e_acsl__43,10L); - __gen_e_acsl_lt_7 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_i), - (__e_acsl_mpz_struct const *)(__gen_e_acsl__43)); - if (__gen_e_acsl_lt_7 < 0) ; else break; - __gmpz_clear(__gen_e_acsl__43); + __e_acsl_mpz_t __gen_e_acsl__39; + int __gen_e_acsl_lt_6; + __gmpz_init_set_si(__gen_e_acsl__39,10L); + __gen_e_acsl_lt_6 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_i), + (__e_acsl_mpz_struct const *)(__gen_e_acsl__39)); + if (__gen_e_acsl_lt_6 < 0) ; else break; + __gmpz_clear(__gen_e_acsl__39); } { long __gen_e_acsl_i_2; @@ -627,53 +571,53 @@ int main(void) (void *)0); if (__gen_e_acsl_valid) ; else { - __gen_e_acsl_forall_7 = 0; - goto e_acsl_end_loop9; + __gen_e_acsl_forall_6 = 0; + goto e_acsl_end_loop8; } } { - __e_acsl_mpz_t __gen_e_acsl__44; - __e_acsl_mpz_t __gen_e_acsl_add_15; - __gmpz_init_set_str(__gen_e_acsl__44,"1",10); - __gmpz_init(__gen_e_acsl_add_15); - __gmpz_add(__gen_e_acsl_add_15, + __e_acsl_mpz_t __gen_e_acsl__40; + __e_acsl_mpz_t __gen_e_acsl_add_13; + __gmpz_init_set_str(__gen_e_acsl__40,"1",10); + __gmpz_init(__gen_e_acsl_add_13); + __gmpz_add(__gen_e_acsl_add_13, (__e_acsl_mpz_struct const *)(__gen_e_acsl_i), - (__e_acsl_mpz_struct const *)(__gen_e_acsl__44)); + (__e_acsl_mpz_struct const *)(__gen_e_acsl__40)); __gmpz_set(__gen_e_acsl_i, - (__e_acsl_mpz_struct const *)(__gen_e_acsl_add_15)); - __gmpz_clear(__gen_e_acsl__44); - __gmpz_clear(__gen_e_acsl_add_15); + (__e_acsl_mpz_struct const *)(__gen_e_acsl_add_13)); + __gmpz_clear(__gen_e_acsl__40); + __gmpz_clear(__gen_e_acsl_add_13); } } - e_acsl_end_loop9: ; - __e_acsl_assert(__gen_e_acsl_forall_7,(char *)"Assertion", + e_acsl_end_loop8: ; + __e_acsl_assert(__gen_e_acsl_forall_6,(char *)"Assertion", (char *)"main", (char *)"\\forall integer i; 0 <= i < 10 ==> \\valid(&buf[i])", - 31); + 30); __gmpz_clear(__gen_e_acsl_i); } /*@ assert ∀ char i; 0 ≤ i < 10 ⇒ \valid(&buf[i]); */ { - int __gen_e_acsl_forall_8; + int __gen_e_acsl_forall_7; __e_acsl_mpz_t __gen_e_acsl_i_3; - __gen_e_acsl_forall_8 = 1; + __gen_e_acsl_forall_7 = 1; __gmpz_init(__gen_e_acsl_i_3); { - __e_acsl_mpz_t __gen_e_acsl__45; - __gmpz_init_set_si(__gen_e_acsl__45,0L); + __e_acsl_mpz_t __gen_e_acsl__41; + __gmpz_init_set_si(__gen_e_acsl__41,0L); __gmpz_set(__gen_e_acsl_i_3, - (__e_acsl_mpz_struct const *)(__gen_e_acsl__45)); - __gmpz_clear(__gen_e_acsl__45); + (__e_acsl_mpz_struct const *)(__gen_e_acsl__41)); + __gmpz_clear(__gen_e_acsl__41); } while (1) { { - __e_acsl_mpz_t __gen_e_acsl__46; - int __gen_e_acsl_lt_8; - __gmpz_init_set_si(__gen_e_acsl__46,10L); - __gen_e_acsl_lt_8 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_i_3), - (__e_acsl_mpz_struct const *)(__gen_e_acsl__46)); - if (__gen_e_acsl_lt_8 < 0) ; else break; - __gmpz_clear(__gen_e_acsl__46); + __e_acsl_mpz_t __gen_e_acsl__42; + int __gen_e_acsl_lt_7; + __gmpz_init_set_si(__gen_e_acsl__42,10L); + __gen_e_acsl_lt_7 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_i_3), + (__e_acsl_mpz_struct const *)(__gen_e_acsl__42)); + if (__gen_e_acsl_lt_7 < 0) ; else break; + __gmpz_clear(__gen_e_acsl__42); } { long __gen_e_acsl_i_4; @@ -685,52 +629,52 @@ int main(void) (void *)0); if (__gen_e_acsl_valid_2) ; else { - __gen_e_acsl_forall_8 = 0; - goto e_acsl_end_loop10; + __gen_e_acsl_forall_7 = 0; + goto e_acsl_end_loop9; } } { - __e_acsl_mpz_t __gen_e_acsl__47; - __e_acsl_mpz_t __gen_e_acsl_add_16; - __gmpz_init_set_str(__gen_e_acsl__47,"1",10); - __gmpz_init(__gen_e_acsl_add_16); - __gmpz_add(__gen_e_acsl_add_16, + __e_acsl_mpz_t __gen_e_acsl__43; + __e_acsl_mpz_t __gen_e_acsl_add_14; + __gmpz_init_set_str(__gen_e_acsl__43,"1",10); + __gmpz_init(__gen_e_acsl_add_14); + __gmpz_add(__gen_e_acsl_add_14, (__e_acsl_mpz_struct const *)(__gen_e_acsl_i_3), - (__e_acsl_mpz_struct const *)(__gen_e_acsl__47)); + (__e_acsl_mpz_struct const *)(__gen_e_acsl__43)); __gmpz_set(__gen_e_acsl_i_3, - (__e_acsl_mpz_struct const *)(__gen_e_acsl_add_16)); - __gmpz_clear(__gen_e_acsl__47); - __gmpz_clear(__gen_e_acsl_add_16); + (__e_acsl_mpz_struct const *)(__gen_e_acsl_add_14)); + __gmpz_clear(__gen_e_acsl__43); + __gmpz_clear(__gen_e_acsl_add_14); } } - e_acsl_end_loop10: ; - __e_acsl_assert(__gen_e_acsl_forall_8,(char *)"Assertion", + e_acsl_end_loop9: ; + __e_acsl_assert(__gen_e_acsl_forall_7,(char *)"Assertion", (char *)"main", (char *)"\\forall char i; 0 <= i < 10 ==> \\valid(&buf[i])", - 32); + 31); __gmpz_clear(__gen_e_acsl_i_3); } /*@ assert ∀ ℤ i; 0 ≤ i < len ⇒ \valid(&buf[i]); */ { - int __gen_e_acsl_forall_9; + int __gen_e_acsl_forall_8; __e_acsl_mpz_t __gen_e_acsl_i_5; - __gen_e_acsl_forall_9 = 1; + __gen_e_acsl_forall_8 = 1; __gmpz_init(__gen_e_acsl_i_5); { - __e_acsl_mpz_t __gen_e_acsl__48; - __gmpz_init_set_si(__gen_e_acsl__48,0L); + __e_acsl_mpz_t __gen_e_acsl__44; + __gmpz_init_set_si(__gen_e_acsl__44,0L); __gmpz_set(__gen_e_acsl_i_5, - (__e_acsl_mpz_struct const *)(__gen_e_acsl__48)); - __gmpz_clear(__gen_e_acsl__48); + (__e_acsl_mpz_struct const *)(__gen_e_acsl__44)); + __gmpz_clear(__gen_e_acsl__44); } while (1) { { __e_acsl_mpz_t __gen_e_acsl_len; - int __gen_e_acsl_lt_9; + int __gen_e_acsl_lt_8; __gmpz_init_set_ui(__gen_e_acsl_len,len); - __gen_e_acsl_lt_9 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_i_5), + __gen_e_acsl_lt_8 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_i_5), (__e_acsl_mpz_struct const *)(__gen_e_acsl_len)); - if (__gen_e_acsl_lt_9 < 0) ; else break; + if (__gen_e_acsl_lt_8 < 0) ; else break; __gmpz_clear(__gen_e_acsl_len); } { @@ -743,43 +687,43 @@ int main(void) (void *)0); if (__gen_e_acsl_valid_3) ; else { - __gen_e_acsl_forall_9 = 0; - goto e_acsl_end_loop11; + __gen_e_acsl_forall_8 = 0; + goto e_acsl_end_loop10; } } { - __e_acsl_mpz_t __gen_e_acsl__49; - __e_acsl_mpz_t __gen_e_acsl_add_17; - __gmpz_init_set_str(__gen_e_acsl__49,"1",10); - __gmpz_init(__gen_e_acsl_add_17); - __gmpz_add(__gen_e_acsl_add_17, + __e_acsl_mpz_t __gen_e_acsl__45; + __e_acsl_mpz_t __gen_e_acsl_add_15; + __gmpz_init_set_str(__gen_e_acsl__45,"1",10); + __gmpz_init(__gen_e_acsl_add_15); + __gmpz_add(__gen_e_acsl_add_15, (__e_acsl_mpz_struct const *)(__gen_e_acsl_i_5), - (__e_acsl_mpz_struct const *)(__gen_e_acsl__49)); + (__e_acsl_mpz_struct const *)(__gen_e_acsl__45)); __gmpz_set(__gen_e_acsl_i_5, - (__e_acsl_mpz_struct const *)(__gen_e_acsl_add_17)); - __gmpz_clear(__gen_e_acsl__49); - __gmpz_clear(__gen_e_acsl_add_17); + (__e_acsl_mpz_struct const *)(__gen_e_acsl_add_15)); + __gmpz_clear(__gen_e_acsl__45); + __gmpz_clear(__gen_e_acsl_add_15); } } - e_acsl_end_loop11: ; - __e_acsl_assert(__gen_e_acsl_forall_9,(char *)"Assertion", + e_acsl_end_loop10: ; + __e_acsl_assert(__gen_e_acsl_forall_8,(char *)"Assertion", (char *)"main", (char *)"\\forall integer i; 0 <= i < len ==> \\valid(&buf[i])", - 33); + 32); __gmpz_clear(__gen_e_acsl_i_5); } /*@ assert ∀ ℤ i; 0 ≤ i ≤ len ⇒ \valid(&buf[i]); */ { - int __gen_e_acsl_forall_10; + int __gen_e_acsl_forall_9; __e_acsl_mpz_t __gen_e_acsl_i_7; - __gen_e_acsl_forall_10 = 1; + __gen_e_acsl_forall_9 = 1; __gmpz_init(__gen_e_acsl_i_7); { - __e_acsl_mpz_t __gen_e_acsl__50; - __gmpz_init_set_si(__gen_e_acsl__50,0L); + __e_acsl_mpz_t __gen_e_acsl__46; + __gmpz_init_set_si(__gen_e_acsl__46,0L); __gmpz_set(__gen_e_acsl_i_7, - (__e_acsl_mpz_struct const *)(__gen_e_acsl__50)); - __gmpz_clear(__gen_e_acsl__50); + (__e_acsl_mpz_struct const *)(__gen_e_acsl__46)); + __gmpz_clear(__gen_e_acsl__46); } while (1) { { @@ -801,33 +745,49 @@ int main(void) (void *)0); if (__gen_e_acsl_valid_4) ; else { - __gen_e_acsl_forall_10 = 0; - goto e_acsl_end_loop12; + __gen_e_acsl_forall_9 = 0; + goto e_acsl_end_loop11; } } { - __e_acsl_mpz_t __gen_e_acsl__51; - __e_acsl_mpz_t __gen_e_acsl_add_18; - __gmpz_init_set_str(__gen_e_acsl__51,"1",10); - __gmpz_init(__gen_e_acsl_add_18); - __gmpz_add(__gen_e_acsl_add_18, + __e_acsl_mpz_t __gen_e_acsl__47; + __e_acsl_mpz_t __gen_e_acsl_add_16; + __gmpz_init_set_str(__gen_e_acsl__47,"1",10); + __gmpz_init(__gen_e_acsl_add_16); + __gmpz_add(__gen_e_acsl_add_16, (__e_acsl_mpz_struct const *)(__gen_e_acsl_i_7), - (__e_acsl_mpz_struct const *)(__gen_e_acsl__51)); + (__e_acsl_mpz_struct const *)(__gen_e_acsl__47)); __gmpz_set(__gen_e_acsl_i_7, - (__e_acsl_mpz_struct const *)(__gen_e_acsl_add_18)); - __gmpz_clear(__gen_e_acsl__51); - __gmpz_clear(__gen_e_acsl_add_18); + (__e_acsl_mpz_struct const *)(__gen_e_acsl_add_16)); + __gmpz_clear(__gen_e_acsl__47); + __gmpz_clear(__gen_e_acsl_add_16); } } - e_acsl_end_loop12: ; - __e_acsl_assert(__gen_e_acsl_forall_10,(char *)"Assertion", + e_acsl_end_loop11: ; + __e_acsl_assert(__gen_e_acsl_forall_9,(char *)"Assertion", (char *)"main", (char *)"\\forall integer i; 0 <= i <= len ==> \\valid(&buf[i])", - 34); + 33); __gmpz_clear(__gen_e_acsl_i_7); __e_acsl_delete_block((void *)(buf)); } } + /*@ assert ∀ ℤ x; 0 < x < 1 ⇒ \false; */ + __e_acsl_assert(1,(char *)"Assertion",(char *)"main", + (char *)"\\forall integer x; 0 < x < 1 ==> \\false",37); + /*@ assert ¬(∃ char c; 10 ≤ c < 10 ∧ c ≡ 10); */ + __e_acsl_assert(! 0,(char *)"Assertion",(char *)"main", + (char *)"!(\\exists char c; 10 <= c < 10 && c == 10)",38); + /*@ assert \let u = 5; + ∀ ℤ x, ℤ y; 0 ≤ x < 2 ∧ 4 < y < u ⇒ \false; + */ + { + int __gen_e_acsl_u; + __gen_e_acsl_u = 5; + __e_acsl_assert(1,(char *)"Assertion",(char *)"main", + (char *)"\\let u = 5;\n\\forall integer x, integer y; 0 <= x < 2 && 4 < y < u ==> \\false", + 40); + } __retres = 0; __e_acsl_memory_clean(); return __retres; diff --git a/src/plugins/e-acsl/tests/gmp/oracle/quantif.0.res.oracle b/src/plugins/e-acsl/tests/gmp/oracle/quantif.0.res.oracle index 25fae0b8e5c..cb1d4c89b81 100644 --- a/src/plugins/e-acsl/tests/gmp/oracle/quantif.0.res.oracle +++ b/src/plugins/e-acsl/tests/gmp/oracle/quantif.0.res.oracle @@ -16,33 +16,32 @@ [eva:alarm] tests/gmp/quantif.i:10: Warning: assertion got status unknown. [eva] tests/gmp/quantif.i:10: starting to merge loop iterations [eva:alarm] tests/gmp/quantif.i:11: Warning: assertion got status unknown. -[eva:alarm] tests/gmp/quantif.i:12: Warning: assertion got status unknown. -[eva] tests/gmp/quantif.i:12: starting to merge loop iterations -[eva:alarm] tests/gmp/quantif.i:16: Warning: assertion got status unknown. -[eva] tests/gmp/quantif.i:16: starting to merge loop iterations -[eva:alarm] tests/gmp/quantif.i:16: Warning: +[eva] tests/gmp/quantif.i:11: starting to merge loop iterations +[eva:alarm] tests/gmp/quantif.i:15: Warning: assertion got status unknown. +[eva] tests/gmp/quantif.i:15: starting to merge loop iterations +[eva:alarm] tests/gmp/quantif.i:15: Warning: function __e_acsl_assert: precondition got status unknown. -[eva:alarm] tests/gmp/quantif.i:21: Warning: assertion got status unknown. -[eva] tests/gmp/quantif.i:21: starting to merge loop iterations -[eva:alarm] tests/gmp/quantif.i:25: Warning: assertion got status unknown. +[eva:alarm] tests/gmp/quantif.i:20: Warning: assertion got status unknown. +[eva] tests/gmp/quantif.i:20: starting to merge loop iterations +[eva:alarm] tests/gmp/quantif.i:24: Warning: assertion got status unknown. +[eva] tests/gmp/quantif.i:24: starting to merge loop iterations [eva] tests/gmp/quantif.i:25: starting to merge loop iterations -[eva] tests/gmp/quantif.i:26: starting to merge loop iterations -[eva:alarm] tests/gmp/quantif.i:25: Warning: +[eva:alarm] tests/gmp/quantif.i:24: Warning: function __e_acsl_assert: precondition got status unknown. [eva] using specification for function __e_acsl_store_block -[eva:alarm] tests/gmp/quantif.i:31: Warning: assertion got status unknown. +[eva:alarm] tests/gmp/quantif.i:30: Warning: assertion got status unknown. [eva] using specification for function __e_acsl_valid +[eva] tests/gmp/quantif.i:30: starting to merge loop iterations +[eva:alarm] tests/gmp/quantif.i:30: Warning: + function __e_acsl_assert: precondition got status unknown. [eva] tests/gmp/quantif.i:31: starting to merge loop iterations [eva:alarm] tests/gmp/quantif.i:31: Warning: function __e_acsl_assert: precondition got status unknown. +[eva:alarm] tests/gmp/quantif.i:32: Warning: assertion got status unknown. [eva] tests/gmp/quantif.i:32: starting to merge loop iterations [eva:alarm] tests/gmp/quantif.i:32: Warning: function __e_acsl_assert: precondition got status unknown. [eva:alarm] tests/gmp/quantif.i:33: Warning: assertion got status unknown. -[eva] tests/gmp/quantif.i:33: starting to merge loop iterations -[eva:alarm] tests/gmp/quantif.i:33: Warning: - function __e_acsl_assert: precondition got status unknown. -[eva:alarm] tests/gmp/quantif.i:34: Warning: assertion got status unknown. [eva] using specification for function __gmpz_init [eva] using specification for function __gmpz_init_set_si [eva] using specification for function __gmpz_set @@ -51,8 +50,10 @@ [eva] using specification for function __gmpz_cmp [eva] using specification for function __gmpz_get_si [eva] using specification for function __gmpz_add -[eva:alarm] tests/gmp/quantif.i:34: Warning: +[eva:alarm] tests/gmp/quantif.i:33: Warning: function __e_acsl_assert: precondition got status unknown. [eva] using specification for function __e_acsl_delete_block +[eva:alarm] tests/gmp/quantif.i:37: Warning: assertion got status unknown. +[eva:alarm] tests/gmp/quantif.i:40: Warning: assertion got status unknown. [eva] using specification for function __e_acsl_memory_clean [eva] done for function main diff --git a/src/plugins/e-acsl/tests/gmp/oracle/quantif.1.res.oracle b/src/plugins/e-acsl/tests/gmp/oracle/quantif.1.res.oracle index dfd80721227..7a6b1edc0f8 100644 --- a/src/plugins/e-acsl/tests/gmp/oracle/quantif.1.res.oracle +++ b/src/plugins/e-acsl/tests/gmp/oracle/quantif.1.res.oracle @@ -27,40 +27,39 @@ [eva:alarm] tests/gmp/quantif.i:11: Warning: assertion got status unknown. [eva:alarm] tests/gmp/quantif.i:11: Warning: function __e_acsl_assert: precondition got status unknown. -[eva:alarm] tests/gmp/quantif.i:12: Warning: assertion got status unknown. -[eva:alarm] tests/gmp/quantif.i:12: Warning: +[eva:alarm] tests/gmp/quantif.i:15: Warning: assertion got status unknown. +[eva:alarm] tests/gmp/quantif.i:15: Warning: function __e_acsl_assert: precondition got status unknown. -[eva:alarm] tests/gmp/quantif.i:16: Warning: assertion got status unknown. -[eva:alarm] tests/gmp/quantif.i:16: Warning: +[eva:alarm] tests/gmp/quantif.i:20: Warning: assertion got status unknown. +[eva:alarm] tests/gmp/quantif.i:20: Warning: function __e_acsl_assert: precondition got status unknown. -[eva:alarm] tests/gmp/quantif.i:21: Warning: assertion got status unknown. -[eva:alarm] tests/gmp/quantif.i:21: Warning: - function __e_acsl_assert: precondition got status unknown. -[eva:alarm] tests/gmp/quantif.i:25: Warning: assertion got status unknown. -[eva:alarm] tests/gmp/quantif.i:26: Warning: +[eva:alarm] tests/gmp/quantif.i:24: Warning: assertion got status unknown. +[eva:alarm] tests/gmp/quantif.i:25: Warning: function __e_acsl_assert: precondition got status unknown. [eva] using specification for function __gmpz_tdiv_r -[eva:alarm] tests/gmp/quantif.i:26: Warning: +[eva:alarm] tests/gmp/quantif.i:25: Warning: function __e_acsl_assert: precondition got status unknown. [eva] using specification for function __gmpz_tdiv_q [eva] using specification for function __gmpz_mul -[eva:alarm] tests/gmp/quantif.i:25: Warning: +[eva:alarm] tests/gmp/quantif.i:24: Warning: function __e_acsl_assert: precondition got status unknown. [eva] using specification for function __e_acsl_store_block -[eva:alarm] tests/gmp/quantif.i:31: Warning: assertion got status unknown. +[eva:alarm] tests/gmp/quantif.i:30: Warning: assertion got status unknown. [eva] using specification for function __gmpz_get_si [eva] using specification for function __e_acsl_valid +[eva:alarm] tests/gmp/quantif.i:30: Warning: + function __e_acsl_assert: precondition got status unknown. [eva:alarm] tests/gmp/quantif.i:31: Warning: function __e_acsl_assert: precondition got status unknown. +[eva:alarm] tests/gmp/quantif.i:32: Warning: assertion got status unknown. +[eva] using specification for function __gmpz_init_set_ui [eva:alarm] tests/gmp/quantif.i:32: Warning: function __e_acsl_assert: precondition got status unknown. [eva:alarm] tests/gmp/quantif.i:33: Warning: assertion got status unknown. -[eva] using specification for function __gmpz_init_set_ui [eva:alarm] tests/gmp/quantif.i:33: Warning: function __e_acsl_assert: precondition got status unknown. -[eva:alarm] tests/gmp/quantif.i:34: Warning: assertion got status unknown. -[eva:alarm] tests/gmp/quantif.i:34: Warning: - function __e_acsl_assert: precondition got status unknown. [eva] using specification for function __e_acsl_delete_block +[eva:alarm] tests/gmp/quantif.i:37: Warning: assertion got status unknown. +[eva:alarm] tests/gmp/quantif.i:40: Warning: assertion got status unknown. [eva] using specification for function __e_acsl_memory_clean [eva] done for function main diff --git a/src/plugins/e-acsl/tests/gmp/quantif.i b/src/plugins/e-acsl/tests/gmp/quantif.i index 3a32e9a36b0..e7b792fd139 100644 --- a/src/plugins/e-acsl/tests/gmp/quantif.i +++ b/src/plugins/e-acsl/tests/gmp/quantif.i @@ -8,7 +8,6 @@ int main(void) { /*@ assert \forall integer x; 0 <= x <= 1 ==> x == 0 || x == 1; */ /*@ assert \forall integer x; 0 < x <= 1 ==> x == 1; */ - /*@ assert \forall integer x; 0 < x < 1 ==> \false; */ /*@ assert \forall integer x; 0 <= x < 1 ==> x == 0; */ /* // multiple universal quantifications */ @@ -34,5 +33,12 @@ int main(void) { /*@ assert \forall integer i; 0 <= i <= len ==> \valid(buf+i); */ } + // Empty quantifications + /*@ assert \forall integer x; 0 < x < 1 ==> \false; */ + /*@ assert ! \exists char c; 10 <= c < 10 && c == 10; */ ; + /*@ assert + \let u = 5; + \forall integer x,y; 0 <= x < 2 && 4 < y < u ==> \false; */ ; + return 0; } -- GitLab