diff --git a/src/plugins/wp/ProverWhy3.ml b/src/plugins/wp/ProverWhy3.ml
index 8cd2d6366bb5baa79e2c7c6919e4fb2dc60d3ad9..de29014d0865e23b357e3572cea4879c96b58ce0 100644
--- a/src/plugins/wp/ProverWhy3.ml
+++ b/src/plugins/wp/ProverWhy3.ml
@@ -1184,21 +1184,6 @@ let prover_task env prover task =
   let prover_config = Why3.Whyconf.get_prover_config config prover in
   let drv = Why3.Driver.load_driver_for_prover (Why3.Whyconf.get_main config)
       env prover_config in
-  let remove_for_prover =
-    if prover.prover_name = "Alt-Ergo"
-    then Filter_axioms.remove_for_altergo
-    else Filter_axioms.remove_for_why3
-  in
-  let trans = Why3.Trans.seq [
-      remove_for_prover;
-      Filter_axioms.trans;
-      Filter_axioms.def_into_axiom
-    ] in
-  let task =
-    if prover.prover_name = "Coq"
-    then task
-    else Why3.Trans.apply trans task
-  in
   drv , prover_config , Why3.Driver.prepare_task drv task
 
 (* -------------------------------------------------------------------------- *)
diff --git a/src/plugins/wp/filter_axioms.ml b/src/plugins/wp/filter_axioms.ml
deleted file mode 100644
index e63c6508b923a8617ca6637b9542e1f350eb714c..0000000000000000000000000000000000000000
--- a/src/plugins/wp/filter_axioms.ml
+++ /dev/null
@@ -1,176 +0,0 @@
-(**************************************************************************)
-(*                                                                        *)
-(*  This file is part of WP plug-in of Frama-C.                           *)
-(*                                                                        *)
-(*  Copyright (C) 2007-2024                                               *)
-(*    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).            *)
-(*                                                                        *)
-(**************************************************************************)
-
-open Why3
-open Term
-open Decl
-
-let meta_remove_altergo =
-  Theory.register_meta "remove_for_altergo"
-    [Theory.MTprsymbol]
-    ~desc:"Don't@ translate@ this@ lemma@ for@ altergo."
-
-let meta_remove_why3 =
-  Theory.register_meta "remove_for_why3"
-    [Theory.MTprsymbol]
-    ~desc:"Don't@ translate@ this@ lemma@ for@ why3."
-
-let meta_remove_ =
-  Theory.register_meta "remove_for_"
-    [Theory.MTprsymbol]
-    ~desc:"Don't@ translate@ this@ lemma@ for@ why3 and altergo."
-
-
-let elim_abstract remove_pr d = match d.d_node with
-  | Dprop (Paxiom,pr,_) when Spr.mem pr remove_pr -> []
-  | Dprop (Paxiom,_,_) -> [d]
-  | _ -> [d]
-
-let remove_prop meta =
-  Trans.on_tagged_pr meta
-    (fun remove_pr ->
-       Trans.on_tagged_pr meta_remove_
-         (fun remove_pr2 ->
-            Trans.decl (elim_abstract (Spr.union remove_pr remove_pr2)) None))
-
-let remove_for_altergo = remove_prop meta_remove_altergo
-let remove_for_why3 = remove_prop meta_remove_why3
-
-
-let () =
-  Trans.register_transform "remove_for_altergo"
-    remove_for_altergo
-    ~desc:"Remove@ tagged@ proposition@ with \"remove_for_altergo\"@ and \
-           \"remove_for_\"@ metas."
-
-let () =
-  Trans.register_transform "remove_for_why3"
-    remove_for_why3
-    ~desc:"Remove@ tagged@ proposition@ with \"remove_for_why3\"@ and \
-           \"remove_for_\" metas."
-
-
-(** inlining *)
-
-let meta_inline_in =
-  Theory.register_meta "inline_in"
-    [Theory.MTlsymbol;Theory.MTprsymbol;]
-    ~desc:"Inline@ the@ symbol@ in@ the@ proposition."
-
-let t_unfold defs fs tl ty =
-  match Mls.find_opt fs defs with
-  | None ->
-    assert false (* absurd: it is in mpr so it is in sls so added in defs *)
-  | Some (vl,e) ->
-    let add (mt,mv) x y = Ty.ty_match mt x.vs_ty (t_type y), Mvs.add x y mv in
-    let (mt,mv) = List.fold_left2 add (Ty.Mtv.empty, Mvs.empty) vl tl in
-    let mt = Ty.oty_match mt e.t_ty ty in
-    t_ty_subst mt mv e
-
-(* inline every symbol *)
-
-let rec t_replace_all defs s t =
-  let t = t_map (t_replace_all defs s) t in
-  match t.t_node with
-  | Tapp (fs,tl) when Sls.mem fs s ->
-    t_attr_copy t (t_unfold defs fs tl t.t_ty)
-  | _ -> t
-
-let fold mpr sls d (defs, task) =
-  (* replace *)
-  let d = match d.d_node with
-    | Dprop (k,pr,f) ->
-      let s = Mpr.find_def Sls.empty pr mpr in
-      if Sls.is_empty s then d
-      else create_prop_decl k pr (t_replace_all defs s f)
-    | _ -> d
-  in
-  (* add to defs if needed *)
-  match d.d_node with
-  | Dlogic [ls,ld] when Sls.mem ls sls ->
-    let vl,e = open_ls_defn ld in
-    Mls.add ls (vl,e) defs, Task.add_decl task d
-  | _ ->
-    defs, Task.add_decl task d
-
-let fold mpr sls task_hd (defs, task) =
-  match task_hd.Task.task_decl.Theory.td_node with
-  | Theory.Decl d ->
-    fold mpr sls d (defs, task)
-  | _ ->
-    defs, Task.add_tdecl task task_hd.Task.task_decl
-
-let trans =
-  let add (mpr,sls) = function
-    | [Theory.MAls ls; Theory.MApr pr] ->
-      Mpr.change (function None -> Some (Sls.singleton ls)
-                         | Some s -> Some (Sls.add ls s)) pr mpr,
-      Sls.add ls sls
-    | _ -> assert false
-  in
-  Trans.on_meta meta_inline_in (fun l ->
-      let mpr, sls = List.fold_left add (Mpr.empty,Sls.empty) l in
-      Trans.fold_map (fold mpr sls) Mls.empty None)
-
-
-let () =
-  Trans.register_transform "inline_in"
-    trans
-    ~desc:"Inline@ the@ symbol@ in@ the@ proposition(meta@ of@ the@ same@ name)"
-
-(*** eliminate function *)
-let meta_def_into_axiom =
-  Theory.register_meta "def_into_axiom"
-    [Theory.MTlsymbol]
-    ~desc:"Turn the marked function into an axiom"
-
-let add_ld which (ls,ld) (abst,defn,axl) =
-  if which ls then
-    let vl,e = open_ls_defn ld in
-    let nm = ls.ls_name.Ident.id_string ^ "_def" in
-    let pr = create_prsymbol (Ident.id_derive nm ls.ls_name) in
-    let hd = t_app ls (List.map t_var vl) e.t_ty in
-    let e = TermTF.t_selecti Term.t_equ_simp Term.t_iff_simp hd e in
-    let ax = t_forall_close vl [[hd]] e in
-    let ax = create_prop_decl Paxiom pr ax in
-    let ld = create_param_decl ls in
-    ld :: abst, defn, ax :: axl
-  else
-    abst, (ls,ld) :: defn, axl
-
-let elim_decl which l =
-  let abst,defn,axl = List.fold_right (add_ld which) l ([],[],[]) in
-  let defn = if defn = [] then [] else [create_logic_decl defn] in
-  abst @ defn @ axl
-
-let elim which d = match d.d_node with
-  | Dlogic l -> elim_decl which l
-  | _ -> [d]
-
-let def_into_axiom =
-  Trans.on_tagged_ls meta_def_into_axiom (fun sls ->
-      Trans.decl (elim (fun ls -> Term.Sls.mem ls sls)) None)
-
-let () =
-  Trans.register_transform "def_into_axiom"
-    def_into_axiom
-    ~desc:"Turn the marked function into an axiom"
diff --git a/src/plugins/wp/filter_axioms.mli b/src/plugins/wp/filter_axioms.mli
deleted file mode 100644
index e5f86a99e8a46871c1258b028cdc1a4657eab07d..0000000000000000000000000000000000000000
--- a/src/plugins/wp/filter_axioms.mli
+++ /dev/null
@@ -1,26 +0,0 @@
-(**************************************************************************)
-(*                                                                        *)
-(*  This file is part of WP plug-in of Frama-C.                           *)
-(*                                                                        *)
-(*  Copyright (C) 2007-2024                                               *)
-(*    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).            *)
-(*                                                                        *)
-(**************************************************************************)
-
-val remove_for_altergo : Why3.Task.task Why3.Trans.trans
-val remove_for_why3    : Why3.Task.task Why3.Trans.trans
-val trans              : Why3.Task.task Why3.Trans.trans
-val def_into_axiom     : Why3.Task.task Why3.Trans.trans
diff --git a/src/plugins/wp/share/why3/frama_c_wp/cbits.mlw b/src/plugins/wp/share/why3/frama_c_wp/cbits.mlw
index 41202b023aaa69c832dcfbe41d8bcf187078bd2f..5b404b69afad998baa87517e0893b76ee92b97af 100644
--- a/src/plugins/wp/share/why3/frama_c_wp/cbits.mlw
+++ b/src/plugins/wp/share/why3/frama_c_wp/cbits.mlw
@@ -61,9 +61,6 @@ theory Cbits
   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 land_bool:
-        (land 0 0) = 0 /\  (land 0 1) = 0 /\ (land 1 0) = 0 /\ (land 1 1) = 1
-  meta "remove_for_" axiom land_bool
 
 (** ** lor identities *)
   axiom lor_idemp: forall x:int [lor x x]. (lor x x) = x
@@ -72,9 +69,6 @@ theory Cbits
   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 lor_bool:
-        (lor 0 0) = 0 /\  (lor 0 1) = 1 /\ (lor 1 0) = 1 /\ (lor 1 1) = 1
-  meta "remove_for_" axiom lor_bool
 
 (** ** lxor identities *)
   axiom lxor_nilpotent: forall x:int [lxor x x]. (lxor x x) = 0
@@ -83,9 +77,6 @@ theory Cbits
   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 lxor_bool:
-        (lxor 0 0) = 0 /\  (lxor 0 1) = 1 /\ (lxor 1 0) = 1 /\ (lxor 1 1) = 0
-  meta "remove_for_" axiom lxor_bool
 
 (** ** lsl identities *)
 
@@ -115,9 +106,6 @@ theory Cbits
 
   axiom bit_test_extraction: forall x k:int [land x (lsl 1 k)|land (lsl 1 k) x].
     0<=k -> (land x (lsl 1 k))<>0 <-> (bit_test x k)
-  lemma bit_test_extraction_eq: forall x k:int [land x (lsl 1 k)|land (lsl 1 k) x].
-    0<=k -> (land x (lsl 1 k))=(lsl 1 k) <-> (bit_test x k)
-  meta "remove_for_" lemma bit_test_extraction_eq
 
   axiom lsl_1_0:
     lsl 1 0 = 1
@@ -126,276 +114,97 @@ theory Cbits
   axiom bit_test_extraction_bis_eq: forall x :int [land x 1|land 1 x].
     (bit_test x 0) -> (land 1 x)=1
 
