From c55b78426d9b6810f5e424815ca129695dd35b48 Mon Sep 17 00:00:00 2001 From: Allan Blanchard <allan.blanchard@cea.fr> Date: Fri, 18 Sep 2020 15:45:37 +0200 Subject: [PATCH] [wp] Test that RefUsage takes lemmas in account --- .../oracle/ref-usage-lemmas.res.oracle | 19 +++++++++++ .../wp/tests/wp_usage/ref-usage-lemmas.i | 34 +++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 src/plugins/wp/tests/wp_usage/oracle/ref-usage-lemmas.res.oracle create mode 100644 src/plugins/wp/tests/wp_usage/ref-usage-lemmas.i diff --git a/src/plugins/wp/tests/wp_usage/oracle/ref-usage-lemmas.res.oracle b/src/plugins/wp/tests/wp_usage/oracle/ref-usage-lemmas.res.oracle new file mode 100644 index 00000000000..a22e16a5c31 --- /dev/null +++ b/src/plugins/wp/tests/wp_usage/oracle/ref-usage-lemmas.res.oracle @@ -0,0 +1,19 @@ +# frama-c -wp [...] +[kernel] Parsing tests/wp_usage/ref-usage-lemmas.i (no preprocessing) +[wp] Running WP plugin... +................................................. +... Ref Usage +................................................. +Init: { &a b } +Function foo: { &a b *x } +Function main: { &a b __retres } +................................................. +[wp] Warning: Missing RTE guards +------------------------------------------------------------ + Function main +------------------------------------------------------------ + +Goal Pre-condition (file tests/wp_usage/ref-usage-lemmas.i, line 30) in 'main': +Prove: true. + +------------------------------------------------------------ diff --git a/src/plugins/wp/tests/wp_usage/ref-usage-lemmas.i b/src/plugins/wp/tests/wp_usage/ref-usage-lemmas.i new file mode 100644 index 00000000000..77c4c585522 --- /dev/null +++ b/src/plugins/wp/tests/wp_usage/ref-usage-lemmas.i @@ -0,0 +1,34 @@ +/* run.config + OPT: -wp-msg-key refusage +*/ +/* run.config_qualif + DONTRUN: +*/ + +int a ; +int b ; + +/*@ axiomatic A{ + logic int* get reads \nothing ; + logic int* get_h = &a ; + + axiom a: get_h == get ; + } + +*/ + +/*@ axiomatic B{ + logic integer value reads \nothing ; + axiom b: value == b ; + } +*/ + +void foo(int* x){ + *x = a = b ; +} + +/*@ requires a <= b ; */ +int main(void){ + int e ; + foo(&e) ; +} -- GitLab