diff --git a/src/plugins/builtin/basic_blocks.ml b/src/plugins/builtin/basic_blocks.ml
index 2cddd187f02b36f873dc985334ffce917e6bad47..604043ae9b87d19167b098aa46c36ad348f4b7a9 100644
--- a/src/plugins/builtin/basic_blocks.ml
+++ b/src/plugins/builtin/basic_blocks.ml
@@ -164,6 +164,16 @@ let unroll_logic_type = function
   | Ctype t -> Ctype (Cil.unrollType t)
   | t -> t
 
+let tunref_range_bytes_len ?loc ptr bytes_len =
+  let sizeof = sizeofpointed ptr.term_type in
+  if sizeof = 1 then
+    tunref_range ?loc ptr bytes_len
+  else
+    let sizeof = tinteger ?loc sizeof in
+    let len = tdivide ?loc bytes_len sizeof in
+    tunref_range ?loc ptr len
+
+
 (** Features related to predicates *)
 
 let plet_len_div_size ?loc ?name_ext t bytes_len pred =
diff --git a/src/plugins/builtin/basic_blocks.mli b/src/plugins/builtin/basic_blocks.mli
index b7547d10c2418171b8568e00592587a672c87bd9..0fb7d2052d638f3499b380d54345d5a1a0e80be0 100644
--- a/src/plugins/builtin/basic_blocks.mli
+++ b/src/plugins/builtin/basic_blocks.mli
@@ -71,6 +71,11 @@ val cvar_to_tvar: varinfo -> term
 (** [tunref_range ~loc ptr len] builds [*(ptr + (0 .. len-1))] *)
 val tunref_range: ?loc:location -> term -> term -> term
 
+(** [tunref_range ~loc ptr bytes_len] same as [tunref_range] except that length
+    is provided in bytes.
+*)
+val tunref_range_bytes_len: ?loc:location -> term -> term -> term
+
 (** [tplus ~loc t1 t2] builds [t1+t2] *)
 val tplus: ?loc:location -> term -> term -> term
 
@@ -162,11 +167,11 @@ val punfold_flexible_struct_pred:
 val pvalid_len_bytes: ?loc:location -> logic_label -> term -> term -> predicate
 
 (** [pvalid_read_len_bytes ~loc label ptr bytes_len] generates a predicate
-  - [\valid_read{label}(ptr + (0 .. (len_bytes/sizeof(\*ptr))))].
+    - [\valid_read{label}(ptr + (0 .. (len_bytes/sizeof(\*ptr))))].
 
-  Parameters:
-  - [ptr] must be a term of pointer type.
- *)
+    Parameters:
+    - [ptr] must be a term of pointer type.
+*)
 val pvalid_read_len_bytes:
   ?loc:location -> logic_label -> term -> term -> predicate
 
@@ -187,11 +192,11 @@ val pseparated_memories:
 (** {2 Specification} *)
 
 (** Builds a behavior from its components. If a component is missing,
-  it defaults to:
-  - [name]: [Cil.default_behavior_name]
-  - [requires], [ensures], [extension]: [[]]
-  - [assigns]: = [WritesAny]
-  - [alloc]: [FreeAllocAny]
+    it defaults to:
+    - [name]: [Cil.default_behavior_name]
+    - [requires], [ensures], [extension]: [[]]
+    - [assigns]: = [WritesAny]
+    - [alloc]: [FreeAllocAny]
 *)
 val make_behavior:
   ?name:string ->
diff --git a/src/plugins/builtin/string/memcmp.ml b/src/plugins/builtin/string/memcmp.ml
index 6399e653ecc6d81c1eb9c07a3623c61f9812810a..a8edb6e540b98c42ac1772f51171d81ca5465b8e 100644
--- a/src/plugins/builtin/string/memcmp.ml
+++ b/src/plugins/builtin/string/memcmp.ml
@@ -43,8 +43,8 @@ let presult_memcmp ?loc p1 p2 len =
 
 let generate_assigns loc s1 s2 len =
   let indirect_range loc s len =
-    let t = { (tunref_range ~loc s len) with term_name = ["indirect"] } in
-    new_identified_term t
+    new_identified_term
+      { (tunref_range_bytes_len ~loc s len) with term_name = ["indirect"] }
   in
   let s1_range = indirect_range loc s1 len in
   let s2_range = indirect_range loc s2 len in
diff --git a/src/plugins/builtin/string/memcpy.ml b/src/plugins/builtin/string/memcpy.ml
index 4346977aa87fad6f41abf7abdde23b26eb33a8ca..31eee35d2b49ca384ad02b3275196aee5c1c2653 100644
--- a/src/plugins/builtin/string/memcpy.ml
+++ b/src/plugins/builtin/string/memcpy.ml
@@ -50,8 +50,8 @@ let generate_requires loc dest src len =
   ]
 
 let generate_assigns loc t dest src len =
-  let dest_range = new_identified_term (tunref_range ~loc dest len) in
-  let src_range = new_identified_term(tunref_range ~loc src len) in
+  let dest_range = new_identified_term (tunref_range_bytes_len ~loc dest len) in
+  let src_range = new_identified_term(tunref_range_bytes_len ~loc src len) in
   let copy = dest_range, From [src_range] in
   let result = new_identified_term (tresult t) in
   let dest = new_identified_term dest in
diff --git a/src/plugins/builtin/string/memmove.ml b/src/plugins/builtin/string/memmove.ml
index aa200185ca3aa9338a3748092379ece14faba9db..dd3104d45c5a1aab876d0a7b2369989caee3b720 100644
--- a/src/plugins/builtin/string/memmove.ml
+++ b/src/plugins/builtin/string/memmove.ml
@@ -44,8 +44,8 @@ let generate_requires loc dest src len =
   ]
 
 let generate_assigns loc t dest src len =
-  let dest_range = new_identified_term (tunref_range ~loc dest len) in
-  let src_range = new_identified_term(tunref_range ~loc src len) in
+  let dest_range = new_identified_term (tunref_range_bytes_len ~loc dest len) in
+  let src_range = new_identified_term(tunref_range_bytes_len ~loc src len) in
   let copy = dest_range, From [src_range] in
   let result = new_identified_term (tresult t) in
   let dest = new_identified_term dest in
diff --git a/src/plugins/builtin/string/memset.ml b/src/plugins/builtin/string/memset.ml
index 34c8e2b601cda21483ef768464856b9535b14c4d..6da6545f3b0f881b9502bcc5127b451f1ce0c394 100644
--- a/src/plugins/builtin/string/memset.ml
+++ b/src/plugins/builtin/string/memset.ml
@@ -133,7 +133,7 @@ let generate_requires loc ptr value len =
 
 let generate_assigns loc t ptr value len =
   let open Extlib in
-  let ptr_range = new_identified_term (tunref_range ~loc ptr len) in
+  let ptr_range = new_identified_term (tunref_range_bytes_len ~loc ptr len) in
   let value = list_of_opt (opt_map new_identified_term value) in
   let set = ptr_range, From value in
   let result = new_identified_term (tresult t) in
@@ -210,14 +210,14 @@ let char_prototype t =
   let params = [
     ("ptr", ptr_of t, []) ;
     ("value", base_char_type t, []) ;
-    ("num", size_t(), [])
+    ("len", size_t(), [])
   ] in
   TFun (ptr_of t, Some params, false, [])
 
 let non_char_prototype t =
   let params = [
     ("ptr", (ptr_of t), []) ;
-    ("num", size_t(), [])
+    ("len", size_t(), [])
   ] in
   TFun ((ptr_of t), Some params, false, [])
 
diff --git a/src/plugins/builtin/tests/options/oracle/ignore-builtin.res.oracle b/src/plugins/builtin/tests/options/oracle/ignore-builtin.res.oracle
index a37f9b74200c7255c87db8d50d5d9c22beba6794..69cf5e09ef7a6f65c519a8866701c11e7087ae50 100644
--- a/src/plugins/builtin/tests/options/oracle/ignore-builtin.res.oracle
+++ b/src/plugins/builtin/tests/options/oracle/ignore-builtin.res.oracle
@@ -3,22 +3,22 @@
 #include "stddef.h"
 #include "string.h"
 #include "strings.h"
-/*@ requires aligned_end: num % 4 ≡ 0;
+/*@ requires aligned_end: len % 4 ≡ 0;
     requires
-      valid_dest: \let __fc_len = num / 4; \valid(ptr + (0 .. __fc_len - 1));
+      valid_dest: \let __fc_len = len / 4; \valid(ptr + (0 .. __fc_len - 1));
     ensures
       set_content:
-        \let __fc_len = num / 4;
+        \let __fc_len = len / 4;
         ∀ ℤ j0; 0 ≤ j0 < __fc_len ⇒ *(ptr + j0) ≡ 0;
     ensures result: \result ≡ ptr;
-    assigns *(ptr + (0 .. num - 1)), \result;
-    assigns *(ptr + (0 .. num - 1)) \from \nothing;
+    assigns *(ptr + (0 .. len / 4 - 1)), \result;
+    assigns *(ptr + (0 .. len / 4 - 1)) \from \nothing;
     assigns \result \from ptr;
  */
-int *memset_int_0(int *ptr, size_t num)
+int *memset_int_0(int *ptr, size_t len)
 {
   int *__retres;
-  __retres = (int *)memset((void *)ptr,0,num);
+  __retres = (int *)memset((void *)ptr,0,len);
   return __retres;
 }
 
diff --git a/src/plugins/builtin/tests/options/oracle/ignore-functions.res.oracle b/src/plugins/builtin/tests/options/oracle/ignore-functions.res.oracle
index ee940654e55f18b258c25732c041fc052d140fbf..8aacf1fa7571bddc9c3fb5e630e1213db9a447bd 100644
--- a/src/plugins/builtin/tests/options/oracle/ignore-functions.res.oracle
+++ b/src/plugins/builtin/tests/options/oracle/ignore-functions.res.oracle
@@ -26,8 +26,8 @@ void foo(void)
         \let __fc_len = len / 4;
         ∀ ℤ j0; 0 ≤ j0 < __fc_len ⇒ *(dest + j0) ≡ *(src + j0);
     ensures result: \result ≡ dest;
-    assigns *(dest + (0 .. len - 1)), \result;
-    assigns *(dest + (0 .. len - 1)) \from *(src + (0 .. len - 1));
+    assigns *(dest + (0 .. len / 4 - 1)), \result;
+    assigns *(dest + (0 .. len / 4 - 1)) \from *(src + (0 .. len / 4 - 1));
     assigns \result \from dest;
  */
 int *memcpy_int(int *dest, int const *src, size_t len)
diff --git a/src/plugins/builtin/tests/options/oracle/only-functions.res.oracle b/src/plugins/builtin/tests/options/oracle/only-functions.res.oracle
index 11b95496d169ba377d983069c571bcc57c898dea..cc08c601aac8ee1d7015befe833d0946ebe43eb9 100644
--- a/src/plugins/builtin/tests/options/oracle/only-functions.res.oracle
+++ b/src/plugins/builtin/tests/options/oracle/only-functions.res.oracle
@@ -18,8 +18,8 @@
         \let __fc_len = len / 4;
         ∀ ℤ j0; 0 ≤ j0 < __fc_len ⇒ *(dest + j0) ≡ *(src + j0);
     ensures result: \result ≡ dest;
-    assigns *(dest + (0 .. len - 1)), \result;
-    assigns *(dest + (0 .. len - 1)) \from *(src + (0 .. len - 1));
+    assigns *(dest + (0 .. len / 4 - 1)), \result;
+    assigns *(dest + (0 .. len / 4 - 1)) \from *(src + (0 .. len / 4 - 1));
     assigns \result \from dest;
  */
 int *memcpy_int(int *dest, int const *src, size_t len)
diff --git a/src/plugins/builtin/tests/string/oracle/memcmp.res.oracle b/src/plugins/builtin/tests/string/oracle/memcmp.res.oracle
index 7b39a351f64ec970bd39b92d7224ce504f2da08e..83f1e8a4fbaa365a2479191d5e6c641866981561 100644
--- a/src/plugins/builtin/tests/string/oracle/memcmp.res.oracle
+++ b/src/plugins/builtin/tests/string/oracle/memcmp.res.oracle
@@ -23,8 +23,8 @@ typedef int named;
           (∀ ℤ j0; 0 ≤ j0 < __fc_len ⇒ *(s1 + j0) ≡ *(s2 + j0));
     assigns \result;
     assigns \result