-  lemma lnot_extraction_bool: forall x i:int [bit_testb (lnot x) i].
-    0<=i -> bit_testb (lnot x) i = notb (bit_testb x i)
   axiom lnot_extraction:      forall x i:int [bit_test  (lnot x) i].
     0<=i -> (bit_test (lnot x) i) <-> not (bit_test x i)
-  meta "remove_for_" lemma lnot_extraction_bool
 
-  lemma land_extraction_bool: forall x y i:int [bit_testb (land x y) i].
-    0<=i -> bit_testb (land x y) i = andb (bit_testb x i) (bit_testb y i)
   axiom land_extraction:      forall x y i:int [bit_test  (land x y) i].
     0<=i -> bit_test (land x y) i <-> ((bit_test x i) /\ (bit_test y i))
-  meta "remove_for_" lemma land_extraction_bool
 
-  lemma lor_extraction_bool: forall x y i:int [bit_testb (lor x y) i].
-    0<=i -> bit_testb (lor x y) i = orb (bit_testb x i) (bit_testb y i)
   axiom lor_extraction:      forall x y i:int [bit_test  (lor x y) i].
     0<=i -> (bit_test (lor x y) i) <-> ((bit_test x i) \/ (bit_test y i))
-  meta "remove_for_" lemma lor_extraction_bool
 
-  lemma lxor_extraction_bool: forall x y i:int [bit_testb (lxor x y) i].
-    0<=i -> bit_testb (lxor x y) i = xorb (bit_testb x i) (bit_testb y i)
   axiom lxor_extraction: forall x y 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))
-  meta "remove_for_" lemma lxor_extraction_bool
 
 (** ** Shift operators *)
-  lemma lsl_1_two_power :  forall n : int. 0 <= n -> lsl 1 n = Cint.two_power_abs n
-  meta "remove_for_" lemma lsl_1_two_power
 
   axiom land_1_lsl_1 : forall a x 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)
 
-  lemma lsl_extraction_sup_bool: forall x n m:int [bit_testb (lsl x n) m].
-    0<=n -> 0<=m -> m>=n -> bit_testb (lsl x n) m = bit_testb x (m-n)
   axiom lsl_extraction_sup:      forall x n m:int [bit_test  (lsl x n) m].
     0<=n -> 0<=m -> m>=n -> (bit_test (lsl x n) m) <-> (bit_test x (m-n))
-  meta "remove_for_" lemma lsl_extraction_sup_bool
 
-  lemma lsl_extraction_inf_bool: forall x n m:int [bit_testb (lsl x n) m].
-    0<=n -> 0<=m -> m< n -> bit_testb (lsl x n) m = False
   axiom lsl_extraction_inf:      forall x n m:int [bit_test  (lsl x n) m].
     0<=n -> 0<=m -> m< n -> not (bit_test (lsl x n) m)
-  meta "remove_for_" lemma lsl_extraction_inf_bool
 
-  lemma lsr_extraction_bool:     forall x n m:int [bit_testb (lsr x n) m].
-    0<=n -> 0<=m         -> bit_testb (lsr x n) m = bit_testb x (m+n)
   axiom lsr_extractionl:         forall x n m:int [bit_test  (lsr x n) m].
     0<=n -> 0<=m         -> (bit_test (lsr x n) m) <-> (bit_test x (m+n))
-  meta "remove_for_" lemma lsr_extraction_bool
 
-  lemma lsl1_extraction_bool: forall i j:int [bit_testb (lsl 1 i) j].
-    0<=i -> 0<=j         -> bit_testb (lsl 1 i) j = eqb i j
   axiom lsl1_extraction: forall i j:int [bit_test (lsl 1 i) j].
     0<=i -> 0<=j         -> (bit_test (lsl 1 i) j) <-> i=j
-  meta "remove_for_" lemma lsl1_extraction_bool
-
-  lemma pos_extraction_sup:  forall x i j:int [(lsl 1 i),(bit_test x j)].
-    0<=x -> 0<=i -> x < (lsl 1 i) -> i <= j -> not (bit_test x j)
-  meta "remove_for_" lemma pos_extraction_sup
-
-  lemma pos_extraction_sup_inv:  forall x i :int .
-    0<=i -> (forall j: int . i <= j -> not (bit_test x j)) -> 0<= x < (lsl 1 i)
-  meta "remove_for_" lemma pos_extraction_sup_inv
 
 (** * Link between Bit extraction and C type conversions *)
-(** ** Unsigned conversions *)
-
-  lemma to_uint_extraction_sup:      forall n x i:int .
-    0<=n<=i -> is_uint n x -> not (bit_test x i)
-  lemma to_uint_extraction_inf_bool: forall n x i:int .
-    0<=i<n -> (bit_testb (to_uint n x) i) =  (bit_testb x i)
-  lemma to_uint_extraction_inf:      forall n x i:int .
-    0<=i<n -> (bit_test (to_uint n x) i) <-> (bit_test x i)
-  lemma is_uint_ext : forall n x y:int .
-     0<=n -> is_uint n x -> is_uint n y
-    -> (forall i: int. 0<=i<n -> (bit_test x i <-> bit_test y i))
-    -> x = y
-  meta "remove_for_" lemma to_uint_extraction_sup
-  meta "remove_for_" lemma to_uint_extraction_inf_bool
-  meta "remove_for_" lemma to_uint_extraction_inf
-  meta "remove_for_" lemma is_uint_ext
 
 (** *** Cast to uint8 C type *)
   axiom to_uint8_extraction_sup:      forall x i:int [(is_uint8 x),(bit_test  x i)].
     8<=i -> is_uint8 x -> not (bit_test x i)
 
