diff --git a/src/plugins/wp/MemAddr.ml b/src/plugins/wp/MemAddr.ml
index aa8002f34043209313eb192813fcf2432bd1d737..8c8dd1fcb4c4e1bf8a217a849a7492bd2f266995 100644
--- a/src/plugins/wp/MemAddr.ml
+++ b/src/plugins/wp/MemAddr.ml
@@ -101,7 +101,7 @@ let linked memory = p_call p_linked [ memory ]
 
 let valid_rd alloc addr size = p_call p_valid_rd [ alloc ; addr ; size ]
 let valid_rw alloc addr size = p_call p_valid_rw [ alloc ; addr ; size ]
-let valid_obj alloc addr size = p_call p_valid_obj [ alloc ; addr ; size ]
+let valid_obj alloc addr = p_call p_valid_obj [ alloc ; addr ]
 let invalid alloc addr size = p_call p_invalid [ alloc ; addr ; size ]
 
 (* Physical addresses *)
@@ -334,7 +334,7 @@ let r_valid_unref = function
 
 (* - lemma valid_obj_null: forall m n. valid_obj m null n *)
 let r_valid_obj = function
-  | [_; p; _] when decide (e_eq p null) -> e_true
+  | [_; p] when decide (e_eq p null) -> e_true
   | _ -> raise Not_found
 
 (* - lemma invalid_null: forall m n p. p.base = 0 -> invalid m p n *)
diff --git a/src/plugins/wp/MemAddr.mli b/src/plugins/wp/MemAddr.mli
index 82271610e67fd6861224f2978e1b6a537746e8c1..93685f13772ac7ec03564eb9d16ad48d67fdea22 100644
--- a/src/plugins/wp/MemAddr.mli
+++ b/src/plugins/wp/MemAddr.mli
@@ -105,8 +105,8 @@ val valid_rd : term -> term -> term -> pred
 val valid_rw : term -> term -> term -> pred
 (** [valid_rw(m: malloc)(a: addr)(l: length)] *)
 