-      \from (indirect: *(s1 + (0 .. len - 1))),
-            (indirect: *(s2 + (0 .. len - 1)));
+      \from (indirect: *(s1 + (0 .. len / 4 - 1))),
+            (indirect: *(s2 + (0 .. len / 4 - 1)));
  */
 int memcmp_int(int const *s1, int const *s2, size_t len)
 {
@@ -61,8 +61,8 @@ int with_named(named * /*[10]*/ s1, named * /*[10]*/ s2)
           (∀ ℤ j0; 0 ≤ j0 < __fc_len ⇒ *(s1 + j0) ≡ *(s2 + j0));
     assigns \result;
     assigns \result
-      \from (indirect: *(s1 + (0 .. len - 1))),
-            (indirect: *(s2 + (0 .. len - 1)));
+      \from (indirect: *(s1 + (0 .. len / 8 - 1))),
+            (indirect: *(s2 + (0 .. len / 8 - 1)));
  */
 int memcmp_st_X(struct X const *s1, struct X const *s2, size_t len)
 {
@@ -92,8 +92,8 @@ int structure(struct X * /*[10]*/ s1, struct X * /*[10]*/ s2)
           (∀ ℤ j0; 0 ≤ j0 < __fc_len ⇒ *(s1 + j0) ≡ *(s2 + j0));
     assigns \result;
     assigns \result
-      \from (indirect: *(s1 + (0 .. len - 1))),
-            (indirect: *(s2 + (0 .. len - 1)));
+      \from (indirect: *(s1 + (0 .. len / 4 - 1))),
+            (indirect: *(s2 + (0 .. len / 4 - 1)));
  */
 int memcmp_ptr_int(int * const *s1, int * const *s2, size_t len)
 {
@@ -126,8 +126,8 @@ int pointers(int ** /*[10]*/ s1, int ** /*[10]*/ s2)
                 0 ≤ j1 < 10 ⇒ (*(s1 + j0))[j1] ≡ (*(s2 + j0))[j1]));
     assigns \result;
     assigns \result
-      \from (indirect: (*(s1 + (0 .. len - 1)))[0 .. 10 - 1]),
-            (indirect: (*(s2 + (0 .. len - 1)))[0 .. 10 - 1]);
+      \from (indirect: (*(s1 + (0 .. len / 40 - 1)))[0 .. 10 - 1]),
+            (indirect: (*(s2 + (0 .. len / 40 - 1)))[0 .. 10 - 1]);
  */
 int memcmp_arr10_int(int const (*s1)[10], int const (*s2)[10], size_t len)
 {
@@ -189,8 +189,8 @@ typedef int named;
              0 ≤ j0 < __fc_len ⇒ *(\old(s1) + j0) ≡ *(\old(s2) + j0));
     assigns \result;
     assigns \result
-      \from (indirect: *(s1 + (0 .. len - 1))),
-            (indirect: *(s2 + (0 .. len - 1)));
+      \from (indirect: *(s1 + (0 .. len / 4 - 1))),
+            (indirect: *(s2 + (0 .. len / 4 - 1)));
  */
 int memcmp_int(int const *s1, int const *s2, size_t len)
 {
@@ -230,8 +230,8 @@ int with_named(named *s1, named *s2)
              0 ≤ j0 < __fc_len ⇒ *(\old(s1) + j0) ≡ *(\old(s2) + j0));
     assigns \result;
     assigns \result
-      \from (indirect: *(s1 + (0 .. len - 1))),
-            (indirect: *(s2 + (0 .. len - 1)));
+      \from (indirect: *(s1 + (0 .. len / 8 - 1))),
+            (indirect: *(s2 + (0 .. len / 8 - 1)));
  */
 int memcmp_st_X(struct X const *s1, struct X const *s2, size_t len)
 {
@@ -263,8 +263,8 @@ int structure(struct X *s1, struct X *s2)
              0 ≤ j0 < __fc_len ⇒ *(\old(s1) + j0) ≡ *(\old(s2) + j0));
     assigns \result;
     assigns \result
-      \from (indirect: *(s1 + (0 .. len - 1))),
-            (indirect: *(s2 + (0 .. len - 1)));
+      \from (indirect: *(s1 + (0 .. len / 4 - 1))),
+            (indirect: *(s2 + (0 .. len / 4 - 1)));
  */
 int memcmp_ptr_int(int * const *s1, int * const *s2, size_t len)
 {
@@ -299,8 +299,8 @@ int pointers(int **s1, int **s2)
                 (*(\old(s1) + j0))[j1] ≡ (*(\old(s2) + j0))[j1]));
     assigns \result;
     assigns \result
-      \from (indirect: (*(s1 + (0 .. len - 1)))[0 .. 10 - 1]),
-            (indirect: (*(s2 + (0 .. len - 1)))[0 .. 10 - 1]);
+      \from (indirect: (*(s1 + (0 .. len / 40 - 1)))[0 .. 10 - 1]),
+            (indirect: (*(s2 + (0 .. len / 40 - 1)))[0 .. 10 - 1]);
  */
 int memcmp_arr10_int(int const (*s1)[10], int const (*s2)[10], size_t len)
 {
diff --git a/src/plugins/builtin/tests/string/oracle/memcpy.res.oracle b/src/plugins/builtin/tests/string/oracle/memcpy.res.oracle
index ced9071c3569c9ce2b933490acbf0ef4b5434e62..5a9013b038d5a676888485d9970d4d743f36f69a 100644
--- a/src/plugins/builtin/tests/string/oracle/memcpy.res.oracle
+++ b/src/plugins/builtin/tests/string/oracle/memcpy.res.oracle
@@ -25,8 +25,8 @@ typedef int named;
         \let __fc_len = len / 4;
         ∀ ℤ j0; 0 ≤ j0 < __fc_len ⇒ *(dest + j0) ≡ *(src + j0);
     ensures result: \result ≡ dest;
-    assigns *(dest + (0 .. len - 1)), \result;
-    assigns *(dest + (0 .. len - 1)) \from *(src + (0 .. len - 1));
+    assigns *(dest + (0 .. len / 4 - 1)), \result;
+    assigns *(dest + (0 .. len / 4 - 1)) \from *(src + (0 .. len / 4 - 1));
     assigns \result \from dest;
  */
 int *memcpy_int(int *dest, int const *src, size_t len)
@@ -65,8 +65,8 @@ void with_named(named * /*[10]*/ src, named * /*[10]*/ dest)
         \let __fc_len = len / 8;
         ∀ ℤ j0; 0 ≤ j0 < __fc_len ⇒ *(dest + j0) ≡ *(src + j0);
     ensures result: \result ≡ dest;
-    assigns *(dest + (0 .. len - 1)), \result;
-    assigns *(dest + (0 .. len - 1)) \from *(src + (0 .. len - 1));
+    assigns *(dest + (0 .. len / 8 - 1)), \result;
+    assigns *(dest + (0 .. len / 8 - 1)) \from *(src + (0 .. len / 8 - 1));
     assigns \result \from dest;
  */
 struct X *memcpy_st_X(struct X *dest, struct X const *src, size_t len)
@@ -98,8 +98,8 @@ void structure(struct X * /*[10]*/ src, struct X * /*[10]*/ dest)
         \let __fc_len = len / 4;
         ∀ ℤ j0; 0 ≤ j0 < __fc_len ⇒ *(dest + j0) ≡ *(src + j0);
     ensures result: \result ≡ dest;
-    assigns *(dest + (0 .. len - 1)), \result;
-    assigns *(dest + (0 .. len - 1)) \from *(src + (0 .. len - 1));
+    assigns *(dest + (0 .. len / 4 - 1)), \result;
+    assigns *(dest + (0 .. len / 4 - 1)) \from *(src + (0 .. len / 4 - 1));
     assigns \result \from dest;
  */
 int **memcpy_ptr_int(int **dest, int * const *src, size_t len)
@@ -135,9 +135,9 @@ void pointers(int ** /*[10]*/ src, int ** /*[10]*/ dest)
           (∀ ℤ j1;
              0 ≤ j1 < 10 ⇒ (*(dest + j0))[j1] ≡ (*(src + j0))[j1]);
     ensures result: \result ≡ dest;
-    assigns (*(dest + (0 .. len - 1)))[0 .. 10 - 1], \result;
-    assigns (*(dest + (0 .. len - 1)))[0 .. 10 - 1]
-      \from (*(src + (0 .. len - 1)))[0 .. 10 - 1];
+    assigns (*(dest + (0 .. len / 40 - 1)))[0 .. 10 - 1], \result;
+    assigns (*(dest + (0 .. len / 40 - 1)))[0 .. 10 - 1]
+      \from (*(src + (0 .. len / 40 - 1)))[0 .. 10 - 1];
     assigns \result \from dest;
  */
 int (*memcpy_arr10_int(int (*dest)[10], int const (*src)[10], size_t len))[10]
@@ -202,8 +202,8 @@ typedef int named;
         ∀ ℤ j0;
           0 ≤ j0 < __fc_len ⇒ *(\old(dest) + j0) ≡ *(\old(src) + j0);
     ensures result: \result ≡ \old(dest);
-    assigns *(dest + (0 .. len - 1)), \result;
-    assigns *(dest + (0 .. len - 1)) \from *(src + (0 .. len - 1));
+    assigns *(dest + (0 .. len / 4 - 1)), \result;
+    assigns *(dest + (0 .. len / 4 - 1)) \from *(src + (0 .. len / 4 - 1));
     assigns \result \from dest;
  */
 int *memcpy_int(int *dest, int const *src, size_t len)
@@ -245,8 +245,8 @@ void with_named(named *src, named *dest)
         ∀ ℤ j0;
           0 ≤ j0 < __fc_len ⇒ *(\old(dest) + j0) ≡ *(\old(src) + j0);
     ensures result: \result ≡ \old(dest);
-    assigns *(dest + (0 .. len - 1)), \result;
-    assigns *(dest + (0 .. len - 1)) \from *(src + (0 .. len - 1));
+    assigns *(dest + (0 .. len / 8 - 1)), \result;
+    assigns *(dest + (0 .. len / 8 - 1)) \from *(src + (0 .. len / 8 - 1));
     assigns \result \from dest;
  */
 struct X *memcpy_st_X(struct X *dest, struct X const *src, size_t len)
@@ -281,8 +281,8 @@ void structure(struct X *src, struct X *dest)
         ∀ ℤ j0;
           0 ≤ j0 < __fc_len ⇒ *(\old(dest) + j0) ≡ *(\old(src) + j0);
     ensures result: \result ≡ \old(dest);
-    assigns *(dest + (0 .. len - 1)), \result;
-    assigns *(dest + (0 .. len - 1)) \from *(src + (0 .. len - 1));
+    assigns *(dest + (0 .. len / 4 - 1)), \result;
+    assigns *(dest + (0 .. len / 4 - 1)) \from *(src + (0 .. len / 4 - 1));
     assigns \result \from dest;
  */
 int **memcpy_ptr_int(int **dest, int * const *src, size_t len)
@@ -320,9 +320,9 @@ void pointers(int **src, int **dest)
              0 ≤ j1 < 10 ⇒
              (*(\old(dest) + j0))[j1] ≡ (*(\old(src) + j0))[j1]);
     ensures result: \result ≡ \old(dest);
-    assigns (*(dest + (0 .. len - 1)))[0 .. 10 - 1], \result;
-    assigns (*(dest + (0 .. len - 1)))[0 .. 10 - 1]
-      \from (*(src + (0 .. len - 1)))[0 .. 10 - 1];
+    assigns (*(dest + (0 .. len / 40 - 1)))[0 .. 10 - 1], \result;
+    assigns (*(dest + (0 .. len / 40 - 1)))[0 .. 10 - 1]
+      \from (*(src + (0 .. len / 40 - 1)))[0 .. 10 - 1];
     assigns \result \from dest;
  */
 int (*memcpy_arr10_int(int (*dest)[10], int const (*src)[10], size_t len))[10]
diff --git a/src/plugins/builtin/tests/string/oracle/memmove.res.oracle b/src/plugins/builtin/tests/string/oracle/memmove.res.oracle
index 7b7122fb41a6f04b5d2fd6dd7f4f7095eca4e90f..193a3f96dbc8823e9775f142f472cc63a98a40b6 100644
--- a/src/plugins/builtin/tests/string/oracle/memmove.res.oracle
+++ b/src/plugins/builtin/tests/string/oracle/memmove.res.oracle
@@ -21,8 +21,8 @@ typedef int named;
         \let __fc_len = len / 4;
         ∀ ℤ j0; 0 ≤ j0 < __fc_len ⇒ *(dest + j0) ≡ *(src + j0);
     ensures result: \result ≡ dest;