-  lemma to_uint8_extraction_inf_bool: forall x i:int [bit_testb (to_uint8 x) i].
-    0<=i<8 -> (bit_testb (to_uint8 x) i) =  (bit_testb x i)
   axiom to_uint8_extraction_inf:      forall x i:int [bit_test  (to_uint8 x) i].
     0<=i<8 -> (bit_test (to_uint8 x) i) <-> (bit_test x i)
-  meta "remove_for_" lemma to_uint8_extraction_inf_bool
-
-  lemma is_uint8_ext : forall x y:int .
-    is_uint8 x -> is_uint8 y
-    -> (forall i: int. 0<=i<8 -> (bit_test x i <-> bit_test y i))
-    -> x = y
-  meta "remove_for_" lemma is_uint8_ext
 
 (** *** Cast to uint16 C type *)
   axiom to_uint16_extraction_sup:      forall x i:int [(is_uint16 x),(bit_test  x i)].
     16<=i -> is_uint16 x -> not (bit_test x i)
 
-  lemma to_uint16_extraction_inf_bool: forall x i:int [bit_testb (to_uint16 x) i].
-    0<=i<16 -> (bit_testb (to_uint16 x) i) =  (bit_testb x i)
   axiom to_uint16_extraction_inf:      forall x i:int [bit_test  (to_uint16 x) i].
     0<=i<16 -> (bit_test (to_uint16 x) i) <-> (bit_test x i)
-  meta "remove_for_" lemma to_uint16_extraction_inf_bool
-
-  lemma is_uint16_ext : forall x y:int .
-    is_uint16 x -> is_uint16 y
-    -> (forall i: int. 0<=i<16 -> (bit_test x i <-> bit_test y i))
-    -> x = y
-  meta "remove_for_" lemma is_uint16_ext
 
 (** *** Cast to uint32 C type *)
   axiom to_uint32_extraction_sup:      forall x i:int [(is_uint32 x),(bit_test  x i)].
     32<=i -> is_uint32 x -> not (bit_test x i)
 
-  lemma to_uint32_extraction_inf_bool: forall x i:int [bit_testb (to_uint32 x) i].
-    0<=i<32 -> (bit_testb (to_uint32 x) i) =  (bit_testb x i)
   axiom to_uint32_extraction_inf:      forall x i:int [bit_test  (to_uint32 x) i].
     0<=i<32 -> (bit_test (to_uint32 x) i) <-> (bit_test x i)
-  meta "remove_for_" lemma to_uint32_extraction_inf_bool
-
-  lemma is_uint32_ext : forall x y:int .
-    is_uint32 x -> is_uint32 y
-    -> (forall i: int. 0<=i<32 -> (bit_test x i <-> bit_test y i))
-    -> x = y
-  meta "remove_for_" lemma is_uint32_ext
 
 (** *** Cast to uint64 C type *)
   axiom to_uint64_extraction_sup:      forall x i:int [(is_uint64 x),(bit_test  x i)].
     64<=i -> (is_uint64 x) -> not (bit_test x i)
 
-  lemma to_uint64_extraction_inf_bool: forall x i:int [bit_testb (to_uint64 x) i].
-    0<=i<64 -> (bit_testb (to_uint64 x) i) =  (bit_testb x i)
   axiom to_uint64_extraction_inf:      forall x i:int [bit_test  (to_uint64 x) i].
     0<=i<64 -> (bit_test (to_uint64 x) i) <-> (bit_test x i)
-  meta "remove_for_" lemma to_uint64_extraction_inf_bool
-
-  lemma is_uint64_ext : forall x y:int .
-    is_uint64 x -> is_uint64 y
-    -> (forall i: int. 0<=i<64 -> (bit_test x i <-> bit_test y i))
-    -> x = y
-  meta "remove_for_" lemma is_uint64_ext
-
-(** ** Signed conversions *)
-  lemma to_sint_extraction_sup:      forall n x i:int .
-    0<=n<=i -> is_sint n x -> (bit_test x i) <-> x < 0
-  lemma to_sint_extraction_inf_bool: forall n x i:int .
-    0<=i<n -> (bit_testb (to_sint n x) i) =  (bit_testb x i)
-  lemma to_sint_extraction_inf:      forall n x i:int .
-    0<=i<n -> (bit_test (to_sint n x) i) <-> (bit_test x i)
-  lemma is_sint_ext : forall n x y:int .
-     0<=n -> is_sint n x -> is_sint n y
-    -> (forall i: int. 0<=i<=n -> (bit_test x i <-> bit_test y i))
-    -> x = y
-  meta "remove_for_" lemma to_sint_extraction_sup
-  meta "remove_for_" lemma to_sint_extraction_inf_bool
-  meta "remove_for_" lemma to_sint_extraction_inf
-  meta "remove_for_" lemma is_sint_ext
 
 (** *** Cast to sint8 C type *)
   axiom to_sint8_extraction_sup:      forall x i:int [(is_sint8 x),(bit_test  x i)].
     7<=i -> is_sint8 x -> (bit_test x i) <-> x < 0
 
-  lemma to_sint8_extraction_inf_bool: forall x i:int [(bit_testb (to_sint8 x) i)].
-    0<=i<7 -> (bit_testb (to_sint8 x) i) =  (bit_testb x i)
   axiom to_sint8_extraction_inf:      forall x i:int [(bit_test  (to_sint8 x) i)].
     0<=i<7 -> (bit_test (to_sint8 x) i) <-> (bit_test x i)
-  meta "remove_for_" lemma to_sint8_extraction_inf_bool
-
-  lemma is_sint8_ext : forall x y:int .
-    is_sint8 x -> is_sint8 y
-    -> (forall i: int. 0<=i<=7 -> (bit_test x i <-> bit_test y i))
-    -> x = y
-  meta "remove_for_" lemma is_sint8_ext
 
 (** *** Cast to sint16 C type *)
   axiom to_sint16_extraction_sup:      forall x i:int [(is_sint16 x),(bit_test  x i)].
     15<=i -> is_sint16 x -> (bit_test x i) <-> x < 0
 