-val valid_obj : term -> term -> term -> pred
-(** [valid_obj(m: malloc)(a: addr)(l: length)] *)
+val valid_obj : term -> term -> pred
+(** [valid_obj(m: malloc)(a: addr)] *)
 
 val invalid : term -> term -> term -> pred
 (** [invalid(m: malloc)(a: addr)(l: length)]
diff --git a/src/plugins/wp/MemTyped.ml b/src/plugins/wp/MemTyped.ml
index 94ac99b8edb5dad241bf3164e1779607c2c5d17e..dbfafb02cb6d1ecd9e910710f2c3dd8f87f436a0 100644
--- a/src/plugins/wp/MemTyped.ml
+++ b/src/plugins/wp/MemTyped.ml
@@ -1126,7 +1126,7 @@ let s_valid sigma acs p n =
   let valid = match acs with
     | RW -> MemAddr.valid_rw
     | RD -> MemAddr.valid_rd
-    | OBJ -> MemAddr.valid_obj
+    | OBJ -> (fun m p _ -> MemAddr.valid_obj m p)
   in
   valid (Sigma.value sigma T_alloc) p n
 
diff --git a/src/plugins/wp/share/why3/frama_c_wp/memaddr.mlw b/src/plugins/wp/share/why3/frama_c_wp/memaddr.mlw
index 200a8d7d9026e16d6187598ec28d23182c678b36..71842fd4ed8ea6a71fa2afa3c9d235456287aaee 100644
--- a/src/plugins/wp/share/why3/frama_c_wp/memaddr.mlw
+++ b/src/plugins/wp/share/why3/frama_c_wp/memaddr.mlw
@@ -70,9 +70,8 @@ theory MemAddr
   predicate valid_rd (m: malloc) (p: addr) (n: int) =
     n > 0 -> ( 0 <> p.base /\ 0 <= p.offset /\ p.offset + n <= m[p.base] )
 
-  predicate valid_obj (m: malloc) (p: addr) (n: int) =
-    n > 0 -> ( p = null \/
-             ( 0 <> p.base /\ 0 <= p.offset /\ p.offset + n <= 1 + m[p.base] ))
+  predicate valid_obj (m: malloc) (p: addr) =
+    p = null \/ (0 <> p.base /\ 0 <= p.offset /\ p.offset <= m[p.base])
 
   predicate invalid (m : malloc) (p:addr) (n:int) =
     n <= 0 \/ p.base = 0 \/ m[p.base] <= p.offset \/ p.offset + n <= 0
diff --git a/src/plugins/wp/tests/why3/oracle_qualif/spec_memory.res.oracle b/src/plugins/wp/tests/why3/oracle_qualif/spec_memory.res.oracle
index 59c4d29e5141b97d61a0d69fad0343908e33160b..8042b6718bd438950d0a22364f56451cd41db2cc 100644
--- a/src/plugins/wp/tests/why3/oracle_qualif/spec_memory.res.oracle
+++ b/src/plugins/wp/tests/why3/oracle_qualif/spec_memory.res.oracle
@@ -30,7 +30,7 @@ File "spec_memory.why", line 49, characters 4-59:
 Goal valid_rw_null.
 Prover result is: Valid.
 
-File "spec_memory.why", line 52, characters 4-34:
+File "spec_memory.why", line 52, characters 4-30:
 Goal valid_obj_null.
 Prover result is: Valid.
 
diff --git a/src/plugins/wp/tests/why3/spec_memory.why b/src/plugins/wp/tests/why3/spec_memory.why
index 29d0887963627a29b9eb99bfac31337249e89fe4..bc4f6ec4d8770821658aba57e15afc2dfb891757 100644
--- a/src/plugins/wp/tests/why3/spec_memory.why
+++ b/src/plugins/wp/tests/why3/spec_memory.why
@@ -49,7 +49,7 @@ module Spec_memory
     forall m n p. p.base = 0 -> (n <= 0 <-> valid_rw m p n)
 
   goal valid_obj_null:
-    forall m n. valid_obj m null n
+    forall m. valid_obj m null
 
   (* included simplifier *)
   goal INC_P:
diff --git a/src/plugins/wp/tests/wp_acsl/oracle/object_pointer.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle/object_pointer.res.oracle
index e9495cd015d61cbc36a6d21a1de8a68a962f7ec0..336c2664ae12b40d0ddbb5b6ec523110342a23b0 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle/object_pointer.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle/object_pointer.res.oracle
@@ -20,7 +20,7 @@
 Goal Check 'ARR' (file object_pointer.i, line 32):
 Assume { Type: is_sint32(k). (* Heap *) Type: linked(Malloc_0). }
 Prove: ((0 <= k) /\ (k <= 25)) <->
-    valid_obj(Malloc_0[L_a_33 <- 25], shift_sint32(global(L_a_33), k), 1).
+    valid_obj(Malloc_0[L_a_33 <- 25], shift_sint32(global(L_a_33), k)).
 
 ------------------------------------------------------------
 ------------------------------------------------------------
@@ -49,33 +49,33 @@ Prove: true.
 
 Goal Check 'F' (file object_pointer.i, line 53):
 Assume { (* Heap *) Type: linked(Malloc_0). }
-Prove: valid_obj(Malloc_0[L_s_38 <- 2], shiftfield_F1_S_f(global(L_s_38)), 1).
+Prove: valid_obj(Malloc_0[L_s_38 <- 2], shiftfield_F1_S_f(global(L_s_38))).
 
 ------------------------------------------------------------
 
 Goal Check 'G' (file object_pointer.i, line 54):
 Assume { (* Heap *) Type: linked(Malloc_0). }
-Prove: valid_obj(Malloc_0[L_s_38 <- 2], shiftfield_F1_S_g(global(L_s_38)), 1).
+Prove: valid_obj(Malloc_0[L_s_38 <- 2], shiftfield_F1_S_g(global(L_s_38))).
 
 ------------------------------------------------------------
 
 Goal Check 'F2' (file object_pointer.i, line 55):
 Assume { (* Heap *) Type: linked(Malloc_0). }
 Prove: valid_obj(Malloc_0[L_s_38 <- 2],
-         shift_sint32(shiftfield_F1_S_f(global(L_s_38)), 2), 1).
+         shift_sint32(shiftfield_F1_S_f(global(L_s_38)), 2)).
 
 ------------------------------------------------------------
 
 Goal Check 'G2' (file object_pointer.i, line 56):
 Assume { (* Heap *) Type: linked(Malloc_0). }
 Prove: !valid_obj(Malloc_0[L_s_38 <- 2],
-          shift_sint32(shiftfield_F1_S_g(global(L_s_38)), 2), 1).
+          shift_sint32(shiftfield_F1_S_g(global(L_s_38)), 2)).
 
 ------------------------------------------------------------
 
 Goal Check 'E' (file object_pointer.i, line 57):
 Assume { (* Heap *) Type: linked(Malloc_0). }