-    assigns *(dest + (0 .. len - 1)), \result;
-    assigns *(dest + (0 .. len - 1)) \from *(src + (0 .. len - 1));
+    assigns *(dest + (0 .. len / 4 - 1)), \result;
+    assigns *(dest + (0 .. len / 4 - 1)) \from *(src + (0 .. len / 4 - 1));
     assigns \result \from dest;
  */
 int *memmove_int(int *dest, int const *src, size_t len)
@@ -57,8 +57,8 @@ void with_named(named * /*[10]*/ src, named * /*[10]*/ dest)
         \let __fc_len = len / 8;
         ∀ ℤ j0; 0 ≤ j0 < __fc_len ⇒ *(dest + j0) ≡ *(src + j0);
     ensures result: \result ≡ dest;
-    assigns *(dest + (0 .. len - 1)), \result;
-    assigns *(dest + (0 .. len - 1)) \from *(src + (0 .. len - 1));
+    assigns *(dest + (0 .. len / 8 - 1)), \result;
+    assigns *(dest + (0 .. len / 8 - 1)) \from *(src + (0 .. len / 8 - 1));
     assigns \result \from dest;
  */
 struct X *memmove_st_X(struct X *dest, struct X const *src, size_t len)
@@ -86,8 +86,8 @@ void structure(struct X * /*[10]*/ src, struct X * /*[10]*/ dest)
         \let __fc_len = len / 4;
         ∀ ℤ j0; 0 ≤ j0 < __fc_len ⇒ *(dest + j0) ≡ *(src + j0);
     ensures result: \result ≡ dest;
-    assigns *(dest + (0 .. len - 1)), \result;
-    assigns *(dest + (0 .. len - 1)) \from *(src + (0 .. len - 1));
+    assigns *(dest + (0 .. len / 4 - 1)), \result;
+    assigns *(dest + (0 .. len / 4 - 1)) \from *(src + (0 .. len / 4 - 1));
     assigns \result \from dest;
  */
 int **memmove_ptr_int(int **dest, int * const *src, size_t len)
@@ -119,9 +119,9 @@ void pointers(int ** /*[10]*/ src, int ** /*[10]*/ dest)
           (∀ ℤ j1;
              0 ≤ j1 < 10 ⇒ (*(dest + j0))[j1] ≡ (*(src + j0))[j1]);
     ensures result: \result ≡ dest;
-    assigns (*(dest + (0 .. len - 1)))[0 .. 10 - 1], \result;
-    assigns (*(dest + (0 .. len - 1)))[0 .. 10 - 1]
-      \from (*(src + (0 .. len - 1)))[0 .. 10 - 1];
+    assigns (*(dest + (0 .. len / 40 - 1)))[0 .. 10 - 1], \result;
+    assigns (*(dest + (0 .. len / 40 - 1)))[0 .. 10 - 1]
+      \from (*(src + (0 .. len / 40 - 1)))[0 .. 10 - 1];
     assigns \result \from dest;
  */
 int (*memmove_arr10_int(int (*dest)[10], int const (*src)[10], size_t len))[10]
@@ -182,8 +182,8 @@ typedef int named;
         ∀ ℤ j0;
           0 ≤ j0 < __fc_len ⇒ *(\old(dest) + j0) ≡ *(\old(src) + j0);
     ensures result: \result ≡ \old(dest);
-    assigns *(dest + (0 .. len - 1)), \result;
-    assigns *(dest + (0 .. len - 1)) \from *(src + (0 .. len - 1));
+    assigns *(dest + (0 .. len / 4 - 1)), \result;
+    assigns *(dest + (0 .. len / 4 - 1)) \from *(src + (0 .. len / 4 - 1));
     assigns \result \from dest;
  */
 int *memmove_int(int *dest, int const *src, size_t len)
@@ -221,8 +221,8 @@ void with_named(named *src, named *dest)
         ∀ ℤ j0;
           0 ≤ j0 < __fc_len ⇒ *(\old(dest) + j0) ≡ *(\old(src) + j0);
     ensures result: \result ≡ \old(dest);
-    assigns *(dest + (0 .. len - 1)), \result;
-    assigns *(dest + (0 .. len - 1)) \from *(src + (0 .. len - 1));
+    assigns *(dest + (0 .. len / 8 - 1)), \result;
+    assigns *(dest + (0 .. len / 8 - 1)) \from *(src + (0 .. len / 8 - 1));
     assigns \result \from dest;
  */
 struct X *memmove_st_X(struct X *dest, struct X const *src, size_t len)
@@ -253,8 +253,8 @@ void structure(struct X *src, struct X *dest)
         ∀ ℤ j0;
           0 ≤ j0 < __fc_len ⇒ *(\old(dest) + j0) ≡ *(\old(src) + j0);
     ensures result: \result ≡ \old(dest);
-    assigns *(dest + (0 .. len - 1)), \result;
-    assigns *(dest + (0 .. len - 1)) \from *(src + (0 .. len - 1));
+    assigns *(dest + (0 .. len / 4 - 1)), \result;
+    assigns *(dest + (0 .. len / 4 - 1)) \from *(src + (0 .. len / 4 - 1));
     assigns \result \from dest;
  */
 int **memmove_ptr_int(int **dest, int * const *src, size_t len)
@@ -288,9 +288,9 @@ void pointers(int **src, int **dest)
              0 ≤ j1 < 10 ⇒
              (*(\old(dest) + j0))[j1] ≡ (*(\old(src) + j0))[j1]);
     ensures result: \result ≡ \old(dest);
-    assigns (*(dest + (0 .. len - 1)))[0 .. 10 - 1], \result;
-    assigns (*(dest + (0 .. len - 1)))[0 .. 10 - 1]
-      \from (*(src + (0 .. len - 1)))[0 .. 10 - 1];
+    assigns (*(dest + (0 .. len / 40 - 1)))[0 .. 10 - 1], \result;
+    assigns (*(dest + (0 .. len / 40 - 1)))[0 .. 10 - 1]
+      \from (*(src + (0 .. len / 40 - 1)))[0 .. 10 - 1];
     assigns \result \from dest;
  */
 int (*memmove_arr10_int(int (*dest)[10], int const (*src)[10], size_t len))[10]
diff --git a/src/plugins/builtin/tests/string/oracle/memset_0.res.oracle b/src/plugins/builtin/tests/string/oracle/memset_0.res.oracle
index ba939b95fc59a61aed87716144e0d5bdf4f379c0..84e0ba0e23d2e5c1fc935d7dcabecdbab3cb66bb 100644
--- a/src/plugins/builtin/tests/string/oracle/memset_0.res.oracle
+++ b/src/plugins/builtin/tests/string/oracle/memset_0.res.oracle
@@ -11,18 +11,18 @@ struct X {
 };
 typedef int named;
 /*@ requires in_bounds_value: -128 ≤ value < 128;
-    requires valid_dest: \valid(ptr + (0 .. num - 1));
+    requires valid_dest: \valid(ptr + (0 .. len - 1));
     ensures
-      set_content: ∀ ℤ j0; 0 ≤ j0 < num ⇒ *(ptr + j0) ≡ value;
+      set_content: ∀ ℤ j0; 0 ≤ j0 < len ⇒ *(ptr + j0) ≡ value;
     ensures result: \result ≡ ptr;
-    assigns *(ptr + (0 .. num - 1)), \result;
-    assigns *(ptr + (0 .. num - 1)) \from value;
+    assigns *(ptr + (0 .. len - 1)), \result;
+    assigns *(ptr + (0 .. len - 1)) \from value;
     assigns \result \from ptr;
  */
-char *memset_char(char *ptr, char value, size_t num)
+char *memset_char(char *ptr, char value, size_t len)
 {
   char *__retres;
-  __retres = (char *)memset((void *)ptr,(int)value,num);
+  __retres = (char *)memset((void *)ptr,(int)value,len);
   return __retres;
 }
 
@@ -34,19 +34,19 @@ void chars(char * /*[10]*/ dest)
 }
 
 /*@ requires in_bounds_value: 0 ≤ value < 256;
-    requires valid_dest: \valid(ptr + (0 .. num - 1));
+    requires valid_dest: \valid(ptr + (0 .. len - 1));
     ensures
-      set_content: ∀ ℤ j0; 0 ≤ j0 < num ⇒ *(ptr + j0) ≡ value;
+      set_content: ∀ ℤ j0; 0 ≤ j0 < len ⇒ *(ptr + j0) ≡ value;
     ensures result: \result ≡ ptr;
-    assigns *(ptr + (0 .. num - 1)), \result;
-    assigns *(ptr + (0 .. num - 1)) \from value;
+    assigns *(ptr + (0 .. len - 1)), \result;
+    assigns *(ptr + (0 .. len - 1)) \from value;
     assigns \result \from ptr;
  */
 unsigned char *memset_uchar(unsigned char *ptr, unsigned char value,
-                            size_t num)
+                            size_t len)
 {
   unsigned char *__retres;
-  __retres = (unsigned char *)memset((void *)ptr,(int)value,num);
+  __retres = (unsigned char *)memset((void *)ptr,(int)value,len);
   return __retres;
 }
 
@@ -59,22 +59,22 @@ void uchars(unsigned char * /*[10]*/ dest)
 
 /*@ requires in_bounds_value: -128 ≤ value < 128;
     requires
-      valid_dest: \let __fc_len = num / 10; \valid(ptr + (0 .. __fc_len - 1));
+      valid_dest: \let __fc_len = len / 10; \valid(ptr + (0 .. __fc_len - 1));
     ensures
       set_content:
-        \let __fc_len = num / 10;
+        \let __fc_len = len / 10;
         ∀ ℤ j0;
           0 ≤ j0 < __fc_len ⇒
           (∀ ℤ j1; 0 ≤ j1 < 10 ⇒ (*(ptr + j0))[j1] ≡ value);
     ensures result: \result ≡ ptr;
-    assigns (*(ptr + (0 .. num - 1)))[0 .. 10 - 1], \result;
-    assigns (*(ptr + (0 .. num - 1)))[0 .. 10 - 1] \from value;
+    assigns (*(ptr + (0 .. len / 10 - 1)))[0 .. 10 - 1], \result;
+    assigns (*(ptr + (0 .. len / 10 - 1)))[0 .. 10 - 1] \from value;
     assigns \result \from ptr;
  */
-char (*memset_arr10_char(char (*ptr)[10], char value, size_t num))[10]
+char (*memset_arr10_char(char (*ptr)[10], char value, size_t len))[10]
 {
   char (*__retres)[10];
-  __retres = (char (*)[10])memset((void *)ptr,(int)value,num);
+  __retres = (char (*)[10])memset((void *)ptr,(int)value,len);
   return __retres;
 }
 
@@ -85,22 +85,22 @@ void nested_chars(char (* /*[10]*/ dest)[10])
   return;
 }
 
-/*@ requires aligned_end: num % 4 ≡ 0;
+/*@ requires aligned_end: len % 4 ≡ 0;
     requires
-      valid_dest: \let __fc_len = num / 4; \valid(ptr + (0 .. __fc_len - 1));
+      valid_dest: \let __fc_len = len / 4; \valid(ptr + (0 .. __fc_len - 1));
     ensures
       set_content:
-        \let __fc_len = num / 4;
+        \let __fc_len = len / 4;
         ∀ ℤ j0; 0 ≤ j0 < __fc_len ⇒ *(ptr + j0) ≡ 0;
     ensures result: \result ≡ ptr;
-    assigns *(ptr + (0 .. num - 1)), \result;
-    assigns *(ptr + (0 .. num - 1)) \from \nothing;
+    assigns *(ptr + (0 .. len / 4 - 1)), \result;
+    assigns *(ptr + (0 .. len / 4 - 1)) \from \nothing;
     assigns \result \from ptr;
  */
-int *memset_int_0(int *ptr, size_t num)
+int *memset_int_0(int *ptr, size_t len)
 {
   int *__retres;
-  __retres = (int *)memset((void *)ptr,0,num);
+  __retres = (int *)memset((void *)ptr,0,len);
   return __retres;
 }
 
@@ -111,22 +111,22 @@ void integer(int * /*[10]*/ dest)
   return;
 }
 
-/*@ requires aligned_end: num % 4 ≡ 0;
+/*@ requires aligned_end: len % 4 ≡ 0;
     requires
-      valid_dest: \let __fc_len = num / 4; \valid(ptr + (0 .. __fc_len - 1));
+      valid_dest: \let __fc_len = len / 4; \valid(ptr + (0 .. __fc_len - 1));
     ensures
       set_content:
-        \let __fc_len = num / 4;
+        \let __fc_len = len / 4;
         ∀ ℤ j0; 0 ≤ j0 < __fc_len ⇒ *(ptr + j0) ≡ 0.;
     ensures result: \result ≡ ptr;
-    assigns *(ptr + (0 .. num - 1)), \result;
-    assigns *(ptr + (0 .. num - 1)) \from \nothing;
+    assigns *(ptr + (0 .. len / 4 - 1)), \result;
+    assigns *(ptr + (0 .. len / 4 - 1)) \from \nothing;
     assigns \result \from ptr;
  */
