From bb0d6454db7db68f8c6f79b31b00773977127bfc Mon Sep 17 00:00:00 2001 From: Allan Blanchard <allan.blanchard@cea.fr> Date: Tue, 1 Jun 2021 17:23:21 +0200 Subject: [PATCH] [wp] More tests for smoking assumes --- src/plugins/wp/tests/wp_plugin/doomed_pre.i | 33 ++++++- .../wp_plugin/oracle/doomed_pre.res.oracle | 88 +++++++++++++++++-- .../oracle_qualif/doomed_pre.res.oracle | 43 ++++++--- 3 files changed, 146 insertions(+), 18 deletions(-) diff --git a/src/plugins/wp/tests/wp_plugin/doomed_pre.i b/src/plugins/wp/tests/wp_plugin/doomed_pre.i index 104c9ec932c..d7be0aa8c9a 100644 --- a/src/plugins/wp/tests/wp_plugin/doomed_pre.i +++ b/src/plugins/wp/tests/wp_plugin/doomed_pre.i @@ -7,13 +7,34 @@ */ //@ requires a < 0 && a > 0 ; -void default_requires(int a){} +void requires(int a){} /*@ requires a < 0 ; behavior B: assumes a > 0 ; */ -void default_reqs_assumes(int a){} +void reqs_assumes(int a){} + +/*@ requires a < 0 ; + behavior B: + assumes a > 0 ; + assumes a > 1 ; +*/ +void reqs_2_2_assumes(int a){} + +/*@ requires a < 0 ; + behavior B: + assumes a > 0 ; + assumes a < -42 ; +*/ +void reqs_1_2_assumes(int a){} + +/*@ requires a >= 0 ; + behavior B: + assumes a > 10 ; + assumes a < 10 ; +*/ +void reqs_combined_assumes(int a){} /*@ behavior B: assumes a < 0 && a > 0 ; // not detected @@ -25,3 +46,11 @@ void only_assumes(int a){} requires a < 0 ; */ void bhv_requires_assumes(int a){} + +/*@ requires a < 0 ; + behavior B1: + assumes a > 0 ; + behavior B2: + assumes a > 1 ; +*/ +void reqs_massumes(int a){} diff --git a/src/plugins/wp/tests/wp_plugin/oracle/doomed_pre.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle/doomed_pre.res.oracle index b472440a78e..fe70e5a3f43 100644 --- a/src/plugins/wp/tests/wp_plugin/oracle/doomed_pre.res.oracle +++ b/src/plugins/wp/tests/wp_plugin/oracle/doomed_pre.res.oracle @@ -11,27 +11,103 @@ Prove: true. ------------------------------------------------------------ ------------------------------------------------------------ - Function default_reqs_assumes + Function reqs_1_2_assumes ------------------------------------------------------------ -Goal Wp_smoke_default_requires in 'default_reqs_assumes': +Goal Wp_smoke_default_requires in 'reqs_1_2_assumes': Assume { Type: is_sint32(a). (* Pre-condition *) Have: a < 0. } Prove: false. ------------------------------------------------------------ ------------------------------------------------------------ - Function default_reqs_assumes with behavior B + Function reqs_1_2_assumes with behavior B ------------------------------------------------------------ -Goal Wp_smoke_B_assumes in 'default_reqs_assumes': +Goal Wp_smoke_B_assumes in 'reqs_1_2_assumes': Prove: true. ------------------------------------------------------------ ------------------------------------------------------------ - Function default_requires + Function reqs_2_2_assumes ------------------------------------------------------------ -Goal Wp_smoke_default_requires in 'default_requires': +Goal Wp_smoke_default_requires in 'reqs_2_2_assumes': +Assume { Type: is_sint32(a). (* Pre-condition *) Have: a < 0. } +Prove: false. + +------------------------------------------------------------ +------------------------------------------------------------ + Function reqs_2_2_assumes with behavior B +------------------------------------------------------------ + +Goal Wp_smoke_B_assumes in 'reqs_2_2_assumes': +Prove: true. + +------------------------------------------------------------ +------------------------------------------------------------ + Function reqs_assumes +------------------------------------------------------------ + +Goal Wp_smoke_default_requires in 'reqs_assumes': +Assume { Type: is_sint32(a). (* Pre-condition *) Have: a < 0. } +Prove: false. + +------------------------------------------------------------ +------------------------------------------------------------ + Function reqs_assumes with behavior B +------------------------------------------------------------ + +Goal Wp_smoke_B_assumes in 'reqs_assumes': +Prove: true. + +------------------------------------------------------------ +------------------------------------------------------------ + Function reqs_combined_assumes +------------------------------------------------------------ + +Goal Wp_smoke_default_requires in 'reqs_combined_assumes': +Assume { Type: is_sint32(a). (* Pre-condition *) Have: 0 <= a. } +Prove: false. + +------------------------------------------------------------ +------------------------------------------------------------ + Function reqs_combined_assumes with behavior B +------------------------------------------------------------ + +Goal Wp_smoke_B_assumes in 'reqs_combined_assumes': +Prove: true. + +------------------------------------------------------------ +------------------------------------------------------------ + Function reqs_massumes +------------------------------------------------------------ + +Goal Wp_smoke_default_requires in 'reqs_massumes': +Assume { Type: is_sint32(a). (* Pre-condition *) Have: a < 0. } +Prove: false. + +------------------------------------------------------------ +------------------------------------------------------------ + Function reqs_massumes with behavior B1 +------------------------------------------------------------ + +Goal Wp_smoke_B1_assumes in 'reqs_massumes': +Prove: true. + +------------------------------------------------------------ +------------------------------------------------------------ + Function reqs_massumes with behavior B2 +------------------------------------------------------------ + +Goal Wp_smoke_B2_assumes in 'reqs_massumes': +Prove: true. + +------------------------------------------------------------ +------------------------------------------------------------ + Function requires +------------------------------------------------------------ + +Goal Wp_smoke_default_requires in 'requires': Prove: true. ------------------------------------------------------------ diff --git a/src/plugins/wp/tests/wp_plugin/oracle_qualif/doomed_pre.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle_qualif/doomed_pre.res.oracle index 80e10bd4d49..34eb51d822f 100644 --- a/src/plugins/wp/tests/wp_plugin/oracle_qualif/doomed_pre.res.oracle +++ b/src/plugins/wp/tests/wp_plugin/oracle_qualif/doomed_pre.res.oracle @@ -2,23 +2,46 @@ [kernel] Parsing tests/wp_plugin/doomed_pre.i (no preprocessing) [wp] Running WP plugin... [wp] Warning: Missing RTE guards -[wp] 4 goals scheduled -[wp] [Failed] Smoke-test typed_default_requires_wp_smoke_default_requires +[wp] 13 goals scheduled +[wp] [Failed] Smoke-test typed_requires_wp_smoke_default_requires Qed: Valid [wp] tests/wp_plugin/doomed_pre.i:10: Warning: Failed smoke-test -[wp] [Passed] Smoke-test typed_default_reqs_assumes_wp_smoke_default_requires -[wp] [Failed] Smoke-test typed_default_reqs_assumes_wp_smoke_B_assumes +[wp] [Passed] Smoke-test typed_reqs_assumes_wp_smoke_default_requires +[wp] [Failed] Smoke-test typed_reqs_assumes_wp_smoke_B_assumes Qed: Valid [wp] tests/wp_plugin/doomed_pre.i:16: Warning: Failed smoke-test +[wp] [Passed] Smoke-test typed_reqs_2_2_assumes_wp_smoke_default_requires +[wp] [Failed] Smoke-test typed_reqs_2_2_assumes_wp_smoke_B_assumes + Qed: Valid +[wp] tests/wp_plugin/doomed_pre.i:23: Warning: Failed smoke-test +[wp] [Passed] Smoke-test typed_reqs_1_2_assumes_wp_smoke_default_requires +[wp] [Failed] Smoke-test typed_reqs_1_2_assumes_wp_smoke_B_assumes + Qed: Valid +[wp] tests/wp_plugin/doomed_pre.i:30: Warning: Failed smoke-test +[wp] [Passed] Smoke-test typed_reqs_combined_assumes_wp_smoke_default_requires +[wp] [Failed] Smoke-test typed_reqs_combined_assumes_wp_smoke_B_assumes + Qed: Valid +[wp] tests/wp_plugin/doomed_pre.i:37: Warning: Failed smoke-test [wp] [Failed] Smoke-test typed_bhv_requires_assumes_wp_smoke_B_requires Qed: Valid -[wp] tests/wp_plugin/doomed_pre.i:27: Warning: Failed smoke-test -[wp] Proved goals: 1 / 4 - Qed: 0 (failed: 3) - Alt-Ergo: 1 +[wp] tests/wp_plugin/doomed_pre.i:48: Warning: Failed smoke-test +[wp] [Passed] Smoke-test typed_reqs_massumes_wp_smoke_default_requires +[wp] [Failed] Smoke-test typed_reqs_massumes_wp_smoke_B1_assumes + Qed: Valid +[wp] tests/wp_plugin/doomed_pre.i:56: Warning: Failed smoke-test +[wp] [Failed] Smoke-test typed_reqs_massumes_wp_smoke_B2_assumes + Qed: Valid +[wp] tests/wp_plugin/doomed_pre.i:56: Warning: Failed smoke-test +[wp] Proved goals: 5 / 13 + Qed: 0 (failed: 8) + Alt-Ergo: 5 ------------------------------------------------------------ Functions WP Alt-Ergo Total Success - default_requires - - 1 0.0% - default_reqs_assumes - 1 2 50.0% + requires - - 1 0.0% + reqs_assumes - 1 2 50.0% + reqs_2_2_assumes - 1 2 50.0% + reqs_1_2_assumes - 1 2 50.0% + reqs_combined_assumes - 1 2 50.0% bhv_requires_assumes - - 1 0.0% + reqs_massumes - 1 3 33.3% ------------------------------------------------------------ -- GitLab