-  lemma to_sint16_extraction_inf_bool: forall x i:int [bit_testb (to_sint16 x) i].
-    0<=i<15 -> (bit_testb (to_sint16 x) i) =  (bit_testb x i)
   axiom to_sint16_extraction_inf:      forall x i:int [bit_test  (to_sint16 x) i].
     0<=i<15 -> (bit_test (to_sint16 x) i) <-> (bit_test x i)
-  meta "remove_for_" lemma to_sint16_extraction_inf_bool
-
-  lemma is_sint16_ext : forall x y:int .
-    is_sint16 x -> is_sint16 y
-    -> (forall i: int. 0<=i<=15 -> (bit_test x i <-> bit_test y i))
-    -> x = y
-  meta "remove_for_" lemma is_sint16_ext
 
 (** *** Cast to sint32 C type *)
   axiom to_sint32_extraction_sup: forall x i:int [(is_sint32 x),(bit_test x i)].
     31<=i -> is_sint32 x -> (bit_test x i) <-> x < 0
 
-  lemma to_sint32_extraction_inf_bool: forall x i:int [bit_testb (to_sint32 x) i].
-    0<=i<31 -> (bit_testb (to_sint32 x) i) =  (bit_testb x i)
   axiom to_sint32_extraction_inf:      forall x i:int [bit_test  (to_sint32 x) i].
     0<=i<31 -> (bit_test (to_sint32 x) i) <-> (bit_test x i)
-  meta "remove_for_" lemma to_sint32_extraction_inf_bool
-
-  lemma is_sint32_ext : forall x y:int .
-    is_sint32 x -> is_sint32 y
-    -> (forall i: int. 0<=i<=31 -> (bit_test x i <-> bit_test y i))
-    -> x = y
-  meta "remove_for_" lemma is_sint32_ext
 
 (** *** Cast to sint64 C type *)
   axiom to_sint64_extraction_sup:      forall x i:int [(is_sint64 x),(bit_test  x i)].
     63<=i -> is_sint64 x -> (bit_test x i) <-> x < 0
 
-  lemma to_sint64_extraction_inf_bool: forall x i:int [bit_testb (to_sint64 x) i].
-    0<=i<63 -> (bit_testb (to_sint64 x) i) =  (bit_testb x i)
   axiom to_sint64_extraction_inf:      forall x i:int [bit_test  (to_sint64 x) i].
     0<=i<63 -> (bit_test (to_sint64 x) i) <-> (bit_test x i)
-  meta "remove_for_" lemma to_sint64_extraction_inf_bool
-
-  lemma is_sint64_ext : forall x y:int .
-    is_sint64 x -> is_sint64 y
-    -> (forall i: int. 0<=i<=63 -> (bit_test x i <-> bit_test y i))
-    -> x = y
-  meta "remove_for_" lemma is_sint64_ext
-
-(** * Some C-Integer Bits Conversions are distributive *)
-(** ** Unsigned conversions *)
-  lemma to_uint_lor : forall n x y:int.
-    to_uint n (lor x y) = lor (to_uint n x) (to_uint n y)
-  meta "remove_for_" lemma to_uint_lor
-
-(** *** Cast to uint8 C type *)
-  lemma to_uint8_lor : forall x y:int [to_uint8 (lor x y)].
-    to_uint8 (lor x y) = lor (to_uint8 x) (to_uint 8 y)
-  meta "remove_for_" lemma to_uint8_lor
-
-(** ***  Cast to uint16 C type *)
-  lemma to_uint16_lor : forall x y:int [to_uint16 (lor x y)].
-    to_uint16 (lor x y) = lor (to_uint16 x) (to_uint16 y)
-  meta "remove_for_" lemma to_uint16_lor
-
-(** ***  Cast to uint32 C type *)
-  axiom to_uint32_lor : forall x y:int [to_uint32 (lor x y)].
-    to_uint32 (lor x y) = lor (to_uint32 x) (to_uint32 y)
-  meta "remove_for_" axiom to_uint32_lor
-
-(** ***  Cast to uint64 C type *)
-  lemma to_uint64_lor : forall x y:int [to_uint64 (lor x y)].
-    to_uint64 (lor x y) = lor (to_uint64 x) (to_uint64 y)
-  meta "remove_for_" lemma to_uint64_lor
 
 (** * Some C-Integer Bits Conversions are identity *)
 (** ** Unsigned conversions *)
   lemma is_uint_lxor : forall n x y:int.
     is_uint n x -> is_uint n y -> to_uint n (lxor x y) = lxor x y
-  lemma is_uint_lor : forall n x y:int.
-    is_uint n x -> is_uint n y -> to_uint n (lor x y) = lor x y
-  lemma is_uint_land : forall n x y:int.
-    is_uint n x -> is_uint n y -> to_uint n (land x y) = land x y
-  lemma is_uint_lsr : forall n x y:int.
-    0<=y -> is_uint n x -> to_uint n (lsr x y) = lsr x y
-  lemma is_uint_lsl1_inf : forall n y:int.
-    0<=y<n  -> to_uint n (lsl 1 y) = lsl 1 y
-  lemma is_uint_lsl1_sup : forall n y:int.
-    0<=n<=y -> to_uint n (lsl 1 y) = 0
-  meta "remove_for_" lemma is_uint_lor
-  meta "remove_for_" lemma is_uint_land
-  meta "remove_for_" lemma is_uint_lsr
-  meta "remove_for_" lemma is_uint_lsl1_inf
-  meta "remove_for_" lemma is_uint_lsl1_sup
 
 (** *** Cast to uint8 C type *)
   axiom is_uint8_lxor : forall x y:int [to_uint8 (lxor x y)].