-Prove: valid_obj(Malloc_0[L_s_38 <- 2], shift_S1_S(global(L_s_38), 1), 2).
+Prove: valid_obj(Malloc_0[L_s_38 <- 2], shift_S1_S(global(L_s_38), 1)).
 
 ------------------------------------------------------------
 
@@ -89,7 +89,7 @@ Prove: true.
 
 Goal Check (file object_pointer.i, line 69):
 Assume { (* Heap *) Type: linked(Malloc_0). }
-Prove: !valid_obj(Malloc_0[L_l_45 <- 0], global(L_l_45), 1).
+Prove: !valid_obj(Malloc_0[L_l_45 <- 0], global(L_l_45)).
 
 ------------------------------------------------------------
 ------------------------------------------------------------
@@ -121,25 +121,25 @@ Prove: true.
 
 Goal Check 'M1' (file object_pointer.i, line 19):
 Assume { (* Heap *) Type: linked(Malloc_0). }
-Prove: !valid_obj(Malloc_0[L_x_28 <- 1], shift_sint32(global(L_x_28), -1), 1).
+Prove: !valid_obj(Malloc_0[L_x_28 <- 1], shift_sint32(global(L_x_28), -1)).
 
 ------------------------------------------------------------
 
 Goal Check 'P0' (file object_pointer.i, line 20):
 Assume { (* Heap *) Type: linked(Malloc_0). }
-Prove: valid_obj(Malloc_0[L_x_28 <- 1], global(L_x_28), 1).
+Prove: valid_obj(Malloc_0[L_x_28 <- 1], global(L_x_28)).
 
 ------------------------------------------------------------
 
 Goal Check 'P1' (file object_pointer.i, line 21):
 Assume { (* Heap *) Type: linked(Malloc_0). }
-Prove: valid_obj(Malloc_0[L_x_28 <- 1], shift_sint32(global(L_x_28), 1), 1).
+Prove: valid_obj(Malloc_0[L_x_28 <- 1], shift_sint32(global(L_x_28), 1)).
 
 ------------------------------------------------------------
 
 Goal Check 'P2' (file object_pointer.i, line 22):
 Assume { (* Heap *) Type: linked(Malloc_0). }
-Prove: !valid_obj(Malloc_0[L_x_28 <- 1], shift_sint32(global(L_x_28), 2), 1).
+Prove: !valid_obj(Malloc_0[L_x_28 <- 1], shift_sint32(global(L_x_28), 2)).
 
 ------------------------------------------------------------
 
@@ -150,6 +150,6 @@ Prove: true.
 
 Goal Check 'prover_NULL' (file object_pointer.i, line 24):
 Assume { (* Heap *) Type: linked(Malloc_0). }
-Prove: valid_obj(Malloc_0[L_x_28 <- 1], L_GET, 1).
+Prove: valid_obj(Malloc_0[L_x_28 <- 1], L_GET).
 
 ------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/object_pointer.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/object_pointer.res.oracle
index 0775d61de97766153e1f57cd1d61bef1cbb6112b..9ca8cd793848e43accddd6beeaf7907f1ff7be33 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/object_pointer.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/object_pointer.res.oracle
@@ -33,20 +33,20 @@
 [wp] [Valid] typed_compound_check_G (Alt-Ergo) (Cached)
 [wp] [Valid] typed_compound_check_F2 (Alt-Ergo) (Cached)
 [wp] [Valid] typed_compound_check_G2 (Alt-Ergo) (Cached)
-[wp] [Unsuccess] typed_compound_check_E (Alt-Ergo) (Cached)
+[wp] [Valid] typed_compound_check_E (Alt-Ergo) (Cached)
 [wp] [Valid] typed_compound_check_AM (Qed)
 [wp] [Unsuccess] typed_dangling_check (Alt-Ergo) (Cached)
-[wp] Proved goals:   30 / 32
+[wp] Proved goals:   31 / 32
   Terminating:     5
   Unreachable:     5
   Qed:            10
-  Alt-Ergo:       10
-  Unsuccess:       2
+  Alt-Ergo:       11
+  Unsuccess:       1
 ------------------------------------------------------------
  Functions                 WP     Alt-Ergo  Total   Success
   memvar                    4        -        4       100%
   pointer                   1        5        6       100%
   array                     -        1        1       100%
-  compound                  5        4       10      90.0%
+  compound                  5        5       10       100%
   dangling                  -        -        1       0.0%
 ------------------------------------------------------------