From 526c153ef60f46877059895df9c0e7d2f3707b94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9cile=20Ruet-Cros?= <cecile.ruet-cros@cea.fr> Date: Wed, 3 Jul 2024 14:48:38 +0200 Subject: [PATCH] [wp] update test oracles --- .../wp/tests/wp_acsl/oracle/vset.res.oracle | 142 ++++++++++++++++-- .../wp_acsl/oracle_qualif/vset.res.oracle | 22 ++- 2 files changed, 142 insertions(+), 22 deletions(-) diff --git a/src/plugins/wp/tests/wp_acsl/oracle/vset.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle/vset.res.oracle index 64a5e103aaa..110faf822ca 100644 --- a/src/plugins/wp/tests/wp_acsl/oracle/vset.res.oracle +++ b/src/plugins/wp/tests/wp_acsl/oracle/vset.res.oracle @@ -10,9 +10,15 @@ Prove: true. ------------------------------------------------------------ +Goal Lemma 'direct_in_singleton': +Assume Lemmas: 'direct_in' +Prove: true. + +------------------------------------------------------------ + Goal Lemma 'indirect_equal_constants': Assume Lemmas: 'indirect_not_in_constants' 'indirect_in_constants' - 'direct_in' + 'direct_in_singleton' 'direct_in' Prove: member(1, L_Set1) /\ member(2, L_Set1) /\ member(3, L_Set1) /\ (forall i : Z. (member(i, L_Set1) -> ((i = 1) \/ (i = 2) \/ (i = 3)))). @@ -22,7 +28,8 @@ Goal Lemma 'indirect_equal_ghost': Assume Lemmas: 'indirect_in_ghost' 'indirect_not_equal_logical' 'indirect_equal_logical' 'indirect_not_in_logical' 'indirect_in_logical' 'indirect_not_equal_constants' 'indirect_equal_constants' - 'indirect_not_in_constants' 'indirect_in_constants' 'direct_in' + 'indirect_not_in_constants' 'indirect_in_constants' 'direct_in_singleton' + 'direct_in' Let a = L_Set2(int3_0, int2_0, int1_0). Assume { Have: is_sint32(int1_0). @@ -38,14 +45,15 @@ Prove: member(int1_0, a) /\ member(int2_0, a) /\ member(int3_0, a) /\ Goal Lemma 'indirect_equal_logical': Assume Lemmas: 'indirect_not_in_logical' 'indirect_in_logical' 'indirect_not_equal_constants' 'indirect_equal_constants' - 'indirect_not_in_constants' 'indirect_in_constants' 'direct_in' + 'indirect_not_in_constants' 'indirect_in_constants' 'direct_in_singleton' + 'direct_in' Prove: member(1, L_Set3) /\ member(2, L_Set3) /\ member(3, L_Set3) /\ (forall i : Z. (member(i, L_Set3) -> ((i = 1) \/ (i = 2) \/ (i = 3)))). ------------------------------------------------------------ Goal Lemma 'indirect_in_constants': -Assume Lemmas: 'direct_in' +Assume Lemmas: 'direct_in_singleton' 'direct_in' Prove: member(2, L_Set1). ------------------------------------------------------------ @@ -54,7 +62,8 @@ Goal Lemma 'indirect_in_ghost': Assume Lemmas: 'indirect_not_equal_logical' 'indirect_equal_logical' 'indirect_not_in_logical' 'indirect_in_logical' 'indirect_not_equal_constants' 'indirect_equal_constants' - 'indirect_not_in_constants' 'indirect_in_constants' 'direct_in' + 'indirect_not_in_constants' 'indirect_in_constants' 'direct_in_singleton' + 'direct_in' Assume { Have: is_sint32(int2_0). } Prove: member(int2_0, L_Set2(int3_0, int2_0, int1_0)). @@ -62,14 +71,15 @@ Prove: member(int2_0, L_Set2(int3_0, int2_0, int1_0)). Goal Lemma 'indirect_in_logical': Assume Lemmas: 'indirect_not_equal_constants' 'indirect_equal_constants' - 'indirect_not_in_constants' 'indirect_in_constants' 'direct_in' + 'indirect_not_in_constants' 'indirect_in_constants' 'direct_in_singleton' + 'direct_in' Prove: member(2, L_Set3). ------------------------------------------------------------ Goal Lemma 'indirect_not_equal_constants': Assume Lemmas: 'indirect_equal_constants' 'indirect_not_in_constants' - 'indirect_in_constants' 'direct_in' + 'indirect_in_constants' 'direct_in_singleton' 'direct_in' Prove: (!member(0, L_Set1)) \/ (!member(1, L_Set1)) \/ (!member(2, L_Set1)) \/ (exists i : Z. (i != 0) /\ (i != 1) /\ (i != 2) /\ member(i, L_Set1)). @@ -80,7 +90,7 @@ Goal Lemma 'indirect_not_equal_logical': Assume Lemmas: 'indirect_equal_logical' 'indirect_not_in_logical' 'indirect_in_logical' 'indirect_not_equal_constants' 'indirect_equal_constants' 'indirect_not_in_constants' - 'indirect_in_constants' 'direct_in' + 'indirect_in_constants' 'direct_in_singleton' 'direct_in' Prove: (!member(0, L_Set3)) \/ (!member(1, L_Set3)) \/ (!member(2, L_Set3)) \/ (exists i : Z. (i != 0) /\ (i != 1) /\ (i != 2) /\ member(i, L_Set3)). @@ -88,7 +98,7 @@ Prove: (!member(0, L_Set3)) \/ (!member(1, L_Set3)) \/ ------------------------------------------------------------ Goal Lemma 'indirect_not_in_constants': -Assume Lemmas: 'indirect_in_constants' 'direct_in' +Assume Lemmas: 'indirect_in_constants' 'direct_in_singleton' 'direct_in' Prove: !member(4, L_Set1). ------------------------------------------------------------ @@ -96,21 +106,121 @@ Prove: !member(4, L_Set1). Goal Lemma 'indirect_not_in_logical': Assume Lemmas: 'indirect_in_logical' 'indirect_not_equal_constants' 'indirect_equal_constants' 'indirect_not_in_constants' - 'indirect_in_constants' 'direct_in' + 'indirect_in_constants' 'direct_in_singleton' 'direct_in' Prove: !member(0, L_Set3). ------------------------------------------------------------ -Goal Lemma 'iota_compute_equal_constants': -Assume Lemmas: 'indirect_equal_ghost' 'indirect_in_ghost' +Goal Lemma 'iota0_compute_0in_constants': +Assume Lemmas: 'rec_iota' 'rec_iota_gt0' 'rec_iota_le0' 'iota_ind0' + 'indirect_equal_ghost' 'indirect_in_ghost' 'indirect_not_equal_logical' + 'indirect_equal_logical' 'indirect_not_in_logical' 'indirect_in_logical' + 'indirect_not_equal_constants' 'indirect_equal_constants' + 'indirect_not_in_constants' 'indirect_in_constants' 'direct_in_singleton' + 'direct_in' +Prove: member(0, L_iota(0)). + +------------------------------------------------------------ + +Goal Lemma 'iota1_compute_equal_constants': +Assume Lemmas: 'iota3_compute_equal_constants' 'iota3_compute_2in_constants' + 'iota3_compute_0in_constants' 'iota0_compute_0in_constants' 'rec_iota' + 'rec_iota_gt0' 'rec_iota_le0' 'iota_ind0' 'indirect_equal_ghost' + 'indirect_in_ghost' 'indirect_not_equal_logical' 'indirect_equal_logical' + 'indirect_not_in_logical' 'indirect_in_logical' + 'indirect_not_equal_constants' 'indirect_equal_constants' + 'indirect_not_in_constants' 'indirect_in_constants' 'direct_in_singleton' + 'direct_in' +Let a = L_iota(1). +Prove: member(0, a) /\ member(1, a) /\ + (forall i : Z. (member(i, a) -> ((i = 0) \/ (i = 1)))). + +------------------------------------------------------------ + +Goal Lemma 'iota3_compute_0in_constants': +Assume Lemmas: 'iota0_compute_0in_constants' 'rec_iota' 'rec_iota_gt0' + 'rec_iota_le0' 'iota_ind0' 'indirect_equal_ghost' 'indirect_in_ghost' 'indirect_not_equal_logical' 'indirect_equal_logical' 'indirect_not_in_logical' 'indirect_in_logical' 'indirect_not_equal_constants' 'indirect_equal_constants' - 'indirect_not_in_constants' 'indirect_in_constants' 'direct_in' -Let a = L_iota(4). + 'indirect_not_in_constants' 'indirect_in_constants' 'direct_in_singleton' + 'direct_in' +Prove: member(0, L_iota(3)). + +------------------------------------------------------------ + +Goal Lemma 'iota3_compute_2in_constants': +Assume Lemmas: 'iota3_compute_0in_constants' 'iota0_compute_0in_constants' + 'rec_iota' 'rec_iota_gt0' 'rec_iota_le0' 'iota_ind0' 'indirect_equal_ghost' + 'indirect_in_ghost' 'indirect_not_equal_logical' 'indirect_equal_logical' + 'indirect_not_in_logical' 'indirect_in_logical' + 'indirect_not_equal_constants' 'indirect_equal_constants' + 'indirect_not_in_constants' 'indirect_in_constants' 'direct_in_singleton' + 'direct_in' +Prove: member(2, L_iota(3)). + +------------------------------------------------------------ + +Goal Lemma 'iota3_compute_equal_constants': +Assume Lemmas: 'iota3_compute_2in_constants' 'iota3_compute_0in_constants' + 'iota0_compute_0in_constants' 'rec_iota' 'rec_iota_gt0' 'rec_iota_le0' + 'iota_ind0' 'indirect_equal_ghost' 'indirect_in_ghost' + 'indirect_not_equal_logical' 'indirect_equal_logical' + 'indirect_not_in_logical' 'indirect_in_logical' + 'indirect_not_equal_constants' 'indirect_equal_constants' + 'indirect_not_in_constants' 'indirect_in_constants' 'direct_in_singleton' + 'direct_in' +Let a = L_iota(3). Prove: member(0, a) /\ member(1, a) /\ member(2, a) /\ member(3, a) /\ - member(4, a) /\ (forall i : Z. (member(i, a) -> - ((i = 0) \/ (i = 1) \/ (i = 2) \/ (i = 3) \/ (i = 4)))). + ((i = 0) \/ (i = 1) \/ (i = 2) \/ (i = 3)))). + +------------------------------------------------------------ + +Goal Lemma 'iota_ind0': +Assume Lemmas: 'indirect_equal_ghost' 'indirect_in_ghost' + 'indirect_not_equal_logical' 'indirect_equal_logical' + 'indirect_not_in_logical' 'indirect_in_logical' + 'indirect_not_equal_constants' 'indirect_equal_constants' + 'indirect_not_in_constants' 'indirect_in_constants' 'direct_in_singleton' + 'direct_in' +Let a = L_iota(n). Assume { Have: n <= 0. } +Prove: member(0, a) /\ (forall i : Z. (member(i, a) -> (i = 0))). + +------------------------------------------------------------ + +Goal Lemma 'rec_iota': +Assume Lemmas: 'rec_iota_gt0' 'rec_iota_le0' 'iota_ind0' + 'indirect_equal_ghost' 'indirect_in_ghost' 'indirect_not_equal_logical' + 'indirect_equal_logical' 'indirect_not_in_logical' 'indirect_in_logical' + 'indirect_not_equal_constants' 'indirect_equal_constants' + 'indirect_not_in_constants' 'indirect_in_constants' 'direct_in_singleton' + 'direct_in' +Assume { Have: member(i, L_iota(n)). } +Prove: (n = i) \/ member(i, L_iota(n - 1)). + +------------------------------------------------------------ + +Goal Lemma 'rec_iota_gt0': +Assume Lemmas: 'rec_iota_le0' 'iota_ind0' 'indirect_equal_ghost' + 'indirect_in_ghost' 'indirect_not_equal_logical' 'indirect_equal_logical' + 'indirect_not_in_logical' 'indirect_in_logical' + 'indirect_not_equal_constants' 'indirect_equal_constants' + 'indirect_not_in_constants' 'indirect_in_constants' 'direct_in_singleton' + 'direct_in' +Assume { Have: 0 < n. Have: member(i, L_iota(n)). } +Prove: (n = i) \/ member(i, L_iota(n - 1)). + +------------------------------------------------------------ + +Goal Lemma 'rec_iota_le0': +Assume Lemmas: 'iota_ind0' 'indirect_equal_ghost' 'indirect_in_ghost' + 'indirect_not_equal_logical' 'indirect_equal_logical' + 'indirect_not_in_logical' 'indirect_in_logical' + 'indirect_not_equal_constants' 'indirect_equal_constants' + 'indirect_not_in_constants' 'indirect_in_constants' 'direct_in_singleton' + 'direct_in' +Assume { Have: n <= 0. Have: member(i, L_iota(n)). } +Prove: i = 0. ------------------------------------------------------------ diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/vset.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/vset.res.oracle index 590587b0d95..f8daf4ebd2e 100644 --- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/vset.res.oracle +++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/vset.res.oracle @@ -1,8 +1,9 @@ # frama-c -wp [...] [kernel] Parsing vset.i (no preprocessing) [wp] Running WP plugin... -[wp] 12 goals scheduled +[wp] 21 goals scheduled [wp] [Valid] typed_lemma_direct_in (Qed) +[wp] [Valid] typed_lemma_direct_in_singleton (Qed) [wp] [Valid] typed_lemma_indirect_equal_constants (Alt-Ergo) (Cached) [wp] [Valid] typed_lemma_indirect_equal_ghost (Alt-Ergo) (Cached) [wp] [Valid] typed_lemma_indirect_equal_logical (Alt-Ergo) (Cached) @@ -13,11 +14,20 @@ [wp] [Valid] typed_lemma_indirect_not_equal_logical (Alt-Ergo) (Cached) [wp] [Valid] typed_lemma_indirect_not_in_constants (Alt-Ergo) (Cached) [wp] [Valid] typed_lemma_indirect_not_in_logical (Alt-Ergo) (Cached) -[wp] [Valid] typed_lemma_iota_compute_equal_constants (Alt-Ergo) (Cached) -[wp] Proved goals: 12 / 12 - Qed: 1 - Alt-Ergo: 11 +[wp] [Valid] typed_lemma_iota0_compute_0in_constants (Alt-Ergo) (Cached) +[wp] [Valid] typed_lemma_iota1_compute_equal_constants (Alt-Ergo) (Cached) +[wp] [Valid] typed_lemma_iota3_compute_0in_constants (Alt-Ergo) (Cached) +[wp] [Valid] typed_lemma_iota3_compute_2in_constants (Alt-Ergo) (Cached) +[wp] [Unsuccess] typed_lemma_iota3_compute_equal_constants (Alt-Ergo) (Cached) +[wp] [Unsuccess] typed_lemma_iota_ind0 (Alt-Ergo) (Cached) +[wp] [Valid] typed_lemma_rec_iota (Alt-Ergo) (Cached) +[wp] [Unsuccess] typed_lemma_rec_iota_gt0 (Alt-Ergo) (Cached) +[wp] [Valid] typed_lemma_rec_iota_le0 (Alt-Ergo) (Cached) +[wp] Proved goals: 18 / 21 + Qed: 2 + Alt-Ergo: 16 + Unsuccess: 3 ------------------------------------------------------------ Axiomatics WP Alt-Ergo Total Success - Lemma 1 11 12 100% + Lemma 2 16 21 85.7% ------------------------------------------------------------ -- GitLab