@@ -473,29 +282,6 @@ theory Cbits
   axiom is_uint64_lsl1_sup : forall y:int [to_uint64 (lsl 1 y)].
     64<=y -> to_uint64 (lsl 1 y) = 0
 
-(** ** Signed conversions *)
-  lemma is_sint_lnot: forall n x:int.
-    is_sint n x -> to_sint n (lnot x) = lnot x
-  lemma is_sint_lxor: forall n x y:int.
-    is_sint n x -> is_sint n y -> to_sint n (lxor x y) = lxor x y
-  lemma is_sint_lor: forall n x y:int.
-    is_sint n x -> is_sint n y -> to_sint n (lor x y) = lor x y
-  lemma is_sint_land: forall n x y:int.
-    is_sint n x -> is_sint n y -> to_sint n (land x y) = land x y
-  lemma is_sint_lsr: forall n x y:int.
-    0<=y -> is_sint n x -> to_sint n (lsr x y) = lsr x y
-  lemma is_sint_lsl1_inf : forall n y:int.
-    0<=y<n -> to_sint n (lsl 1 y) = (lsl 1 y)
-  lemma is_sint_lsl1_sup : forall n y:int.
-    0<=n<y -> to_sint n (lsl 1 y) = 0
-  meta "remove_for_" lemma is_sint_lnot
-  meta "remove_for_" lemma is_sint_lxor
-  meta "remove_for_" lemma is_sint_lor
-  meta "remove_for_" lemma is_sint_land
-  meta "remove_for_" lemma is_sint_lsr
-  meta "remove_for_" lemma is_sint_lsl1_inf
-  meta "remove_for_" lemma is_sint_lsl1_sup
-
 (** *** Cast to sint8 C type *)
   lemma is_sint8_lnot: forall x:int [to_sint8 (lnot x)].
     is_sint8 x ->  to_sint8 (lnot x) = lnot x
@@ -596,27 +382,6 @@ theory Cbits
   axiom is_sint64_lsl1_sup : forall y:int [to_sint64 (lsl 1 y)].
     64<=y -> to_sint64 (lsl 1 y) = 0
 
-(** * Range of some bitwise operations *)
-  lemma uint_land_range : forall x y: int .
-    0<=x -> 0 <= land x y <= x
-  meta "remove_for_" lemma uint_land_range
-
-  lemma uint_lor_inf : forall x y: int .
-    -1<=x -> 0<=y -> x <= lor x y
-  meta "remove_for_" lemma uint_lor_inf
-
-  lemma sint_land_inf : forall x y: int .
-    x<=0 -> y<0 -> land x y <= x
-  meta "remove_for_" lemma sint_land_inf
-
-  lemma sint_lor_range : forall x y: int .
-    x<0 -> x <= lor x y < 0
-  meta "remove_for_" lemma sint_lor_range
-
-  lemma is_uint_lor_distrib : forall n x y: int .
-   (is_uint n (lor x y)) <-> ((is_uint n x) && (is_uint n y))
-  meta "remove_for_" lemma is_uint_lor_distrib
-
 (** * Link between bitwise operators and addition *)
   axiom lor_addition : forall x y: int  [(land x y), (lor x y) ].
     land x y = 0 -> x + y = lor x y
@@ -624,9 +389,4 @@ theory Cbits
   axiom lxor_addition : forall x y: int  [(land x y), (lxor x y) ].
     land x y = 0 -> x + y = lxor x y
 
-(** * Link between land and cast operator *)
-  lemma to_uint_land_edge : forall x n: int.
-    0<=n -> to_uint n x = land ((lsl 1 n) - 1) x
-  meta "remove_for_" lemma to_uint_land_edge
-
 end
diff --git a/src/plugins/wp/share/why3/frama_c_wp/cint.mlw b/src/plugins/wp/share/why3/frama_c_wp/cint.mlw
index 22f2e79f9ec522f3af333431a0fdbf07e0b1cbc6..471483d7973536f23fc05ce497726f001542b8ce 100644
--- a/src/plugins/wp/share/why3/frama_c_wp/cint.mlw
+++ b/src/plugins/wp/share/why3/frama_c_wp/cint.mlw
@@ -44,28 +44,48 @@ theory Cint
 
   (** * C-Integer Ranges * **)
 
-  predicate is_bool(x:int) = x = 0 \/ x = 1
-  predicate is_uint8(x:int) = 0 <= x < max_uint8
-  predicate is_sint8(x:int) = -max_sint8 <= x < max_sint8
-  predicate is_uint16(x:int) = 0 <= x < max_uint16
-  predicate is_sint16(x:int) = -max_sint16 <= x < max_sint16
-  predicate is_uint32(x:int) = 0 <= x < max_uint32
-  predicate is_sint32(x:int) = -max_sint32 <= x < max_sint32
-  predicate is_uint64(x:int) = 0 <= x < max_uint64
-  predicate is_sint64(x:int) = -max_sint64 <= x < max_sint64
-
-  lemma is_bool0: is_bool(0)
-  lemma is_bool1: is_bool(1)
-
-  (* meta "def_into_axiom" predicate is_bool *)
-  meta "def_into_axiom" predicate is_uint8
-  meta "def_into_axiom" predicate is_sint8
-  meta "def_into_axiom" predicate is_uint16
-  meta "def_into_axiom" predicate is_uint16
-  meta "def_into_axiom" predicate is_sint32
-  meta "def_into_axiom" predicate is_uint32
-  meta "def_into_axiom" predicate is_sint64
-  meta "def_into_axiom" predicate is_uint64
+  predicate is_bool (x:int) = x = 0 \/ x = 1
+
+  predicate is_uint8 int
+
+  axiom is_uint8_def :
+    forall x:int [is_uint8 x]. is_uint8 x <-> 0 <= x /\ x < max_uint8
+
+  predicate is_sint8 int
+
+  axiom is_sint8_def :
+    forall x:int [is_sint8 x]. is_sint8 x <-> (- max_sint8) <= x /\ x < max_sint8
+
+  predicate is_uint16 int
+
+  axiom is_uint16_def :
+    forall x:int [is_uint16 x]. is_uint16 x <-> 0 <= x /\ x < max_uint16
+
+  predicate is_sint16 (x:int) = (- max_sint16) <= x /\ x < max_sint16
+
+  predicate is_uint32 int
+
+  axiom is_uint32_def :
+    forall x:int [is_uint32 x]. is_uint32 x <-> 0 <= x /\ x < max_uint32
+
+  predicate is_sint32 int
+
+  axiom is_sint32_def :
+    forall x:int [is_sint32 x]. is_sint32 x <-> (- max_sint32) <= x /\ x < max_sint32
+
+  predicate is_uint64 int
+
+  axiom is_uint64_def :
+    forall x:int [is_uint64 x]. is_uint64 x <-> 0 <= x /\ x < max_uint64
+
+  predicate is_sint64 int
+
+  axiom is_sint64_def :
+    forall x:int [is_sint64 x]. is_sint64 x <-> (- max_sint64) <= x /\ x < max_sint64
+
+  lemma is_bool0 : is_bool 0
+
+  lemma is_bool1 : is_bool 1
 
   (** * C-Integer Conversion * **)
 