-float *memset_float_0(float *ptr, size_t num)
+float *memset_float_0(float *ptr, size_t len)
 {
   float *__retres;
-  __retres = (float *)memset((void *)ptr,0,num);
+  __retres = (float *)memset((void *)ptr,0,len);
   return __retres;
 }
 
@@ -144,23 +144,23 @@ void with_named(named * /*[10]*/ dest)
   return;
 }
 
-/*@ requires aligned_end: num % 8 ≡ 0;
+/*@ requires aligned_end: len % 8 ≡ 0;
     requires
-      valid_dest: \let __fc_len = num / 8; \valid(ptr + (0 .. __fc_len - 1));
+      valid_dest: \let __fc_len = len / 8; \valid(ptr + (0 .. __fc_len - 1));
     ensures
       set_content:
-        \let __fc_len = num / 8;
+        \let __fc_len = len / 8;
         ∀ ℤ j0;
           0 ≤ j0 < __fc_len ⇒ (ptr + j0)->x ≡ 0 ∧ (ptr + j0)->y ≡ 0;
     ensures result: \result ≡ ptr;
-    assigns *(ptr + (0 .. num - 1)), \result;
-    assigns *(ptr + (0 .. num - 1)) \from \nothing;
+    assigns *(ptr + (0 .. len / 8 - 1)), \result;
+    assigns *(ptr + (0 .. len / 8 - 1)) \from \nothing;
     assigns \result \from ptr;
  */
-struct X *memset_st_X_0(struct X *ptr, size_t num)
+struct X *memset_st_X_0(struct X *ptr, size_t len)
 {
   struct X *__retres;
-  __retres = (struct X *)memset((void *)ptr,0,num);
+  __retres = (struct X *)memset((void *)ptr,0,len);
   return __retres;
 }
 
@@ -171,22 +171,22 @@ void structure(struct X * /*[10]*/ dest)
   return;
 }
 
-/*@ requires aligned_end: num % 4 ≡ 0;
+/*@ requires aligned_end: len % 4 ≡ 0;
     requires
-      valid_dest: \let __fc_len = num / 4; \valid(ptr + (0 .. __fc_len - 1));
+      valid_dest: \let __fc_len = len / 4; \valid(ptr + (0 .. __fc_len - 1));
     ensures
       set_content:
-        \let __fc_len = num / 4;
+        \let __fc_len = len / 4;
         ∀ ℤ j0; 0 ≤ j0 < __fc_len ⇒ *(ptr + j0) ≡ \null;
     ensures result: \result ≡ ptr;
-    assigns *(ptr + (0 .. num - 1)), \result;
-    assigns *(ptr + (0 .. num - 1)) \from \nothing;
+    assigns *(ptr + (0 .. len / 4 - 1)), \result;
+    assigns *(ptr + (0 .. len / 4 - 1)) \from \nothing;
     assigns \result \from ptr;
  */
-int **memset_ptr_int_0(int **ptr, size_t num)
+int **memset_ptr_int_0(int **ptr, size_t len)
 {
   int **__retres;
-  __retres = (int **)memset((void *)ptr,0,num);
+  __retres = (int **)memset((void *)ptr,0,len);
   return __retres;
 }
 
@@ -197,24 +197,24 @@ void pointers(int ** /*[10]*/ dest)
   return;
 }
 
-/*@ requires aligned_end: num % 40 ≡ 0;
+/*@ requires aligned_end: len % 40 ≡ 0;
     requires
-      valid_dest: \let __fc_len = num / 40; \valid(ptr + (0 .. __fc_len - 1));
+      valid_dest: \let __fc_len = len / 40; \valid(ptr + (0 .. __fc_len - 1));
     ensures
       set_content:
-        \let __fc_len = num / 40;
+        \let __fc_len = len / 40;
         ∀ ℤ j0;
           0 ≤ j0 < __fc_len ⇒
           (∀ ℤ j1; 0 ≤ j1 < 10 ⇒ (*(ptr + j0))[j1] ≡ 0);
     ensures result: \result ≡ ptr;
-    assigns (*(ptr + (0 .. num - 1)))[0 .. 10 - 1], \result;
-    assigns (*(ptr + (0 .. num - 1)))[0 .. 10 - 1] \from \nothing;
+    assigns (*(ptr + (0 .. len / 40 - 1)))[0 .. 10 - 1], \result;
+    assigns (*(ptr + (0 .. len / 40 - 1)))[0 .. 10 - 1] \from \nothing;
     assigns \result \from ptr;
  */
-int (*memset_arr10_int_0(int (*ptr)[10], size_t num))[10]
+int (*memset_arr10_int_0(int (*ptr)[10], size_t len))[10]
 {
   int (*__retres)[10];
-  __retres = (int (*)[10])memset((void *)ptr,0,num);
+  __retres = (int (*)[10])memset((void *)ptr,0,len);
   return __retres;
 }
 
@@ -266,20 +266,20 @@ struct X {
 };
 typedef int named;
 /*@ requires in_bounds_value: -128 ≤ value < 128;
-    requires valid_dest: \valid(ptr + (0 .. num - 1));
+    requires valid_dest: \valid(ptr + (0 .. len - 1));
     ensures
       set_content:
         ∀ ℤ j0;
-          0 ≤ j0 < \old(num) ⇒ *(\old(ptr) + j0) ≡ \old(value);
+          0 ≤ j0 < \old(len) ⇒ *(\old(ptr) + j0) ≡ \old(value);
     ensures result: \result ≡ \old(ptr);
-    assigns *(ptr + (0 .. num - 1)), \result;
-    assigns *(ptr + (0 .. num - 1)) \from value;
+    assigns *(ptr + (0 .. len - 1)), \result;
+    assigns *(ptr + (0 .. len - 1)) \from value;
     assigns \result \from ptr;
  */
-char *memset_char(char *ptr, char value, size_t num)
+char *memset_char(char *ptr, char value, size_t len)
 {
   char *__retres;
-  __retres = (char *)memset((void *)ptr,(int)value,num);
+  __retres = (char *)memset((void *)ptr,(int)value,len);
   return __retres;
 }
 
@@ -291,21 +291,21 @@ void chars(char *dest)
 }
 
 /*@ requires in_bounds_value: 0 ≤ value < 256;
-    requires valid_dest: \valid(ptr + (0 .. num - 1));
+    requires valid_dest: \valid(ptr + (0 .. len - 1));
     ensures
       set_content:
         ∀ ℤ j0;
-          0 ≤ j0 < \old(num) ⇒ *(\old(ptr) + j0) ≡ \old(value);
+          0 ≤ j0 < \old(len) ⇒ *(\old(ptr) + j0) ≡ \old(value);
     ensures result: \result ≡ \old(ptr);
-    assigns *(ptr + (0 .. num - 1)), \result;
-    assigns *(ptr + (0 .. num - 1)) \from value;
+    assigns *(ptr + (0 .. len - 1)), \result;
+    assigns *(ptr + (0 .. len - 1)) \from value;
     assigns \result \from ptr;
  */
 unsigned char *memset_uchar(unsigned char *ptr, unsigned char value,
-                            size_t num)
+                            size_t len)
 {
   unsigned char *__retres;
-  __retres = (unsigned char *)memset((void *)ptr,(int)value,num);
+  __retres = (unsigned char *)memset((void *)ptr,(int)value,len);
   return __retres;
 }
 
@@ -318,23 +318,23 @@ void uchars(unsigned char *dest)
 
 /*@ requires in_bounds_value: -128 ≤ value < 128;
     requires
-      valid_dest: \let __fc_len = num / 10; \valid(ptr + (0 .. __fc_len - 1));
+      valid_dest: \let __fc_len = len / 10; \valid(ptr + (0 .. __fc_len - 1));
     ensures
       set_content:
-        \let __fc_len = \old(num) / 10;
+        \let __fc_len = \old(len) / 10;
         ∀ ℤ j0;
           0 ≤ j0 < __fc_len ⇒
           (∀ ℤ j1;
              0 ≤ j1 < 10 ⇒ (*(\old(ptr) + j0))[j1] ≡ \old(value));
     ensures result: \result ≡ \old(ptr);
-    assigns (*(ptr + (0 .. num - 1)))[0 .. 10 - 1], \result;
-    assigns (*(ptr + (0 .. num - 1)))[0 .. 10 - 1] \from value;
+    assigns (*(ptr + (0 .. len / 10 - 1)))[0 .. 10 - 1], \result;
+    assigns (*(ptr + (0 .. len / 10 - 1)))[0 .. 10 - 1] \from value;
     assigns \result \from ptr;
  */
-char (*memset_arr10_char(char (*ptr)[10], char value, size_t num))[10]
+char (*memset_arr10_char(char (*ptr)[10], char value, size_t len))[10]
 {
   char (*__retres)[10];
-  __retres = (char (*)[10])memset((void *)ptr,(int)value,num);
+  __retres = (char (*)[10])memset((void *)ptr,(int)value,len);
   return __retres;
 }
 
@@ -345,22 +345,22 @@ void nested_chars(char (*dest)[10])
   return;
 }
 
-/*@ requires aligned_end: num % 4 ≡ 0;
+/*@ requires aligned_end: len % 4 ≡ 0;
     requires
-      valid_dest: \let __fc_len = num / 4; \valid(ptr + (0 .. __fc_len - 1));
+      valid_dest: \let __fc_len = len / 4; \valid(ptr + (0 .. __fc_len - 1));
     ensures
       set_content:
-        \let __fc_len = \old(num) / 4;
+        \let __fc_len = \old(len) / 4;
         ∀ ℤ j0; 0 ≤ j0 < __fc_len ⇒ *(\old(ptr) + j0) ≡ 0;
     ensures result: \result ≡ \old(ptr);
-    assigns *(ptr + (0 .. num - 1)), \result;
-    assigns *(ptr + (0 .. num - 1)) \from \nothing;
+    assigns *(ptr + (0 .. len / 4 - 1)), \result;
+    assigns *(ptr + (0 .. len / 4 - 1)) \from \nothing;
     assigns \result \from ptr;
  */
-int *memset_int_0(int *ptr, size_t num)
+int *memset_int_0(int *ptr, size_t len)
 {
   int *__retres;
-  __retres = (int *)memset((void *)ptr,0,num);
+  __retres = (int *)memset((void *)ptr,0,len);
   return __retres;
 }
 
@@ -371,22 +371,22 @@ void integer(int *dest)
   return;
 }
 
-/*@ requires aligned_end: num % 4 ≡ 0;
+/*@ requires aligned_end: len % 4 ≡ 0;
     requires
-      valid_dest: \let __fc_len = num / 4; \valid(ptr + (0 .. __fc_len - 1));
+      valid_dest: \let __fc_len = len / 4; \valid(ptr + (0 .. __fc_len - 1));
     ensures
       set_content:
-        \let __fc_len = \old(num) / 4;
+        \let __fc_len = \old(len) / 4;
         ∀ ℤ j0; 0 ≤ j0 < __fc_len ⇒ *(\old(ptr) + j0) ≡ 0.;
     ensures result: \result ≡ \old(ptr);
-    assigns *(ptr + (0 .. num - 1)), \result;
-    assigns *(ptr + (0 .. num - 1)) \from \nothing;
+    assigns *(ptr + (0 .. len / 4 - 1)), \result;
+    assigns *(ptr + (0 .. len / 4 - 1)) \from \nothing;
     assigns \result \from ptr;
  */
-float *memset_float_0(float *ptr, size_t num)
+float *memset_float_0(float *ptr, size_t len)
 {
   float *__retres;
-  __retres = (float *)memset((void *)ptr,0,num);
+  __retres = (float *)memset((void *)ptr,0,len);
   return __retres;
 }
 
@@ -404,24 +404,24 @@ void with_named(named *dest)
   return;
 }
 
