From ce9becf01ce4a5a34e1bf143d6fc4a068ff9cdd5 Mon Sep 17 00:00:00 2001 From: Allan Blanchard <allan.blanchard@cea.fr> Date: Fri, 7 Jan 2022 14:06:21 +0100 Subject: [PATCH] [wp] Removed alt-ergo libs --- headers/header_spec.txt | 31 - src/plugins/wp/share/ergo/ArcTrigo.mlw | 40 -- src/plugins/wp/share/ergo/Cbits.mlw | 553 ------------------ src/plugins/wp/share/ergo/Cfloat.mlw | 360 ------------ src/plugins/wp/share/ergo/Cint.mlw | 224 ------- src/plugins/wp/share/ergo/Cmath.mlw | 34 -- src/plugins/wp/share/ergo/ExpLog.mlw | 30 - src/plugins/wp/share/ergo/Memory.mlw | 212 ------- src/plugins/wp/share/ergo/Qed.mlw | 158 ----- src/plugins/wp/share/ergo/Square.mlw | 37 -- src/plugins/wp/share/ergo/Vlist.mlw | 126 ---- src/plugins/wp/share/ergo/Vset.mlw | 152 ----- src/plugins/wp/share/ergo/bool.Bool.mlw | 27 - src/plugins/wp/share/ergo/int.Abs.mlw | 35 -- .../wp/share/ergo/int.ComputerDivision.mlw | 49 -- .../ergo/int.ComputerOfEuclideanDivision.mlw | 52 -- src/plugins/wp/share/ergo/int.Int.mlw | 18 - src/plugins/wp/share/ergo/int.MinMax.mlw | 52 -- src/plugins/wp/share/ergo/map.Const.mlw | 23 - src/plugins/wp/share/ergo/map.Map.mlw | 17 - src/plugins/wp/share/ergo/real.Abs.mlw | 48 -- src/plugins/wp/share/ergo/real.ExpLog.mlw | 41 -- src/plugins/wp/share/ergo/real.FromInt.mlw | 45 -- src/plugins/wp/share/ergo/real.Hyperbolic.mlw | 40 -- src/plugins/wp/share/ergo/real.MinMax.mlw | 54 -- src/plugins/wp/share/ergo/real.Polar.mlw | 31 - src/plugins/wp/share/ergo/real.PowerReal.mlw | 50 -- src/plugins/wp/share/ergo/real.Real.mlw | 42 -- src/plugins/wp/share/ergo/real.RealInfix.mlw | 18 - src/plugins/wp/share/ergo/real.Square.mlw | 36 -- .../wp/share/ergo/real.Trigonometry.mlw | 75 --- src/plugins/wp/share/ergo/real.Truncate.mlw | 73 --- 32 files changed, 2783 deletions(-) delete mode 100644 src/plugins/wp/share/ergo/ArcTrigo.mlw delete mode 100644 src/plugins/wp/share/ergo/Cbits.mlw delete mode 100644 src/plugins/wp/share/ergo/Cfloat.mlw delete mode 100644 src/plugins/wp/share/ergo/Cint.mlw delete mode 100644 src/plugins/wp/share/ergo/Cmath.mlw delete mode 100644 src/plugins/wp/share/ergo/ExpLog.mlw delete mode 100644 src/plugins/wp/share/ergo/Memory.mlw delete mode 100644 src/plugins/wp/share/ergo/Qed.mlw delete mode 100644 src/plugins/wp/share/ergo/Square.mlw delete mode 100644 src/plugins/wp/share/ergo/Vlist.mlw delete mode 100644 src/plugins/wp/share/ergo/Vset.mlw delete mode 100644 src/plugins/wp/share/ergo/bool.Bool.mlw delete mode 100644 src/plugins/wp/share/ergo/int.Abs.mlw delete mode 100644 src/plugins/wp/share/ergo/int.ComputerDivision.mlw delete mode 100644 src/plugins/wp/share/ergo/int.ComputerOfEuclideanDivision.mlw delete mode 100644 src/plugins/wp/share/ergo/int.Int.mlw delete mode 100644 src/plugins/wp/share/ergo/int.MinMax.mlw delete mode 100644 src/plugins/wp/share/ergo/map.Const.mlw delete mode 100644 src/plugins/wp/share/ergo/map.Map.mlw delete mode 100644 src/plugins/wp/share/ergo/real.Abs.mlw delete mode 100644 src/plugins/wp/share/ergo/real.ExpLog.mlw delete mode 100644 src/plugins/wp/share/ergo/real.FromInt.mlw delete mode 100644 src/plugins/wp/share/ergo/real.Hyperbolic.mlw delete mode 100644 src/plugins/wp/share/ergo/real.MinMax.mlw delete mode 100644 src/plugins/wp/share/ergo/real.Polar.mlw delete mode 100644 src/plugins/wp/share/ergo/real.PowerReal.mlw delete mode 100644 src/plugins/wp/share/ergo/real.Real.mlw delete mode 100644 src/plugins/wp/share/ergo/real.RealInfix.mlw delete mode 100644 src/plugins/wp/share/ergo/real.Square.mlw delete mode 100644 src/plugins/wp/share/ergo/real.Trigonometry.mlw delete mode 100644 src/plugins/wp/share/ergo/real.Truncate.mlw diff --git a/headers/header_spec.txt b/headers/header_spec.txt index f4889824536..a283b5ab581 100644 --- a/headers/header_spec.txt +++ b/headers/header_spec.txt @@ -1898,37 +1898,6 @@ src/plugins/wp/share/coqwp/real/Real.v: UNMODIFIED_WHY3 src/plugins/wp/share/coqwp/real/RealInfix.v: UNMODIFIED_WHY3 src/plugins/wp/share/coqwp/real/Square.v: UNMODIFIED_WHY3 src/plugins/wp/share/coqwp/real/Trigonometry.v: UNMODIFIED_WHY3 -src/plugins/wp/share/ergo/ArcTrigo.mlw: CEA_WP -src/plugins/wp/share/ergo/Cbits.mlw: CEA_WP -src/plugins/wp/share/ergo/Cfloat.mlw: CEA_WP -src/plugins/wp/share/ergo/Cint.mlw: CEA_WP -src/plugins/wp/share/ergo/Cmath.mlw: CEA_WP -src/plugins/wp/share/ergo/ExpLog.mlw: CEA_WP -src/plugins/wp/share/ergo/Memory.mlw: CEA_WP -src/plugins/wp/share/ergo/Qed.mlw: CEA_WP -src/plugins/wp/share/ergo/Square.mlw: CEA_WP -src/plugins/wp/share/ergo/Vlist.mlw: CEA_WP -src/plugins/wp/share/ergo/Vset.mlw: CEA_WP -src/plugins/wp/share/ergo/bool.Bool.mlw: MODIFIED_WHY3 -src/plugins/wp/share/ergo/int.Abs.mlw: MODIFIED_WHY3 -src/plugins/wp/share/ergo/int.ComputerDivision.mlw: MODIFIED_WHY3 -src/plugins/wp/share/ergo/int.ComputerOfEuclideanDivision.mlw: MODIFIED_WHY3 -src/plugins/wp/share/ergo/int.Int.mlw: MODIFIED_WHY3 -src/plugins/wp/share/ergo/int.MinMax.mlw: MODIFIED_WHY3 -src/plugins/wp/share/ergo/map.Map.mlw: MODIFIED_WHY3 -src/plugins/wp/share/ergo/map.Const.mlw: MODIFIED_WHY3 -src/plugins/wp/share/ergo/real.Abs.mlw: MODIFIED_WHY3 -src/plugins/wp/share/ergo/real.ExpLog.mlw: MODIFIED_WHY3 -src/plugins/wp/share/ergo/real.Hyperbolic.mlw: MODIFIED_WHY3 -src/plugins/wp/share/ergo/real.FromInt.mlw: MODIFIED_WHY3 -src/plugins/wp/share/ergo/real.MinMax.mlw: MODIFIED_WHY3 -src/plugins/wp/share/ergo/real.Polar.mlw: MODIFIED_WHY3 -src/plugins/wp/share/ergo/real.PowerReal.mlw: MODIFIED_WHY3 -src/plugins/wp/share/ergo/real.Real.mlw: MODIFIED_WHY3 -src/plugins/wp/share/ergo/real.RealInfix.mlw: MODIFIED_WHY3 -src/plugins/wp/share/ergo/real.Square.mlw: MODIFIED_WHY3 -src/plugins/wp/share/ergo/real.Trigonometry.mlw: MODIFIED_WHY3 -src/plugins/wp/share/ergo/real.Truncate.mlw: MODIFIED_WHY3 src/plugins/wp/share/install.ml: CEA_WP src/plugins/wp/share/why3/frama_c_wp/cbits.mlw: CEA_WP src/plugins/wp/share/why3/frama_c_wp/cfloat.mlw: CEA_WP diff --git a/src/plugins/wp/share/ergo/ArcTrigo.mlw b/src/plugins/wp/share/ergo/ArcTrigo.mlw deleted file mode 100644 index e2640273c38..00000000000 --- a/src/plugins/wp/share/ergo/ArcTrigo.mlw +++ /dev/null @@ -1,40 +0,0 @@ -(**************************************************************************) -(* *) -(* This file is part of WP plug-in of Frama-C. *) -(* *) -(* Copyright (C) 2007-2021 *) -(* CEA (Commissariat a l'energie atomique et aux energies *) -(* alternatives) *) -(* *) -(* you can redistribute it and/or modify it under the terms of the GNU *) -(* Lesser General Public License as published by the Free Software *) -(* Foundation, version 2.1. *) -(* *) -(* It is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *) -(* GNU Lesser General Public License for more details. *) -(* *) -(* See the GNU Lesser General Public License version 2.1 *) -(* for more details (enclosed in the file licenses/LGPLv2.1). *) -(* *) -(**************************************************************************) - -(* this is the prelude for Alt-Ergo, version >= 0.95.2 *) -(** The theory BuiltIn_ must be appended to this file*) -(** The theory Bool_ must be appended to this file*) -(** The theory real_Real_ must be appended to this file*) -(** The theory real_RealInfix_ must be appended to this file*) -(** The theory real_Abs_ must be appended to this file*) -(** The theory real_Square_ must be appended to this file*) -(** The theory real_Trigonometry_ must be appended to this file*) -logic asin : real -> real - -logic acos : real -> real - -axiom Sin_asin : - (forall x:real. ((((-1.0) <= x) and (x <= 1.0)) -> (sin(asin(x)) = x))) - -axiom Cos_acos : - (forall x:real. ((((-1.0) <= x) and (x <= 1.0)) -> (cos(acos(x)) = x))) - diff --git a/src/plugins/wp/share/ergo/Cbits.mlw b/src/plugins/wp/share/ergo/Cbits.mlw deleted file mode 100644 index fc3e1ca738f..00000000000 --- a/src/plugins/wp/share/ergo/Cbits.mlw +++ /dev/null @@ -1,553 +0,0 @@ -(**************************************************************************) -(* *) -(* This file is part of WP plug-in of Frama-C. *) -(* *) -(* Copyright (C) 2007-2021 *) -(* CEA (Commissariat a l'energie atomique et aux energies *) -(* alternatives) *) -(* *) -(* you can redistribute it and/or modify it under the terms of the GNU *) -(* Lesser General Public License as published by the Free Software *) -(* Foundation, version 2.1. *) -(* *) -(* It is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *) -(* GNU Lesser General Public License for more details. *) -(* *) -(* See the GNU Lesser General Public License version 2.1 *) -(* for more details (enclosed in the file licenses/LGPLv2.1). *) -(* *) -(**************************************************************************) - -(* this is the prelude for Alt-Ergo, version >= 0.95.2 *) -(** The theory BuiltIn_ must be appended to this file*) -(** The theory Bool_ must be appended to this file*) -(** The theory Qed_ must be appended to this file*) -(** The theory bool_Bool_ must be appended to this file*) -(** The theory int_Int_ must be appended to this file*) -(** The theory int_Abs_ must be appended to this file*) -(** The theory int_ComputerDivision_ must be appended to this file*) -(** The theory real_Real_ must be appended to this file*) -(** The theory real_RealInfix_ must be appended to this file*) -(** The theory real_FromInt_ must be appended to this file*) -(** The theory Cint_ must be appended to this file*) - -logic bit_testb : int, int -> bool - -logic bit_test : int, int -> prop - -logic lnot : int -> int - -logic ac land : int, int -> int - -logic ac lxor : int, int -> int - -logic ac lor : int, int -> int - -logic lsl : int, int -> int - -logic lsr : int, int -> int - -axiom lnot_bool : (lnot(0) = (-1)) - -axiom lnot_bool1 : (lnot((-1)) = 0) - -axiom land_idemp : (forall x:int [land(x, x)]. (land(x, x) = x)) - -axiom land_0 : (forall x:int [land(0, x)]. (land(0, x) = 0)) - -axiom land_0bis : (forall x:int [land(x, 0)]. (land(x, 0) = 0)) - -axiom land_1 : (forall x:int [land((-1), x)]. (land((-1), x) = x)) - -axiom land_1bis : (forall x:int [land(x, (-1))]. (land(x, (-1)) = x)) - -axiom lor_idemp : (forall x:int [lor(x, x)]. (lor(x, x) = x)) - -axiom lor_1 : (forall x:int [lor((-1), x)]. (lor((-1), x) = (-1))) - -axiom lor_1bis : (forall x:int [lor(x, (-1))]. (lor(x, (-1)) = (-1))) - -axiom lor_0 : (forall x:int [lor(0, x)]. (lor(0, x) = x)) - -axiom lor_0bis : (forall x:int [lor(x, 0)]. (lor(x, 0) = x)) - -axiom lxor_nilpotent : (forall x:int [lxor(x, x)]. (lxor(x, x) = 0)) - -axiom lxor_1 : (forall x:int [lxor((-1), x)]. (lxor((-1), x) = lnot(x))) - -axiom lxor_1bis : (forall x:int [lxor(x, (-1))]. (lxor(x, (-1)) = lnot(x))) - -axiom lxor_0 : (forall x:int [lxor(0, x)]. (lxor(0, x) = x)) - -axiom lxor_0bis : (forall x:int [lxor(x, 0)]. (lxor(x, 0) = x)) - -axiom lsl_0 : (forall x:int. (lsl(x, 0) = x)) - -axiom lsl_1 : (forall x:int. (lsl(x, 1) = (2 * x))) - -axiom lsl_add : - (forall x:int. forall p:int. forall q:int. ((0 <= p) -> ((0 <= q) -> - (lsl(lsl(x, p), q) = lsl(x, (p + q)))))) - -axiom lsr_0 : (forall x:int. (lsr(x, 0) = x)) - -axiom lsr_1 : (forall x:int. ((0 <= x) -> (lsr(x, 1) = div(x,2)))) - -axiom lsr_add : - (forall x:int. forall p:int. forall q:int. ((0 <= p) -> ((0 <= q) -> - (lsr(lsr(x, p), q) = lsr(x, (p + q)))))) - -axiom lsl_lsr_add : - (forall x:int. forall p:int. forall q:int. (((0 <= q) and (q <= p)) -> - (lsr(lsl(x, p), q) = lsl(x, (p - q))))) - -axiom bit_test_def : - (forall x:int. forall k:int [bit_testb(x, k)]. ((bit_testb(x, k) = true) -> - bit_test(x, k))) - -axiom bit_test_def1 : - (forall x:int. forall k:int [bit_testb(x, k)]. (bit_test(x, k) -> - (bit_testb(x, k) = true))) - -axiom bit_test_extraction : - (forall x:int. forall k:int [land(x, lsl(1, k))| land(lsl(1, k), x)]. - ((0 <= k) -> ((not (land(x, lsl(1, k)) = 0)) -> bit_test(x, k)))) - -axiom bit_test_extraction1 : - (forall x:int. forall k:int [land(x, lsl(1, k))| land(lsl(1, k), x)]. - ((0 <= k) -> (bit_test(x, k) -> (not (land(x, lsl(1, k)) = 0))))) - -axiom lsl_1_0 : (lsl(1, 0) = 1) - -axiom bit_test_extraction_bis : - (forall x:int [land(x, 1)| land(1, x)]. ((not (land(1, x) = 0)) -> - bit_test(x, 0))) - -axiom bit_test_extraction_bis_eq : - (forall x:int [land(x, 1)| land(1, x)]. (bit_test(x, 0) -> (land(1, - x) = 1))) - -axiom lnot_extraction : - (forall x:int. forall i:int [bit_test(lnot(x), i)]. ((0 <= i) -> - (bit_test(lnot(x), i) -> (not bit_test(x, i))))) - -axiom lnot_extraction1 : - (forall x:int. forall i:int [bit_test(lnot(x), i)]. ((0 <= i) -> - ((not bit_test(x, i)) -> bit_test(lnot(x), i)))) - -axiom land_extraction : - (forall x:int. forall y:int. forall i:int [bit_test(land(x, y), i)]. - ((0 <= i) -> (bit_test(land(x, y), i) -> bit_test(x, i)))) - -axiom land_extraction1 : - (forall x:int. forall y:int. forall i:int [bit_test(land(x, y), i)]. - ((0 <= i) -> (bit_test(land(x, y), i) -> bit_test(y, i)))) - -axiom land_extraction2 : - (forall x:int. forall y:int. forall i:int [bit_test(land(x, y), i)]. - ((0 <= i) -> ((bit_test(x, i) and bit_test(y, i)) -> bit_test(land(x, y), - i)))) - -axiom lor_extraction : - (forall x:int. forall y:int. forall i:int [bit_test(lor(x, y), i)]. - ((0 <= i) -> (bit_test(lor(x, y), i) -> (bit_test(x, i) or bit_test(y, - i))))) - -axiom lor_extraction1 : - (forall x:int. forall y:int. forall i:int [bit_test(lor(x, y), i)]. - ((0 <= i) -> ((bit_test(x, i) or bit_test(y, i)) -> bit_test(lor(x, y), - i)))) - -axiom lxor_extraction : - (forall x:int. forall y:int. forall i:int [bit_test(lxor(x, y), i)]. - ((0 <= i) -> (bit_test(lxor(x, y), i) -> (bit_test(x, i) -> - (not bit_test(y, i)))))) - -axiom lxor_extraction1 : - (forall x:int. forall y:int. forall i:int [bit_test(lxor(x, y), i)]. - ((0 <= i) -> (bit_test(lxor(x, y), i) -> ((not bit_test(y, i)) -> - bit_test(x, i))))) - -axiom lxor_extraction2 : - (forall x:int. forall y:int. forall i:int [bit_test(lxor(x, y), i)]. - ((0 <= i) -> ((bit_test(x, i) <-> (not bit_test(y, i))) -> bit_test(lxor(x, - y), i)))) - -axiom land_1_lsl_1 : - (forall a:int. forall x:int. forall n:int [lsl(1, (1 + n)), lsl(1, n), - ((2 * a) + land(1, x))]. ((0 <= n) -> ((a < lsl(1, n)) -> - (((2 * a) + land(1, x)) < lsl(1, (1 + n)))))) - -axiom lsl_extraction_sup : - (forall x:int. forall n:int. forall m:int [bit_test(lsl(x, n), m)]. - ((0 <= n) -> ((0 <= m) -> ((n <= m) -> (bit_test(lsl(x, n), m) -> - bit_test(x, (m - n))))))) - -axiom lsl_extraction_sup1 : - (forall x:int. forall n:int. forall m:int [bit_test(lsl(x, n), m)]. - ((0 <= n) -> ((0 <= m) -> ((n <= m) -> (bit_test(x, (m - n)) -> - bit_test(lsl(x, n), m)))))) - -axiom lsl_extraction_inf : - (forall x:int. forall n:int. forall m:int [bit_test(lsl(x, n), m)]. - ((0 <= n) -> ((0 <= m) -> ((m < n) -> (not bit_test(lsl(x, n), m)))))) - -axiom lsr_extractionl : - (forall x:int. forall n:int. forall m:int [bit_test(lsr(x, n), m)]. - ((0 <= n) -> ((0 <= m) -> (bit_test(lsr(x, n), m) -> bit_test(x, - (m + n)))))) - -axiom lsr_extractionl1 : - (forall x:int. forall n:int. forall m:int [bit_test(lsr(x, n), m)]. - ((0 <= n) -> ((0 <= m) -> (bit_test(x, (m + n)) -> bit_test(lsr(x, n), - m))))) - -axiom lsl1_extraction : - (forall i:int. forall j:int [bit_test(lsl(1, i), j)]. ((0 <= i) -> - ((0 <= j) -> (bit_test(lsl(1, i), j) -> (i = j))))) - -axiom lsl1_extraction1 : - (forall i:int. forall j:int [bit_test(lsl(1, i), j)]. ((0 <= i) -> - ((0 <= j) -> ((i = j) -> bit_test(lsl(1, i), j))))) - -axiom to_uint8_extraction_sup : - (forall x:int. forall i:int [is_uint8(x), bit_test(x, i)]. ((8 <= i) -> - (is_uint8(x) -> (not bit_test(x, i))))) - -axiom to_uint8_extraction_inf : - (forall x:int. forall i:int [bit_test(to_uint8(x), i)]. (((0 <= i) and - (i < 8)) -> (bit_test(to_uint8(x), i) -> bit_test(x, i)))) - -axiom to_uint8_extraction_inf1 : - (forall x:int. forall i:int [bit_test(to_uint8(x), i)]. (((0 <= i) and - (i < 8)) -> (bit_test(x, i) -> bit_test(to_uint8(x), i)))) - -axiom to_uint16_extraction_sup : - (forall x:int. forall i:int [is_uint16(x), bit_test(x, i)]. ((16 <= i) -> - (is_uint16(x) -> (not bit_test(x, i))))) - -axiom to_uint16_extraction_inf : - (forall x:int. forall i:int [bit_test(to_uint16(x), i)]. (((0 <= i) and - (i < 16)) -> (bit_test(to_uint16(x), i) -> bit_test(x, i)))) - -axiom to_uint16_extraction_inf1 : - (forall x:int. forall i:int [bit_test(to_uint16(x), i)]. (((0 <= i) and - (i < 16)) -> (bit_test(x, i) -> bit_test(to_uint16(x), i)))) - -axiom to_uint32_extraction_sup : - (forall x:int. forall i:int [is_uint32(x), bit_test(x, i)]. ((32 <= i) -> - (is_uint32(x) -> (not bit_test(x, i))))) - -axiom to_uint32_extraction_inf : - (forall x:int. forall i:int [bit_test(to_uint32(x), i)]. (((0 <= i) and - (i < 32)) -> (bit_test(to_uint32(x), i) -> bit_test(x, i)))) - -axiom to_uint32_extraction_inf1 : - (forall x:int. forall i:int [bit_test(to_uint32(x), i)]. (((0 <= i) and - (i < 32)) -> (bit_test(x, i) -> bit_test(to_uint32(x), i)))) - -axiom to_uint64_extraction_sup : - (forall x:int. forall i:int [is_uint64(x), bit_test(x, i)]. ((64 <= i) -> - (is_uint64(x) -> (not bit_test(x, i))))) - -axiom to_uint64_extraction_inf : - (forall x:int. forall i:int [bit_test(to_uint64(x), i)]. (((0 <= i) and - (i < 64)) -> (bit_test(to_uint64(x), i) -> bit_test(x, i)))) - -axiom to_uint64_extraction_inf1 : - (forall x:int. forall i:int [bit_test(to_uint64(x), i)]. (((0 <= i) and - (i < 64)) -> (bit_test(x, i) -> bit_test(to_uint64(x), i)))) - -axiom to_sint8_extraction_sup : - (forall x:int. forall i:int [is_sint8(x), bit_test(x, i)]. ((7 <= i) -> - (is_sint8(x) -> (bit_test(x, i) -> (x < 0))))) - -axiom to_sint8_extraction_sup1 : - (forall x:int. forall i:int [is_sint8(x), bit_test(x, i)]. ((7 <= i) -> - (is_sint8(x) -> ((x < 0) -> bit_test(x, i))))) - -axiom to_sint8_extraction_inf : - (forall x:int. forall i:int [bit_test(to_sint8(x), i)]. (((0 <= i) and - (i < 7)) -> (bit_test(to_sint8(x), i) -> bit_test(x, i)))) - -axiom to_sint8_extraction_inf1 : - (forall x:int. forall i:int [bit_test(to_sint8(x), i)]. (((0 <= i) and - (i < 7)) -> (bit_test(x, i) -> bit_test(to_sint8(x), i)))) - -axiom to_sint16_extraction_sup : - (forall x:int. forall i:int [is_sint16(x), bit_test(x, i)]. ((15 <= i) -> - (is_sint16(x) -> (bit_test(x, i) -> (x < 0))))) - -axiom to_sint16_extraction_sup1 : - (forall x:int. forall i:int [is_sint16(x), bit_test(x, i)]. ((15 <= i) -> - (is_sint16(x) -> ((x < 0) -> bit_test(x, i))))) - -axiom to_sint16_extraction_inf : - (forall x:int. forall i:int [bit_test(to_sint16(x), i)]. (((0 <= i) and - (i < 15)) -> (bit_test(to_sint16(x), i) -> bit_test(x, i)))) - -axiom to_sint16_extraction_inf1 : - (forall x:int. forall i:int [bit_test(to_sint16(x), i)]. (((0 <= i) and - (i < 15)) -> (bit_test(x, i) -> bit_test(to_sint16(x), i)))) - -axiom to_sint32_extraction_sup : - (forall x:int. forall i:int [is_sint32(x), bit_test(x, i)]. ((31 <= i) -> - (is_sint32(x) -> (bit_test(x, i) -> (x < 0))))) - -axiom to_sint32_extraction_sup1 : - (forall x:int. forall i:int [is_sint32(x), bit_test(x, i)]. ((31 <= i) -> - (is_sint32(x) -> ((x < 0) -> bit_test(x, i))))) - -axiom to_sint32_extraction_inf : - (forall x:int. forall i:int [bit_test(to_sint32(x), i)]. (((0 <= i) and - (i < 31)) -> (bit_test(to_sint32(x), i) -> bit_test(x, i)))) - -axiom to_sint32_extraction_inf1 : - (forall x:int. forall i:int [bit_test(to_sint32(x), i)]. (((0 <= i) and - (i < 31)) -> (bit_test(x, i) -> bit_test(to_sint32(x), i)))) - -axiom to_sint64_extraction_sup : - (forall x:int. forall i:int [is_sint64(x), bit_test(x, i)]. ((63 <= i) -> - (is_sint64(x) -> (bit_test(x, i) -> (x < 0))))) - -axiom to_sint64_extraction_sup1 : - (forall x:int. forall i:int [is_sint64(x), bit_test(x, i)]. ((63 <= i) -> - (is_sint64(x) -> ((x < 0) -> bit_test(x, i))))) - -axiom to_sint64_extraction_inf : - (forall x:int. forall i:int [bit_test(to_sint64(x), i)]. (((0 <= i) and - (i < 63)) -> (bit_test(to_sint64(x), i) -> bit_test(x, i)))) - -axiom to_sint64_extraction_inf1 : - (forall x:int. forall i:int [bit_test(to_sint64(x), i)]. (((0 <= i) and - (i < 63)) -> (bit_test(x, i) -> bit_test(to_sint64(x), i)))) - -axiom is_uint_lxor : - (forall n:int. forall x:int. forall y:int. (is_uint(n, x) -> (is_uint(n, - y) -> (to_uint(n, lxor(x, y)) = lxor(x, y))))) - -axiom is_uint8_lxor : - (forall x:int. forall y:int [to_uint8(lxor(x, y))]. (is_uint8(x) -> - (is_uint8(y) -> (to_uint8(lxor(x, y)) = lxor(x, y))))) - -axiom is_uint8_lor : - (forall x:int. forall y:int [to_uint8(lor(x, y))]. (is_uint8(x) -> - (is_uint8(y) -> (to_uint8(lor(x, y)) = lor(x, y))))) - -axiom is_uint8_land : - (forall x:int. forall y:int [to_uint8(land(x, y))]. (is_uint8(x) -> - (is_uint8(y) -> (to_uint8(land(x, y)) = land(x, y))))) - -axiom is_uint8_lsr : - (forall x:int. forall y:int [to_uint8(lsr(x, y))]. ((0 <= y) -> - (is_uint8(x) -> (to_uint8(lsr(x, y)) = lsr(x, y))))) - -axiom is_uint8_lsl1_inf : - (forall y:int [to_uint8(lsl(1, y))]. (((0 <= y) and (y < 8)) -> - (to_uint8(lsl(1, y)) = lsl(1, y)))) - -axiom is_uint8_lsl1_sup : - (forall y:int [to_uint8(lsl(1, y))]. ((8 <= y) -> (to_uint8(lsl(1, - y)) = 0))) - -axiom is_uint16_lxor : - (forall x:int. forall y:int [to_uint16(lxor(x, y))]. (is_uint16(x) -> - (is_uint16(y) -> (to_uint16(lxor(x, y)) = lxor(x, y))))) - -axiom is_uint16_lor : - (forall x:int. forall y:int [to_uint16(lor(x, y))]. (is_uint16(x) -> - (is_uint16(y) -> (to_uint16(lor(x, y)) = lor(x, y))))) - -axiom is_uint16_land : - (forall x:int. forall y:int [to_uint16(land(x, y))]. (is_uint16(x) -> - (is_uint16(y) -> (to_uint16(land(x, y)) = land(x, y))))) - -axiom is_uint16_lsr : - (forall x:int. forall y:int [to_uint16(lsr(x, y))]. ((0 <= y) -> - (is_uint16(x) -> (to_uint16(lsr(x, y)) = lsr(x, y))))) - -axiom is_uint16_lsl1_inf : - (forall y:int [to_uint16(lsl(1, y))]. (((0 <= y) and (y < 16)) -> - (to_uint16(lsl(1, y)) = lsl(1, y)))) - -axiom is_uint16_lsl1_sup : - (forall y:int [to_uint16(lsl(1, y))]. ((16 <= y) -> (to_uint16(lsl(1, - y)) = 0))) - -axiom is_uint32_lxor : - (forall x:int. forall y:int [to_uint32(lxor(x, y))]. (is_uint32(x) -> - (is_uint32(y) -> (to_uint32(lxor(x, y)) = lxor(x, y))))) - -axiom is_uint32_lor : - (forall x:int. forall y:int [to_uint32(lor(x, y))]. (is_uint32(x) -> - (is_uint32(y) -> (to_uint32(lor(x, y)) = lor(x, y))))) - -axiom is_uint32_land : - (forall x:int. forall y:int [to_uint32(land(x, y))]. (is_uint32(x) -> - (is_uint32(y) -> (to_uint32(land(x, y)) = land(x, y))))) - -axiom is_uint32_lsr : - (forall x:int. forall y:int [to_uint32(lsr(x, y))]. ((0 <= y) -> - (is_uint32(x) -> (to_uint32(lsr(x, y)) = lsr(x, y))))) - -axiom is_uint32_lsl1_inf : - (forall y:int [to_uint32(lsl(1, y))]. (((0 <= y) and (y < 32)) -> - (to_uint32(lsl(1, y)) = lsl(1, y)))) - -axiom is_uint32_lsl1_sup : - (forall y:int [to_uint32(lsl(1, y))]. ((32 <= y) -> (to_uint32(lsl(1, - y)) = 0))) - -axiom is_uint64_lxor : - (forall x:int. forall y:int [to_uint64(lxor(x, y))]. (is_uint64(x) -> - (is_uint64(y) -> (to_uint64(lxor(x, y)) = lxor(x, y))))) - -axiom is_uint64_lor : - (forall x:int. forall y:int [to_uint64(lor(x, y))]. (is_uint64(x) -> - (is_uint64(y) -> (to_uint64(lor(x, y)) = lor(x, y))))) - -axiom is_uint64_land : - (forall x:int. forall y:int [to_uint64(land(x, y))]. (is_uint64(x) -> - (is_uint64(y) -> (to_uint64(land(x, y)) = land(x, y))))) - -axiom is_uint64_lsr : - (forall x:int. forall y:int [to_uint64(lsr(x, y))]. ((0 <= y) -> - (is_uint64(x) -> (to_uint64(lsr(x, y)) = lsr(x, y))))) - -axiom is_uint64_lsl1_inf : - (forall y:int [to_uint64(lsl(1, y))]. (((0 <= y) and (y < 64)) -> - (to_uint64(lsl(1, y)) = lsl(1, y)))) - -axiom is_uint64_lsl1_sup : - (forall y:int [to_uint64(lsl(1, y))]. ((64 <= y) -> (to_uint64(lsl(1, - y)) = 0))) - -axiom is_sint8_lnot : - (forall x:int [to_sint8(lnot(x))]. (is_sint8(x) -> - (to_sint8(lnot(x)) = lnot(x)))) - -axiom is_sint8_lxor : - (forall x:int. forall y:int [to_sint8(lxor(x, y))]. (is_sint8(x) -> - (is_sint8(y) -> (to_sint8(lxor(x, y)) = lxor(x, y))))) - -axiom is_sint8_lor : - (forall x:int. forall y:int [to_sint8(lor(x, y))]. (is_sint8(x) -> - (is_sint8(y) -> (to_sint8(lor(x, y)) = lor(x, y))))) - -axiom is_sint8_land : - (forall x:int. forall y:int [to_sint8(land(x, y))]. (is_sint8(x) -> - (is_sint8(y) -> (to_sint8(land(x, y)) = land(x, y))))) - -axiom is_sint8_lsr : - (forall x:int. forall y:int [to_sint8(lsr(x, y))]. ((0 <= y) -> - (is_sint8(x) -> (to_sint8(lsr(x, y)) = lsr(x, y))))) - -axiom is_sint8_lsl1 : (lsl(1, 7) = 128) - -axiom is_sint8_lsl1_inf : - (forall y:int [to_sint8(lsl(1, y))]. (((0 <= y) and (y < 7)) -> - (to_sint8(lsl(1, y)) = lsl(1, y)))) - -axiom is_sint8_lsl1_sup : - (forall y:int [to_sint8(lsl(1, y))]. ((8 <= y) -> (to_sint8(lsl(1, - y)) = 0))) - -axiom is_sint16_lnot : - (forall x:int [to_sint16(lnot(x))]. (is_sint16(x) -> - (to_sint16(lnot(x)) = lnot(x)))) - -axiom is_sint16_lxor : - (forall x:int. forall y:int [to_sint16(lxor(x, y))]. (is_sint16(x) -> - (is_sint16(y) -> (to_sint16(lxor(x, y)) = lxor(x, y))))) - -axiom is_sint16_lor : - (forall x:int. forall y:int [to_sint16(lor(x, y))]. (is_sint16(x) -> - (is_sint16(y) -> (to_sint16(lor(x, y)) = lor(x, y))))) - -axiom is_sint16_land : - (forall x:int. forall y:int [to_sint16(land(x, y))]. (is_sint16(x) -> - (is_sint16(y) -> (to_sint16(land(x, y)) = land(x, y))))) - -axiom is_sint16_lsr : - (forall x:int. forall y:int [to_sint16(lsr(x, y))]. ((0 <= y) -> - (is_sint16(x) -> (to_sint16(lsr(x, y)) = lsr(x, y))))) - -axiom is_sint16_lsl1 : (lsl(1, 15) = 32768) - -axiom is_sint16_lsl1_inf : - (forall y:int [to_sint16(lsl(1, y))]. (((0 <= y) and (y < 15)) -> - (to_sint16(lsl(1, y)) = lsl(1, y)))) - -axiom is_sint16_lsl1_sup : - (forall y:int [to_sint16(lsl(1, y))]. ((16 <= y) -> (to_sint16(lsl(1, - y)) = 0))) - -axiom is_sint32_lnot : - (forall x:int [to_sint32(lnot(x))]. (is_sint32(x) -> - (to_sint32(lnot(x)) = lnot(x)))) - -axiom is_sint32_lxor : - (forall x:int. forall y:int [to_sint32(lxor(x, y))]. (is_sint32(x) -> - (is_sint32(y) -> (to_sint32(lxor(x, y)) = lxor(x, y))))) - -axiom is_sint32_lor : - (forall x:int. forall y:int [to_sint32(lor(x, y))]. (is_sint32(x) -> - (is_sint32(y) -> (to_sint32(lor(x, y)) = lor(x, y))))) - -axiom is_sint32_land : - (forall x:int. forall y:int [to_sint32(land(x, y))]. (is_sint32(x) -> - (is_sint32(y) -> (to_sint32(land(x, y)) = land(x, y))))) - -axiom is_sint32_lsr : - (forall x:int. forall y:int [to_sint32(lsr(x, y))]. ((0 <= y) -> - (is_sint32(x) -> (to_sint32(lsr(x, y)) = lsr(x, y))))) - -axiom is_sint32_lsl1 : (lsl(1, 31) = 2147483648) - -axiom is_sint32_lsl1_inf : - (forall y:int [to_sint32(lsl(1, y))]. (((0 <= y) and (y < 31)) -> - (to_sint32(lsl(1, y)) = lsl(1, y)))) - -axiom is_sint32_lsl1_sup : - (forall y:int [to_sint32(lsl(1, y))]. ((32 <= y) -> (to_sint32(lsl(1, - y)) = 0))) - -axiom is_sint64_lnot : - (forall x:int [to_sint64(lnot(x))]. (is_sint64(x) -> - (to_sint64(lnot(x)) = lnot(x)))) - -axiom is_sint64_lxor : - (forall x:int. forall y:int [to_sint64(lxor(x, y))]. (is_sint64(x) -> - (is_sint64(y) -> (to_sint64(lxor(x, y)) = lxor(x, y))))) - -axiom is_sint64_lor : - (forall x:int. forall y:int [to_sint64(lor(x, y))]. (is_sint64(x) -> - (is_sint64(y) -> (to_sint64(lor(x, y)) = lor(x, y))))) - -axiom is_sint64_land : - (forall x:int. forall y:int [to_sint64(land(x, y))]. (is_sint64(x) -> - (is_sint64(y) -> (to_sint64(land(x, y)) = land(x, y))))) - -axiom is_sint64_lsr : - (forall x:int. forall y:int [to_sint64(lsr(x, y))]. ((0 <= y) -> - (is_sint64(x) -> (to_sint64(lsr(x, y)) = lsr(x, y))))) - -axiom is_sint64_lsl1 : (lsl(1, 63) = 9223372036854775808) - -axiom is_sint64_lsl1_inf : - (forall y:int [to_sint64(lsl(1, y))]. (((0 <= y) and (y < 63)) -> - (to_sint64(lsl(1, y)) = lsl(1, y)))) - -axiom is_sint64_lsl1_sup : - (forall y:int [to_sint64(lsl(1, y))]. ((64 <= y) -> (to_sint64(lsl(1, - y)) = 0))) - -axiom lor_addition : - (forall x:int. forall y:int [land(x, y), lor(x, y)]. ((land(x, y) = 0) -> - ((x + y) = lor(x, y)))) - -axiom lxor_addition : - (forall x:int. forall y:int [land(x, y), lxor(x, y)]. ((land(x, y) = 0) -> - ((x + y) = lxor(x, y)))) diff --git a/src/plugins/wp/share/ergo/Cfloat.mlw b/src/plugins/wp/share/ergo/Cfloat.mlw deleted file mode 100644 index 8767b09720c..00000000000 --- a/src/plugins/wp/share/ergo/Cfloat.mlw +++ /dev/null @@ -1,360 +0,0 @@ -(**************************************************************************) -(* *) -(* This file is part of WP plug-in of Frama-C. *) -(* *) -(* Copyright (C) 2007-2021 *) -(* CEA (Commissariat a l'energie atomique et aux energies *) -(* alternatives) *) -(* *) -(* you can redistribute it and/or modify it under the terms of the GNU *) -(* Lesser General Public License as published by the Free Software *) -(* Foundation, version 2.1. *) -(* *) -(* It is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *) -(* GNU Lesser General Public License for more details. *) -(* *) -(* See the GNU Lesser General Public License version 2.1 *) -(* for more details (enclosed in the file licenses/LGPLv2.1). *) -(* *) -(**************************************************************************) - -(* this is the prelude for Alt-Ergo, version >= 0.95.2 *) -(** The theory BuiltIn_ must be appended to this file*) -(** The theory Bool_ must be appended to this file*) -(** The theory bool_Bool_ must be appended to this file*) -(** The theory int_Int_ must be appended to this file*) -(** The theory real_Real_ must be appended to this file*) -(** The theory real_RealInfix_ must be appended to this file*) -(** The theory real_Abs_ must be appended to this file*) -(** The theory real_FromInt_ must be appended to this file*) -(** The theory real_Square_ must be appended to this file*) -type f32 - -type f64 - -logic to_f32 : real -> f32 - -logic of_f32 : f32 -> real - -logic to_f64 : real -> f64 - -logic of_f64 : f64 -> real - -axiom to_f32_zero : (of_f32(to_f32(0.0)) = 0.0) - -axiom to_f32_one : (of_f32(to_f32(1.0)) = 1.0) - -axiom to_f64_zero : (of_f64(to_f64(0.0)) = 0.0) - -axiom to_f64_one : (of_f64(to_f64(1.0)) = 1.0) - -type rounding_mode = Up | Down | ToZero | NearestTiesToAway - | NearestTiesToEven - -logic match_rounding_mode : rounding_mode, 'a, 'a, 'a, 'a, 'a -> 'a - -axiom match_rounding_mode_Up : - (forall z:'a. forall z1:'a. forall z2:'a. forall z3:'a. forall z4:'a. - (match_rounding_mode(Up, z, z1, z2, z3, z4) = z)) - -axiom match_rounding_mode_Down : - (forall z:'a. forall z1:'a. forall z2:'a. forall z3:'a. forall z4:'a. - (match_rounding_mode(Down, z, z1, z2, z3, z4) = z1)) - -axiom match_rounding_mode_ToZero : - (forall z:'a. forall z1:'a. forall z2:'a. forall z3:'a. forall z4:'a. - (match_rounding_mode(ToZero, z, z1, z2, z3, z4) = z2)) - -axiom match_rounding_mode_NearestTiesToAway : - (forall z:'a. forall z1:'a. forall z2:'a. forall z3:'a. forall z4:'a. - (match_rounding_mode(NearestTiesToAway, z, z1, z2, z3, z4) = z3)) - -axiom match_rounding_mode_NearestTiesToEven : - (forall z:'a. forall z1:'a. forall z2:'a. forall z3:'a. forall z4:'a. - (match_rounding_mode(NearestTiesToEven, z, z1, z2, z3, z4) = z4)) - -logic round_float : rounding_mode, real -> f32 - -logic round_double : rounding_mode, real -> f64 - -axiom float_32 : - (forall x:real [round_float(NearestTiesToEven, x)]. - (to_f32(x) = round_float(NearestTiesToEven, x))) - -axiom float_64 : - (forall x:real [round_double(NearestTiesToEven, x)]. - (to_f64(x) = round_double(NearestTiesToEven, x))) - -type float_kind = Finite | NaN | Inf_pos | Inf_neg - -logic match_float_kind : float_kind, 'a, 'a, 'a, 'a -> 'a - -axiom match_float_kind_Finite : - (forall z:'a. forall z1:'a. forall z2:'a. forall z3:'a. - (match_float_kind(Finite, z, z1, z2, z3) = z)) - -axiom match_float_kind_NaN : - (forall z:'a. forall z1:'a. forall z2:'a. forall z3:'a. - (match_float_kind(NaN, z, z1, z2, z3) = z1)) - -axiom match_float_kind_Inf_pos : - (forall z:'a. forall z1:'a. forall z2:'a. forall z3:'a. - (match_float_kind(Inf_pos, z, z1, z2, z3) = z2)) - -axiom match_float_kind_Inf_neg : - (forall z:'a. forall z1:'a. forall z2:'a. forall z3:'a. - (match_float_kind(Inf_neg, z, z1, z2, z3) = z3)) - -logic classify_f32 : f32 -> float_kind - -logic classify_f64 : f64 -> float_kind - -predicate is_finite_f32(f: f32) = (classify_f32(f) = Finite) - -predicate is_finite_f64(d: f64) = (classify_f64(d) = Finite) - -predicate is_NaN_f32(f: f32) = (classify_f32(f) = NaN) - -predicate is_NaN_f64(d: f64) = (classify_f64(d) = NaN) - -predicate is_infinite_f32(f: f32) = ((classify_f32(f) = Inf_pos) or - (classify_f32(f) = Inf_neg)) - -predicate is_infinite_f64(d: f64) = ((classify_f64(d) = Inf_pos) or - (classify_f64(d) = Inf_neg)) - -predicate is_positive_infinite_f32(f: f32) = (classify_f32(f) = Inf_pos) - -predicate is_positive_infinite_f64(d: f64) = (classify_f64(d) = Inf_pos) - -predicate is_negative_infinite_f32(f: f32) = (classify_f32(f) = Inf_neg) - -predicate is_negative_infinite_f64(d: f64) = (classify_f64(d) = Inf_neg) - -axiom is_finite_to_float_32 : - (forall x:real [is_finite_f32(to_f32(x))]. is_finite_f32(to_f32(x))) - -axiom is_finite_to_float_64 : - (forall x:real [is_finite_f64(to_f64(x))]. is_finite_f64(to_f64(x))) - -axiom to_float_is_finite_32 : - (forall f:f32 [to_f32(of_f32(f))| is_finite_f32(f)]. (is_finite_f32(f) -> - (to_f32(of_f32(f)) = f))) - -axiom to_float_is_finite_64 : - (forall d:f64 [to_f64(of_f64(d))| is_finite_f64(d)]. (is_finite_f64(d) -> - (to_f64(of_f64(d)) = d))) - -predicate finite(x: real) = (is_finite_f32(to_f32(x)) and - is_finite_f64(to_f64(x))) - -axiom finite_small_f32 : - (forall x:real. - ((((-179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.0) <= x) and - (x <= 340282346600000016151267322115014000640.0)) -> - is_finite_f32(to_f32(x)))) - -axiom finite_small_f64 : - (forall x:real. - ((((-179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.0) <= x) and - (x <= 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.0)) -> - is_finite_f64(to_f64(x)))) - -axiom finite_range_f32 : - (forall f:f32. (is_finite_f32(f) -> - ((-340282346600000016151267322115014000640.0) <= of_f32(f)))) - -axiom finite_range_f321 : - (forall f:f32. (is_finite_f32(f) -> - (of_f32(f) <= 340282346600000016151267322115014000640.0))) - -axiom finite_range_f322 : - (forall f:f32. - ((((-340282346600000016151267322115014000640.0) <= of_f32(f)) and - (of_f32(f) <= 340282346600000016151267322115014000640.0)) -> - is_finite_f32(f))) - -axiom finite_range_f64 : - (forall d:f64. (is_finite_f64(d) -> - ((-179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.0) <= of_f64(d)))) - -axiom finite_range_f641 : - (forall d:f64. (is_finite_f64(d) -> - (of_f64(d) <= 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.0))) - -axiom finite_range_f642 : - (forall d:f64. - ((((-179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.0) <= of_f64(d)) and - (of_f64(d) <= 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.0)) -> - is_finite_f64(d))) - -logic eq_f32b : f32, f32 -> bool - -logic eq_f64b : f64, f64 -> bool - -predicate eq_f32(x: f32, y: f32) = (eq_f32b(x, y) = true) - -predicate eq_f64(x: f64, y: f64) = (eq_f64b(x, y) = true) - -axiom eq_finite_f32 : - (forall x:f32. forall y:f32 [eq_f32(x, y)]. (is_finite_f32(x) -> - (is_finite_f32(y) -> (eq_f32(x, y) -> (of_f32(x) = of_f32(y)))))) - -axiom eq_finite_f321 : - (forall x:f32. forall y:f32 [eq_f32(x, y)]. (is_finite_f32(x) -> - (is_finite_f32(y) -> ((of_f32(x) = of_f32(y)) -> eq_f32(x, y))))) - -axiom eq_finite_f64 : - (forall x:f64. forall y:f64 [eq_f64(x, y)]. (is_finite_f64(x) -> - (is_finite_f64(y) -> (eq_f64(x, y) -> (of_f64(x) = of_f64(y)))))) - -axiom eq_finite_f641 : - (forall x:f64. forall y:f64 [eq_f64(x, y)]. (is_finite_f64(x) -> - (is_finite_f64(y) -> ((of_f64(x) = of_f64(y)) -> eq_f64(x, y))))) - -logic ne_f32b : f32, f32 -> bool - -logic ne_f64b : f64, f64 -> bool - -predicate ne_f32(x: f32, y: f32) = (ne_f32b(x, y) = true) - -predicate ne_f64(x: f64, y: f64) = (ne_f64b(x, y) = true) - -axiom ne_finite_f32 : - (forall x:f32. forall y:f32 [ne_f32(x, y)]. (is_finite_f32(x) -> - (is_finite_f32(y) -> (ne_f32(x, y) -> (not (of_f32(x) = of_f32(y))))))) - -axiom ne_finite_f321 : - (forall x:f32. forall y:f32 [ne_f32(x, y)]. (is_finite_f32(x) -> - (is_finite_f32(y) -> ((not (of_f32(x) = of_f32(y))) -> ne_f32(x, y))))) - -axiom ne_finite_f64 : - (forall x:f64. forall y:f64 [ne_f64(x, y)]. (is_finite_f64(x) -> - (is_finite_f64(y) -> (ne_f64(x, y) -> (not (of_f64(x) = of_f64(y))))))) - -axiom ne_finite_f641 : - (forall x:f64. forall y:f64 [ne_f64(x, y)]. (is_finite_f64(x) -> - (is_finite_f64(y) -> ((not (of_f64(x) = of_f64(y))) -> ne_f64(x, y))))) - -logic le_f32b : f32, f32 -> bool - -logic le_f64b : f64, f64 -> bool - -predicate le_f32(x: f32, y: f32) = (le_f32b(x, y) = true) - -predicate le_f64(x: f64, y: f64) = (le_f64b(x, y) = true) - -axiom le_finite_f32 : - (forall x:f32. forall y:f32 [le_f32(x, y)]. (is_finite_f32(x) -> - (is_finite_f32(y) -> (le_f32(x, y) -> (of_f32(x) <= of_f32(y)))))) - -axiom le_finite_f321 : - (forall x:f32. forall y:f32 [le_f32(x, y)]. (is_finite_f32(x) -> - (is_finite_f32(y) -> ((of_f32(x) <= of_f32(y)) -> le_f32(x, y))))) - -axiom le_finite_f64 : - (forall x:f64. forall y:f64 [le_f64(x, y)]. (is_finite_f64(x) -> - (is_finite_f64(y) -> (le_f64(x, y) -> (of_f64(x) <= of_f64(y)))))) - -axiom le_finite_f641 : - (forall x:f64. forall y:f64 [le_f64(x, y)]. (is_finite_f64(x) -> - (is_finite_f64(y) -> ((of_f64(x) <= of_f64(y)) -> le_f64(x, y))))) - -logic lt_f32b : f32, f32 -> bool - -logic lt_f64b : f64, f64 -> bool - -predicate lt_f32(x: f32, y: f32) = (lt_f32b(x, y) = true) - -predicate lt_f64(x: f64, y: f64) = (lt_f64b(x, y) = true) - -axiom lt_finite_f32 : - (forall x:f32. forall y:f32 [lt_f32(x, y)]. (is_finite_f32(x) -> - (is_finite_f32(y) -> (lt_f32(x, y) -> (of_f32(x) < of_f32(y)))))) - -axiom lt_finite_f321 : - (forall x:f32. forall y:f32 [lt_f32(x, y)]. (is_finite_f32(x) -> - (is_finite_f32(y) -> ((of_f32(x) < of_f32(y)) -> lt_f32(x, y))))) - -axiom lt_finite_f64 : - (forall x:f64. forall y:f64 [lt_f64(x, y)]. (is_finite_f64(x) -> - (is_finite_f64(y) -> (lt_f64(x, y) -> (of_f64(x) < of_f64(y)))))) - -axiom lt_finite_f641 : - (forall x:f64. forall y:f64 [lt_f64(x, y)]. (is_finite_f64(x) -> - (is_finite_f64(y) -> ((of_f64(x) < of_f64(y)) -> lt_f64(x, y))))) - -logic neg_f32 : f32 -> f32 - -logic neg_f64 : f64 -> f64 - -axiom neg_finite_f32 : - (forall x:f32 [neg_f32(x)]. (is_finite_f32(x) -> - (of_f32(neg_f32(x)) = (-of_f32(x))))) - -axiom neg_finite_f64 : - (forall x:f64 [neg_f64(x)]. (is_finite_f64(x) -> - (of_f64(neg_f64(x)) = (-of_f64(x))))) - -logic add_f32 : f32, f32 -> f32 - -logic add_f64 : f64, f64 -> f64 - -axiom add_finite_f32 : - (forall x:f32. forall y:f32 [add_f32(x, y)]. (is_finite_f32(x) -> - (is_finite_f32(y) -> (add_f32(x, y) = to_f32((of_f32(x) + of_f32(y))))))) - -axiom add_finite_f64 : - (forall x:f64. forall y:f64 [add_f64(x, y)]. (is_finite_f64(x) -> - (is_finite_f64(y) -> (add_f64(x, y) = to_f64((of_f64(x) + of_f64(y))))))) - -logic mul_f32 : f32, f32 -> f32 - -logic mul_f64 : f64, f64 -> f64 - -axiom mul_finite_f32 : - (forall x:f32. forall y:f32 [mul_f32(x, y)]. (is_finite_f32(x) -> - (is_finite_f32(y) -> (mul_f32(x, y) = to_f32((of_f32(x) * of_f32(y))))))) - -axiom mul_finite_f64 : - (forall x:f64. forall y:f64 [mul_f64(x, y)]. (is_finite_f64(x) -> - (is_finite_f64(y) -> (mul_f64(x, y) = to_f64((of_f64(x) * of_f64(y))))))) - -logic div_f32 : f32, f32 -> f32 - -logic div_f64 : f64, f64 -> f64 - -axiom div_finite_f32 : - (forall x:f32. forall y:f32 [div_f32(x, y)]. (is_finite_f32(x) -> - (is_finite_f32(y) -> (div_f32(x, y) = to_f32((of_f32(x) / of_f32(y))))))) - -axiom div_finite_f64 : - (forall x:f64. forall y:f64 [div_f64(x, y)]. (is_finite_f64(x) -> - (is_finite_f64(y) -> (div_f64(x, y) = to_f64((of_f64(x) / of_f64(y))))))) - -logic sqrt_f32 : f32 -> f32 - -logic sqrt_f64 : f64 -> f64 - -axiom sqrt_finite_f32 : - (forall x:f32 [sqrt_f32(x)]. (is_finite_f32(x) -> - (sqrt_f32(x) = to_f32(sqrt(of_f32(x)))))) - -axiom sqrt_finite_f64 : - (forall x:f64 [sqrt_f64(x)]. (is_finite_f64(x) -> - (sqrt_f64(x) = to_f64(sqrt(of_f64(x)))))) - -logic model_f32 : f32 -> real - -function delta_f32(f: f32) : real = abs_real((of_f32(f) - model_f32(f))) - -function error_f32(f: f32) : real = (delta_f32(f) / abs_real(model_f32(f))) - -logic model_f64 : f64 -> real - -function delta_f64(f: f64) : real = abs_real((of_f64(f) - model_f64(f))) - -function error_f64(f: f64) : real = (delta_f64(f) / abs_real(model_f64(f))) - diff --git a/src/plugins/wp/share/ergo/Cint.mlw b/src/plugins/wp/share/ergo/Cint.mlw deleted file mode 100644 index 7dab2653490..00000000000 --- a/src/plugins/wp/share/ergo/Cint.mlw +++ /dev/null @@ -1,224 +0,0 @@ -(**************************************************************************) -(* *) -(* This file is part of WP plug-in of Frama-C. *) -(* *) -(* Copyright (C) 2007-2021 *) -(* CEA (Commissariat a l'energie atomique et aux energies *) -(* alternatives) *) -(* *) -(* you can redistribute it and/or modify it under the terms of the GNU *) -(* Lesser General Public License as published by the Free Software *) -(* Foundation, version 2.1. *) -(* *) -(* It is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *) -(* GNU Lesser General Public License for more details. *) -(* *) -(* See the GNU Lesser General Public License version 2.1 *) -(* for more details (enclosed in the file licenses/LGPLv2.1). *) -(* *) -(**************************************************************************) - -(* this is the prelude for Alt-Ergo, version >= 0.95.2 *) -(** The theory BuiltIn_ must be appended to this file*) -(** The theory Bool_ must be appended to this file*) -(** The theory bool_Bool_ must be appended to this file*) -(** The theory int_Int_ must be appended to this file*) -predicate is_bool(x: int) = ((x = 0) or (x = 1)) - -logic is_uint8 : int -> prop - -axiom is_uint8_def : (forall x:int [is_uint8(x)]. (is_uint8(x) -> (0 <= x))) - -axiom is_uint8_def1 : - (forall x:int [is_uint8(x)]. (is_uint8(x) -> (x < 256))) - -axiom is_uint8_def2 : - (forall x:int [is_uint8(x)]. (((0 <= x) and (x < 256)) -> is_uint8(x))) - -logic is_sint8 : int -> prop - -axiom is_sint8_def : - (forall x:int [is_sint8(x)]. (is_sint8(x) -> ((-128) <= x))) - -axiom is_sint8_def1 : - (forall x:int [is_sint8(x)]. (is_sint8(x) -> (x < 128))) - -axiom is_sint8_def2 : - (forall x:int [is_sint8(x)]. ((((-128) <= x) and (x < 128)) -> - is_sint8(x))) - -logic is_uint16 : int -> prop - -axiom is_uint16_def : - (forall x:int [is_uint16(x)]. (is_uint16(x) -> (0 <= x))) - -axiom is_uint16_def1 : - (forall x:int [is_uint16(x)]. (is_uint16(x) -> (x < 65536))) - -axiom is_uint16_def2 : - (forall x:int [is_uint16(x)]. (((0 <= x) and (x < 65536)) -> - is_uint16(x))) - -predicate is_sint16(x: int) = (((-32768) <= x) and (x < 32768)) - -logic is_uint32 : int -> prop - -axiom is_uint32_def : - (forall x:int [is_uint32(x)]. (is_uint32(x) -> (0 <= x))) - -axiom is_uint32_def1 : - (forall x:int [is_uint32(x)]. (is_uint32(x) -> (x < 4294967296))) - -axiom is_uint32_def2 : - (forall x:int [is_uint32(x)]. (((0 <= x) and (x < 4294967296)) -> - is_uint32(x))) - -logic is_sint32 : int -> prop - -axiom is_sint32_def : - (forall x:int [is_sint32(x)]. (is_sint32(x) -> ((-2147483648) <= x))) - -axiom is_sint32_def1 : - (forall x:int [is_sint32(x)]. (is_sint32(x) -> (x < 2147483648))) - -axiom is_sint32_def2 : - (forall x:int [is_sint32(x)]. ((((-2147483648) <= x) and - (x < 2147483648)) -> is_sint32(x))) - -logic is_uint64 : int -> prop - -axiom is_uint64_def : - (forall x:int [is_uint64(x)]. (is_uint64(x) -> (0 <= x))) - -axiom is_uint64_def1 : - (forall x:int [is_uint64(x)]. (is_uint64(x) -> - (x < 18446744073709551616))) - -axiom is_uint64_def2 : - (forall x:int [is_uint64(x)]. (((0 <= x) and - (x < 18446744073709551616)) -> is_uint64(x))) - -logic is_sint64 : int -> prop - -axiom is_sint64_def : - (forall x:int [is_sint64(x)]. (is_sint64(x) -> - ((-9223372036854775808) <= x))) - -axiom is_sint64_def1 : - (forall x:int [is_sint64(x)]. (is_sint64(x) -> (x < 9223372036854775808))) - -axiom is_sint64_def2 : - (forall x:int [is_sint64(x)]. ((((-9223372036854775808) <= x) and - (x < 9223372036854775808)) -> is_sint64(x))) - -axiom is_bool0 : is_bool(0) - -axiom is_bool1 : is_bool(1) - -logic to_bool : int -> int - -axiom to_bool_def : (forall x:int. ((x = 0) -> (to_bool(x) = 0))) - -axiom to_bool_def1 : (forall x:int. ((not (x = 0)) -> (to_bool(x) = 1))) - -logic to_uint8 : int -> int - -logic to_sint8 : int -> int - -logic to_uint16 : int -> int - -logic to_sint16 : int -> int - -logic to_uint32 : int -> int - -logic to_sint32 : int -> int - -logic to_uint64 : int -> int - -logic to_sint64 : int -> int - -logic two_power_abs : int -> int - -predicate is_uint(n: int, x: int) = ((0 <= x) and (x < two_power_abs(n))) - -predicate is_sint(n: int, x: int) = (((-two_power_abs(n)) <= x) and - (x < two_power_abs(n))) - -logic to_uint : int, int -> int - -logic to_sint : int, int -> int - -axiom is_to_uint8 : - (forall x:int [is_uint8(to_uint8(x))]. is_uint8(to_uint8(x))) - -axiom is_to_sint8 : - (forall x:int [is_sint8(to_sint8(x))]. is_sint8(to_sint8(x))) - -axiom is_to_uint16 : - (forall x:int [is_uint16(to_uint16(x))]. is_uint16(to_uint16(x))) - -axiom is_to_sint16 : - (forall x:int [is_sint16(to_sint16(x))]. is_sint16(to_sint16(x))) - -axiom is_to_uint32 : - (forall x:int [is_uint32(to_uint32(x))]. is_uint32(to_uint32(x))) - -axiom is_to_sint32 : - (forall x:int [is_sint32(to_sint32(x))]. is_sint32(to_sint32(x))) - -axiom is_to_uint64 : - (forall x:int [is_uint64(to_uint64(x))]. is_uint64(to_uint64(x))) - -axiom is_to_sint64 : - (forall x:int [is_sint64(to_sint64(x))]. is_sint64(to_sint64(x))) - -axiom id_uint8 : - (forall x:int [to_uint8(x)]. (((0 <= x) and (x < 256)) -> - (to_uint8(x) = x))) - -axiom id_sint8 : - (forall x:int [to_sint8(x)]. ((((-128) <= x) and (x < 128)) -> - (to_sint8(x) = x))) - -axiom id_uint16 : - (forall x:int [to_uint16(x)]. (((0 <= x) and (x < 65536)) -> - (to_uint16(x) = x))) - -axiom id_sint16 : - (forall x:int [to_sint16(x)]. ((((-32768) <= x) and (x < 32768)) -> - (to_sint16(x) = x))) - -axiom id_uint32 : - (forall x:int [to_uint32(x)]. (((0 <= x) and (x < 4294967296)) -> - (to_uint32(x) = x))) - -axiom id_sint32 : - (forall x:int [to_sint32(x)]. ((((-2147483648) <= x) and - (x < 2147483648)) -> (to_sint32(x) = x))) - -axiom id_uint64 : - (forall x:int [to_uint64(x)]. (((0 <= x) and - (x < 18446744073709551616)) -> (to_uint64(x) = x))) - -axiom id_sint64 : - (forall x:int [to_sint64(x)]. ((((-9223372036854775808) <= x) and - (x < 9223372036854775808)) -> (to_sint64(x) = x))) - -axiom proj_int8 : - (forall x:int [to_sint8(to_uint8(x))]. - (to_sint8(to_uint8(x)) = to_sint8(x))) - -axiom proj_int16 : - (forall x:int [to_sint16(to_uint16(x))]. - (to_sint16(to_uint16(x)) = to_sint16(x))) - -axiom proj_int32 : - (forall x:int [to_sint32(to_uint32(x))]. - (to_sint32(to_uint32(x)) = to_sint32(x))) - -axiom proj_int64 : - (forall x:int [to_sint64(to_uint64(x))]. - (to_sint64(to_uint64(x)) = to_sint64(x))) - diff --git a/src/plugins/wp/share/ergo/Cmath.mlw b/src/plugins/wp/share/ergo/Cmath.mlw deleted file mode 100644 index 137cf15a396..00000000000 --- a/src/plugins/wp/share/ergo/Cmath.mlw +++ /dev/null @@ -1,34 +0,0 @@ -(**************************************************************************) -(* *) -(* This file is part of WP plug-in of Frama-C. *) -(* *) -(* Copyright (C) 2007-2021 *) -(* CEA (Commissariat a l'energie atomique et aux energies *) -(* alternatives) *) -(* *) -(* you can redistribute it and/or modify it under the terms of the GNU *) -(* Lesser General Public License as published by the Free Software *) -(* Foundation, version 2.1. *) -(* *) -(* It is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *) -(* GNU Lesser General Public License for more details. *) -(* *) -(* See the GNU Lesser General Public License version 2.1 *) -(* for more details (enclosed in the file licenses/LGPLv2.1). *) -(* *) -(**************************************************************************) - -(* this is the prelude for Alt-Ergo, version >= 0.95.2 *) -(** The theory BuiltIn_ must be appended to this file*) -(** The theory Bool_ must be appended to this file*) -(** The theory int_Int_ must be appended to this file*) -(** The theory int_Abs_ must be appended to this file*) -(** The theory real_Real_ must be appended to this file*) -(** The theory real_RealInfix_ must be appended to this file*) -axiom abs_def : (forall x:int [abs_int(x)]. ((0 <= x) -> (abs_int(x) = x))) - -axiom abs_def1 : - (forall x:int [abs_int(x)]. ((not (0 <= x)) -> (abs_int(x) = (-x)))) - diff --git a/src/plugins/wp/share/ergo/ExpLog.mlw b/src/plugins/wp/share/ergo/ExpLog.mlw deleted file mode 100644 index c71d17e18b0..00000000000 --- a/src/plugins/wp/share/ergo/ExpLog.mlw +++ /dev/null @@ -1,30 +0,0 @@ -(**************************************************************************) -(* *) -(* This file is part of WP plug-in of Frama-C. *) -(* *) -(* Copyright (C) 2007-2021 *) -(* CEA (Commissariat a l'energie atomique et aux energies *) -(* alternatives) *) -(* *) -(* you can redistribute it and/or modify it under the terms of the GNU *) -(* Lesser General Public License as published by the Free Software *) -(* Foundation, version 2.1. *) -(* *) -(* It is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *) -(* GNU Lesser General Public License for more details. *) -(* *) -(* See the GNU Lesser General Public License version 2.1 *) -(* for more details (enclosed in the file licenses/LGPLv2.1). *) -(* *) -(**************************************************************************) - -(* this is the prelude for Alt-Ergo, version >= 0.95.2 *) -(** The theory BuiltIn_ must be appended to this file*) -(** The theory Bool_ must be appended to this file*) -(** The theory real_Real_ must be appended to this file*) -(** The theory real_RealInfix_ must be appended to this file*) -(** The theory real_ExpLog_ must be appended to this file*) -axiom exp_pos : (forall x:real. (0.0 < exp(x))) - diff --git a/src/plugins/wp/share/ergo/Memory.mlw b/src/plugins/wp/share/ergo/Memory.mlw deleted file mode 100644 index 32ac4406cf9..00000000000 --- a/src/plugins/wp/share/ergo/Memory.mlw +++ /dev/null @@ -1,212 +0,0 @@ -(**************************************************************************) -(* *) -(* This file is part of WP plug-in of Frama-C. *) -(* *) -(* Copyright (C) 2007-2021 *) -(* CEA (Commissariat a l'energie atomique et aux energies *) -(* alternatives) *) -(* *) -(* you can redistribute it and/or modify it under the terms of the GNU *) -(* Lesser General Public License as published by the Free Software *) -(* Foundation, version 2.1. *) -(* *) -(* It is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *) -(* GNU Lesser General Public License for more details. *) -(* *) -(* See the GNU Lesser General Public License version 2.1 *) -(* for more details (enclosed in the file licenses/LGPLv2.1). *) -(* *) -(**************************************************************************) - -(* this is the prelude for Alt-Ergo, version >= 0.95.2 *) -(** The theory BuiltIn_ must be appended to this file*) -(** The theory Bool_ must be appended to this file*) -(** The theory bool_Bool_ must be appended to this file*) -(** The theory int_Int_ must be appended to this file*) -(** The theory map_Map_ must be appended to this file*) -type addr = { base : int; offset : int -} - -logic addr_le : addr, addr -> prop - -logic addr_lt : addr, addr -> prop - -logic addr_le_bool : addr, addr -> bool - -logic addr_lt_bool : addr, addr -> bool - -axiom addr_le_def : - (forall p:addr. forall q:addr [addr_le(p, q)]. (((p).base = (q).base) -> - (addr_le(p, q) -> ((p).offset <= (q).offset)))) - -axiom addr_le_def1 : - (forall p:addr. forall q:addr [addr_le(p, q)]. (((p).base = (q).base) -> - (((p).offset <= (q).offset) -> addr_le(p, q)))) - -axiom addr_lt_def : - (forall p:addr. forall q:addr [addr_lt(p, q)]. (((p).base = (q).base) -> - (addr_lt(p, q) -> ((p).offset < (q).offset)))) - -axiom addr_lt_def1 : - (forall p:addr. forall q:addr [addr_lt(p, q)]. (((p).base = (q).base) -> - (((p).offset < (q).offset) -> addr_lt(p, q)))) - -axiom addr_le_bool_def : - (forall p:addr. forall q:addr [addr_le_bool(p, q)]. (addr_le(p, q) -> - (addr_le_bool(p, q) = true))) - -axiom addr_le_bool_def1 : - (forall p:addr. forall q:addr [addr_le_bool(p, q)]. ((addr_le_bool(p, - q) = true) -> addr_le(p, q))) - -axiom addr_lt_bool_def : - (forall p:addr. forall q:addr [addr_lt_bool(p, q)]. (addr_lt(p, q) -> - (addr_lt_bool(p, q) = true))) - -axiom addr_lt_bool_def1 : - (forall p:addr. forall q:addr [addr_lt_bool(p, q)]. ((addr_lt_bool(p, - q) = true) -> addr_lt(p, q))) - -function null() : addr = { base = 0; offset = 0 } - -function global(b: int) : addr = { base = b; offset = 0 } - -function shift(p: addr, k: int) : addr = { base = (p).base; offset = - ((p).offset + k) } - -predicate included(p: addr, a: int, q: addr, b: int) = ((0 < a) -> - ((0 <= b) and (((p).base = (q).base) and (((q).offset <= (p).offset) and - (((p).offset + a) <= ((q).offset + b)))))) - -predicate separated(p: addr, a: int, q: addr, b: int) = ((a <= 0) or - ((b <= 0) or ((not ((p).base = (q).base)) or - ((((q).offset + b) <= (p).offset) or (((p).offset + a) <= (q).offset))))) - -predicate eqmem(m1: (addr,'a) farray, m2: (addr,'a) farray, p: addr, - a1: int) = - (forall q:addr [(m1[p])| (m2[q])]. (included(q, 1, p, a1) -> - ((m1[q]) = (m2[q])))) - -logic havoc : (addr,'a) farray, (addr,'a) farray, addr, - int -> (addr,'a) farray - -predicate valid_rw(m: (int,int) farray, p: addr, n: int) = ((0 < n) -> - ((0 < (p).base) and ((0 <= (p).offset) and - (((p).offset + n) <= (m[(p).base]))))) - -predicate valid_rd(m: (int,int) farray, p: addr, n: int) = ((0 < n) -> - ((not (0 = (p).base)) and ((0 <= (p).offset) and - (((p).offset + n) <= (m[(p).base]))))) - -predicate invalid(m: (int,int) farray, p: addr, n: int) = ((0 < n) -> - (((m[(p).base]) <= (p).offset) or (((p).offset + n) <= 0))) - -axiom valid_rw_rd : - (forall m:(int,int) farray. - (forall p:addr. (forall n:int. (valid_rw(m, p, n) -> valid_rd(m, p, n))))) - -axiom valid_string : - (forall m:(int,int) farray. - (forall p:addr. (((p).base < 0) -> (((0 <= (p).offset) and - ((p).offset < (m[(p).base]))) -> valid_rd(m, p, 1))))) - -axiom valid_string1 : - (forall m:(int,int) farray. - (forall p:addr. (((p).base < 0) -> (((0 <= (p).offset) and - ((p).offset < (m[(p).base]))) -> (not valid_rw(m, p, 1)))))) - -axiom separated_1 : - (forall p:addr. forall q:addr. - (forall a:int. forall b:int. forall i:int. forall j:int [separated(p, a, q, - b), { base = (p).base; offset = i }, { base = (q).base; offset = j }]. - (separated(p, a, q, b) -> ((((p).offset <= i) and - (i < ((p).offset + a))) -> ((((q).offset <= j) and - (j < ((q).offset + b))) -> (not ({ base = (p).base; offset = i } = { - base = (q).base; offset = j }))))))) - -logic region : int -> int - -logic linked : (int,int) farray -> prop - -logic sconst : (addr,int) farray -> prop - -predicate framed(m: (addr,addr) farray) = - (forall p:addr [(m[p])]. (region(((m[p])).base) <= 0)) - -axiom separated_included : - (forall p:addr. forall q:addr. - (forall a:int. forall b:int [separated(p, a, q, b), included(p, a, q, b)]. - ((0 < a) -> ((0 < b) -> (separated(p, a, q, b) -> (not included(p, a, q, - b))))))) - -axiom included_trans : - (forall p:addr. forall q:addr. forall r:addr. - (forall a:int. forall b:int. forall c:int [included(p, a, q, b), - included(q, b, r, c)]. (included(p, a, q, b) -> (included(q, b, r, c) -> - included(p, a, r, c))))) - -axiom separated_trans : - (forall p:addr. forall q:addr. forall r:addr. - (forall a:int. forall b:int. forall c:int [included(p, a, q, b), - separated(q, b, r, c)]. (included(p, a, q, b) -> (separated(q, b, r, c) -> - separated(p, a, r, c))))) - -axiom separated_sym : - (forall p:addr. forall q:addr. - (forall a:int. forall b:int [separated(p, a, q, b)]. (separated(p, a, q, - b) -> separated(q, b, p, a)))) - -axiom separated_sym1 : - (forall p:addr. forall q:addr. - (forall a:int. forall b:int [separated(p, a, q, b)]. (separated(q, b, p, - a) -> separated(p, a, q, b)))) - -axiom eqmem_included : - (forall m1:(addr,'a) farray. forall m2:(addr,'a) farray. - (forall p:addr. forall q:addr. - (forall a1:int. forall b:int [eqmem(m1, m2, p, a1), eqmem(m1, m2, q, b)]. - (included(p, a1, q, b) -> (eqmem(m1, m2, q, b) -> eqmem(m1, m2, p, a1)))))) - -axiom eqmem_sym : - (forall m1:(addr,'a) farray. forall m2:(addr,'a) farray. - (forall p:addr. - (forall a1:int. (eqmem(m1, m2, p, a1) -> eqmem(m2, m1, p, a1))))) - -axiom havoc_access : - (forall m0:(addr,'a) farray. forall m1:(addr,'a) farray. - (forall q:addr. forall p:addr. - (forall a1:int. (separated(q, 1, p, a1) -> ((havoc(m0, m1, p, - a1)[q]) = (m1[q])))))) - -axiom havoc_access1 : - (forall m0:(addr,'a) farray. forall m1:(addr,'a) farray. - (forall q:addr. forall p:addr. - (forall a1:int. ((not separated(q, 1, p, a1)) -> ((havoc(m0, m1, p, - a1)[q]) = (m0[q])))))) - -logic int_of_addr : addr -> int - -logic addr_of_int : int -> addr - -logic base_offset : int -> int - -logic base_index : int -> int - -axiom int_of_addr_bijection : - (forall a:int. (int_of_addr(addr_of_int(a)) = a)) - -axiom addr_of_int_bijection : - (forall p:addr. (addr_of_int(int_of_addr(p)) = p)) - -axiom addr_of_null : (int_of_addr(null) = 0) - -axiom base_offset_zero : (base_offset(0) = 0) - -axiom base_offset_inj : (forall i:int. (base_index(base_offset(i)) = i)) - -axiom base_offset_monotonic : - (forall i:int. forall j:int. ((i < j) -> - (base_offset(i) < base_offset(j)))) - diff --git a/src/plugins/wp/share/ergo/Qed.mlw b/src/plugins/wp/share/ergo/Qed.mlw deleted file mode 100644 index 08a3998f07c..00000000000 --- a/src/plugins/wp/share/ergo/Qed.mlw +++ /dev/null @@ -1,158 +0,0 @@ -(**************************************************************************) -(* *) -(* This file is part of WP plug-in of Frama-C. *) -(* *) -(* Copyright (C) 2007-2021 *) -(* CEA (Commissariat a l'energie atomique et aux energies *) -(* alternatives) *) -(* *) -(* you can redistribute it and/or modify it under the terms of the GNU *) -(* Lesser General Public License as published by the Free Software *) -(* Foundation, version 2.1. *) -(* *) -(* It is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *) -(* GNU Lesser General Public License for more details. *) -(* *) -(* See the GNU Lesser General Public License version 2.1 *) -(* for more details (enclosed in the file licenses/LGPLv2.1). *) -(* *) -(**************************************************************************) - -(* this is the prelude for Alt-Ergo, version >= 0.95.2 *) -(** The theory BuiltIn_ must be appended to this file*) -(** The theory Bool_ must be appended to this file*) -(** The theory bool_Bool_ must be appended to this file*) -(** The theory int_Int_ must be appended to this file*) -(** The theory int_Abs_ must be appended to this file*) -(** The theory int_ComputerDivision_ must be appended to this file*) -(** The theory real_Real_ must be appended to this file*) -(** The theory real_RealInfix_ must be appended to this file*) -(** The theory real_FromInt_ must be appended to this file*) -logic match_bool : bool, 'a, 'a -> 'a - -axiom match_bool1 : - (forall p:bool. forall x:'a. forall y:'a [match_bool(p, x, y)]. - (((p = true) and (match_bool(p, x, y) = x)) or ((p = false) and - (match_bool(p, x, y) = y)))) - -logic eqb : 'a, 'a -> bool - -axiom eqb1 : (forall x:'a. forall y:'a. ((eqb(x, y) = true) -> (x = y))) - -axiom eqb2 : (forall x:'a. forall y:'a. ((x = y) -> (eqb(x, y) = true))) - -logic neqb : 'a, 'a -> bool - -axiom neqb1 : - (forall x:'a. forall y:'a. ((neqb(x, y) = true) -> (not (x = y)))) - -axiom neqb2 : - (forall x:'a. forall y:'a. ((not (x = y)) -> (neqb(x, y) = true))) - -logic zlt : int, int -> bool - -logic zleq : int, int -> bool - -axiom zlt1 : (forall x:int. forall y:int. ((zlt(x, y) = true) -> (x < y))) - -axiom zlt2 : (forall x:int. forall y:int. ((x < y) -> (zlt(x, y) = true))) - -axiom zleq1 : (forall x:int. forall y:int. ((zleq(x, y) = true) -> (x <= y))) - -axiom zleq2 : (forall x:int. forall y:int. ((x <= y) -> (zleq(x, y) = true))) - -logic rlt : real, real -> bool - -logic rleq : real, real -> bool - -axiom rlt1 : (forall x:real. forall y:real. ((rlt(x, y) = true) -> (x < y))) - -axiom rlt2 : (forall x:real. forall y:real. ((x < y) -> (rlt(x, y) = true))) - -axiom rleq1 : - (forall x:real. forall y:real. ((rleq(x, y) = true) -> (x <= y))) - -axiom rleq2 : - (forall x:real. forall y:real. ((x <= y) -> (rleq(x, y) = true))) - -function real_of_int(x: int) : real = from_int(x) - -axiom cdiv_cases : - (forall n:int. forall d:int [div(n, d)]. ((0 <= n) -> ((0 < d) -> (div(n, - d) = (n / d))))) - -axiom cdiv_cases1 : - (forall n:int. forall d:int [div(n, d)]. ((n <= 0) -> ((0 < d) -> (div(n, - d) = (-((-n) / d)))))) - -axiom cdiv_cases2 : - (forall n:int. forall d:int [div(n, d)]. ((0 <= n) -> ((d < 0) -> (div(n, - d) = (-(n / (-d))))))) - -axiom cdiv_cases3 : - (forall n:int. forall d:int [div(n, d)]. ((n <= 0) -> ((d < 0) -> (div(n, - d) = ((-n) / (-d)))))) - -axiom cmod_cases : - (forall n:int. forall d:int [mod(n, d)]. ((0 <= n) -> ((0 < d) -> (mod(n, - d) = (n % d))))) - -axiom cmod_cases1 : - (forall n:int. forall d:int [mod(n, d)]. ((n <= 0) -> ((0 < d) -> (mod(n, - d) = (-((-n) % d)))))) - -axiom cmod_cases2 : - (forall n:int. forall d:int [mod(n, d)]. ((0 <= n) -> ((d < 0) -> (mod(n, - d) = (n % (-d)))))) - -axiom cmod_cases3 : - (forall n:int. forall d:int [mod(n, d)]. ((n <= 0) -> ((d < 0) -> (mod(n, - d) = (-((-n) % (-d))))))) - -axiom c_euclidian : - (forall n:int. forall d:int [div(n, d), mod(n, d)]. ((not (d = 0)) -> - (n = ((div(n, d) * d) + mod(n, d))))) - -axiom cmod_remainder : - (forall n:int. forall d:int [mod(n, d)]. ((0 <= n) -> ((0 < d) -> - (0 <= mod(n, d))))) - -axiom cmod_remainder1 : - (forall n:int. forall d:int [mod(n, d)]. ((0 <= n) -> ((0 < d) -> (mod(n, - d) < d)))) - -axiom cmod_remainder2 : - (forall n:int. forall d:int [mod(n, d)]. ((n <= 0) -> ((0 < d) -> - ((-d) < mod(n, d))))) - -axiom cmod_remainder3 : - (forall n:int. forall d:int [mod(n, d)]. ((n <= 0) -> ((0 < d) -> (mod(n, - d) <= 0)))) - -axiom cmod_remainder4 : - (forall n:int. forall d:int [mod(n, d)]. ((0 <= n) -> ((d < 0) -> - (0 <= mod(n, d))))) - -axiom cmod_remainder5 : - (forall n:int. forall d:int [mod(n, d)]. ((0 <= n) -> ((d < 0) -> (mod(n, - d) < (-d))))) - -axiom cmod_remainder6 : - (forall n:int. forall d:int [mod(n, d)]. ((n <= 0) -> ((d < 0) -> - (d < mod(n, d))))) - -axiom cmod_remainder7 : - (forall n:int. forall d:int [mod(n, d)]. ((n <= 0) -> ((d < 0) -> (mod(n, - d) <= 0)))) - -axiom cdiv_neutral : (forall a:int [div(a, 1)]. (div(a, 1) = a)) - -axiom cdiv_inv : - (forall a:int [div(a, a)]. ((not (a = 0)) -> (div(a, a) = 1))) - -axiom cdiv_closed_remainder : - (forall a:int. forall b:int. forall n:int. ((0 <= a) -> ((0 <= b) -> - (((0 <= (b - a)) and ((b - a) < n)) -> ((mod(a,n) = mod(b,n)) -> - (a = b)))))) diff --git a/src/plugins/wp/share/ergo/Square.mlw b/src/plugins/wp/share/ergo/Square.mlw deleted file mode 100644 index 3a1f199e50e..00000000000 --- a/src/plugins/wp/share/ergo/Square.mlw +++ /dev/null @@ -1,37 +0,0 @@ -(**************************************************************************) -(* *) -(* This file is part of WP plug-in of Frama-C. *) -(* *) -(* Copyright (C) 2007-2021 *) -(* CEA (Commissariat a l'energie atomique et aux energies *) -(* alternatives) *) -(* *) -(* you can redistribute it and/or modify it under the terms of the GNU *) -(* Lesser General Public License as published by the Free Software *) -(* Foundation, version 2.1. *) -(* *) -(* It is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *) -(* GNU Lesser General Public License for more details. *) -(* *) -(* See the GNU Lesser General Public License version 2.1 *) -(* for more details (enclosed in the file licenses/LGPLv2.1). *) -(* *) -(**************************************************************************) - -(* this is the prelude for Alt-Ergo, version >= 0.95.2 *) -(** The theory BuiltIn_ must be appended to this file*) -(** The theory Bool_ must be appended to this file*) -(** The theory real_Real_ must be appended to this file*) -(** The theory real_RealInfix_ must be appended to this file*) -(** The theory real_Square_ must be appended to this file*) -axiom sqrt_lin1 : (forall x:real [sqrt(x)]. ((1.0 < x) -> (sqrt(x) < x))) - -axiom sqrt_lin0 : - (forall x:real [sqrt(x)]. (((0.0 < x) and (x < 1.0)) -> (x < sqrt(x)))) - -axiom sqrt_0 : (sqrt(0.0) = 0.0) - -axiom sqrt_1 : (sqrt(1.0) = 1.0) - diff --git a/src/plugins/wp/share/ergo/Vlist.mlw b/src/plugins/wp/share/ergo/Vlist.mlw deleted file mode 100644 index c10ced2bdb5..00000000000 --- a/src/plugins/wp/share/ergo/Vlist.mlw +++ /dev/null @@ -1,126 +0,0 @@ -(**************************************************************************) -(* *) -(* This file is part of WP plug-in of Frama-C. *) -(* *) -(* Copyright (C) 2007-2021 *) -(* CEA (Commissariat a l'energie atomique et aux energies *) -(* alternatives) *) -(* *) -(* you can redistribute it and/or modify it under the terms of the GNU *) -(* Lesser General Public License as published by the Free Software *) -(* Foundation, version 2.1. *) -(* *) -(* It is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *) -(* GNU Lesser General Public License for more details. *) -(* *) -(* See the GNU Lesser General Public License version 2.1 *) -(* for more details (enclosed in the file licenses/LGPLv2.1). *) -(* *) -(**************************************************************************) - -(* this is the prelude for Alt-Ergo, version >= 0.95.2 *) -(** The theory BuiltIn_ must be appended to this file*) -(** The theory Bool_ must be appended to this file*) -(** The theory int_Int_ must be appended to this file*) -(** The theory int_Abs_ must be appended to this file*) -(** The theory int_ComputerDivision_ must be appended to this file*) -type 'a list - -logic nil : 'a list - -logic cons : 'a, 'a list -> 'a list - -logic concat : 'a list, 'a list -> 'a list - -logic repeat : 'a list, int -> 'a list - -logic length : 'a list -> int - -logic nth : 'a list, int -> 'a - -axiom length_pos : (forall w:'a list. (0 <= length(w))) - -axiom length_nil : (length((nil : 'a list)) = 0) - -axiom length_nil_bis : - (forall w:'a list. ((length(w) = 0) -> (w = (nil : 'a list)))) - -axiom length_cons : - (forall x:'a. forall w:'a list [length(cons(x, w))]. (length(cons(x, - w)) = (1 + length(w)))) - -axiom length_concat : - (forall u:'a list. forall v:'a list [length(concat(u, v))]. - (length(concat(u, v)) = (length(u) + length(v)))) - -axiom length_repeat : - (forall w:'a list. forall n:int [length(repeat(w, n))]. ((0 <= n) -> - (length(repeat(w, n)) = (n * length(w))))) - -axiom nth_cons : - (forall k:int. forall x:'a. forall w:'a list [nth(cons(x, w), k)]. - ((k = 0) -> (nth(cons(x, w), k) = x))) - -axiom nth_cons1 : - (forall k:int. forall x:'a. forall w:'a list [nth(cons(x, w), k)]. - ((not (k = 0)) -> (nth(cons(x, w), k) = nth(w, (k - 1))))) - -axiom nth_concat : - (forall u:'a list. forall v:'a list. forall k:int [nth(concat(u, v), k)]. - ((k < length(u)) -> (nth(concat(u, v), k) = nth(u, k)))) - -axiom nth_concat1 : - (forall u:'a list. forall v:'a list. forall k:int [nth(concat(u, v), k)]. - ((not (k < length(u))) -> (nth(concat(u, v), k) = nth(v, - (k - length(u)))))) - -axiom nth_repeat : - (forall n:int. forall k:int. forall w:'a list [nth(repeat(w, n), k)]. - (((0 <= k) and (k < (n * length(w)))) -> ((0 < length(w)) -> - (nth(repeat(w, n), k) = nth(w, mod(k, length(w))))))) - -predicate vlist_eq(u: 'a list, v: 'a list) = ((length(u) = length(v)) and - (forall i:int. (((0 <= i) and (i < length(u))) -> (nth(u, i) = nth(v, - i))))) - -axiom extensionality : - (forall u:'a list. forall v:'a list. (vlist_eq(u, v) -> (u = v))) - -axiom rw_nil_concat_left : - (forall w:'a list [concat((nil : 'a list), w)]. (concat((nil : 'a list), - w) = w)) - -axiom rw_nil_concat_right : - (forall w:'a list [concat(w, (nil : 'a list))]. (concat(w, - (nil : 'a list)) = w)) - -axiom rw_nil_repeat : - (forall n:int [repeat((nil : 'a list), n)]. ((0 <= n) -> - (repeat((nil : 'a list), n) = (nil : 'a list)))) - -axiom rw_repeat_zero : - (forall w:'a list [repeat(w, 0)]. (repeat(w, 0) = (nil : 'a list))) - -axiom rw_repeat_one : (forall w:'a list [repeat(w, 1)]. (repeat(w, 1) = w)) - -logic repeat_box : 'a list, int -> 'a list - -axiom rw_repeat_box_unfold : - (forall w:'a list. forall n:int [repeat_box(w, n)]. (repeat_box(w, - n) = repeat(w, n))) - -axiom rw_repeat_plus_box_unfold : - (forall w:'a list. forall a1:int. forall b:int [repeat_box(w, (a1 + b))]. - ((0 <= a1) -> ((0 <= b) -> (repeat_box(w, (a1 + b)) = concat(repeat(w, a1), - repeat(w, b)))))) - -axiom rw_repeat_plus_one_box_unfold : - (forall w:'a list. forall n:int [repeat_box(w, n)]. ((0 < n) -> - (repeat_box(w, n) = concat(repeat(w, (n - 1)), w)))) - -axiom rw_repeat_plus_one_box_unfold1 : - (forall w:'a list. forall n:int [repeat_box(w, n)]. ((0 < n) -> - (repeat_box(w, (n + 1)) = concat(repeat(w, n), w)))) - diff --git a/src/plugins/wp/share/ergo/Vset.mlw b/src/plugins/wp/share/ergo/Vset.mlw deleted file mode 100644 index 250caa04958..00000000000 --- a/src/plugins/wp/share/ergo/Vset.mlw +++ /dev/null @@ -1,152 +0,0 @@ -(**************************************************************************) -(* *) -(* This file is part of WP plug-in of Frama-C. *) -(* *) -(* Copyright (C) 2007-2021 *) -(* CEA (Commissariat a l'energie atomique et aux energies *) -(* alternatives) *) -(* *) -(* you can redistribute it and/or modify it under the terms of the GNU *) -(* Lesser General Public License as published by the Free Software *) -(* Foundation, version 2.1. *) -(* *) -(* It is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *) -(* GNU Lesser General Public License for more details. *) -(* *) -(* See the GNU Lesser General Public License version 2.1 *) -(* for more details (enclosed in the file licenses/LGPLv2.1). *) -(* *) -(**************************************************************************) - -(* this is the prelude for Alt-Ergo, version >= 0.95.2 *) -(** The theory BuiltIn_ must be appended to this file*) -(** The theory Bool_ must be appended to this file*) -(** The theory bool_Bool_ must be appended to this file*) -(** The theory int_Int_ must be appended to this file*) -type 'a set - -logic empty : 'a set - -logic singleton : 'a -> 'a set - -logic ac union : 'a set, 'a set -> 'a set - -logic ac inter : 'a set, 'a set -> 'a set - -logic member : 'a, 'a set -> prop - -logic member_bool : 'a, 'a set -> bool - -logic range : int, int -> int set - -logic range_sup : int -> int set - -logic range_inf : int -> int set - -logic range_all : int set - -predicate eqset(a: 'a1 set, b: 'a1 set) = - (forall x:'a1. (member(x, a) <-> member(x, b))) - -predicate subset(a: 'a1 set, b: 'a1 set) = - (forall x:'a1. (member(x, a) -> member(x, b))) - -predicate disjoint(a: 'a1 set, b: 'a1 set) = - (forall x:'a1. (member(x, a) -> (not member(x, b)))) - -axiom member_bool1 : - (forall x:'a. - (forall s:'a set [member_bool(x, s)]. (member(x, s) -> (member_bool(x, - s) = true)))) - -axiom member_bool2 : - (forall x:'a. - (forall s:'a set [member_bool(x, s)]. ((not member(x, s)) -> - (member_bool(x, s) = false)))) - -axiom member_empty : - (forall x:'a [member(x, (empty : 'a set))]. (not member(x, - (empty : 'a set)))) - -axiom member_singleton : - (forall x:'a. forall y:'a [member(x, singleton(y))]. (member(x, - singleton(y)) -> (x = y))) - -axiom member_singleton1 : - (forall x:'a. forall y:'a [member(x, singleton(y))]. ((x = y) -> member(x, - singleton(y)))) - -axiom member_union : - (forall x:'a. - (forall a1:'a set. forall b:'a set [member(x, union(a1, b))]. (member(x, - union(a1, b)) -> (member(x, a1) or member(x, b))))) - -axiom member_union1 : - (forall x:'a. - (forall a1:'a set. forall b:'a set [member(x, union(a1, b))]. ((member(x, - a1) or member(x, b)) -> member(x, union(a1, b))))) - -axiom member_inter : - (forall x:'a. - (forall a1:'a set. forall b:'a set [member(x, inter(a1, b))]. (member(x, - inter(a1, b)) -> member(x, a1)))) - -axiom member_inter1 : - (forall x:'a. - (forall a1:'a set. forall b:'a set [member(x, inter(a1, b))]. (member(x, - inter(a1, b)) -> member(x, b)))) - -axiom member_inter2 : - (forall x:'a. - (forall a1:'a set. forall b:'a set [member(x, inter(a1, b))]. ((member(x, - a1) and member(x, b)) -> member(x, inter(a1, b))))) - -axiom union_empty : - (forall a:'a1 set [union(a, (empty : 'a1 set))| union((empty : 'a1 set), - a)]. (union(a, (empty : 'a1 set)) = a)) - -axiom union_empty1 : - (forall a:'a1 set [union(a, (empty : 'a1 set))| union((empty : 'a1 set), - a)]. (union((empty : 'a1 set), a) = a)) - -axiom inter_empty : - (forall a:'a1 set [inter(a, (empty : 'a1 set))| inter((empty : 'a1 set), - a)]. (inter(a, (empty : 'a1 set)) = (empty : 'a1 set))) - -axiom inter_empty1 : - (forall a:'a1 set [inter(a, (empty : 'a1 set))| inter((empty : 'a1 set), - a)]. (inter((empty : 'a1 set), a) = (empty : 'a1 set))) - -axiom member_range : - (forall x:int. forall a:int. forall b:int [member(x, range(a, b))]. - (member(x, range(a, b)) -> (a <= x))) - -axiom member_range1 : - (forall x:int. forall a:int. forall b:int [member(x, range(a, b))]. - (member(x, range(a, b)) -> (x <= b))) - -axiom member_range2 : - (forall x:int. forall a:int. forall b:int [member(x, range(a, b))]. - (((a <= x) and (x <= b)) -> member(x, range(a, b)))) - -axiom member_range_sup : - (forall x:int. forall a:int [member(x, range_sup(a))]. (member(x, - range_sup(a)) -> (a <= x))) - -axiom member_range_sup1 : - (forall x:int. forall a:int [member(x, range_sup(a))]. ((a <= x) -> - member(x, range_sup(a)))) - -axiom member_range_inf : - (forall x:int. forall b:int [member(x, range_inf(b))]. (member(x, - range_inf(b)) -> (x <= b))) - -axiom member_range_inf1 : - (forall x:int. forall b:int [member(x, range_inf(b))]. ((x <= b) -> - member(x, range_inf(b)))) - -axiom member_range_all : - (forall x:int [member(x, range_all)]. member(x, range_all)) - diff --git a/src/plugins/wp/share/ergo/bool.Bool.mlw b/src/plugins/wp/share/ergo/bool.Bool.mlw deleted file mode 100644 index e31c6ffa0dc..00000000000 --- a/src/plugins/wp/share/ergo/bool.Bool.mlw +++ /dev/null @@ -1,27 +0,0 @@ -(**************************************************************************) -(* *) -(* The Why3 Verification Platform / The Why3 Development Team *) -(* Copyright 2010-2019 -- Inria - CNRS - Paris-Sud University *) -(* *) -(* This software is distributed under the terms of the GNU Lesser *) -(* General Public License version 2.1, with the special exception *) -(* on linking described in file LICENSE. *) -(* *) -(* File modified by CEA (Commissariat à l'énergie atomique et aux *) -(* énergies alternatives). *) -(* *) -(**************************************************************************) - -(* this is the prelude for Alt-Ergo, version >= 0.95.2 *) -(** The theory BuiltIn_ must be appended to this file*) -(** The theory Bool_ must be appended to this file*) -function andb(x: bool, y: bool) : bool = match_bool(x, y, false) - -function orb(x: bool, y: bool) : bool = match_bool(x, true, y) - -function notb(x: bool) : bool = match_bool(x, false, true) - -function xorb(x: bool, y: bool) : bool = match_bool(x, notb(y), y) - -function implb(x: bool, y: bool) : bool = match_bool(x, y, true) - diff --git a/src/plugins/wp/share/ergo/int.Abs.mlw b/src/plugins/wp/share/ergo/int.Abs.mlw deleted file mode 100644 index e03de293a71..00000000000 --- a/src/plugins/wp/share/ergo/int.Abs.mlw +++ /dev/null @@ -1,35 +0,0 @@ -(**************************************************************************) -(* *) -(* The Why3 Verification Platform / The Why3 Development Team *) -(* Copyright 2010-2019 -- Inria - CNRS - Paris-Sud University *) -(* *) -(* This software is distributed under the terms of the GNU Lesser *) -(* General Public License version 2.1, with the special exception *) -(* on linking described in file LICENSE. *) -(* *) -(* File modified by CEA (Commissariat à l'énergie atomique et aux *) -(* énergies alternatives). *) -(* *) -(**************************************************************************) - -(* this is the prelude for Alt-Ergo, version >= 0.95.2 *) -(** The theory BuiltIn_ must be appended to this file*) -(** The theory Bool_ must be appended to this file*) -(** The theory int_Int_ must be appended to this file*) -logic abs_int : int -> int - -axiom abs_def : (forall x:int. ((0 <= x) -> (abs_int(x) = x))) - -axiom abs_def1 : (forall x:int. ((not (0 <= x)) -> (abs_int(x) = (-x)))) - -axiom Abs_le : - (forall x:int. forall y:int. ((abs_int(x) <= y) -> ((-y) <= x))) - -axiom Abs_le1 : (forall x:int. forall y:int. ((abs_int(x) <= y) -> (x <= y))) - -axiom Abs_le2 : - (forall x:int. forall y:int. ((((-y) <= x) and (x <= y)) -> - (abs_int(x) <= y))) - -axiom Abs_pos : (forall x:int. (0 <= abs_int(x))) - diff --git a/src/plugins/wp/share/ergo/int.ComputerDivision.mlw b/src/plugins/wp/share/ergo/int.ComputerDivision.mlw deleted file mode 100644 index cc9054d9d97..00000000000 --- a/src/plugins/wp/share/ergo/int.ComputerDivision.mlw +++ /dev/null @@ -1,49 +0,0 @@ -(**************************************************************************) -(* *) -(* The Why3 Verification Platform / The Why3 Development Team *) -(* Copyright 2010-2019 -- Inria - CNRS - Paris-Sud University *) -(* *) -(* This software is distributed under the terms of the GNU Lesser *) -(* General Public License version 2.1, with the special exception *) -(* on linking described in file LICENSE. *) -(* *) -(* File modified by CEA (Commissariat à l'énergie atomique et aux *) -(* énergies alternatives). *) -(* *) -(**************************************************************************) - -(* this is the prelude for Alt-Ergo, version >= 0.95.2 *) -(** The theory BuiltIn_ must be appended to this file*) -(** The theory Bool_ must be appended to this file*) -(** The theory int_Int_ must be appended to this file*) -(** The theory int_Abs_ must be appended to this file*) -logic div : int, int -> int - -logic mod : int, int -> int - -axiom Div_bound : - (forall x:int. forall y:int. (((0 <= x) and (0 < y)) -> (0 <= div(x, y)))) - -axiom Div_bound1 : - (forall x:int. forall y:int. (((0 <= x) and (0 < y)) -> (div(x, y) <= x))) - -axiom Div_1 : (forall x:int. (div(x, 1) = x)) - -axiom Mod_1 : (forall x:int. (mod(x, 1) = 0)) - -axiom Div_inf : - (forall x:int. forall y:int. (((0 <= x) and (x < y)) -> (div(x, y) = 0))) - -axiom Mod_inf : - (forall x:int. forall y:int. (((0 <= x) and (x < y)) -> (mod(x, y) = x))) - -axiom Div_mult : - (forall x:int. forall y:int. forall z:int [div(((x * y) + z), x)]. - (((0 < x) and ((0 <= y) and (0 <= z))) -> (div(((x * y) + z), - x) = (y + div(z, x))))) - -axiom Mod_mult : - (forall x:int. forall y:int. forall z:int [mod(((x * y) + z), x)]. - (((0 < x) and ((0 <= y) and (0 <= z))) -> (mod(((x * y) + z), x) = mod(z, - x)))) - diff --git a/src/plugins/wp/share/ergo/int.ComputerOfEuclideanDivision.mlw b/src/plugins/wp/share/ergo/int.ComputerOfEuclideanDivision.mlw deleted file mode 100644 index 4fca9c6c375..00000000000 --- a/src/plugins/wp/share/ergo/int.ComputerOfEuclideanDivision.mlw +++ /dev/null @@ -1,52 +0,0 @@ -(**************************************************************************) -(* *) -(* The Why3 Verification Platform / The Why3 Development Team *) -(* Copyright 2010-2019 -- Inria - CNRS - Paris-Sud University *) -(* *) -(* This software is distributed under the terms of the GNU Lesser *) -(* General Public License version 2.1, with the special exception *) -(* on linking described in file LICENSE. *) -(* *) -(* File modified by CEA (Commissariat à l'énergie atomique et aux *) -(* énergies alternatives). *) -(* *) -(**************************************************************************) - -(* this is the prelude for Alt-Ergo, version >= 0.95.2 *) -(** The theory BuiltIn_ must be appended to this file*) -(** The theory Bool_ must be appended to this file*) -(** The theory int_Int_ must be appended to this file*) -(** The theory int_Abs_ must be appended to this file*) -(** The theory int_ComputerDivision_ must be appended to this file*) - -axiom cdiv_cases : - (forall n:int. forall d:int [div(n, d)]. ((0 <= n) -> ((0 < d) -> (div(n, - d) = (n / d))))) - -axiom cdiv_cases1 : - (forall n:int. forall d:int [div(n, d)]. ((n <= 0) -> ((0 < d) -> (div(n, - d) = (-((-n) / d)))))) - -axiom cdiv_cases2 : - (forall n:int. forall d:int [div(n, d)]. ((0 <= n) -> ((d < 0) -> (div(n, - d) = (-(n / (-d))))))) - -axiom cdiv_cases3 : - (forall n:int. forall d:int [div(n, d)]. ((n <= 0) -> ((d < 0) -> (div(n, - d) = ((-n) / (-d)))))) - -axiom cmod_cases : - (forall n:int. forall d:int [mod(n, d)]. ((0 <= n) -> ((0 < d) -> (mod(n, - d) = (n % d))))) - -axiom cmod_cases1 : - (forall n:int. forall d:int [mod(n, d)]. ((n <= 0) -> ((0 < d) -> (mod(n, - d) = (-((-n) % d)))))) - -axiom cmod_cases2 : - (forall n:int. forall d:int [mod(n, d)]. ((0 <= n) -> ((d < 0) -> (mod(n, - d) = (n % (-d)))))) - -axiom cmod_cases3 : - (forall n:int. forall d:int [mod(n, d)]. ((n <= 0) -> ((d < 0) -> (mod(n, - d) = (-((-n) % (-d))))))) diff --git a/src/plugins/wp/share/ergo/int.Int.mlw b/src/plugins/wp/share/ergo/int.Int.mlw deleted file mode 100644 index 703c83034f6..00000000000 --- a/src/plugins/wp/share/ergo/int.Int.mlw +++ /dev/null @@ -1,18 +0,0 @@ -(**************************************************************************) -(* *) -(* The Why3 Verification Platform / The Why3 Development Team *) -(* Copyright 2010-2019 -- Inria - CNRS - Paris-Sud University *) -(* *) -(* This software is distributed under the terms of the GNU Lesser *) -(* General Public License version 2.1, with the special exception *) -(* on linking described in file LICENSE. *) -(* *) -(* File modified by CEA (Commissariat à l'énergie atomique et aux *) -(* énergies alternatives). *) -(* *) -(**************************************************************************) - -(* this is the prelude for Alt-Ergo, version >= 0.95.2 *) -(* this is a prelude for Alt-Ergo integer arithmetic *) -(** The theory BuiltIn_ must be appended to this file*) -(** The theory Bool_ must be appended to this file*) diff --git a/src/plugins/wp/share/ergo/int.MinMax.mlw b/src/plugins/wp/share/ergo/int.MinMax.mlw deleted file mode 100644 index 5bbc63f7812..00000000000 --- a/src/plugins/wp/share/ergo/int.MinMax.mlw +++ /dev/null @@ -1,52 +0,0 @@ -(**************************************************************************) -(* *) -(* The Why3 Verification Platform / The Why3 Development Team *) -(* Copyright 2010-2019 -- Inria - CNRS - Paris-Sud University *) -(* *) -(* This software is distributed under the terms of the GNU Lesser *) -(* General Public License version 2.1, with the special exception *) -(* on linking described in file LICENSE. *) -(* *) -(* File modified by CEA (Commissariat à l'énergie atomique et aux *) -(* énergies alternatives). *) -(* *) -(**************************************************************************) - -(* this is the prelude for Alt-Ergo, version >= 0.95.2 *) -(** The theory BuiltIn_ must be appended to this file*) -(** The theory Bool_ must be appended to this file*) -(** The theory int_Int_ must be appended to this file*) -logic min_int : int, int -> int - -axiom min_def : - (forall x:int. forall y:int. ((x <= y) -> (min_int(x, y) = x))) - -axiom min_def1 : - (forall x:int. forall y:int. ((not (x <= y)) -> (min_int(x, y) = y))) - -logic max_int : int, int -> int - -axiom max_def : - (forall x:int. forall y:int. ((x <= y) -> (max_int(x, y) = y))) - -axiom max_def1 : - (forall x:int. forall y:int. ((not (x <= y)) -> (max_int(x, y) = x))) - -axiom Min_r : (forall x:int. forall y:int. ((y <= x) -> (min_int(x, y) = y))) - -axiom Max_l : (forall x:int. forall y:int. ((y <= x) -> (max_int(x, y) = x))) - -axiom Min_comm : - (forall x:int. forall y:int. (min_int(x, y) = min_int(y, x))) - -axiom Max_comm : - (forall x:int. forall y:int. (max_int(x, y) = max_int(y, x))) - -axiom Min_assoc : - (forall x:int. forall y:int. forall z:int. (min_int(min_int(x, y), - z) = min_int(x, min_int(y, z)))) - -axiom Max_assoc : - (forall x:int. forall y:int. forall z:int. (max_int(max_int(x, y), - z) = max_int(x, max_int(y, z)))) - diff --git a/src/plugins/wp/share/ergo/map.Const.mlw b/src/plugins/wp/share/ergo/map.Const.mlw deleted file mode 100644 index d93ab7e6468..00000000000 --- a/src/plugins/wp/share/ergo/map.Const.mlw +++ /dev/null @@ -1,23 +0,0 @@ -(**************************************************************************) -(* *) -(* The Why3 Verification Platform / The Why3 Development Team *) -(* Copyright 2010-2019 -- Inria - CNRS - Paris-Sud University *) -(* *) -(* This software is distributed under the terms of the GNU Lesser *) -(* General Public License version 2.1, with the special exception *) -(* on linking described in file LICENSE. *) -(* *) -(* File modified by CEA (Commissariat à l'énergie atomique et aux *) -(* énergies alternatives). *) -(* *) -(**************************************************************************) - -(* this is the prelude for Alt-Ergo, version >= 0.95.2 *) -(** The theory BuiltIn_ must be appended to this file*) -(** The theory Bool_ must be appended to this file*) -(** The theory map_Map_ must be appended to this file*) -logic const : 'b -> ('a,'b) farray - -axiom const_def : - (forall v:'b. forall us:'a. (((const(v) : ('a,'b) farray)[us]) = v)) - diff --git a/src/plugins/wp/share/ergo/map.Map.mlw b/src/plugins/wp/share/ergo/map.Map.mlw deleted file mode 100644 index ddb3b00ec7e..00000000000 --- a/src/plugins/wp/share/ergo/map.Map.mlw +++ /dev/null @@ -1,17 +0,0 @@ -(**************************************************************************) -(* *) -(* The Why3 Verification Platform / The Why3 Development Team *) -(* Copyright 2010-2019 -- Inria - CNRS - Paris-Sud University *) -(* *) -(* This software is distributed under the terms of the GNU Lesser *) -(* General Public License version 2.1, with the special exception *) -(* on linking described in file LICENSE. *) -(* *) -(* File modified by CEA (Commissariat à l'énergie atomique et aux *) -(* énergies alternatives). *) -(* *) -(**************************************************************************) - -(* this is the prelude for Alt-Ergo, version >= 0.95.2 *) -(** The theory BuiltIn_ must be appended to this file*) -(** The theory Bool_ must be appended to this file*) diff --git a/src/plugins/wp/share/ergo/real.Abs.mlw b/src/plugins/wp/share/ergo/real.Abs.mlw deleted file mode 100644 index 1340bfad895..00000000000 --- a/src/plugins/wp/share/ergo/real.Abs.mlw +++ /dev/null @@ -1,48 +0,0 @@ -(**************************************************************************) -(* *) -(* The Why3 Verification Platform / The Why3 Development Team *) -(* Copyright 2010-2019 -- Inria - CNRS - Paris-Sud University *) -(* *) -(* This software is distributed under the terms of the GNU Lesser *) -(* General Public License version 2.1, with the special exception *) -(* on linking described in file LICENSE. *) -(* *) -(* File modified by CEA (Commissariat à l'énergie atomique et aux *) -(* énergies alternatives). *) -(* *) -(**************************************************************************) - -(* this is the prelude for Alt-Ergo, version >= 0.95.2 *) -(** The theory BuiltIn_ must be appended to this file*) -(** The theory Bool_ must be appended to this file*) -(** The theory real_Real_ must be appended to this file*) -logic abs_real : real -> real - -axiom abs_def : (forall x:real. ((0.0 <= x) -> (abs_real(x) = x))) - -axiom abs_def1 : (forall x:real. ((not (0.0 <= x)) -> (abs_real(x) = (-x)))) - -axiom Abs_le : - (forall x:real. forall y:real. ((abs_real(x) <= y) -> ((-y) <= x))) - -axiom Abs_le1 : - (forall x:real. forall y:real. ((abs_real(x) <= y) -> (x <= y))) - -axiom Abs_le2 : - (forall x:real. forall y:real. ((((-y) <= x) and (x <= y)) -> - (abs_real(x) <= y))) - -axiom Abs_pos : (forall x:real. (0.0 <= abs_real(x))) - -axiom Abs_sum : - (forall x:real. forall y:real. - (abs_real((x + y)) <= (abs_real(x) + abs_real(y)))) - -axiom Abs_prod : - (forall x:real. forall y:real. - (abs_real((x * y)) = (abs_real(x) * abs_real(y)))) - -axiom triangular_inequality : - (forall x:real. forall y:real. forall z:real. - (abs_real((x - z)) <= (abs_real((x - y)) + abs_real((y - z))))) - diff --git a/src/plugins/wp/share/ergo/real.ExpLog.mlw b/src/plugins/wp/share/ergo/real.ExpLog.mlw deleted file mode 100644 index a600122dfd8..00000000000 --- a/src/plugins/wp/share/ergo/real.ExpLog.mlw +++ /dev/null @@ -1,41 +0,0 @@ -(**************************************************************************) -(* *) -(* The Why3 Verification Platform / The Why3 Development Team *) -(* Copyright 2010-2019 -- Inria - CNRS - Paris-Sud University *) -(* *) -(* This software is distributed under the terms of the GNU Lesser *) -(* General Public License version 2.1, with the special exception *) -(* on linking described in file LICENSE. *) -(* *) -(* File modified by CEA (Commissariat à l'énergie atomique et aux *) -(* énergies alternatives). *) -(* *) -(**************************************************************************) - -(* this is the prelude for Alt-Ergo, version >= 0.95.2 *) -(** The theory BuiltIn_ must be appended to this file*) -(** The theory Bool_ must be appended to this file*) -(** The theory real_Real_ must be appended to this file*) -logic exp : real -> real - -axiom Exp_zero : (exp(0.0) = 1.0) - -axiom Exp_sum : - (forall x:real. forall y:real. (exp((x + y)) = (exp(x) * exp(y)))) - -logic log : real -> real - -axiom Log_one : (log(1.0) = 0.0) - -axiom Log_mul : - (forall x:real. forall y:real. (((0.0 < x) and (0.0 < y)) -> - (log((x * y)) = (log(x) + log(y))))) - -axiom Log_exp : (forall x:real. (log(exp(x)) = x)) - -axiom Exp_log : (forall x:real. ((0.0 < x) -> (exp(log(x)) = x))) - -function log2(x: real) : real = (log(x) / log(2.0)) - -function log10(x: real) : real = (log(x) / log(10.0)) - diff --git a/src/plugins/wp/share/ergo/real.FromInt.mlw b/src/plugins/wp/share/ergo/real.FromInt.mlw deleted file mode 100644 index a1f51341456..00000000000 --- a/src/plugins/wp/share/ergo/real.FromInt.mlw +++ /dev/null @@ -1,45 +0,0 @@ -(**************************************************************************) -(* *) -(* The Why3 Verification Platform / The Why3 Development Team *) -(* Copyright 2010-2019 -- Inria - CNRS - Paris-Sud University *) -(* *) -(* This software is distributed under the terms of the GNU Lesser *) -(* General Public License version 2.1, with the special exception *) -(* on linking described in file LICENSE. *) -(* *) -(* File modified by CEA (Commissariat à l'énergie atomique et aux *) -(* énergies alternatives). *) -(* *) -(**************************************************************************) - -(* this is the prelude for Alt-Ergo, version >= 0.95.2 *) -(** The theory BuiltIn_ must be appended to this file*) -(** The theory Bool_ must be appended to this file*) -(** The theory int_Int_ must be appended to this file*) -(** The theory real_Real_ must be appended to this file*) -logic from_int : int -> real - -axiom Zero : (from_int(0) = 0.0) - -axiom One : (from_int(1) = 1.0) - -axiom Add : - (forall x:int. forall y:int. - (from_int((x + y)) = (from_int(x) + from_int(y)))) - -axiom Sub : - (forall x:int. forall y:int. - (from_int((x - y)) = (from_int(x) - from_int(y)))) - -axiom Mul : - (forall x:int. forall y:int. - (from_int((x * y)) = (from_int(x) * from_int(y)))) - -axiom Neg : (forall x:int. (from_int((-x)) = (-from_int(x)))) - -axiom Injective : - (forall x:int. forall y:int. ((from_int(x) = from_int(y)) -> (x = y))) - -axiom Monotonic : - (forall x:int. forall y:int. ((x <= y) -> (from_int(x) <= from_int(y)))) - diff --git a/src/plugins/wp/share/ergo/real.Hyperbolic.mlw b/src/plugins/wp/share/ergo/real.Hyperbolic.mlw deleted file mode 100644 index 14a08dae73f..00000000000 --- a/src/plugins/wp/share/ergo/real.Hyperbolic.mlw +++ /dev/null @@ -1,40 +0,0 @@ -(**************************************************************************) -(* *) -(* The Why3 Verification Platform / The Why3 Development Team *) -(* Copyright 2010-2019 -- Inria - CNRS - Paris-Sud University *) -(* *) -(* This software is distributed under the terms of the GNU Lesser *) -(* General Public License version 2.1, with the special exception *) -(* on linking described in file LICENSE. *) -(* *) -(* File modified by CEA (Commissariat à l'énergie atomique et aux *) -(* énergies alternatives). *) -(* *) -(**************************************************************************) - -(* this is the prelude for Alt-Ergo, version >= 0.95.2 *) -(** The theory BuiltIn_ must be appended to this file*) -(** The theory Bool_ must be appended to this file*) -(** The theory real_Real_ must be appended to this file*) -(** The theory real_Square_ must be appended to this file*) -(** The theory real_ExpLog_ must be appended to this file*) -function sinh(x: real) : real = (0.5 * (exp(x) - exp((-x)))) - -function cosh(x: real) : real = (0.5 * (exp(x) + exp((-x)))) - -function tanh(x: real) : real = (sinh(x) / cosh(x)) - -function asinh(x: real) : real = log((x + sqrt((sqr(x) + 1.0)))) - -logic acosh : real -> real - -axiom Acosh_def : - (forall x:real. ((1.0 <= x) -> - (acosh(x) = log((x + sqrt((sqr(x) - 1.0))))))) - -logic atanh : real -> real - -axiom Atanh_def : - (forall x:real. ((((- 1.0) < x) and (x < 1.0)) -> - (atanh(x) = (0.5 * log(((1.0 + x) / (1.0 - x))))))) - diff --git a/src/plugins/wp/share/ergo/real.MinMax.mlw b/src/plugins/wp/share/ergo/real.MinMax.mlw deleted file mode 100644 index d1438d67fd2..00000000000 --- a/src/plugins/wp/share/ergo/real.MinMax.mlw +++ /dev/null @@ -1,54 +0,0 @@ -(**************************************************************************) -(* *) -(* The Why3 Verification Platform / The Why3 Development Team *) -(* Copyright 2010-2019 -- Inria - CNRS - Paris-Sud University *) -(* *) -(* This software is distributed under the terms of the GNU Lesser *) -(* General Public License version 2.1, with the special exception *) -(* on linking described in file LICENSE. *) -(* *) -(* File modified by CEA (Commissariat à l'énergie atomique et aux *) -(* énergies alternatives). *) -(* *) -(**************************************************************************) - -(* this is the prelude for Alt-Ergo, version >= 0.95.2 *) -(** The theory BuiltIn_ must be appended to this file*) -(** The theory Bool_ must be appended to this file*) -(** The theory real_Real_ must be appended to this file*) -logic min_real : real, real -> real - -axiom min_def : - (forall x:real. forall y:real. ((x <= y) -> (min_real(x, y) = x))) - -axiom min_def1 : - (forall x:real. forall y:real. ((not (x <= y)) -> (min_real(x, y) = y))) - -logic max_real : real, real -> real - -axiom max_def : - (forall x:real. forall y:real. ((x <= y) -> (max_real(x, y) = y))) - -axiom max_def1 : - (forall x:real. forall y:real. ((not (x <= y)) -> (max_real(x, y) = x))) - -axiom Min_r : - (forall x:real. forall y:real. ((y <= x) -> (min_real(x, y) = y))) - -axiom Max_l : - (forall x:real. forall y:real. ((y <= x) -> (max_real(x, y) = x))) - -axiom Min_comm : - (forall x:real. forall y:real. (min_real(x, y) = min_real(y, x))) - -axiom Max_comm : - (forall x:real. forall y:real. (max_real(x, y) = max_real(y, x))) - -axiom Min_assoc : - (forall x:real. forall y:real. forall z:real. (min_real(min_real(x, y), - z) = min_real(x, min_real(y, z)))) - -axiom Max_assoc : - (forall x:real. forall y:real. forall z:real. (max_real(max_real(x, y), - z) = max_real(x, max_real(y, z)))) - diff --git a/src/plugins/wp/share/ergo/real.Polar.mlw b/src/plugins/wp/share/ergo/real.Polar.mlw deleted file mode 100644 index 4c953665ad7..00000000000 --- a/src/plugins/wp/share/ergo/real.Polar.mlw +++ /dev/null @@ -1,31 +0,0 @@ -(**************************************************************************) -(* *) -(* The Why3 Verification Platform / The Why3 Development Team *) -(* Copyright 2010-2019 -- Inria - CNRS - Paris-Sud University *) -(* *) -(* This software is distributed under the terms of the GNU Lesser *) -(* General Public License version 2.1, with the special exception *) -(* on linking described in file LICENSE. *) -(* *) -(* File modified by CEA (Commissariat à l'énergie atomique et aux *) -(* énergies alternatives). *) -(* *) -(**************************************************************************) - -(* this is the prelude for Alt-Ergo, version >= 0.95.2 *) -(** The theory BuiltIn_ must be appended to this file*) -(** The theory Bool_ must be appended to this file*) -(** The theory real_Real_ must be appended to this file*) -(** The theory real_Abs_ must be appended to this file*) -(** The theory real_Square_ must be appended to this file*) -(** The theory real_Trigonometry_ must be appended to this file*) -function hypot(x: real, y: real) : real = sqrt((sqr(x) + sqr(y))) - -logic atan2 : real, real -> real - -axiom X_from_polar : - (forall x:real. forall y:real. (x = (hypot(x, y) * cos(atan2(y, x))))) - -axiom Y_from_polar : - (forall x:real. forall y:real. (y = (hypot(x, y) * sin(atan2(y, x))))) - diff --git a/src/plugins/wp/share/ergo/real.PowerReal.mlw b/src/plugins/wp/share/ergo/real.PowerReal.mlw deleted file mode 100644 index 140f336820e..00000000000 --- a/src/plugins/wp/share/ergo/real.PowerReal.mlw +++ /dev/null @@ -1,50 +0,0 @@ -(**************************************************************************) -(* *) -(* The Why3 Verification Platform / The Why3 Development Team *) -(* Copyright 2010-2019 -- Inria - CNRS - Paris-Sud University *) -(* *) -(* This software is distributed under the terms of the GNU Lesser *) -(* General Public License version 2.1, with the special exception *) -(* on linking described in file LICENSE. *) -(* *) -(* File modified by CEA (Commissariat à l'énergie atomique et aux *) -(* énergies alternatives). *) -(* *) -(**************************************************************************) - -(* this is the prelude for Alt-Ergo, version >= 0.95.2 *) -(** The theory BuiltIn_ must be appended to this file*) -(** The theory Bool_ must be appended to this file*) -(** The theory int_Int_ must be appended to this file*) -(** The theory int_Exponentiation_ must be appended to this file*) -(** The theory int_Power_ must be appended to this file*) -(** The theory real_Real_ must be appended to this file*) -(** The theory real_FromInt_ must be appended to this file*) -(** The theory real_Square_ must be appended to this file*) -(** The theory real_ExpLog_ must be appended to this file*) -logic pow : real, real -> real - -axiom Pow_def : - (forall x:real. forall y:real. ((0.0 < x) -> (pow(x, - y) = exp((y * log(x)))))) - -axiom Pow_pos : - (forall x:real. forall y:real. ((0.0 < x) -> (0.0 < pow(x, y)))) - -axiom Pow_plus : - (forall x:real. forall y:real. forall z:real. ((0.0 < z) -> (pow(z, - (x + y)) = (pow(z, x) * pow(z, y))))) - -axiom Pow_mult : - (forall x:real. forall y:real. forall z:real. ((0.0 < x) -> (pow(pow(x, - y), z) = pow(x, (y * z))))) - -axiom Pow_x_zero : (forall x:real. ((0.0 < x) -> (pow(x, 0.0) = 1.0))) - -axiom Pow_x_one : (forall x:real. ((0.0 < x) -> (pow(x, 1.0) = x))) - -axiom Pow_one_y : (forall y:real. (pow(1.0, y) = 1.0)) - -axiom Pow_x_two : (forall x:real. ((0.0 < x) -> (pow(x, 2.0) = sqr(x)))) - -axiom Pow_half : (forall x:real. ((0.0 < x) -> (pow(x, 0.5) = sqrt(x)))) diff --git a/src/plugins/wp/share/ergo/real.Real.mlw b/src/plugins/wp/share/ergo/real.Real.mlw deleted file mode 100644 index db80917b1b0..00000000000 --- a/src/plugins/wp/share/ergo/real.Real.mlw +++ /dev/null @@ -1,42 +0,0 @@ -(**************************************************************************) -(* *) -(* The Why3 Verification Platform / The Why3 Development Team *) -(* Copyright 2010-2019 -- Inria - CNRS - Paris-Sud University *) -(* *) -(* This software is distributed under the terms of the GNU Lesser *) -(* General Public License version 2.1, with the special exception *) -(* on linking described in file LICENSE. *) -(* *) -(* File modified by CEA (Commissariat à l'énergie atomique et aux *) -(* énergies alternatives). *) -(* *) -(**************************************************************************) - -(* this is the prelude for Alt-Ergo, version >= 0.95.2 *) -(* this is a prelude for Alt-Ergo real arithmetic *) -(** The theory BuiltIn_ must be appended to this file*) -(** The theory Bool_ must be appended to this file*) -axiom add_div : - (forall x:real. forall y:real. forall z:real. ((not (z = 0.0)) -> - (((x + y) / z) = ((x / z) + (y / z))))) - -axiom sub_div : - (forall x:real. forall y:real. forall z:real. ((not (z = 0.0)) -> - (((x - y) / z) = ((x / z) - (y / z))))) - -axiom neg_div : - (forall x:real. forall y:real. ((not (y = 0.0)) -> - (((-x) / y) = (-(x / y))))) - -axiom assoc_mul_div : - (forall x:real. forall y:real. forall z:real. ((not (z = 0.0)) -> - (((x * y) / z) = (x * (y / z))))) - -axiom assoc_div_mul : - (forall x:real. forall y:real. forall z:real. (((not (y = 0.0)) and - (not (z = 0.0))) -> (((x / y) / z) = (x / (y * z))))) - -axiom assoc_div_div : - (forall x:real. forall y:real. forall z:real. (((not (y = 0.0)) and - (not (z = 0.0))) -> ((x / (y / z)) = ((x * z) / y)))) - diff --git a/src/plugins/wp/share/ergo/real.RealInfix.mlw b/src/plugins/wp/share/ergo/real.RealInfix.mlw deleted file mode 100644 index 5134839728a..00000000000 --- a/src/plugins/wp/share/ergo/real.RealInfix.mlw +++ /dev/null @@ -1,18 +0,0 @@ -(**************************************************************************) -(* *) -(* The Why3 Verification Platform / The Why3 Development Team *) -(* Copyright 2010-2019 -- Inria - CNRS - Paris-Sud University *) -(* *) -(* This software is distributed under the terms of the GNU Lesser *) -(* General Public License version 2.1, with the special exception *) -(* on linking described in file LICENSE. *) -(* *) -(* File modified by CEA (Commissariat à l'énergie atomique et aux *) -(* énergies alternatives). *) -(* *) -(**************************************************************************) - -(* this is the prelude for Alt-Ergo, version >= 0.95.2 *) -(** The theory BuiltIn_ must be appended to this file*) -(** The theory Bool_ must be appended to this file*) -(** The theory real_Real_ must be appended to this file*) diff --git a/src/plugins/wp/share/ergo/real.Square.mlw b/src/plugins/wp/share/ergo/real.Square.mlw deleted file mode 100644 index 4eaec010938..00000000000 --- a/src/plugins/wp/share/ergo/real.Square.mlw +++ /dev/null @@ -1,36 +0,0 @@ -(**************************************************************************) -(* *) -(* The Why3 Verification Platform / The Why3 Development Team *) -(* Copyright 2010-2019 -- Inria - CNRS - Paris-Sud University *) -(* *) -(* This software is distributed under the terms of the GNU Lesser *) -(* General Public License version 2.1, with the special exception *) -(* on linking described in file LICENSE. *) -(* *) -(* File modified by CEA (Commissariat à l'énergie atomique et aux *) -(* énergies alternatives). *) -(* *) -(**************************************************************************) - -(* this is the prelude for Alt-Ergo, version >= 0.95.2 *) -(** The theory BuiltIn_ must be appended to this file*) -(** The theory Bool_ must be appended to this file*) -(** The theory real_Real_ must be appended to this file*) -function sqr(x: real) : real = (x * x) - -logic sqrt : real -> real - -axiom Sqrt_positive : (forall x:real. ((0.0 <= x) -> (0.0 <= sqrt(x)))) - -axiom Sqrt_square : (forall x:real. ((0.0 <= x) -> (sqr(sqrt(x)) = x))) - -axiom Square_sqrt : (forall x:real. ((0.0 <= x) -> (sqrt((x * x)) = x))) - -axiom Sqrt_mul : - (forall x:real. forall y:real. (((0.0 <= x) and (0.0 <= y)) -> - (sqrt((x * y)) = (sqrt(x) * sqrt(y))))) - -axiom Sqrt_le : - (forall x:real. forall y:real. (((0.0 <= x) and (x <= y)) -> - (sqrt(x) <= sqrt(y)))) - diff --git a/src/plugins/wp/share/ergo/real.Trigonometry.mlw b/src/plugins/wp/share/ergo/real.Trigonometry.mlw deleted file mode 100644 index 93f357ea6d8..00000000000 --- a/src/plugins/wp/share/ergo/real.Trigonometry.mlw +++ /dev/null @@ -1,75 +0,0 @@ -(**************************************************************************) -(* *) -(* The Why3 Verification Platform / The Why3 Development Team *) -(* Copyright 2010-2019 -- Inria - CNRS - Paris-Sud University *) -(* *) -(* This software is distributed under the terms of the GNU Lesser *) -(* General Public License version 2.1, with the special exception *) -(* on linking described in file LICENSE. *) -(* *) -(* File modified by CEA (Commissariat à l'énergie atomique et aux *) -(* énergies alternatives). *) -(* *) -(**************************************************************************) - -(* this is the prelude for Alt-Ergo, version >= 0.95.2 *) -(** The theory BuiltIn_ must be appended to this file*) -(** The theory Bool_ must be appended to this file*) -(** The theory real_Real_ must be appended to this file*) -(** The theory real_Abs_ must be appended to this file*) -(** The theory real_Square_ must be appended to this file*) -logic cos : real -> real - -logic sin : real -> real - -axiom Pythagorean_identity : - (forall x:real. ((sqr(cos(x)) + sqr(sin(x))) = 1.0)) - -axiom Cos_le_one : (forall x:real. (abs_real(cos(x)) <= 1.0)) - -axiom Sin_le_one : (forall x:real. (abs_real(sin(x)) <= 1.0)) - -axiom Cos_0 : (cos(0.0) = 1.0) - -axiom Sin_0 : (sin(0.0) = 0.0) - -logic pi : real - -axiom Pi_double_precision_bounds : (0x1.921fb54442d18p1 < pi) - -axiom Pi_double_precision_bounds1 : (pi < 0x1.921fb54442d19p1) - -axiom Cos_pi : (cos(pi) = (- 1.0)) - -axiom Sin_pi : (sin(pi) = 0.0) - -axiom Cos_pi2 : (cos((0.5 * pi)) = 0.0) - -axiom Sin_pi2 : (sin((0.5 * pi)) = 1.0) - -axiom Cos_plus_pi : (forall x:real. (cos((x + pi)) = (-cos(x)))) - -axiom Sin_plus_pi : (forall x:real. (sin((x + pi)) = (-sin(x)))) - -axiom Cos_plus_pi2 : (forall x:real. (cos((x + (0.5 * pi))) = (-sin(x)))) - -axiom Sin_plus_pi2 : (forall x:real. (sin((x + (0.5 * pi))) = cos(x))) - -axiom Cos_neg : (forall x:real. (cos((-x)) = cos(x))) - -axiom Sin_neg : (forall x:real. (sin((-x)) = (-sin(x)))) - -axiom Cos_sum : - (forall x:real. forall y:real. - (cos((x + y)) = ((cos(x) * cos(y)) - (sin(x) * sin(y))))) - -axiom Sin_sum : - (forall x:real. forall y:real. - (sin((x + y)) = ((sin(x) * cos(y)) + (cos(x) * sin(y))))) - -function tan(x: real) : real = (sin(x) / cos(x)) - -logic atan : real -> real - -axiom Tan_atan : (forall x:real. (tan(atan(x)) = x)) - diff --git a/src/plugins/wp/share/ergo/real.Truncate.mlw b/src/plugins/wp/share/ergo/real.Truncate.mlw deleted file mode 100644 index f86ba0df6fb..00000000000 --- a/src/plugins/wp/share/ergo/real.Truncate.mlw +++ /dev/null @@ -1,73 +0,0 @@ -(**************************************************************************) -(* *) -(* The Why3 Verification Platform / The Why3 Development Team *) -(* Copyright 2010-2019 -- Inria - CNRS - Paris-Sud University *) -(* *) -(* This software is distributed under the terms of the GNU Lesser *) -(* General Public License version 2.1, with the special exception *) -(* on linking described in file LICENSE. *) -(* *) -(* File modified by CEA (Commissariat à l'énergie atomique et aux *) -(* énergies alternatives). *) -(* *) -(**************************************************************************) - -(* this is the prelude for Alt-Ergo, version >= 0.95.2 *) -(** The theory BuiltIn_ must be appended to this file*) -(** The theory Bool_ must be appended to this file*) -(** The theory int_Int_ must be appended to this file*) -(** The theory real_Real_ must be appended to this file*) -(** The theory real_FromInt_ must be appended to this file*) -logic truncate : real -> int - -axiom Truncate_int : (forall i:int. (truncate(from_int(i)) = i)) - -axiom Truncate_down_pos : - (forall x:real. ((0.0 <= x) -> (from_int(truncate(x)) <= x))) - -axiom Truncate_down_pos1 : - (forall x:real. ((0.0 <= x) -> (x < from_int((truncate(x) + 1))))) - -axiom Truncate_up_neg : - (forall x:real. ((x <= 0.0) -> (from_int((truncate(x) - 1)) < x))) - -axiom Truncate_up_neg1 : - (forall x:real. ((x <= 0.0) -> (x <= from_int(truncate(x))))) - -axiom Real_of_truncate : - (forall x:real. ((x - 1.0) <= from_int(truncate(x)))) - -axiom Real_of_truncate1 : - (forall x:real. (from_int(truncate(x)) <= (x + 1.0))) - -axiom Truncate_monotonic : - (forall x:real. forall y:real. ((x <= y) -> (truncate(x) <= truncate(y)))) - -axiom Truncate_monotonic_int1 : - (forall x:real. forall i:int. ((x <= from_int(i)) -> (truncate(x) <= i))) - -axiom Truncate_monotonic_int2 : - (forall x:real. forall i:int. ((from_int(i) <= x) -> (i <= truncate(x)))) - -logic floor : real -> int - -logic ceil : real -> int - -axiom Floor_int : (forall i:int. (floor(from_int(i)) = i)) - -axiom Ceil_int : (forall i:int. (ceil(from_int(i)) = i)) - -axiom Floor_down : (forall x:real. (from_int(floor(x)) <= x)) - -axiom Floor_down1 : (forall x:real. (x < from_int((floor(x) + 1)))) - -axiom Ceil_up : (forall x:real. (from_int((ceil(x) - 1)) < x)) - -axiom Ceil_up1 : (forall x:real. (x <= from_int(ceil(x)))) - -axiom Floor_monotonic : - (forall x:real. forall y:real. ((x <= y) -> (floor(x) <= floor(y)))) - -axiom Ceil_monotonic : - (forall x:real. forall y:real. ((x <= y) -> (ceil(x) <= ceil(y)))) - -- GitLab