@@ -80,12 +100,6 @@ theory Cint
   function to_sint64 int : int
 
   function two_power_abs  int : int
-  lemma two_power_abs_is_positive : forall n:int [ two_power_abs n ]. 0 < two_power_abs n
-  lemma two_power_abs_plus_pos : forall n m:int . 0 <= n -> 0 <= m -> two_power_abs (n+m) = (two_power_abs n) * (two_power_abs m)
-  lemma two_power_abs_plus_one : forall n:int   . 0 <= n -> two_power_abs (n+1) = 2 * (two_power_abs n)
-  meta "remove_for_" lemma two_power_abs_is_positive
-  meta "remove_for_" lemma two_power_abs_plus_pos
-  meta "remove_for_" lemma two_power_abs_plus_one
 
   predicate is_uint (n:int) (x:int) = 0 <= x < two_power_abs n
 
@@ -97,11 +111,6 @@ theory Cint
 
  (** * C-Integer Conversions are in-range * **)
 
-  lemma is_to_uint : forall n x:int [ is_uint n (to_uint n x) ]. is_uint n (to_uint n x)
-  lemma is_to_sint : forall n x:int [ is_sint n (to_sint n x) ]. is_sint n (to_sint n x)
-  meta "remove_for_" lemma is_to_uint
-  meta "remove_for_" lemma is_to_sint
-
   axiom is_to_uint8 : forall x:int. is_uint8 (to_uint8 x)
   axiom is_to_sint8 : forall x:int. is_sint8 (to_sint8 x)
   axiom is_to_uint16 : forall x:int. is_uint16 (to_uint16 x)
@@ -113,84 +122,20 @@ theory Cint
 
   (** * C-Integer Conversions are identity when in-range * **)
 
-  lemma id_uint : forall n x:int [ to_uint n x ]. is_uint n x <-> (to_uint n x) = x
-  lemma id_sint : forall n x:int [ to_sint n x ]. is_sint n x <-> (to_sint n x) = x
-  meta "remove_for_" lemma id_uint
-  meta "remove_for_" lemma id_sint
-
-  axiom id_uint8 : forall x:int [ to_uint8 x ]. is_uint8 x -> (to_uint8 x) = x
-  axiom id_sint8 : forall x:int [ to_sint8 x ]. is_sint8 x -> (to_sint8 x) = x
-  axiom id_uint16 : forall x:int [ to_uint16 x ]. is_uint16 x -> (to_uint16 x) = x
-  axiom id_sint16 : forall x:int [ to_sint16 x ]. is_sint16 x -> (to_sint16 x) = x
-  axiom id_uint32 : forall x:int [ to_uint32 x ]. is_uint32 x -> (to_uint32 x) = x
-  axiom id_sint32 : forall x:int [ to_sint32 x ]. is_sint32 x -> (to_sint32 x) = x
-  axiom id_uint64 : forall x:int [ to_uint64 x ]. is_uint64 x -> (to_uint64 x) = x
-  axiom id_sint64 : forall x:int [ to_sint64 x ]. is_sint64 x -> (to_sint64 x) = x
-
-  meta "inline_in" predicate is_uint8,  axiom id_uint8
-  meta "inline_in" predicate is_sint8,  axiom id_sint8
-  meta "inline_in" predicate is_uint16, axiom id_uint16
-  meta "inline_in" predicate is_sint16, axiom id_sint16
-  meta "inline_in" predicate is_uint32, axiom id_uint32
-  meta "inline_in" predicate is_sint32, axiom id_sint32
-  meta "inline_in" predicate is_uint64, axiom id_uint64
-  meta "inline_in" predicate is_sint64, axiom id_sint64
-
-  (** * C-Integer Conversions are projections * **)
-
-  lemma proj_uint : forall n x:int . to_uint n (to_uint n x)= to_uint n x
-  lemma proj_sint : forall n x:int . to_sint n (to_sint n x)= to_sint n x
-  meta "remove_for_" lemma proj_uint
-  meta "remove_for_" lemma proj_sint
-
-  axiom proj_uint8 : forall x:int [ to_uint8(to_uint8 x) ]. to_uint8(to_uint8 x)=to_uint8 x
-  axiom proj_sint8 : forall x:int [ to_sint8(to_sint8 x) ]. to_sint8(to_sint8 x)=to_sint8 x
-  axiom proj_uint16 : forall x:int [ to_uint16(to_uint16 x) ]. to_uint16(to_uint16 x)=to_uint16 x
-  axiom proj_sint16 : forall x:int [ to_sint16(to_sint16 x) ]. to_sint16(to_sint16 x)=to_sint16 x
-  axiom proj_uint32 : forall x:int [ to_uint32(to_uint32 x) ]. to_uint32(to_uint32 x)=to_uint32 x
-  axiom proj_sint32 : forall x:int [ to_sint32(to_sint32 x) ]. to_sint32(to_sint32 x)=to_sint32 x
-  axiom proj_uint64 : forall x:int [ to_uint64(to_uint64 x) ]. to_uint64(to_uint64 x)=to_uint64 x
-  axiom proj_sint64 : forall x:int [ to_sint64(to_sint64 x) ]. to_sint64(to_sint64 x)=to_sint64 x
-
-  meta "remove_for_" axiom proj_uint8
-  meta "remove_for_" axiom proj_sint8
-  meta "remove_for_" axiom proj_uint16
-  meta "remove_for_" axiom proj_sint16
-  meta "remove_for_" axiom proj_uint32
-  meta "remove_for_" axiom proj_sint32
-  meta "remove_for_" axiom proj_uint64
-  meta "remove_for_" axiom proj_sint64
+  axiom id_uint8 : forall x:int [ to_uint8 x ]. 0 <= x < max_uint8 -> (to_uint8 x) = x
+  axiom id_sint8 : forall x:int [ to_sint8 x ]. -max_sint8 <= x < max_sint8 -> (to_sint8 x) = x
+  axiom id_uint16 : forall x:int [ to_uint16 x ]. 0 <= x < max_uint16 -> (to_uint16 x) = x
+  axiom id_sint16 : forall x:int [ to_sint16 x ]. -max_sint16 <= x < max_sint16 -> (to_sint16 x) = x
+  axiom id_uint32 : forall x:int [ to_uint32 x ]. 0 <= x < max_uint32 -> (to_uint32 x) = x
+  axiom id_sint32 : forall x:int [ to_sint32 x ]. -max_sint32 <= x < max_sint32 -> (to_sint32 x) = x
+  axiom id_uint64 : forall x:int [ to_uint64 x ]. 0 <= x < max_uint64 -> (to_uint64 x) = x
+  axiom id_sint64 : forall x:int [ to_sint64 x ]. -max_sint64 <= x < max_sint64 -> (to_sint64 x) = x
 
   (** * Generalization for [to_sint _ (to_uint _ x)] * **)
 