-/*@ requires aligned_end: num % 8 ≡ 0;
+/*@ requires aligned_end: len % 8 ≡ 0;
     requires
-      valid_dest: \let __fc_len = num / 8; \valid(ptr + (0 .. __fc_len - 1));
+      valid_dest: \let __fc_len = len / 8; \valid(ptr + (0 .. __fc_len - 1));
     ensures
       set_content:
-        \let __fc_len = \old(num) / 8;
+        \let __fc_len = \old(len) / 8;
         ∀ ℤ j0;
           0 ≤ j0 < __fc_len ⇒
           (\old(ptr) + j0)->x ≡ 0 ∧ (\old(ptr) + j0)->y ≡ 0;
     ensures result: \result ≡ \old(ptr);
-    assigns *(ptr + (0 .. num - 1)), \result;
-    assigns *(ptr + (0 .. num - 1)) \from \nothing;
+    assigns *(ptr + (0 .. len / 8 - 1)), \result;
+    assigns *(ptr + (0 .. len / 8 - 1)) \from \nothing;
     assigns \result \from ptr;
  */
-struct X *memset_st_X_0(struct X *ptr, size_t num)
+struct X *memset_st_X_0(struct X *ptr, size_t len)
 {
   struct X *__retres;
-  __retres = (struct X *)memset((void *)ptr,0,num);
+  __retres = (struct X *)memset((void *)ptr,0,len);
   return __retres;
 }
 
@@ -432,22 +432,22 @@ void structure(struct X *dest)
   return;
 }
 
-/*@ requires aligned_end: num % 4 ≡ 0;
+/*@ requires aligned_end: len % 4 ≡ 0;
     requires
-      valid_dest: \let __fc_len = num / 4; \valid(ptr + (0 .. __fc_len - 1));
+      valid_dest: \let __fc_len = len / 4; \valid(ptr + (0 .. __fc_len - 1));
     ensures
       set_content:
-        \let __fc_len = \old(num) / 4;
+        \let __fc_len = \old(len) / 4;
         ∀ ℤ j0; 0 ≤ j0 < __fc_len ⇒ *(\old(ptr) + j0) ≡ \null;
     ensures result: \result ≡ \old(ptr);
-    assigns *(ptr + (0 .. num - 1)), \result;
-    assigns *(ptr + (0 .. num - 1)) \from \nothing;
+    assigns *(ptr + (0 .. len / 4 - 1)), \result;
+    assigns *(ptr + (0 .. len / 4 - 1)) \from \nothing;
     assigns \result \from ptr;
  */
-int **memset_ptr_int_0(int **ptr, size_t num)
+int **memset_ptr_int_0(int **ptr, size_t len)
 {
   int **__retres;
-  __retres = (int **)memset((void *)ptr,0,num);
+  __retres = (int **)memset((void *)ptr,0,len);
   return __retres;
 }
 
@@ -458,24 +458,24 @@ void pointers(int **dest)
   return;
 }
 
-/*@ requires aligned_end: num % 40 ≡ 0;
+/*@ requires aligned_end: len % 40 ≡ 0;
     requires
-      valid_dest: \let __fc_len = num / 40; \valid(ptr + (0 .. __fc_len - 1));
+      valid_dest: \let __fc_len = len / 40; \valid(ptr + (0 .. __fc_len - 1));
     ensures
       set_content:
-        \let __fc_len = \old(num) / 40;
+        \let __fc_len = \old(len) / 40;
         ∀ ℤ j0;
           0 ≤ j0 < __fc_len ⇒
           (∀ ℤ j1; 0 ≤ j1 < 10 ⇒ (*(\old(ptr) + j0))[j1] ≡ 0);
     ensures result: \result ≡ \old(ptr);
-    assigns (*(ptr + (0 .. num - 1)))[0 .. 10 - 1], \result;
-    assigns (*(ptr + (0 .. num - 1)))[0 .. 10 - 1] \from \nothing;
+    assigns (*(ptr + (0 .. len / 40 - 1)))[0 .. 10 - 1], \result;
+    assigns (*(ptr + (0 .. len / 40 - 1)))[0 .. 10 - 1] \from \nothing;
     assigns \result \from ptr;
  */
-int (*memset_arr10_int_0(int (*ptr)[10], size_t num))[10]
+int (*memset_arr10_int_0(int (*ptr)[10], size_t len))[10]
 {
   int (*__retres)[10];
-  __retres = (int (*)[10])memset((void *)ptr,0,num);
+  __retres = (int (*)[10])memset((void *)ptr,0,len);
   return __retres;
 }
 
diff --git a/src/plugins/builtin/tests/string/oracle/memset_FF.res.oracle b/src/plugins/builtin/tests/string/oracle/memset_FF.res.oracle
index 1115c29a5acac22ef4f0682015b31a47d5c61804..e45698fc0a39aec442985387420c593b29868ba1 100644
--- a/src/plugins/builtin/tests/string/oracle/memset_FF.res.oracle
+++ b/src/plugins/builtin/tests/string/oracle/memset_FF.res.oracle
@@ -11,18 +11,18 @@ struct X {
 };
 typedef int named;
 /*@ requires in_bounds_value: -128 ≤ value < 128;
-    requires valid_dest: \valid(ptr + (0 .. num - 1));
+    requires valid_dest: \valid(ptr + (0 .. len - 1));
     ensures
-      set_content: ∀ ℤ j0; 0 ≤ j0 < num ⇒ *(ptr + j0) ≡ value;
+      set_content: ∀ ℤ j0; 0 ≤ j0 < len ⇒ *(ptr + j0) ≡ value;
     ensures result: \result ≡ ptr;
-    assigns *(ptr + (0 .. num - 1)), \result;
-    assigns *(ptr + (0 .. num - 1)) \from value;
+    assigns *(ptr + (0 .. len - 1)), \result;
+    assigns *(ptr + (0 .. len - 1)) \from value;
     assigns \result \from ptr;
  */
-char *memset_char(char *ptr, char value, size_t num)
+char *memset_char(char *ptr, char value, size_t len)
 {
   char *__retres;
-  __retres = (char *)memset((void *)ptr,(int)value,num);
+  __retres = (char *)memset((void *)ptr,(int)value,len);
   return __retres;
 }
 
@@ -34,19 +34,19 @@ void chars(char * /*[10]*/ dest)
 }
 
 /*@ requires in_bounds_value: 0 ≤ value < 256;
-    requires valid_dest: \valid(ptr + (0 .. num - 1));
+    requires valid_dest: \valid(ptr + (0 .. len - 1));
     ensures
-      set_content: ∀ ℤ j0; 0 ≤ j0 < num ⇒ *(ptr + j0) ≡ value;
+      set_content: ∀ ℤ j0; 0 ≤ j0 < len ⇒ *(ptr + j0) ≡ value;
     ensures result: \result ≡ ptr;
-    assigns *(ptr + (0 .. num - 1)), \result;
-    assigns *(ptr + (0 .. num - 1)) \from value;
+    assigns *(ptr + (0 .. len - 1)), \result;
+    assigns *(ptr + (0 .. len - 1)) \from value;
     assigns \result \from ptr;
  */
 unsigned char *memset_uchar(unsigned char *ptr, unsigned char value,
-                            size_t num)
+                            size_t len)
 {
   unsigned char *__retres;
-  __retres = (unsigned char *)memset((void *)ptr,(int)value,num);
+  __retres = (unsigned char *)memset((void *)ptr,(int)value,len);
   return __retres;
 }
 
@@ -60,22 +60,22 @@ void uchars(unsigned char * /*[10]*/ dest)
 
 /*@ requires in_bounds_value: -128 ≤ value < 128;
     requires
-      valid_dest: \let __fc_len = num / 10; \valid(ptr + (0 .. __fc_len - 1));
+      valid_dest: \let __fc_len = len / 10; \valid(ptr + (0 .. __fc_len - 1));
     ensures
       set_content:
-        \let __fc_len = num / 10;
+        \let __fc_len = len / 10;
         ∀ ℤ j0;
           0 ≤ j0 < __fc_len ⇒
           (∀ ℤ j1; 0 ≤ j1 < 10 ⇒ (*(ptr + j0))[j1] ≡ value);
     ensures result: \result ≡ ptr;
-    assigns (*(ptr + (0 .. num - 1)))[0 .. 10 - 1], \result;
-    assigns (*(ptr + (0 .. num - 1)))[0 .. 10 - 1] \from value;
+    assigns (*(ptr + (0 .. len / 10 - 1)))[0 .. 10 - 1], \result;
+    assigns (*(ptr + (0 .. len / 10 - 1)))[0 .. 10 - 1] \from value;
     assigns \result \from ptr;
  */
-char (*memset_arr10_char(char (*ptr)[10], char value, size_t num))[10]
+char (*memset_arr10_char(char (*ptr)[10], char value, size_t len))[10]
 {
   char (*__retres)[10];
-  __retres = (char (*)[10])memset((void *)ptr,(int)value,num);
+  __retres = (char (*)[10])memset((void *)ptr,(int)value,len);
   return __retres;
 }
 
@@ -86,22 +86,22 @@ void nested_chars(char (* /*[10]*/ dest)[10])
   return;
 }
 
-/*@ requires aligned_end: num % 4 ≡ 0;
+/*@ requires aligned_end: len % 4 ≡ 0;
     requires
-      valid_dest: \let __fc_len = num / 4; \valid(ptr + (0 .. __fc_len - 1));
+      valid_dest: \let __fc_len = len / 4; \valid(ptr + (0 .. __fc_len - 1));
     ensures
       set_content:
-        \let __fc_len = num / 4;
+        \let __fc_len = len / 4;
         ∀ ℤ j0; 0 ≤ j0 < __fc_len ⇒ *(ptr + j0) ≡ -2147483648;
     ensures result: \result ≡ ptr;
-    assigns *(ptr + (0 .. num - 1)), \result;
-    assigns *(ptr + (0 .. num - 1)) \from \nothing;
+    assigns *(ptr + (0 .. len / 4 - 1)), \result;
+    assigns *(ptr + (0 .. len / 4 - 1)) \from \nothing;
     assigns \result \from ptr;
  */
-int *memset_int_FF(int *ptr, size_t num)
+int *memset_int_FF(int *ptr, size_t len)
 {
   int *__retres;
-  __retres = (int *)memset((void *)ptr,255,num);
+  __retres = (int *)memset((void *)ptr,255,len);
   return __retres;
 }
 
@@ -112,22 +112,22 @@ void integer(int * /*[10]*/ dest)
   return;
 }
 
-/*@ requires aligned_end: num % 4 ≡ 0;
+/*@ requires aligned_end: len % 4 ≡ 0;
     requires
-      valid_dest: \let __fc_len = num / 4; \valid(ptr + (0 .. __fc_len - 1));
+      valid_dest: \let __fc_len = len / 4; \valid(ptr + (0 .. __fc_len - 1));
     ensures
       set_content:
-        \let __fc_len = num / 4;
+        \let __fc_len = len / 4;
         ∀ ℤ j0; 0 ≤ j0 < __fc_len ⇒ *(ptr + j0) ≡ 4294967295;
     ensures result: \result ≡ ptr;
-    assigns *(ptr + (0 .. num - 1)), \result;
-    assigns *(ptr + (0 .. num - 1)) \from \nothing;
+    assigns *(ptr + (0 .. len / 4 - 1)), \result;
+    assigns *(ptr + (0 .. len / 4 - 1)) \from \nothing;
     assigns \result \from ptr;
  */
-unsigned int *memset_uint_FF(unsigned int *ptr, size_t num)
+unsigned int *memset_uint_FF(unsigned int *ptr, size_t len)
 {
   unsigned int *__retres;
-  __retres = (unsigned int *)memset((void *)ptr,255,num);
+  __retres = (unsigned int *)memset((void *)ptr,255,len);
   return __retres;
 }
 
@@ -139,22 +139,22 @@ void unsigned_integer(unsigned int * /*[10]*/ dest)
   return;
 }
 
-/*@ requires aligned_end: num % 4 ≡ 0;
+/*@ requires aligned_end: len % 4 ≡ 0;
     requires
-      valid_dest: \let __fc_len = num / 4; \valid(ptr + (0 .. __fc_len - 1));
+      valid_dest: \let __fc_len = len / 4; \valid(ptr + (0 .. __fc_len - 1));
     ensures
       set_content:
-        \let __fc_len = num / 4;
+        \let __fc_len = len / 4;
         ∀ ℤ j0; 0 ≤ j0 < __fc_len ⇒ *(ptr + j0) ≡ -2147483648;
     ensures result: \result ≡ ptr;
-    assigns *(ptr + (0 .. num - 1)), \result;
-    assigns *(ptr + (0 .. num - 1)) \from \nothing;
+    assigns *(ptr + (0 .. len / 4 - 1)), \result;
+    assigns *(ptr + (0 .. len / 4 - 1)) \from \nothing;
     assigns \result \from ptr;
  */
-long *memset_long_FF(long *ptr, size_t num)
+long *memset_long_FF(long *ptr, size_t len)
 {
   long *__retres;
-  __retres = (long *)memset((void *)ptr,255,num);
+  __retres = (long *)memset((void *)ptr,255,len);
   return __retres;
 }
 