-  lemma proj_su: forall n x:int . to_sint n (to_uint n x) = to_uint n x
-  lemma incl_su: forall n x:int . is_uint n x -> is_sint n x
-  meta "remove_for_" lemma proj_su
-  meta "remove_for_" lemma incl_su
-
-  lemma proj_su_uint: forall n m x:int . 0 <= n -> 0 <= m -> to_sint (m+n) (to_uint n x)     = to_uint n x
-  lemma proj_su_sint: forall n m x:int . 0 <= n -> 0 <= m -> to_sint n (to_uint (m+(n+1)) x) = to_sint n x
-  meta "remove_for_" lemma proj_su_uint
-  meta "remove_for_" lemma proj_su_sint
-
   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
 
-  (** * Generalization for [to_uint _ (to_sint _ x)] * **)
-
-  lemma proj_us_uint: forall n m x:int . 0 <= n -> 0 <= m -> to_uint (n+1) (to_sint (m+n) x) = to_uint (n+1) x
-  meta "remove_for_" lemma proj_us_uint
-
-  (** * C-Integer range inclusion * **)
-
-  lemma incl_uint : forall n x i:int . 0 <= n -> 0 <= i -> is_uint n x -> is_uint (n+i) x
-  lemma incl_sint : forall n x i:int . 0 <= n -> 0 <= i -> is_sint n x -> is_sint (n+i) x
-  lemma incl_int  : forall n x i:int . 0 <= n -> 0 <= i -> is_uint n x -> is_sint (n+i) x
-  meta "remove_for_" lemma incl_uint
-  meta "remove_for_" lemma incl_sint
-  meta "remove_for_" lemma incl_int
-
-
 end
diff --git a/src/plugins/wp/share/why3/frama_c_wp/qed.mlw b/src/plugins/wp/share/why3/frama_c_wp/qed.mlw
index b9429ed30474464bea60bc1ae8827c87beb65f13..1404e517aad7cfb0063e578ea088761890f7debf 100644
--- a/src/plugins/wp/share/why3/frama_c_wp/qed.mlw
+++ b/src/plugins/wp/share/why3/frama_c_wp/qed.mlw
@@ -34,9 +34,6 @@ theory Qed
   function eqb (x y : 'a) : bool (*= if x = y then True else False*)
   axiom eqb : forall x:'a, y:'a. eqb x y = True <-> x = y
 
-  axiom eqb_false : forall x:'a, y:'a. eqb x y = False <-> x <> y
-  meta "remove_for_" axiom eqb_false
-
   function neqb (x y : 'a) : bool(* = if x <> y then True else False*)
   axiom neqb : forall x:'a, y:'a. neqb x y = True <-> x <> y
 
diff --git a/src/plugins/wp/wp.ml b/src/plugins/wp/wp.ml
index abeb0a7931bed7a557bac4234534ecc5a5447fdf..c10ae35f5359dc4847111b07da904c402c24fefd 100644
--- a/src/plugins/wp/wp.ml
+++ b/src/plugins/wp/wp.ml
@@ -170,7 +170,6 @@ module Filtering = Filtering
 (** {2 Prover Interface} *)
 
 module Why3Provers = Why3Provers
-module Filter_axioms = Filter_axioms
 module Prover = Prover
 module ProverTask = ProverTask
 module ProverWhy3 = ProverWhy3