@@ -165,22 +165,22 @@ void long_integer(long * /*[10]*/ dest)
   return;
 }
 
-/*@ requires aligned_end: num % 4 ≡ 0;
+/*@ requires aligned_end: len % 4 ≡ 0;
     requires
-      valid_dest: \let __fc_len = num / 4; \valid(ptr + (0 .. __fc_len - 1));
+      valid_dest: \let __fc_len = len / 4; \valid(ptr + (0 .. __fc_len - 1));
     ensures
       set_content:
-        \let __fc_len = num / 4;
+        \let __fc_len = len / 4;
         ∀ ℤ j0; 0 ≤ j0 < __fc_len ⇒ *(ptr + j0) ≡ 4294967295;
     ensures result: \result ≡ ptr;
-    assigns *(ptr + (0 .. num - 1)), \result;
-    assigns *(ptr + (0 .. num - 1)) \from \nothing;
+    assigns *(ptr + (0 .. len / 4 - 1)), \result;
+    assigns *(ptr + (0 .. len / 4 - 1)) \from \nothing;
     assigns \result \from ptr;
  */
-unsigned long *memset_ulong_FF(unsigned long *ptr, size_t num)
+unsigned long *memset_ulong_FF(unsigned long *ptr, size_t len)
 {
   unsigned long *__retres;
-  __retres = (unsigned long *)memset((void *)ptr,255,num);
+  __retres = (unsigned long *)memset((void *)ptr,255,len);
   return __retres;
 }
 
@@ -192,23 +192,23 @@ void unsigned_long_integer(unsigned long * /*[10]*/ dest)
   return;
 }
 
-/*@ requires aligned_end: num % 8 ≡ 0;
+/*@ requires aligned_end: len % 8 ≡ 0;
     requires
-      valid_dest: \let __fc_len = num / 8; \valid(ptr + (0 .. __fc_len - 1));
+      valid_dest: \let __fc_len = len / 8; \valid(ptr + (0 .. __fc_len - 1));
     ensures
       set_content:
-        \let __fc_len = num / 8;
+        \let __fc_len = len / 8;
         ∀ ℤ j0;
           0 ≤ j0 < __fc_len ⇒ *(ptr + j0) ≡ -9223372036854775808;
     ensures result: \result ≡ ptr;
-    assigns *(ptr + (0 .. num - 1)), \result;
-    assigns *(ptr + (0 .. num - 1)) \from \nothing;
+    assigns *(ptr + (0 .. len / 8 - 1)), \result;
+    assigns *(ptr + (0 .. len / 8 - 1)) \from \nothing;
     assigns \result \from ptr;
  */
-long long *memset_llong_FF(long long *ptr, size_t num)
+long long *memset_llong_FF(long long *ptr, size_t len)
 {
   long long *__retres;
-  __retres = (long long *)memset((void *)ptr,255,num);
+  __retres = (long long *)memset((void *)ptr,255,len);
   return __retres;
 }
 
@@ -220,23 +220,23 @@ void long_long_integer(long long * /*[10]*/ dest)
   return;
 }
 
-/*@ requires aligned_end: num % 8 ≡ 0;
+/*@ requires aligned_end: len % 8 ≡ 0;
     requires
-      valid_dest: \let __fc_len = num / 8; \valid(ptr + (0 .. __fc_len - 1));
+      valid_dest: \let __fc_len = len / 8; \valid(ptr + (0 .. __fc_len - 1));
     ensures
       set_content:
-        \let __fc_len = num / 8;
+        \let __fc_len = len / 8;
         ∀ ℤ j0;
           0 ≤ j0 < __fc_len ⇒ *(ptr + j0) ≡ 18446744073709551615;
     ensures result: \result ≡ ptr;
-    assigns *(ptr + (0 .. num - 1)), \result;
-    assigns *(ptr + (0 .. num - 1)) \from \nothing;
+    assigns *(ptr + (0 .. len / 8 - 1)), \result;
+    assigns *(ptr + (0 .. len / 8 - 1)) \from \nothing;
     assigns \result \from ptr;
  */
-unsigned long long *memset_ullong_FF(unsigned long long *ptr, size_t num)
+unsigned long long *memset_ullong_FF(unsigned long long *ptr, size_t len)
 {
   unsigned long long *__retres;
-  __retres = (unsigned long long *)memset((void *)ptr,255,num);
+  __retres = (unsigned long long *)memset((void *)ptr,255,len);
   return __retres;
 }
 
@@ -248,22 +248,22 @@ void unsigned_long_long_integer(unsigned long long * /*[10]*/ dest)
   return;
 }
 
-/*@ requires aligned_end: num % 4 ≡ 0;
+/*@ requires aligned_end: len % 4 ≡ 0;
     requires
-      valid_dest: \let __fc_len = num / 4; \valid(ptr + (0 .. __fc_len - 1));
+      valid_dest: \let __fc_len = len / 4; \valid(ptr + (0 .. __fc_len - 1));
     ensures
       set_content:
-        \let __fc_len = num / 4;
+        \let __fc_len = len / 4;
         ∀ ℤ j0; 0 ≤ j0 < __fc_len ⇒ \is_NaN(*(ptr + j0));
     ensures result: \result ≡ ptr;
-    assigns *(ptr + (0 .. num - 1)), \result;
-    assigns *(ptr + (0 .. num - 1)) \from \nothing;
+    assigns *(ptr + (0 .. len / 4 - 1)), \result;
+    assigns *(ptr + (0 .. len / 4 - 1)) \from \nothing;
     assigns \result \from ptr;
  */
-float *memset_float_FF(float *ptr, size_t num)
+float *memset_float_FF(float *ptr, size_t len)
 {
   float *__retres;
-  __retres = (float *)memset((void *)ptr,255,num);
+  __retres = (float *)memset((void *)ptr,255,len);
   return __retres;
 }
 
@@ -281,24 +281,24 @@ void with_named(named * /*[10]*/ dest)
   return;
 }
 
-/*@ requires aligned_end: num % 8 ≡ 0;
+/*@ requires aligned_end: len % 8 ≡ 0;
     requires
-      valid_dest: \let __fc_len = num / 8; \valid(ptr + (0 .. __fc_len - 1));
+      valid_dest: \let __fc_len = len / 8; \valid(ptr + (0 .. __fc_len - 1));
     ensures
       set_content:
-        \let __fc_len = num / 8;
+        \let __fc_len = len / 8;
         ∀ ℤ j0;
           0 ≤ j0 < __fc_len ⇒
           (ptr + j0)->x ≡ -2147483648 ∧ (ptr + j0)->y ≡ -2147483648;
     ensures result: \result ≡ ptr;
-    assigns *(ptr + (0 .. num - 1)), \result;
-    assigns *(ptr + (0 .. num - 1)) \from \nothing;
+    assigns *(ptr + (0 .. len / 8 - 1)), \result;
+    assigns *(ptr + (0 .. len / 8 - 1)) \from \nothing;
     assigns \result \from ptr;
  */
-struct X *memset_st_X_FF(struct X *ptr, size_t num)
+struct X *memset_st_X_FF(struct X *ptr, size_t len)
 {
   struct X *__retres;
-  __retres = (struct X *)memset((void *)ptr,255,num);
+  __retres = (struct X *)memset((void *)ptr,255,len);
   return __retres;
 }
 
@@ -309,22 +309,22 @@ void structure(struct X * /*[10]*/ dest)
   return;
 }
 
-/*@ requires aligned_end: num % 4 ≡ 0;
+/*@ requires aligned_end: len % 4 ≡ 0;
     requires
-      valid_dest: \let __fc_len = num / 4; \valid(ptr + (0 .. __fc_len - 1));
+      valid_dest: \let __fc_len = len / 4; \valid(ptr + (0 .. __fc_len - 1));
     ensures
       set_content:
-        \let __fc_len = num / 4;
+        \let __fc_len = len / 4;
         ∀ ℤ j0; 0 ≤ j0 < __fc_len ⇒ ¬\valid_read(*(ptr + j0));
     ensures result: \result ≡ ptr;
-    assigns *(ptr + (0 .. num - 1)), \result;
-    assigns *(ptr + (0 .. num - 1)) \from \nothing;
+    assigns *(ptr + (0 .. len / 4 - 1)), \result;
+    assigns *(ptr + (0 .. len / 4 - 1)) \from \nothing;
     assigns \result \from ptr;
  */
-int **memset_ptr_int_FF(int **ptr, size_t num)
+int **memset_ptr_int_FF(int **ptr, size_t len)
 {
   int **__retres;
-  __retres = (int **)memset((void *)ptr,255,num);
+  __retres = (int **)memset((void *)ptr,255,len);
   return __retres;
 }
 
@@ -335,24 +335,24 @@ void pointers(int ** /*[10]*/ dest)
   return;
 }
 
-/*@ requires aligned_end: num % 40 ≡ 0;
+/*@ requires aligned_end: len % 40 ≡ 0;
     requires
-      valid_dest: \let __fc_len = num / 40; \valid(ptr + (0 .. __fc_len - 1));
+      valid_dest: \let __fc_len = len / 40; \valid(ptr + (0 .. __fc_len - 1));
     ensures
       set_content:
-        \let __fc_len = num / 40;
+        \let __fc_len = len / 40;
         ∀ ℤ j0;
           0 ≤ j0 < __fc_len ⇒
           (∀ ℤ j1; 0 ≤ j1 < 10 ⇒ (*(ptr + j0))[j1] ≡ -2147483648);
     ensures result: \result ≡ ptr;
-    assigns (*(ptr + (0 .. num - 1)))[0 .. 10 - 1], \result;
-    assigns (*(ptr + (0 .. num - 1)))[0 .. 10 - 1] \from \nothing;
+    assigns (*(ptr + (0 .. len / 40 - 1)))[0 .. 10 - 1], \result;
+    assigns (*(ptr + (0 .. len / 40 - 1)))[0 .. 10 - 1] \from \nothing;
     assigns \result \from ptr;
  */
-int (*memset_arr10_int_FF(int (*ptr)[10], size_t num))[10]
+int (*memset_arr10_int_FF(int (*ptr)[10], size_t len))[10]
 {
   int (*__retres)[10];
-  __retres = (int (*)[10])memset((void *)ptr,255,num);
+  __retres = (int (*)[10])memset((void *)ptr,255,len);
   return __retres;
 }
 
@@ -414,20 +414,20 @@ struct X {
 };
 typedef int named;
 /*@ requires in_bounds_value: -128 ≤ value < 128;
-    requires valid_dest: \valid(ptr + (0 .. num - 1));
+    requires valid_dest: \valid(ptr + (0 .. len - 1));
     ensures
       set_content:
         ∀ ℤ j0;
-          0 ≤ j0 < \old(num) ⇒ *(\old(ptr) + j0) ≡ \old(value);
+          0 ≤ j0 < \old(len) ⇒ *(\old(ptr) + j0) ≡ \old(value);
     ensures result: \result ≡ \old(ptr);
-    assigns *(ptr + (0 .. num - 1)), \result;
-    assigns *(ptr + (0 .. num - 1)) \from value;
+    assigns *(ptr + (0 .. len - 1)), \result;
+    assigns *(ptr + (0 .. len - 1)) \from value;
     assigns \result \from ptr;
  */
-char *memset_char(char *ptr, char value, size_t num)
+char *memset_char(char *ptr, char value, size_t len)
 {
   char *__retres;
-  __retres = (char *)memset((void *)ptr,(int)value,num);
+  __retres = (char *)memset((void *)ptr,(int)value,len);
   return __retres;
 }
 
@@ -439,21 +439,21 @@ void chars(char *dest)
 }
 
 /*@ requires in_bounds_value: 0 ≤ value < 256;
-    requires valid_dest: \valid(ptr + (0 .. num - 1));
+    requires valid_dest: \valid(ptr + (0 .. len - 1));
     ensures
       set_content:
         ∀ ℤ j0;
-          0 ≤ j0 < \old(num) ⇒ *(\old(ptr) + j0) ≡ \old(value);
+          0 ≤ j0 < \old(len) ⇒ *(\old(ptr) + j0) ≡ \old(value);
     ensures result: \result ≡ \old(ptr);
-    assigns *(ptr + (0 .. num - 1)), \result;
-    assigns *(ptr + (0 .. num - 1)) \from value;
+    assigns *(ptr + (0 .. len - 1)), \result;
+    assigns *(ptr + (0 .. len - 1)) \from value;
     assigns \result \from ptr;
  */
 unsigned char *memset_uchar(unsigned char *ptr, unsigned char value,
-                            size_t num)
+                            size_t len)
 {
   unsigned char *__retres;
-  __retres = (unsigned char *)memset((void *)ptr,(int)value,num);
+  __retres = (unsigned char *)memset((void *)ptr,(int)value,len);
   return __retres;
 }
 
@@ -467,23 +467,23 @@ void uchars(unsigned char *dest)
 
 /*@ requires in_bounds_value: -128 ≤ value < 128;
     requires
-      valid_dest: \let __fc_len = num / 10; \valid(ptr + (0 .. __fc_len - 1));
+      valid_dest: \let __fc_len = len / 10; \valid(ptr + (0 .. __fc_len - 1));
     ensures
       set_content:
-        \let __fc_len = \old(num) / 10;
+        \let __fc_len = \old(len) / 10;
         ∀ ℤ j0;
           0 ≤ j0 < __fc_len ⇒
           (∀ ℤ j1;
              0 ≤ j1 < 10 ⇒ (*(\old(ptr) + j0))[j1] ≡ \old(value));
     ensures result: \result ≡ \old(ptr);
-    assigns (*(ptr + (0 .. num - 1)))[0 .. 10 - 1], \result;
-    assigns (*(ptr + (0 .. num - 1)))[0 .. 10 - 1] \from value;
+    assigns (*(ptr + (0 .. len / 10 - 1)))[0 .. 10 - 1], \result;
+    assigns (*(ptr + (0 .. len / 10 - 1)))[0 .. 10 - 1] \from value;
     assigns \result \from ptr;
  */
-char (*memset_arr10_char(char (*ptr)[10], char value, size_t num))[10]
+char (*memset_arr10_char(char (*ptr)[10], char value, size_t len))[10]
 {
   char (*__retres)[10];
-  __retres = (char (*)[10])memset((void *)ptr,(int)value,num);
+  __retres = (char (*)[10])memset((void *)ptr,(int)value,len);
   return __retres;
 }
 
@@ -494,22 +494,22 @@ void nested_chars(char (*dest)[10])
   return;
 }
 
-/*@ requires aligned_end: num % 4 ≡ 0;
+/*@ requires aligned_end: len % 4 ≡ 0;
     requires
-      valid_dest: \let __fc_len = num / 4; \valid(ptr + (0 .. __fc_len - 1));
+      valid_dest: \let __fc_len = len / 4; \valid(ptr + (0 .. __fc_len - 1));
     ensures
       set_content:
-        \let __fc_len = \old(num) / 4;
+        \let __fc_len = \old(len) / 4;
         ∀ ℤ j0; 0 ≤ j0 < __fc_len ⇒ *(\old(ptr) + j0) ≡ -2147483648;
     ensures result: \result ≡ \old(ptr);
-    assigns *(ptr + (0 .. num - 1)), \result;
-    assigns *(ptr + (0 .. num - 1)) \from \nothing;
+    assigns *(ptr + (0 .. len / 4 - 1)), \result;
+    assigns *(ptr + (0 .. len / 4 - 1)) \from \nothing;
     assigns \result \from ptr;
  */
-int *memset_int_FF(int *ptr, size_t num)
+int *memset_int_FF(int *ptr, size_t len)
 {
   int *__retres;
-  __retres = (int *)memset((void *)ptr,255,num);
+  __retres = (int *)memset((void *)ptr,255,len);
   return __retres;
 }
 
@@ -520,22 +520,22 @@ void integer(int *dest)
   return;
 }
 
-/*@ requires aligned_end: num % 4 ≡ 0;
+/*@ requires aligned_end: len % 4 ≡ 0;
     requires
-      valid_dest: \let __fc_len = num / 4; \valid(ptr + (0 .. __fc_len - 1));
+      valid_dest: \let __fc_len = len / 4; \valid(ptr + (0 .. __fc_len - 1));
     ensures
       set_content:
-        \let __fc_len = \old(num) / 4;
+        \let __fc_len = \old(len) / 4;
         ∀ ℤ j0; 0 ≤ j0 < __fc_len ⇒ *(\old(ptr) + j0) ≡ 4294967295;
     ensures result: \result ≡ \old(ptr);
-    assigns *(ptr + (0 .. num - 1)), \result;
-    assigns *(ptr + (0 .. num - 1)) \from \nothing;
+    assigns *(ptr + (0 .. len / 4 - 1)), \result;
+    assigns *(ptr + (0 .. len / 4 - 1)) \from \nothing;
     assigns \result \from ptr;
  */
-unsigned int *memset_uint_FF(unsigned int *ptr, size_t num)
+unsigned int *memset_uint_FF(unsigned int *ptr, size_t len)
 {
   unsigned int *__retres;
-  __retres = (unsigned int *)memset((void *)ptr,255,num);
+  __retres = (unsigned int *)memset((void *)ptr,255,len);
   return __retres;
 }
 
@@ -547,22 +547,22 @@ void unsigned_integer(unsigned int *dest)
   return;
 }
 
-/*@ requires aligned_end: num % 4 ≡ 0;
+/*@ requires aligned_end: len % 4 ≡ 0;
     requires
-      valid_dest: \let __fc_len = num / 4; \valid(ptr + (0 .. __fc_len - 1));
+      valid_dest: \let __fc_len = len / 4; \valid(ptr + (0 .. __fc_len - 1));
     ensures
       set_content:
-        \let __fc_len = \old(num) / 4;
+        \let __fc_len = \old(len) / 4;
         ∀ ℤ j0; 0 ≤ j0 < __fc_len ⇒ *(\old(ptr) + j0) ≡ -2147483648;
     ensures result: \result ≡ \old(ptr);
-    assigns *(ptr + (0 .. num - 1)), \result;
-    assigns *(ptr + (0 .. num - 1)) \from \nothing;
+    assigns *(ptr + (0 .. len / 4 - 1)), \result;
+    assigns *(ptr + (0 .. len / 4 - 1)) \from \nothing;
     assigns \result \from ptr;
  */
-long *memset_long_FF(long *ptr, size_t num)
+long *memset_long_FF(long *ptr, size_t len)
 {
   long *__retres;
-  __retres = (long *)memset((void *)ptr,255,num);
+  __retres = (long *)memset((void *)ptr,255,len);
   return __retres;
 }
 
@@ -573,22 +573,22 @@ void long_integer(long *dest)
   return;
 }
 
-/*@ requires aligned_end: num % 4 ≡ 0;
+/*@ requires aligned_end: len % 4 ≡ 0;
     requires
-      valid_dest: \let __fc_len = num / 4; \valid(ptr + (0 .. __fc_len - 1));
+      valid_dest: \let __fc_len = len / 4; \valid(ptr + (0 .. __fc_len - 1));
     ensures
       set_content:
-        \let __fc_len = \old(num) / 4;
+        \let __fc_len = \old(len) / 4;
         ∀ ℤ j0; 0 ≤ j0 < __fc_len ⇒ *(\old(ptr) + j0) ≡ 4294967295;
     ensures result: \result ≡ \old(ptr);
-    assigns *(ptr + (0 .. num - 1)), \result;
-    assigns *(ptr + (0 .. num - 1)) \from \nothing;
+    assigns *(ptr + (0 .. len / 4 - 1)), \result;
+    assigns *(ptr + (0 .. len / 4 - 1)) \from \nothing;
     assigns \result \from ptr;
  */
-unsigned long *memset_ulong_FF(unsigned long *ptr, size_t num)
+unsigned long *memset_ulong_FF(unsigned long *ptr, size_t len)
 {
   unsigned long *__retres;
-  __retres = (unsigned long *)memset((void *)ptr,255,num);
+  __retres = (unsigned long *)memset((void *)ptr,255,len);
   return __retres;
 }
 
@@ -600,23 +600,23 @@ void unsigned_long_integer(unsigned long *dest)
   return;
 }
 
-/*@ requires aligned_end: num % 8 ≡ 0;
+/*@ requires aligned_end: len % 8 ≡ 0;
     requires
-      valid_dest: \let __fc_len = num / 8; \valid(ptr + (0 .. __fc_len - 1));
+      valid_dest: \let __fc_len = len / 8; \valid(ptr + (0 .. __fc_len - 1));
     ensures
       set_content:
-        \let __fc_len = \old(num) / 8;
+        \let __fc_len = \old(len) / 8;
         ∀ ℤ j0;
           0 ≤ j0 < __fc_len ⇒ *(\old(ptr) + j0) ≡ -9223372036854775808;
     ensures result: \result ≡ \old(ptr);
-    assigns *(ptr + (0 .. num - 1)), \result;
-    assigns *(ptr + (0 .. num - 1)) \from \nothing;
+    assigns *(ptr + (0 .. len / 8 - 1)), \result;
+    assigns *(ptr + (0 .. len / 8 - 1)) \from \nothing;
     assigns \result \from ptr;
  */
-long long *memset_llong_FF(long long *ptr, size_t num)
+long long *memset_llong_FF(long long *ptr, size_t len)
 {
   long long *__retres;
-  __retres = (long long *)memset((void *)ptr,255,num);
+  __retres = (long long *)memset((void *)ptr,255,len);
   return __retres;
 }
 
@@ -628,23 +628,23 @@ void long_long_integer(long long *dest)
   return;
 }
 
-/*@ requires aligned_end: num % 8 ≡ 0;
+/*@ requires aligned_end: len % 8 ≡ 0;
     requires
-      valid_dest: \let __fc_len = num / 8; \valid(ptr + (0 .. __fc_len - 1));
+      valid_dest: \let __fc_len = len / 8; \valid(ptr + (0 .. __fc_len - 1));
     ensures
       set_content:
-        \let __fc_len = \old(num) / 8;
+        \let __fc_len = \old(len) / 8;
         ∀ ℤ j0;
           0 ≤ j0 < __fc_len ⇒ *(\old(ptr) + j0) ≡ 18446744073709551615;
     ensures result: \result ≡ \old(ptr);
-    assigns *(ptr + (0 .. num - 1)), \result;
-    assigns *(ptr + (0 .. num - 1)) \from \nothing;
+    assigns *(ptr + (0 .. len / 8 - 1)), \result;
+    assigns *(ptr + (0 .. len / 8 - 1)) \from \nothing;
     assigns \result \from ptr;
  */
-unsigned long long *memset_ullong_FF(unsigned long long *ptr, size_t num)
+unsigned long long *memset_ullong_FF(unsigned long long *ptr, size_t len)
 {
   unsigned long long *__retres;
-  __retres = (unsigned long long *)memset((void *)ptr,255,num);
+  __retres = (unsigned long long *)memset((void *)ptr,255,len);
   return __retres;
 }
 
@@ -656,22 +656,22 @@ void unsigned_long_long_integer(unsigned long long *dest)
   return;
 }
 
-/*@ requires aligned_end: num % 4 ≡ 0;
+/*@ requires aligned_end: len % 4 ≡ 0;
     requires
-      valid_dest: \let __fc_len = num / 4; \valid(ptr + (0 .. __fc_len - 1));
+      valid_dest: \let __fc_len = len / 4; \valid(ptr + (0 .. __fc_len - 1));
     ensures
       set_content:
-        \let __fc_len = \old(num) / 4;
+        \let __fc_len = \old(len) / 4;
         ∀ ℤ j0; 0 ≤ j0 < __fc_len ⇒ \is_NaN(*(\old(ptr) + j0));
     ensures result: \result ≡ \old(ptr);
-    assigns *(ptr + (0 .. num - 1)), \result;
-    assigns *(ptr + (0 .. num - 1)) \from \nothing;
+    assigns *(ptr + (0 .. len / 4 - 1)), \result;
+    assigns *(ptr + (0 .. len / 4 - 1)) \from \nothing;
     assigns \result \from ptr;
  */
-float *memset_float_FF(float *ptr, size_t num)
+float *memset_float_FF(float *ptr, size_t len)
 {
   float *__retres;
-  __retres = (float *)memset((void *)ptr,255,num);
+  __retres = (float *)memset((void *)ptr,255,len);
   return __retres;
 }
 
@@ -689,25 +689,25 @@ void with_named(named *dest)
   return;
 }
 
-/*@ requires aligned_end: num % 8 ≡ 0;
+/*@ requires aligned_end: len % 8 ≡ 0;
     requires
-      valid_dest: \let __fc_len = num / 8; \valid(ptr + (0 .. __fc_len - 1));
+      valid_dest: \let __fc_len = len / 8; \valid(ptr + (0 .. __fc_len - 1));
     ensures
       set_content:
-        \let __fc_len = \old(num) / 8;
+        \let __fc_len = \old(len) / 8;
         ∀ ℤ j0;
           0 ≤ j0 < __fc_len ⇒
           (\old(ptr) + j0)->x ≡ -2147483648 ∧
           (\old(ptr) + j0)->y ≡ -2147483648;
     ensures result: \result ≡ \old(ptr);
-    assigns *(ptr + (0 .. num - 1)), \result;
-    assigns *(ptr + (0 .. num - 1)) \from \nothing;
+    assigns *(ptr + (0 .. len / 8 - 1)), \result;
+    assigns *(ptr + (0 .. len / 8 - 1)) \from \nothing;
     assigns \result \from ptr;
  */
-struct X *memset_st_X_FF(struct X *ptr, size_t num)
+struct X *memset_st_X_FF(struct X *ptr, size_t len)
 {
   struct X *__retres;
-  __retres = (struct X *)memset((void *)ptr,255,num);
+  __retres = (struct X *)memset((void *)ptr,255,len);
   return __retres;
 }
 
@@ -718,22 +718,22 @@ void structure(struct X *dest)
   return;
 }
 
-/*@ requires aligned_end: num % 4 ≡ 0;
+/*@ requires aligned_end: len % 4 ≡ 0;
     requires
-      valid_dest: \let __fc_len = num / 4; \valid(ptr + (0 .. __fc_len - 1));
+      valid_dest: \let __fc_len = len / 4; \valid(ptr + (0 .. __fc_len - 1));
     ensures
       set_content:
-        \let __fc_len = \old(num) / 4;
+        \let __fc_len = \old(len) / 4;
         ∀ ℤ j0; 0 ≤ j0 < __fc_len ⇒ ¬\valid_read(*(\old(ptr) + j0));
     ensures result: \result ≡ \old(ptr);
-    assigns *(ptr + (0 .. num - 1)), \result;
-    assigns *(ptr + (0 .. num - 1)) \from \nothing;
+    assigns *(ptr + (0 .. len / 4 - 1)), \result;
+    assigns *(ptr + (0 .. len / 4 - 1)) \from \nothing;
     assigns \result \from ptr;
  */
-int **memset_ptr_int_FF(int **ptr, size_t num)
+int **memset_ptr_int_FF(int **ptr, size_t len)
 {
   int **__retres;
-  __retres = (int **)memset((void *)ptr,255,num);
+  __retres = (int **)memset((void *)ptr,255,len);
   return __retres;
 }
 
@@ -744,25 +744,25 @@ void pointers(int **dest)
   return;
 }
 
-/*@ requires aligned_end: num % 40 ≡ 0;
+/*@ requires aligned_end: len % 40 ≡ 0;
     requires
-      valid_dest: \let __fc_len = num / 40; \valid(ptr + (0 .. __fc_len - 1));
+      valid_dest: \let __fc_len = len / 40; \valid(ptr + (0 .. __fc_len - 1));
     ensures
       set_content:
-        \let __fc_len = \old(num) / 40;
+        \let __fc_len = \old(len) / 40;
         ∀ ℤ j0;
           0 ≤ j0 < __fc_len ⇒
           (∀ ℤ j1;
              0 ≤ j1 < 10 ⇒ (*(\old(ptr) + j0))[j1] ≡ -2147483648);
     ensures result: \result ≡ \old(ptr);
-    assigns (*(ptr + (0 .. num - 1)))[0 .. 10 - 1], \result;
-    assigns (*(ptr + (0 .. num - 1)))[0 .. 10 - 1] \from \nothing;
+    assigns (*(ptr + (0 .. len / 40 - 1)))[0 .. 10 - 1], \result;
+    assigns (*(ptr + (0 .. len / 40 - 1)))[0 .. 10 - 1] \from \nothing;
     assigns \result \from ptr;
  */
-int (*memset_arr10_int_FF(int (*ptr)[10], size_t num))[10]
+int (*memset_arr10_int_FF(int (*ptr)[10], size_t len))[10]
 {
   int (*__retres)[10];
-  __retres = (int (*)[10])memset((void *)ptr,255,num);
+  __retres = (int (*)[10])memset((void *)ptr,255,len);
   return __retres;
 }
 
diff --git a/src/plugins/builtin/tests/string/oracle/memset_value.res.oracle b/src/plugins/builtin/tests/string/oracle/memset_value.res.oracle
index d7e37edb76c109cdb7e02468df5babf8b0d8d835..50858d41d3ca2de42803b473b42a946d98b78c47 100644
--- a/src/plugins/builtin/tests/string/oracle/memset_value.res.oracle
+++ b/src/plugins/builtin/tests/string/oracle/memset_value.res.oracle
@@ -21,18 +21,18 @@ struct X {
 };
 typedef int named;
 /*@ requires in_bounds_value: -128 ≤ value < 128;
-    requires valid_dest: \valid(ptr + (0 .. num - 1));
+    requires valid_dest: \valid(ptr + (0 .. len - 1));
     ensures
-      set_content: ∀ ℤ j0; 0 ≤ j0 < num ⇒ *(ptr + j0) ≡ value;
+      set_content: ∀ ℤ j0; 0 ≤ j0 < len ⇒ *(ptr + j0) ≡ value;
     ensures result: \result ≡ ptr;
-    assigns *(ptr + (0 .. num - 1)), \result;
-    assigns *(ptr + (0 .. num - 1)) \from value;
+    assigns *(ptr + (0 .. len - 1)), \result;
+    assigns *(ptr + (0 .. len - 1)) \from value;
     assigns \result \from ptr;
  */
-char *memset_char(char *ptr, char value, size_t num)
+char *memset_char(char *ptr, char value, size_t len)
 {
   char *__retres;
-  __retres = (char *)memset((void *)ptr,(int)value,num);
+  __retres = (char *)memset((void *)ptr,(int)value,len);
   return __retres;
 }
 
@@ -44,19 +44,19 @@ void chars(char * /*[10]*/ dest, char value)
 }
 
 /*@ requires in_bounds_value: 0 ≤ value < 256;
-    requires valid_dest: \valid(ptr + (0 .. num - 1));
+    requires valid_dest: \valid(ptr + (0 .. len - 1));
     ensures
-      set_content: ∀ ℤ j0; 0 ≤ j0 < num ⇒ *(ptr + j0) ≡ value;
+      set_content: ∀ ℤ j0; 0 ≤ j0 < len ⇒ *(ptr + j0) ≡ value;
     ensures result: \result ≡ ptr;
-    assigns *(ptr + (0 .. num - 1)), \result;
-    assigns *(ptr + (0 .. num - 1)) \from value;
+    assigns *(ptr + (0 .. len - 1)), \result;
+    assigns *(ptr + (0 .. len - 1)) \from value;
     assigns \result \from ptr;
  */
 unsigned char *memset_uchar(unsigned char *ptr, unsigned char value,
-                            size_t num)
+                            size_t len)
 {
   unsigned char *__retres;
-  __retres = (unsigned char *)memset((void *)ptr,(int)value,num);
+  __retres = (unsigned char *)memset((void *)ptr,(int)value,len);
   return __retres;
 }
 
@@ -69,22 +69,22 @@ void uchars(char * /*[10]*/ dest, unsigned char value)
 
 /*@ requires in_bounds_value: -128 ≤ value < 128;
     requires
-      valid_dest: \let __fc_len = num / 10; \valid(ptr + (0 .. __fc_len - 1));
+      valid_dest: \let __fc_len = len / 10; \valid(ptr + (0 .. __fc_len - 1));
     ensures
       set_content:
-        \let __fc_len = num / 10;
+        \let __fc_len = len / 10;
         ∀ ℤ j0;
           0 ≤ j0 < __fc_len ⇒
           (∀ ℤ j1; 0 ≤ j1 < 10 ⇒ (*(ptr + j0))[j1] ≡ value);
     ensures result: \result ≡ ptr;
-    assigns (*(ptr + (0 .. num - 1)))[0 .. 10 - 1], \result;
-    assigns (*(ptr + (0 .. num - 1)))[0 .. 10 - 1] \from value;
+    assigns (*(ptr + (0 .. len / 10 - 1)))[0 .. 10 - 1], \result;
+    assigns (*(ptr + (0 .. len / 10 - 1)))[0 .. 10 - 1] \from value;
     assigns \result \from ptr;
  */
-char (*memset_arr10_char(char (*ptr)[10], char value, size_t num))[10]
+char (*memset_arr10_char(char (*ptr)[10], char value, size_t len))[10]
 {
   char (*__retres)[10];
-  __retres = (char (*)[10])memset((void *)ptr,(int)value,num);
+  __retres = (char (*)[10])memset((void *)ptr,(int)value,len);
   return __retres;
 }
 
@@ -170,20 +170,20 @@ struct X {
 };
 typedef int named;
 /*@ requires in_bounds_value: -128 ≤ value < 128;
-    requires valid_dest: \valid(ptr + (0 .. num - 1));
+    requires valid_dest: \valid(ptr + (0 .. len - 1));
     ensures
       set_content:
         ∀ ℤ j0;
-          0 ≤ j0 < \old(num) ⇒ *(\old(ptr) + j0) ≡ \old(value);
+          0 ≤ j0 < \old(len) ⇒ *(\old(ptr) + j0) ≡ \old(value);
     ensures result: \result ≡ \old(ptr);
-    assigns *(ptr + (0 .. num - 1)), \result;
-    assigns *(ptr + (0 .. num - 1)) \from value;
+    assigns *(ptr + (0 .. len - 1)), \result;
+    assigns *(ptr + (0 .. len - 1)) \from value;
     assigns \result \from ptr;
  */
-char *memset_char(char *ptr, char value, size_t num)
+char *memset_char(char *ptr, char value, size_t len)
 {
   char *__retres;
-  __retres = (char *)memset((void *)ptr,(int)value,num);
+  __retres = (char *)memset((void *)ptr,(int)value,len);
   return __retres;
 }
 
@@ -195,21 +195,21 @@ void chars(char *dest, char value)
 }
 
 /*@ requires in_bounds_value: 0 ≤ value < 256;
-    requires valid_dest: \valid(ptr + (0 .. num - 1));
+    requires valid_dest: \valid(ptr + (0 .. len - 1));
     ensures
       set_content:
         ∀ ℤ j0;
-          0 ≤ j0 < \old(num) ⇒ *(\old(ptr) + j0) ≡ \old(value);
+          0 ≤ j0 < \old(len) ⇒ *(\old(ptr) + j0) ≡ \old(value);
     ensures result: \result ≡ \old(ptr);
-    assigns *(ptr + (0 .. num - 1)), \result;
-    assigns *(ptr + (0 .. num - 1)) \from value;
+    assigns *(ptr + (0 .. len - 1)), \result;
+    assigns *(ptr + (0 .. len - 1)) \from value;
     assigns \result \from ptr;
  */
 unsigned char *memset_uchar(unsigned char *ptr, unsigned char value,
-                            size_t num)
+                            size_t len)
 {
   unsigned char *__retres;
-  __retres = (unsigned char *)memset((void *)ptr,(int)value,num);
+  __retres = (unsigned char *)memset((void *)ptr,(int)value,len);
   return __retres;
 }
 
@@ -222,23 +222,23 @@ void uchars(char *dest, unsigned char value)
 
 /*@ requires in_bounds_value: -128 ≤ value < 128;
     requires
-      valid_dest: \let __fc_len = num / 10; \valid(ptr + (0 .. __fc_len - 1));
+      valid_dest: \let __fc_len = len / 10; \valid(ptr + (0 .. __fc_len - 1));
     ensures
       set_content:
-        \let __fc_len = \old(num) / 10;
+        \let __fc_len = \old(len) / 10;
         ∀ ℤ j0;
           0 ≤ j0 < __fc_len ⇒
           (∀ ℤ j1;
              0 ≤ j1 < 10 ⇒ (*(\old(ptr) + j0))[j1] ≡ \old(value));
     ensures result: \result ≡ \old(ptr);
-    assigns (*(ptr + (0 .. num - 1)))[0 .. 10 - 1], \result;
-    assigns (*(ptr + (0 .. num - 1)))[0 .. 10 - 1] \from value;
+    assigns (*(ptr + (0 .. len / 10 - 1)))[0 .. 10 - 1], \result;
+    assigns (*(ptr + (0 .. len / 10 - 1)))[0 .. 10 - 1] \from value;
     assigns \result \from ptr;
  */
-char (*memset_arr10_char(char (*ptr)[10], char value, size_t num))[10]
+char (*memset_arr10_char(char (*ptr)[10], char value, size_t len))[10]
 {
   char (*__retres)[10];
-  __retres = (char (*)[10])memset((void *)ptr,(int)value,num);
+  __retres = (char (*)[10])memset((void *)ptr,(int)value,len);
   return __retres;
 }