diff --git a/convert.ml b/convert.ml
index ffd3fbf0459101c44d8f8c6efbc968f0fc2d2d37..d0d4938c7ee25ad863343a5826cf57f72dd954e1 100644
--- a/convert.ml
+++ b/convert.ml
@@ -3480,9 +3480,14 @@ and convert_class_component (env, implicits, types, fields, others) meth =
             ~variadic ~implicit ~extern_c spec
       in
       let all_args = constify_receiver kind all_args in
-      let env, (rt,name) =
+      let env, (rt,(n,dt,a,loc as name)) =
         make_prototype cloc benv name kind return_type all_args variadic false
       in
+      let name =
+        if implicit then
+          (n,dt,(fc_implicit_attr,[])::a,loc)
+        else name
+      in
       let has_virtual_base = Class.has_virtual_base_class class_name in
       (match body with
         | None ->
diff --git a/convert.mli b/convert.mli
index c10b129ccde96000e1ae7af6ce6970a1a87ca08f..987382943598f8fe4060fe56f7a7d1e31819200d 100644
--- a/convert.mli
+++ b/convert.mli
@@ -22,6 +22,10 @@
 
 open Intermediate_format
 
+(** attribute decorating member functions that are implicitly defined
+    by Frama-Clang. *)
+val fc_implicit_attr: string
+
 (** creates the name of the field corresponding to a direct base class. *)
 val create_base_field_name: Convert_env.env -> qualified_name -> tkind -> string
  
diff --git a/frama_Clang_register.ml b/frama_Clang_register.ml
index 8362a935e627454cdeb3ab3d630a3b880a5979aa..de3b86f72a293be405a8670f907c2836cc2f738d 100644
--- a/frama_Clang_register.ml
+++ b/frama_Clang_register.ml
@@ -132,6 +132,7 @@ let is_initialized = ref false
 let init_cxx_normalization () =
   if not !is_initialized then begin
       is_initialized:=true;
+      Cil_printer.register_shallow_attribute Convert.fc_implicit_attr;
       Printer.update_printer (module Cxx_printer);
       (* enable exception removal unless it has explicitely been set to false
          on the command line.
diff --git a/tests/basic/oracle/aggregate.res.oracle b/tests/basic/oracle/aggregate.res.oracle
index 159a4fd18197753d46736564862e98ada2b53816..3fb24a20a6b9cd5e74697a22a030a39998404122 100644
--- a/tests/basic/oracle/aggregate.res.oracle
+++ b/tests/basic/oracle/aggregate.res.oracle
@@ -57,10 +57,6 @@ struct B {
    int x ;
    int y ;
 };
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0);
-
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0);
-
 void A::Dtor(struct A const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -75,28 +71,6 @@ void A::Ctor(struct A const *this, int _x, int _y)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  this->y = __frama_c_arg_0->y;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  this->y = __frama_c_arg_0->y;
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void A::Dtor(struct A const *this)
 {
@@ -108,18 +82,10 @@ struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-void B::Dtor(struct B const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
 struct _frama_c_vmt_content _frama_c_vmt[1];
-/*@ requires \valid_read(this); */
-void B::Dtor(struct B const *this)
-{
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "B",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/basic/oracle/anonymous_struct.res.oracle b/tests/basic/oracle/anonymous_struct.res.oracle
index 2db5b0f553c3f0edd93e0dabdeb98265af479977..72812c7267150a27cd7a4f1eeb633b394ca8c673 100644
--- a/tests/basic/oracle/anonymous_struct.res.oracle
+++ b/tests/basic/oracle/anonymous_struct.res.oracle
@@ -30,72 +30,12 @@ struct anonymous_class_1 {
 struct A {
    struct anonymous_class_1 anonymous_2 ;
 };
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0);
-
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
 struct _frama_c_vmt_content _frama_c_vmt[1];
-void anonymous_class_1::Ctor(struct anonymous_class_1 const *this,
-                             struct anonymous_class_1 const *__frama_c_arg_0);
-
-void anonymous_class_1::Ctor(struct anonymous_class_1 const *this,
-                             struct anonymous_class_1 *__frama_c_arg_0);
-
-void anonymous_class_1::Dtor(struct anonymous_class_1 const *this);
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void anonymous_class_1::Ctor(struct anonymous_class_1 const *this,
-                             struct anonymous_class_1 const *__frama_c_arg_0)
-{
-  this->n = __frama_c_arg_0->n;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void anonymous_class_1::Ctor(struct anonymous_class_1 const *this,
-                             struct anonymous_class_1 *__frama_c_arg_0)
-{
-  this->n = __frama_c_arg_0->n;
-  return;
-}
-
-/*@ requires \valid_read(this); */
-void anonymous_class_1::Dtor(struct anonymous_class_1 const *this)
-{
-  return;
-}
-
 void A::Ctor(struct A const *this);
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0)
-{
-  anonymous_class_1::Ctor(& this->anonymous_2,& __frama_c_arg_0->anonymous_2);
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0)
-{
-  anonymous_class_1::Ctor(& this->anonymous_2,& __frama_c_arg_0->anonymous_2);
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "A",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/basic/oracle/brace_or_equal_initializer.res.oracle b/tests/basic/oracle/brace_or_equal_initializer.res.oracle
index 80b0e4f3f8ac6e6ed9bcf9fb763e9d26fef300a3..87203f868a8a0743be44b854fc9c161f5be69866 100644
--- a/tests/basic/oracle/brace_or_equal_initializer.res.oracle
+++ b/tests/basic/oracle/brace_or_equal_initializer.res.oracle
@@ -29,10 +29,6 @@ struct Foo {
    int c ;
    int t[3] ;
 };
-void Foo::Ctor(struct Foo const *this, struct Foo const *__frama_c_arg_0);
-
-void Foo::Ctor(struct Foo const *this, struct Foo *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -49,44 +45,6 @@ void Foo::Ctor(struct Foo const *this, int x)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void Foo::Ctor(struct Foo const *this, struct Foo const *__frama_c_arg_0)
-{
-  this->a = __frama_c_arg_0->a;
-  this->b = __frama_c_arg_0->b;
-  this->c = __frama_c_arg_0->c;
-  {
-    unsigned int idx = (unsigned int)0;
-    while (idx < (unsigned int)3) {
-      this->t[idx] = __frama_c_arg_0->t[idx];
-      idx ++;
-    }
-  }
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void Foo::Ctor(struct Foo const *this, struct Foo *__frama_c_arg_0)
-{
-  this->a = __frama_c_arg_0->a;
-  this->b = __frama_c_arg_0->b;
-  this->c = __frama_c_arg_0->c;
-  {
-    unsigned int idx = (unsigned int)0;
-    while (idx < (unsigned int)3) {
-      this->t[idx] = __frama_c_arg_0->t[idx];
-      idx ++;
-    }
-  }
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "Foo",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/basic/oracle/c_link.res.oracle b/tests/basic/oracle/c_link.res.oracle
index b6cd01cac7b4c57ff63394398eae6495c6e3dfdf..9629c48bfd1deea3d7e63ac93fabe266f2a543ef 100644
--- a/tests/basic/oracle/c_link.res.oracle
+++ b/tests/basic/oracle/c_link.res.oracle
@@ -35,14 +35,8 @@ struct Bar {
 };
 void Foo::Ctor(struct Foo const *this);
 
-void Foo::Ctor(struct Foo const *this, struct Foo const *__frama_c_arg_0);
-
-void Foo::Ctor(struct Foo const *this, struct Foo *__frama_c_arg_0);
-
 void Foo::Dtor(struct Foo const *this);
 
-struct Foo *operator=(struct Foo *this, struct Foo const *__frama_c_arg_0);
-
 struct Foo *operator=(struct Foo *this, struct Foo *__frama_c_arg_0);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -55,42 +49,12 @@ void Foo::Ctor(struct Foo const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void Foo::Ctor(struct Foo const *this, struct Foo const *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void Foo::Ctor(struct Foo const *this, struct Foo *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void Foo::Dtor(struct Foo const *this)
 {
   return;
 }
 
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct Foo *operator=(struct Foo *this, struct Foo const *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return this;
-}
-
 /*@ requires \valid(this);
     requires \valid(__frama_c_arg_0);
     ensures \valid(\result);
@@ -110,8 +74,6 @@ void Bar::Ctor(struct Bar const *this);
 
 void Bar::Ctor(struct Bar const *this, struct Bar const *__frama_c_arg_0);
 
-void Bar::Ctor(struct Bar const *this, struct Bar *__frama_c_arg_0);
-
 void Bar::Dtor(struct Bar const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -135,17 +97,6 @@ void Bar::Ctor(struct Bar const *this, struct Bar const *__frama_c_arg_0)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void Bar::Ctor(struct Bar const *this, struct Bar *__frama_c_arg_0)
-{
-  this->y = __frama_c_arg_0->y;
-  this->z = __frama_c_arg_0->z;
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void Bar::Dtor(struct Bar const *this)
 {
diff --git a/tests/basic/oracle/default_args.res.oracle b/tests/basic/oracle/default_args.res.oracle
index e757b951e8b97439feea3ed09f306753dc99db4a..fbb0b2383d369c771c3e6299f6803b088aa799b2 100644
--- a/tests/basic/oracle/default_args.res.oracle
+++ b/tests/basic/oracle/default_args.res.oracle
@@ -28,10 +28,6 @@ struct A {
 };
 void A::Ctor(struct A const *this);
 
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0);
-
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0);
-
 void A::Dtor(struct A const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -44,24 +40,6 @@ void A::Ctor(struct A const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0)
-{
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0)
-{
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void A::Dtor(struct A const *this)
 {
diff --git a/tests/basic/oracle/delete_all_kind.res.oracle b/tests/basic/oracle/delete_all_kind.res.oracle
index a105519108f96f3c904902f1a91d3314acb8aae3..7f14756a78efb0c3f631e4c362ec4f6233df859a 100644
--- a/tests/basic/oracle/delete_all_kind.res.oracle
+++ b/tests/basic/oracle/delete_all_kind.res.oracle
@@ -45,10 +45,6 @@ void free(void *ptr);
 
 void A::Ctor(struct A const *this);
 
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0);
-
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0);
-
 void A::Dtor(struct A const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -85,26 +81,6 @@ void A::Ctor(struct A const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0)
-{
-  this->_ = __frama_c_arg_0->_;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0)
-{
-  this->_ = __frama_c_arg_0->_;
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void A::Dtor(struct A const *this)
 {
@@ -118,10 +94,6 @@ struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
    .pvmt = (struct _frama_c_vmt *)0};
 void B::Ctor(struct B const *this);
 
-void B::Ctor(struct B const *this, struct B const *__frama_c_arg_0);
-
-void B::Ctor(struct B const *this, struct B *__frama_c_arg_0);
-
 void B::Dtor(struct B const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -134,26 +106,6 @@ void B::Ctor(struct B const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void B::Ctor(struct B const *this, struct B const *__frama_c_arg_0)
-{
-  this->_ = __frama_c_arg_0->_;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void B::Ctor(struct B const *this, struct B *__frama_c_arg_0)
-{
-  this->_ = __frama_c_arg_0->_;
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void B::Dtor(struct B const *this)
 {
diff --git a/tests/basic/oracle/forWithSimpleDecl.res.oracle b/tests/basic/oracle/forWithSimpleDecl.res.oracle
index 38a9acfe69d07fea877eeaeb8967284e2aedc80c..a2531087d94aa63175883b5e06d657e76a92018a 100644
--- a/tests/basic/oracle/forWithSimpleDecl.res.oracle
+++ b/tests/basic/oracle/forWithSimpleDecl.res.oracle
@@ -29,10 +29,6 @@ struct s {
 };
 void s::Ctor(struct s const *this);
 
-void s::Ctor(struct s const *this, struct s const *__frama_c_arg_0);
-
-void s::Ctor(struct s const *this, struct s *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -43,26 +39,6 @@ void s::Ctor(struct s const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void s::Ctor(struct s const *this, struct s const *__frama_c_arg_0)
-{
-  this->a = __frama_c_arg_0->a;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void s::Ctor(struct s const *this, struct s *__frama_c_arg_0)
-{
-  this->a = __frama_c_arg_0->a;
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "s",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/basic/oracle/gnu_body.res.oracle b/tests/basic/oracle/gnu_body.res.oracle
index 4a48a0ae1aec10b69776844d762a29e46ddb3d19..317391c9bf84bfd5bbdbf7530afc11c5d81bb7af 100644
--- a/tests/basic/oracle/gnu_body.res.oracle
+++ b/tests/basic/oracle/gnu_body.res.oracle
@@ -30,10 +30,6 @@ int f(int x);
 
 void A::Ctor(struct A const *this);
 
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0);
-
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -48,26 +44,6 @@ void A::Ctor(struct A const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0)
-{
-  this->_ = __frama_c_arg_0->_;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0)
-{
-  this->_ = __frama_c_arg_0->_;
-  return;
-}
-
 /*@ requires \valid_read(this); */
 int t3(struct A const *this)
 {
diff --git a/tests/basic/oracle/incomplete_type.res.oracle b/tests/basic/oracle/incomplete_type.res.oracle
index 1cf1e603bbe50d16e554fd944ac9bb371b091dc6..79a2e8fa6c95a8fcfbe31e6cd7050b3a52310e0c 100644
--- a/tests/basic/oracle/incomplete_type.res.oracle
+++ b/tests/basic/oracle/incomplete_type.res.oracle
@@ -39,10 +39,6 @@ void A::Ctor(struct A const *this);
 
 void A::Dtor(struct A const *this);
 
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0);
-
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -59,26 +55,6 @@ void A::Dtor(struct A const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0)
-{
-  this->t = __frama_c_arg_0->t;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0)
-{
-  this->t = __frama_c_arg_0->t;
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "A",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
@@ -86,10 +62,6 @@ struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
    .pvmt = (struct _frama_c_vmt *)0};
 void B::Ctor(struct B const *this);
 
-void B::Ctor(struct B const *this, struct B const *__frama_c_arg_0);
-
-void B::Ctor(struct B const *this, struct B *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -103,26 +75,6 @@ void B::Ctor(struct B const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void B::Ctor(struct B const *this, struct B const *__frama_c_arg_0)
-{
-  this->a = __frama_c_arg_0->a;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void B::Ctor(struct B const *this, struct B *__frama_c_arg_0)
-{
-  this->a = __frama_c_arg_0->a;
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "B",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/basic/oracle/new.res.oracle b/tests/basic/oracle/new.res.oracle
index 55d0b7661670f9c609b2ddf316cf2e9be0ebf77f..070fabddc9fb7fbbb613ac16f131d8a52f32e748 100644
--- a/tests/basic/oracle/new.res.oracle
+++ b/tests/basic/oracle/new.res.oracle
@@ -51,12 +51,6 @@ int glob(void)
 
 void Base::Ctor(struct Base const *this);
 
-void Base::Dtor(struct Base const *this);
-
-void Base::Ctor(struct Base const *this, struct Base const *__frama_c_arg_0);
-
-void Base::Ctor(struct Base const *this, struct Base *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -67,32 +61,6 @@ void Base::Ctor(struct Base const *this)
   return;
 }
 
-/*@ requires \valid_read(this); */
-void Base::Dtor(struct Base const *this)
-{
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void Base::Ctor(struct Base const *this, struct Base const *__frama_c_arg_0)
-{
-  this->_x = __frama_c_arg_0->_x;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void Base::Ctor(struct Base const *this, struct Base *__frama_c_arg_0)
-{
-  this->_x = __frama_c_arg_0->_x;
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "Base",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
@@ -100,10 +68,6 @@ struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
    .pvmt = (struct _frama_c_vmt *)0};
 void A::Ctor(struct A const *this);
 
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0);
-
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -120,26 +84,6 @@ void A::Ctor(struct A const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0)
-{
-  Base::Ctor(& this->_frama_c__Z4Base,& __frama_c_arg_0->_frama_c__Z4Base);
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0)
-{
-  Base::Ctor(& this->_frama_c__Z4Base,& __frama_c_arg_0->_frama_c__Z4Base);
-  return;
-}
-
 /*@ requires \valid(this); */
 void m_fn2(struct A *this)
 {
@@ -158,10 +102,6 @@ struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
    .pvmt = (struct _frama_c_vmt *)0};
 void B::Ctor(struct B const *this);
 
-void B::Ctor(struct B const *this, struct B const *__frama_c_arg_0);
-
-void B::Ctor(struct B const *this, struct B *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -196,24 +136,6 @@ void B::Ctor(struct B const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void B::Ctor(struct B const *this, struct B const *__frama_c_arg_0)
-{
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void B::Ctor(struct B const *this, struct B *__frama_c_arg_0)
-{
-  return;
-}
-
 /*@ requires \valid(this); */
 void bbb(struct B *this)
 {
diff --git a/tests/basic/oracle/new_all_kind.res.oracle b/tests/basic/oracle/new_all_kind.res.oracle
index 3901f1cfb3470a414c9e6a873889325748cd033f..f66444674f4b0b14983fb8640394b655b51b2e96 100644
--- a/tests/basic/oracle/new_all_kind.res.oracle
+++ b/tests/basic/oracle/new_all_kind.res.oracle
@@ -33,12 +33,6 @@ struct A {
 };
 void *malloc(unsigned int size);
 
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0);
-
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0);
-
-void A::Dtor(struct A const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -57,32 +51,6 @@ void A::Ctor(struct A const *this, int x_)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
-/*@ requires \valid_read(this); */
-void A::Dtor(struct A const *this)
-{
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "A",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/basic/oracle/new_array.res.oracle b/tests/basic/oracle/new_array.res.oracle
index 458a4b4e64208eda230e67432f9fd708de411dfd..54bd9489223413abddc9b88ae4186c9a988756a1 100644
--- a/tests/basic/oracle/new_array.res.oracle
+++ b/tests/basic/oracle/new_array.res.oracle
@@ -49,12 +49,6 @@ int glob(void)
 
 void Base::Ctor(struct Base const *this);
 
-void Base::Dtor(struct Base const *this);
-
-void Base::Ctor(struct Base const *this, struct Base const *__frama_c_arg_0);
-
-void Base::Ctor(struct Base const *this, struct Base *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -65,32 +59,6 @@ void Base::Ctor(struct Base const *this)
   return;
 }
 
-/*@ requires \valid_read(this); */
-void Base::Dtor(struct Base const *this)
-{
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void Base::Ctor(struct Base const *this, struct Base const *__frama_c_arg_0)
-{
-  this->_x = __frama_c_arg_0->_x;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void Base::Ctor(struct Base const *this, struct Base *__frama_c_arg_0)
-{
-  this->_x = __frama_c_arg_0->_x;
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "Base",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
@@ -98,12 +66,6 @@ struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
    .pvmt = (struct _frama_c_vmt *)0};
 void A::Ctor(struct A const *this);
 
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0);
-
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0);
-
-void A::Dtor(struct A const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -120,33 +82,6 @@ void A::Ctor(struct A const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0)
-{
-  Base::Ctor(& this->_frama_c__Z4Base,& __frama_c_arg_0->_frama_c__Z4Base);
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0)
-{
-  Base::Ctor(& this->_frama_c__Z4Base,& __frama_c_arg_0->_frama_c__Z4Base);
-  return;
-}
-
-/*@ requires \valid_read(this); */
-void A::Dtor(struct A const *this)
-{
-  Base::Dtor(& this->_frama_c__Z4Base);
-  return;
-}
-
 /*@ requires \valid(this); */
 void m_fn2(struct A *this)
 {
@@ -174,12 +109,6 @@ struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
    .pvmt = (struct _frama_c_vmt *)0};
 void B::Ctor(struct B const *this);
 
-void B::Ctor(struct B const *this, struct B const *__frama_c_arg_0);
-
-void B::Ctor(struct B const *this, struct B *__frama_c_arg_0);
-
-void B::Dtor(struct B const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -214,30 +143,6 @@ void B::Ctor(struct B const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void B::Ctor(struct B const *this, struct B const *__frama_c_arg_0)
-{
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void B::Ctor(struct B const *this, struct B *__frama_c_arg_0)
-{
-  return;
-}
-
-/*@ requires \valid_read(this); */
-void B::Dtor(struct B const *this)
-{
-  return;
-}
-
 /*@ requires \valid(this); */
 void bbb(struct B *this, unsigned int v)
 {
diff --git a/tests/basic/oracle/placement_new.res.oracle b/tests/basic/oracle/placement_new.res.oracle
index ca34acb5b41428663672a2e2a26cfbd053057e54..29c6ca16dbc09a7158bd41c2359af117ef838dd7 100644
--- a/tests/basic/oracle/placement_new.res.oracle
+++ b/tests/basic/oracle/placement_new.res.oracle
@@ -1109,10 +1109,6 @@ int posix_memalign(void **memptr, size_t alignment, size_t size);
  */
 int mkstemp(char *templat);
 
-void T::Ctor(struct T const *this, struct T const *__frama_c_arg_0);
-
-void T::Ctor(struct T const *this, struct T *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -1124,35 +1120,11 @@ void T::Ctor(struct T const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void T::Ctor(struct T const *this, struct T const *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void T::Ctor(struct T const *this, struct T *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "T",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-void U::Ctor(struct U const *this, struct U const *__frama_c_arg_0);
-
-void U::Ctor(struct U const *this, struct U *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -1173,26 +1145,6 @@ void U::Ctor(struct U const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void U::Ctor(struct U const *this, struct U const *__frama_c_arg_0)
-{
-  this->foo = __frama_c_arg_0->foo;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void U::Ctor(struct U const *this, struct U *__frama_c_arg_0)
-{
-  this->foo = __frama_c_arg_0->foo;
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "U",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/basic/oracle/pointer_to_member.res.oracle b/tests/basic/oracle/pointer_to_member.res.oracle
index e35986e68c658fa2904f71b3823716cf59e42c83..ae4e52041be8d1f3e654eb9436e7c9a4095181d5 100644
--- a/tests/basic/oracle/pointer_to_member.res.oracle
+++ b/tests/basic/oracle/pointer_to_member.res.oracle
@@ -33,18 +33,10 @@ struct Bar {
 static int g = 0;
 void f(int i);
 
-struct Foo *operator=(struct Foo *this, struct Foo const *__frama_c_arg_0);
-
-struct Foo *operator=(struct Foo *this, struct Foo *__frama_c_arg_0);
-
 void Foo::Dtor(struct Foo const *this);
 
 void Foo::Ctor(struct Foo const *this);
 
-void Foo::Ctor(struct Foo const *this, struct Foo const *__frama_c_arg_0);
-
-void Foo::Ctor(struct Foo const *this, struct Foo *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
@@ -58,26 +50,6 @@ void m(struct Foo *this, int i)
   return;
 }
 
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct Foo *operator=(struct Foo *this, struct Foo const *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct Foo *operator=(struct Foo *this, struct Foo *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return this;
-}
-
 /*@ requires \valid_read(this); */
 void Foo::Dtor(struct Foo const *this)
 {
@@ -92,26 +64,6 @@ void Foo::Ctor(struct Foo const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void Foo::Ctor(struct Foo const *this, struct Foo const *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void Foo::Ctor(struct Foo const *this, struct Foo *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return;
-}
-
 int _frama_c_find_dynamic_cast_aux(struct _frama_c_rtti_name_info_node *target_info,
                                    struct _frama_c_rtti_name_info_content *concrete_base,
                                    int number_of_bases,
@@ -337,18 +289,10 @@ struct _frama_c_vmt _frama_c_vmt_header =
   {.table = _frama_c_vmt,
    .table_size = 1,
    .rtti_info = & _frama_c_rtti_name_info};
-struct Bar *operator=(struct Bar *this, struct Bar const *__frama_c_arg_0);
-
-struct Bar *operator=(struct Bar *this, struct Bar *__frama_c_arg_0);
-
 void Bar::Dtor(struct Bar const *this);
 
 void Bar::Ctor(struct Bar const *this);
 
-void Bar::Ctor(struct Bar const *this, struct Bar const *__frama_c_arg_0);
-
-void Bar::Ctor(struct Bar const *this, struct Bar *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
@@ -364,26 +308,6 @@ void m(struct Bar *this, int i)
   return;
 }
 
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct Bar *operator=(struct Bar *this, struct Bar const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__Z3Foo,& __frama_c_arg_0->_frama_c__Z3Foo);
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct Bar *operator=(struct Bar *this, struct Bar *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__Z3Foo,& __frama_c_arg_0->_frama_c__Z3Foo);
-  return this;
-}
-
 /*@ requires \valid_read(this); */
 void Bar::Dtor(struct Bar const *this)
 {
@@ -400,26 +324,6 @@ void Bar::Ctor(struct Bar const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void Bar::Ctor(struct Bar const *this, struct Bar const *__frama_c_arg_0)
-{
-  Foo::Ctor(& this->_frama_c__Z3Foo,& __frama_c_arg_0->_frama_c__Z3Foo);
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void Bar::Ctor(struct Bar const *this, struct Bar *__frama_c_arg_0)
-{
-  Foo::Ctor(& this->_frama_c__Z3Foo,& __frama_c_arg_0->_frama_c__Z3Foo);
-  return;
-}
-
 struct _frama_c_vmt_content _frama_c_vmt[1] =
   {{.method_ptr = (void (*)())(& m), .shift_this = 0}};
 struct _frama_c_rtti_name_info_content _frama_c_base_classes[1] =
diff --git a/tests/basic/oracle/pointer_to_virtual_method.res.oracle b/tests/basic/oracle/pointer_to_virtual_method.res.oracle
index 35bd206ad5cfe53ddddc12b8751d864e4196732f..ab9b97e1eb0bee7cb72c5ff33ec8497c6c2e9ab4 100644
--- a/tests/basic/oracle/pointer_to_virtual_method.res.oracle
+++ b/tests/basic/oracle/pointer_to_virtual_method.res.oracle
@@ -31,18 +31,10 @@ struct Bar {
    struct Foo _frama_c__Z3Foo ;
 };
 static int g = 0;
-struct Foo *operator=(struct Foo *this, struct Foo const *__frama_c_arg_0);
-
-struct Foo *operator=(struct Foo *this, struct Foo *__frama_c_arg_0);
-
 void Foo::Dtor(struct Foo const *this);
 
 void Foo::Ctor(struct Foo const *this);
 
-void Foo::Ctor(struct Foo const *this, struct Foo const *__frama_c_arg_0);
-
-void Foo::Ctor(struct Foo const *this, struct Foo *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
@@ -56,26 +48,6 @@ void m(struct Foo *this, int i)
   return;
 }
 
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct Foo *operator=(struct Foo *this, struct Foo const *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct Foo *operator=(struct Foo *this, struct Foo *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return this;
-}
-
 /*@ requires \valid_read(this); */
 void Foo::Dtor(struct Foo const *this)
 {
@@ -90,26 +62,6 @@ void Foo::Ctor(struct Foo const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void Foo::Ctor(struct Foo const *this, struct Foo const *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void Foo::Ctor(struct Foo const *this, struct Foo *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return;
-}
-
 int _frama_c_find_dynamic_cast_aux(struct _frama_c_rtti_name_info_node *target_info,
                                    struct _frama_c_rtti_name_info_content *concrete_base,
                                    int number_of_bases,
@@ -335,18 +287,10 @@ struct _frama_c_vmt _frama_c_vmt_header =
   {.table = _frama_c_vmt,
    .table_size = 1,
    .rtti_info = & _frama_c_rtti_name_info};
-struct Bar *operator=(struct Bar *this, struct Bar const *__frama_c_arg_0);
-
-struct Bar *operator=(struct Bar *this, struct Bar *__frama_c_arg_0);
-
 void Bar::Dtor(struct Bar const *this);
 
 void Bar::Ctor(struct Bar const *this);
 
-void Bar::Ctor(struct Bar const *this, struct Bar const *__frama_c_arg_0);
-
-void Bar::Ctor(struct Bar const *this, struct Bar *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
@@ -362,26 +306,6 @@ void m(struct Bar *this, int i)
   return;
 }
 
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct Bar *operator=(struct Bar *this, struct Bar const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__Z3Foo,& __frama_c_arg_0->_frama_c__Z3Foo);
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct Bar *operator=(struct Bar *this, struct Bar *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__Z3Foo,& __frama_c_arg_0->_frama_c__Z3Foo);
-  return this;
-}
-
 /*@ requires \valid_read(this); */
 void Bar::Dtor(struct Bar const *this)
 {
@@ -398,26 +322,6 @@ void Bar::Ctor(struct Bar const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void Bar::Ctor(struct Bar const *this, struct Bar const *__frama_c_arg_0)
-{
-  Foo::Ctor(& this->_frama_c__Z3Foo,& __frama_c_arg_0->_frama_c__Z3Foo);
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void Bar::Ctor(struct Bar const *this, struct Bar *__frama_c_arg_0)
-{
-  Foo::Ctor(& this->_frama_c__Z3Foo,& __frama_c_arg_0->_frama_c__Z3Foo);
-  return;
-}
-
 struct _frama_c_vmt_content _frama_c_vmt[1] =
   {{.method_ptr = (void (*)())(& m), .shift_this = 0}};
 struct _frama_c_rtti_name_info_content _frama_c_base_classes[1] =
diff --git a/tests/basic/oracle/pre_processed.res.oracle b/tests/basic/oracle/pre_processed.res.oracle
index 588a92f171bf098753f926d61b0cabc1312a6ad0..5a2462bb34fb53b905f5e0b774df9bcb32143bf3 100644
--- a/tests/basic/oracle/pre_processed.res.oracle
+++ b/tests/basic/oracle/pre_processed.res.oracle
@@ -26,10 +26,6 @@ struct A;
 struct A {
    int x ;
 };
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0);
-
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -41,26 +37,6 @@ void A::Ctor(struct A const *this, int _x)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "A",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/basic/oracle/ptr_array_decls.res.oracle b/tests/basic/oracle/ptr_array_decls.res.oracle
index d63d204f80a2c687e87e4bef153c5b8aefab318c..b81974baace76487f555d643d858b1da425ee199 100644
--- a/tests/basic/oracle/ptr_array_decls.res.oracle
+++ b/tests/basic/oracle/ptr_array_decls.res.oracle
@@ -26,18 +26,10 @@ struct S0 {
    int f0 ;
    int f1 ;
 };
-void S0::Dtor(struct S0 const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
 struct _frama_c_vmt_content _frama_c_vmt[1];
-/*@ requires \valid_read(this); */
-void S0::Dtor(struct S0 const *this)
-{
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "S0",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/basic/oracle/ref_field.res.oracle b/tests/basic/oracle/ref_field.res.oracle
index 010f8eeff2a695391110a7b027ba552b066fdc82..427d5f77b60d439001c876a28a350f1931c0a4f2 100644
--- a/tests/basic/oracle/ref_field.res.oracle
+++ b/tests/basic/oracle/ref_field.res.oracle
@@ -30,10 +30,6 @@ struct T;
 struct T {
    int j ;
 };
-void S::Ctor(struct S const *this, struct S const *__frama_c_arg_0);
-
-void S::Ctor(struct S const *this, struct S *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -53,35 +49,11 @@ void S::Ctor(struct S const *this, int *p)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void S::Ctor(struct S const *this, struct S const *__frama_c_arg_0)
-{
-  this->i = __frama_c_arg_0->i;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void S::Ctor(struct S const *this, struct S *__frama_c_arg_0)
-{
-  this->i = __frama_c_arg_0->i;
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "S",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-void T::Ctor(struct T const *this, struct T const *__frama_c_arg_0);
-
-void T::Ctor(struct T const *this, struct T *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -94,26 +66,6 @@ void T::Ctor(struct T const *this, int *r)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void T::Ctor(struct T const *this, struct T const *__frama_c_arg_0)
-{
-  this->j = __frama_c_arg_0->j;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void T::Ctor(struct T const *this, struct T *__frama_c_arg_0)
-{
-  this->j = __frama_c_arg_0->j;
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "T",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/basic/oracle/sizeof.res.oracle b/tests/basic/oracle/sizeof.res.oracle
index b583cc18014a1f53975bedb3f4a728cc0898a266..a77e0e794df935e508ed6726f6ba9bab3ebfe427 100644
--- a/tests/basic/oracle/sizeof.res.oracle
+++ b/tests/basic/oracle/sizeof.res.oracle
@@ -1,9 +1,5 @@
 [kernel] Parsing tests/basic/sizeof.cc (external front-end)
 Now output intermediate result
-[kernel] Warning: Assuming declared function Frama_C_memcpy can't throw any exception
-[kernel] Warning: Assuming declared function Frama_C_memcpy can't throw any exception
-[kernel] Warning: Assuming declared function Frama_C_memcpy can't throw any exception
-[kernel] Warning: Assuming declared function Frama_C_memcpy can't throw any exception
 /* Generated by Frama-C */
 struct _frama_c_vmt_content {
    void (*method_ptr)() ;
@@ -40,132 +36,18 @@ union anonymous_union_1 {
 struct C {
    union anonymous_union_1 anonymous_3 ;
 };
-void *Frama_C_memcpy(void *dest, void const *src, unsigned int size);
-
 void C::Ctor(struct C const *this);
 
-void C::Ctor(struct C const *this, struct C const *__frama_c_arg_0);
-
-void C::Ctor(struct C const *this, struct C *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
 struct _frama_c_vmt_content _frama_c_vmt[1];
-void anonymous_union_1::Ctor(union anonymous_union_1 const *this,
-                             union anonymous_union_1 const *__frama_c_arg_0);
-
-void anonymous_union_1::Ctor(union anonymous_union_1 const *this,
-                             union anonymous_union_1 *__frama_c_arg_0);
-
-void anonymous_union_1::Ctor(union anonymous_union_1 const *this);
-
-void anonymous_class_2::Ctor(struct anonymous_class_2 const *this);
-
-void anonymous_class_2::Dtor(struct anonymous_class_2 const *this);
-
-void anonymous_class_2::Ctor(struct anonymous_class_2 const *this,
-                             struct anonymous_class_2 const *__frama_c_arg_0);
-
-void anonymous_class_2::Ctor(struct anonymous_class_2 const *this,
-                             struct anonymous_class_2 *__frama_c_arg_0);
-
-/*@ requires \valid_read(this); */
-void anonymous_class_2::Ctor(struct anonymous_class_2 const *this)
-{
-  return;
-}
-
-/*@ requires \valid_read(this); */
-void anonymous_class_2::Dtor(struct anonymous_class_2 const *this)
-{
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void anonymous_class_2::Ctor(struct anonymous_class_2 const *this,
-                             struct anonymous_class_2 const *__frama_c_arg_0)
-{
-  this->rcv_timeout = __frama_c_arg_0->rcv_timeout;
-  this->snd_timeout = __frama_c_arg_0->snd_timeout;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void anonymous_class_2::Ctor(struct anonymous_class_2 const *this,
-                             struct anonymous_class_2 *__frama_c_arg_0)
-{
-  this->rcv_timeout = __frama_c_arg_0->rcv_timeout;
-  this->snd_timeout = __frama_c_arg_0->snd_timeout;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void anonymous_union_1::Ctor(union anonymous_union_1 const *this,
-                             union anonymous_union_1 const *__frama_c_arg_0)
-{
-  Frama_C_memcpy((void *)this,(void const *)__frama_c_arg_0,
-                 sizeof(union anonymous_union_1));
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void anonymous_union_1::Ctor(union anonymous_union_1 const *this,
-                             union anonymous_union_1 *__frama_c_arg_0)
-{
-  Frama_C_memcpy((void *)this,(void const *)__frama_c_arg_0,
-                 sizeof(union anonymous_union_1));
-  return;
-}
-
-/*@ requires \valid_read(this); */
-void anonymous_union_1::Ctor(union anonymous_union_1 const *this)
-{
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void C::Ctor(struct C const *this)
 {
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void C::Ctor(struct C const *this, struct C const *__frama_c_arg_0)
-{
-  Frama_C_memcpy((void *)(& this->anonymous_3),
-                 (void const *)(& __frama_c_arg_0->anonymous_3),
-                 sizeof(union anonymous_union_1));
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void C::Ctor(struct C const *this, struct C *__frama_c_arg_0)
-{
-  Frama_C_memcpy((void *)(& this->anonymous_3),
-                 (void const *)(& __frama_c_arg_0->anonymous_3),
-                 sizeof(union anonymous_union_1));
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "C",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/basic/oracle/switch_constexpr.res.oracle b/tests/basic/oracle/switch_constexpr.res.oracle
index 232250fc0f85c2a427cb4129855255f55592822d..e6c95afbfca96247efda0dc5afc558a563a4ec28 100644
--- a/tests/basic/oracle/switch_constexpr.res.oracle
+++ b/tests/basic/oracle/switch_constexpr.res.oracle
@@ -26,12 +26,6 @@ struct A;
 struct A {
    int m ;
 };
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0);
-
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0);
-
-void A::Dtor(struct A const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -43,32 +37,6 @@ void A::Ctor(struct A const *this, _Bool b)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0)
-{
-  this->m = __frama_c_arg_0->m;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0)
-{
-  this->m = __frama_c_arg_0->m;
-  return;
-}
-
-/*@ requires \valid_read(this); */
-void A::Dtor(struct A const *this)
-{
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "A",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/basic/oracle/test008.res.oracle b/tests/basic/oracle/test008.res.oracle
index e0c6e9c549cf602aa5230f587414d56f189295fe..4bedcb95858c278ff365523f89d4fb3a32c83cfc 100644
--- a/tests/basic/oracle/test008.res.oracle
+++ b/tests/basic/oracle/test008.res.oracle
@@ -33,10 +33,6 @@ int f(int x)
   return __retres;
 }
 
-void Foo::Ctor(struct Foo const *this, struct Foo const *__frama_c_arg_0);
-
-void Foo::Ctor(struct Foo const *this, struct Foo *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -48,26 +44,6 @@ void Foo::Ctor(struct Foo const *this, int a)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void Foo::Ctor(struct Foo const *this, struct Foo const *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void Foo::Ctor(struct Foo const *this, struct Foo *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "Foo",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/basic/oracle/union3.res.oracle b/tests/basic/oracle/union3.res.oracle
index 28a2353602fee3ba8a4919f5ae119af7303f22f5..55faf5097087d2967573a8cf085249d99a7c856b 100644
--- a/tests/basic/oracle/union3.res.oracle
+++ b/tests/basic/oracle/union3.res.oracle
@@ -33,14 +33,6 @@ struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
 struct _frama_c_vmt_content _frama_c_vmt[1];
-void anonymous_union_1::Dtor(union anonymous_union_1 const *this);
-
-/*@ requires \valid_read(this); */
-void anonymous_union_1::Dtor(union anonymous_union_1 const *this)
-{
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "foo",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/basic/oracle/union_packed.res.oracle b/tests/basic/oracle/union_packed.res.oracle
index d13905e7cb46d77782798158a43301345f5f62a2..a171f5a52963f98d8d24ec4b95d2d68d1aeb98b2 100644
--- a/tests/basic/oracle/union_packed.res.oracle
+++ b/tests/basic/oracle/union_packed.res.oracle
@@ -1,9 +1,5 @@
 [kernel] Parsing tests/basic/union_packed.cc (external front-end)
 Now output intermediate result
-[kernel] Warning: Assuming declared function Frama_C_memcpy can't throw any exception
-[kernel] Warning: Assuming declared function Frama_C_memcpy can't throw any exception
-[kernel] Warning: Assuming declared function Frama_C_memcpy can't throw any exception
-[kernel] Warning: Assuming declared function Frama_C_memcpy can't throw any exception
 /* Generated by Frama-C */
 struct _frama_c_vmt_content {
    void (*method_ptr)() ;
@@ -42,14 +38,8 @@ union anonymous_union_2 {
 struct A {
    union anonymous_union_2 anonymous_1 ;
 };
-void *Frama_C_memcpy(void *dest, void const *src, unsigned int size);
-
 void A::Ctor(struct A const *this);
 
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0);
-
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -62,122 +52,12 @@ void set_raw(struct A *this, u16_t raw);
 
 _Bool is_zero(struct A *this);
 
-void anonymous_union_2::Ctor(union anonymous_union_2 const *this,
-                             union anonymous_union_2 const *__frama_c_arg_0);
-
-void anonymous_union_2::Ctor(union anonymous_union_2 const *this,
-                             union anonymous_union_2 *__frama_c_arg_0);
-
-void anonymous_union_2::Ctor(union anonymous_union_2 const *this);
-
-void anonymous_class_3::Ctor(struct anonymous_class_3 const *this);
-
-void anonymous_class_3::Dtor(struct anonymous_class_3 const *this);
-
-void anonymous_class_3::Ctor(struct anonymous_class_3 const *this,
-                             struct anonymous_class_3 const *__frama_c_arg_0);
-
-void anonymous_class_3::Ctor(struct anonymous_class_3 const *this,
-                             struct anonymous_class_3 *__frama_c_arg_0);
-
-/*@ requires \valid_read(this); */
-void anonymous_class_3::Ctor(struct anonymous_class_3 const *this)
-{
-  return;
-}
-
-/*@ requires \valid_read(this); */
-void anonymous_class_3::Dtor(struct anonymous_class_3 const *this)
-{
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void anonymous_class_3::Ctor(struct anonymous_class_3 const *this,
-                             struct anonymous_class_3 const *__frama_c_arg_0)
-{
-  this->prec = __frama_c_arg_0->prec;
-  this->main = __frama_c_arg_0->main;
-  this->type = __frama_c_arg_0->type;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void anonymous_class_3::Ctor(struct anonymous_class_3 const *this,
-                             struct anonymous_class_3 *__frama_c_arg_0)
-{
-  this->prec = __frama_c_arg_0->prec;
-  this->main = __frama_c_arg_0->main;
-  this->type = __frama_c_arg_0->type;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void anonymous_union_2::Ctor(union anonymous_union_2 const *this,
-                             union anonymous_union_2 const *__frama_c_arg_0)
-{
-  Frama_C_memcpy((void *)this,(void const *)__frama_c_arg_0,
-                 sizeof(union anonymous_union_2));
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void anonymous_union_2::Ctor(union anonymous_union_2 const *this,
-                             union anonymous_union_2 *__frama_c_arg_0)
-{
-  Frama_C_memcpy((void *)this,(void const *)__frama_c_arg_0,
-                 sizeof(union anonymous_union_2));
-  return;
-}
-
-/*@ requires \valid_read(this); */
-void anonymous_union_2::Ctor(union anonymous_union_2 const *this)
-{
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void A::Ctor(struct A const *this)
 {
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0)
-{
-  Frama_C_memcpy((void *)(& this->anonymous_1),
-                 (void const *)(& __frama_c_arg_0->anonymous_1),
-                 sizeof(union anonymous_union_2));
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0)
-{
-  Frama_C_memcpy((void *)(& this->anonymous_1),
-                 (void const *)(& __frama_c_arg_0->anonymous_1),
-                 sizeof(union anonymous_union_2));
-  return;
-}
-
 /*@ requires \valid(this); */
 void set_raw(struct A *this, u16_t raw)
 {
diff --git a/tests/basic/oracle/use_of_temps_bts1544.res.oracle b/tests/basic/oracle/use_of_temps_bts1544.res.oracle
index 8bb676d1bf2147aba2cd06349abc13c3932af844..101a4a136a8e76e78bc7cd8f26d735390f622afc 100644
--- a/tests/basic/oracle/use_of_temps_bts1544.res.oracle
+++ b/tests/basic/oracle/use_of_temps_bts1544.res.oracle
@@ -26,24 +26,14 @@ struct cl;
 struct cl {
    
 };
-void cl::Ctor(struct cl const *this);
-
 void cl::Ctor(struct cl const *this, struct cl const *__frama_c_arg_0);
 
-void cl::Ctor(struct cl const *this, struct cl *__frama_c_arg_0);
-
 void cl::Dtor(struct cl const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
 struct _frama_c_vmt_content _frama_c_vmt[1];
-/*@ requires \valid_read(this); */
-void cl::Ctor(struct cl const *this)
-{
-  return;
-}
-
 /*@ requires \separated(this, __frama_c_arg_0);
     requires \valid_read(this);
     requires \valid_read(__frama_c_arg_0);
@@ -53,15 +43,6 @@ void cl::Ctor(struct cl const *this, struct cl const *__frama_c_arg_0)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void cl::Ctor(struct cl const *this, struct cl *__frama_c_arg_0)
-{
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void cl::Dtor(struct cl const *this)
 {
diff --git a/tests/basic/oracle/vd.res.oracle b/tests/basic/oracle/vd.res.oracle
index 04f8dd8c68008928a589a091fe28fea2ba743197..b6a0f0a5c6d614e4f40478c82e5df26e0d2e3d4c 100644
--- a/tests/basic/oracle/vd.res.oracle
+++ b/tests/basic/oracle/vd.res.oracle
@@ -28,10 +28,6 @@ struct A {
 };
 void A::Ctor(struct A const *this);
 
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0);
-
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -50,24 +46,6 @@ void A::Ctor(struct A const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0)
-{
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0)
-{
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "A",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/bugs/oracle/issue11.res.oracle b/tests/bugs/oracle/issue11.res.oracle
index 11f9b2e61d9891c66e6b9c6506dbe7c54f4112e5..e42f07bc5e9e238635c2d2202163c7b411bf6180 100644
--- a/tests/bugs/oracle/issue11.res.oracle
+++ b/tests/bugs/oracle/issue11.res.oracle
@@ -38,12 +38,6 @@ struct b<char> {
 };
 void b<void>::Ctor(struct b<void> const *this);
 
-void b<void>::Ctor(struct b<void> const *this,
-                   struct b<void> const *__frama_c_arg_0);
-
-void b<void>::Ctor(struct b<void> const *this,
-                   struct b<void> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -54,26 +48,6 @@ void b<void>::Ctor(struct b<void> const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void b<void>::Ctor(struct b<void> const *this,
-                   struct b<void> const *__frama_c_arg_0)
-{
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void b<void>::Ctor(struct b<void> const *this,
-                   struct b<void> *__frama_c_arg_0)
-{
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "b",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
@@ -81,12 +55,6 @@ struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
    .pvmt = (struct _frama_c_vmt *)0};
 void b<char>::Ctor(struct b<char> const *this);
 
-void b<char>::Ctor(struct b<char> const *this,
-                   struct b<char> const *__frama_c_arg_0);
-
-void b<char>::Ctor(struct b<char> const *this,
-                   struct b<char> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -97,26 +65,6 @@ void b<char>::Ctor(struct b<char> const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void b<char>::Ctor(struct b<char> const *this,
-                   struct b<char> const *__frama_c_arg_0)
-{
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void b<char>::Ctor(struct b<char> const *this,
-                   struct b<char> *__frama_c_arg_0)
-{
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "b",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/class/oracle/array_init.res.oracle b/tests/class/oracle/array_init.res.oracle
index 564597712db80cb2f39d5f0c5ccc49dde76a08e2..c9c49aca536f429e4fb55935cca73d5ff5919d16 100644
--- a/tests/class/oracle/array_init.res.oracle
+++ b/tests/class/oracle/array_init.res.oracle
@@ -27,10 +27,6 @@ struct A {
    int x ;
    int y ;
 };
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0);
-
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0);
-
 void A::Dtor(struct A const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -45,28 +41,6 @@ void A::Ctor(struct A const *this, int _x, int _y)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  this->y = __frama_c_arg_0->y;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  this->y = __frama_c_arg_0->y;
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void A::Dtor(struct A const *this)
 {
diff --git a/tests/class/oracle/array_object_bts1739.res.oracle b/tests/class/oracle/array_object_bts1739.res.oracle
index 68271bb0abd4b81f6a3f5b5711861aa3db23b07c..f6e7fb6ff7b85f5f8faf24c23050d6d32725b54c 100644
--- a/tests/class/oracle/array_object_bts1739.res.oracle
+++ b/tests/class/oracle/array_object_bts1739.res.oracle
@@ -28,13 +28,6 @@ struct vector {
 };
 void vector::Ctor(struct vector const *this);
 
-void vector::Ctor(struct vector const *this,
-                  struct vector const *__frama_c_arg_0);
-
-void vector::Ctor(struct vector const *this, struct vector *__frama_c_arg_0);
-
-void vector::Dtor(struct vector const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -45,31 +38,6 @@ void vector::Ctor(struct vector const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void vector::Ctor(struct vector const *this,
-                  struct vector const *__frama_c_arg_0)
-{
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void vector::Ctor(struct vector const *this, struct vector *__frama_c_arg_0)
-{
-  return;
-}
-
-/*@ requires \valid_read(this); */
-void vector::Dtor(struct vector const *this)
-{
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "vector",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/class/oracle/cast_op.res.oracle b/tests/class/oracle/cast_op.res.oracle
index 4024ddd0363214280feb838a6520e9beac97f05e..006bf33b7b9d89f4ec7735246fd2f887cce307db 100644
--- a/tests/class/oracle/cast_op.res.oracle
+++ b/tests/class/oracle/cast_op.res.oracle
@@ -26,10 +26,6 @@ struct A;
 struct A {
    int x ;
 };
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0);
-
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -50,26 +46,6 @@ int conversion(int)(struct A *this)
   return __retres;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "A",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/class/oracle/class_global.res.oracle b/tests/class/oracle/class_global.res.oracle
index a87bc1e48e7898f1fc74eb2e422cfb233f4c312d..f4c72920df2511623fa41657e2e94cfced7a8e79 100644
--- a/tests/class/oracle/class_global.res.oracle
+++ b/tests/class/oracle/class_global.res.oracle
@@ -31,10 +31,6 @@ struct Foo {
    int x ;
    struct Bar y ;
 };
-void Bar::Ctor(struct Bar const *this, struct Bar const *__frama_c_arg_0);
-
-void Bar::Ctor(struct Bar const *this, struct Bar *__frama_c_arg_0);
-
 void Bar::Dtor(struct Bar const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -48,26 +44,6 @@ void Bar::Ctor(struct Bar const *this, int x)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void Bar::Ctor(struct Bar const *this, struct Bar const *__frama_c_arg_0)
-{
-  this->t = __frama_c_arg_0->t;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void Bar::Ctor(struct Bar const *this, struct Bar *__frama_c_arg_0)
-{
-  this->t = __frama_c_arg_0->t;
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void Bar::Dtor(struct Bar const *this)
 {
@@ -79,10 +55,6 @@ struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-void Foo::Ctor(struct Foo const *this, struct Foo const *__frama_c_arg_0);
-
-void Foo::Ctor(struct Foo const *this, struct Foo *__frama_c_arg_0);
-
 void Foo::Dtor(struct Foo const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -99,28 +71,6 @@ void Foo::Ctor(struct Foo const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void Foo::Ctor(struct Foo const *this, struct Foo const *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  Bar::Ctor(& this->y,& __frama_c_arg_0->y);
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void Foo::Ctor(struct Foo const *this, struct Foo *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  Bar::Ctor(& this->y,& __frama_c_arg_0->y);
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void Foo::Dtor(struct Foo const *this)
 {
diff --git a/tests/class/oracle/cleanups.res.oracle b/tests/class/oracle/cleanups.res.oracle
index 296e04211eea9d7d101636267d2231fc7e3cfbf3..391e59e914b00846d99bc4603842cfe99fe40e89 100644
--- a/tests/class/oracle/cleanups.res.oracle
+++ b/tests/class/oracle/cleanups.res.oracle
@@ -50,12 +50,6 @@ void free(void *ptr);
 
 char *strdup(char const *__frama_c_arg_0);
 
-void StringRepository::Ctor(struct StringRepository const *this,
-                            struct StringRepository const *__frama_c_arg_0);
-
-void StringRepository::Ctor(struct StringRepository const *this,
-                            struct StringRepository *__frama_c_arg_0);
-
 void StringRepository::Dtor(struct StringRepository const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -87,30 +81,6 @@ _Bool decShared(struct StringRepository *this)
   return __retres;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void StringRepository::Ctor(struct StringRepository const *this,
-                            struct StringRepository const *__frama_c_arg_0)
-{
-  this->m_support = __frama_c_arg_0->m_support;
-  this->m_shared = __frama_c_arg_0->m_shared;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void StringRepository::Ctor(struct StringRepository const *this,
-                            struct StringRepository *__frama_c_arg_0)
-{
-  this->m_support = __frama_c_arg_0->m_support;
-  this->m_shared = __frama_c_arg_0->m_shared;
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void StringRepository::Dtor(struct StringRepository const *this)
 {
diff --git a/tests/class/oracle/constr.res.oracle b/tests/class/oracle/constr.res.oracle
index b9d3c9c60ca33c6d12457a06d18139f8b1ed75f5..be2afc344e2c5e20d5333fc130d0a67cef57c372 100644
--- a/tests/class/oracle/constr.res.oracle
+++ b/tests/class/oracle/constr.res.oracle
@@ -26,14 +26,8 @@ struct Foo;
 struct Foo {
    int x ;
 };
-void Foo::Ctor(struct Foo const *this, struct Foo const *__frama_c_arg_0);
-
-void Foo::Ctor(struct Foo const *this, struct Foo *__frama_c_arg_0);
-
 void Foo::Dtor(struct Foo const *this);
 
-struct Foo *operator=(struct Foo *this, struct Foo const *__frama_c_arg_0);
-
 struct Foo *operator=(struct Foo *this, struct Foo *__frama_c_arg_0);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -47,42 +41,12 @@ void Foo::Ctor(struct Foo const *this, int a)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void Foo::Ctor(struct Foo const *this, struct Foo const *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void Foo::Ctor(struct Foo const *this, struct Foo *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void Foo::Dtor(struct Foo const *this)
 {
   return;
 }
 
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct Foo *operator=(struct Foo *this, struct Foo const *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return this;
-}
-
 /*@ requires \valid(this);
     requires \valid(__frama_c_arg_0);
     ensures \valid(\result);
diff --git a/tests/class/oracle/default_arg.res.oracle b/tests/class/oracle/default_arg.res.oracle
index 7bcf56a024337f9168c8b078feaebf82bd69164d..dfc620095bcbf32411ad63a104aa00e5302b18d1 100644
--- a/tests/class/oracle/default_arg.res.oracle
+++ b/tests/class/oracle/default_arg.res.oracle
@@ -28,8 +28,6 @@ struct Foo {
 };
 void Foo::Ctor(struct Foo const *this, struct Foo const *__frama_c_arg_0);
 
-void Foo::Ctor(struct Foo const *this, struct Foo *__frama_c_arg_0);
-
 void Foo::Dtor(struct Foo const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -60,16 +58,6 @@ void Foo::Ctor(struct Foo const *this, struct Foo const *__frama_c_arg_0)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void Foo::Ctor(struct Foo const *this, struct Foo *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void Foo::Dtor(struct Foo const *this)
 {
diff --git a/tests/class/oracle/destructor_custom_2004.res.oracle b/tests/class/oracle/destructor_custom_2004.res.oracle
index 502b7cbc13eedb317bd5525f359ec2659de2de30..455d75a1fe94bf0e582c9830ac97c5ece68bfd0e 100644
--- a/tests/class/oracle/destructor_custom_2004.res.oracle
+++ b/tests/class/oracle/destructor_custom_2004.res.oracle
@@ -28,8 +28,6 @@ struct cls {
 };
 void cls::Ctor(struct cls const *this);
 
-void cls::Ctor(struct cls const *this, struct cls const *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -54,15 +52,6 @@ void cls::Ctor(struct cls const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void cls::Ctor(struct cls const *this, struct cls const *__frama_c_arg_0)
-{
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "cls",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/class/oracle/diamond_inheritance.res.oracle b/tests/class/oracle/diamond_inheritance.res.oracle
index e65f508b14d6613ff5acbba7d3c9bf1215672bed..9b8920ff9b9e03066a89faab4606242d9dd7e811 100644
--- a/tests/class/oracle/diamond_inheritance.res.oracle
+++ b/tests/class/oracle/diamond_inheritance.res.oracle
@@ -1,20 +1,12 @@
 [kernel] Parsing tests/class/diamond_inheritance.cc (external front-end)
 Now output intermediate result
 [kernel] Warning: Assuming declared function ios_base::Dtor can't throw any exception
-[kernel] Warning: Assuming declared function ios_base::Ctor can't throw any exception
-[kernel] Warning: Assuming declared function ios_base::Ctor can't throw any exception
 [kernel] Warning: Assuming declared function ios_base::Dtor can't throw any exception
 [kernel] Warning: Assuming declared function ios_base::Dtor can't throw any exception
 [kernel] Warning: Assuming declared function alloc_content can't throw any exception
 [kernel] Warning: Assuming declared function alloc_content can't throw any exception
-[kernel] Warning: Assuming declared function ios_base::Ctor can't throw any exception
-[kernel] Warning: Assuming declared function ios_base::Ctor can't throw any exception
 [kernel] Warning: Assuming declared function ios_base::Dtor can't throw any exception
 [kernel] Warning: Assuming declared function ios_base::Dtor can't throw any exception
-[kernel] Warning: Assuming declared function ios_base::Ctor can't throw any exception
-[kernel] Warning: Assuming declared function ios_base::Ctor can't throw any exception
-[kernel] Warning: Assuming declared function ios_base::Ctor can't throw any exception
-[kernel] Warning: Assuming declared function ios_base::Ctor can't throw any exception
 [kernel] Warning: Assuming declared function ios_base::Dtor can't throw any exception
 [kernel] Warning: Assuming declared function ios_base::Dtor can't throw any exception
 /* Generated by Frama-C */
@@ -84,10 +76,6 @@ struct basic_ostringstream<char> {
    __stringbuf_type _M_stringbuf ;
    struct ios_base _frama_c__Z8ios_base ;
 };
-struct basic_stream_frama_c_bare<char> {
-   struct basic_istream_frama_c_bare<char> _frama_c__Z13basic_istreamIcE ;
-   struct basic_ostream_frama_c_bare<char> _frama_c__Z13basic_ostreamIcE ;
-};
 struct basic_stream<char> {
    struct basic_istream_frama_c_bare<char> _frama_c__Z13basic_istreamIcE ;
    struct basic_ostream_frama_c_bare<char> _frama_c__Z13basic_ostreamIcE ;
@@ -102,9 +90,6 @@ struct basic_stringstream<char> {
    struct basic_ostringstream_frama_c_bare<char> _frama_c__Z19basic_ostringstreamIcE ;
    struct ios_base _frama_c__Z8ios_base ;
 };
-struct ios_base *operator=(struct ios_base *this,
-                           struct ios_base const *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
@@ -129,18 +114,6 @@ void ios_base::Ctor(struct ios_base const *this,
 /*@ requires \valid_read(this); */
 void ios_base::Dtor(struct ios_base const *this);
 
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct ios_base *operator=(struct ios_base *this,
-                           struct ios_base const *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  this->m_buf = __frama_c_arg_0->m_buf;
-  return this;
-}
-
 int _frama_c_find_dynamic_cast_aux(struct _frama_c_rtti_name_info_node *target_info,
                                    struct _frama_c_rtti_name_info_content *concrete_base,
                                    int number_of_bases,
@@ -366,20 +339,8 @@ struct _frama_c_vmt _frama_c_vmt_header =
   {.table = _frama_c_vmt,
    .table_size = 1,
    .rtti_info = & _frama_c_rtti_name_info};
-void basic_stringbuf<char>::Ctor(struct basic_stringbuf<char> const *this,
-                                 struct basic_stringbuf<char> const *__frama_c_arg_0);
-
-void basic_stringbuf<char>::Ctor(struct basic_stringbuf<char> const *this,
-                                 struct basic_stringbuf<char> *__frama_c_arg_0);
-
 void basic_stringbuf<char>::Dtor(struct basic_stringbuf<char> const *this);
 
-struct basic_stringbuf<char> *operator=(struct basic_stringbuf<char> *this,
-                                        struct basic_stringbuf<char> const *__frama_c_arg_0);
-
-struct basic_stringbuf<char> *operator=(struct basic_stringbuf<char> *this,
-                                        struct basic_stringbuf<char> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -410,67 +371,17 @@ void setContent(struct basic_stringbuf<char> *this, char *content)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void basic_stringbuf<char>::Ctor(struct basic_stringbuf<char> const *this,
-                                 struct basic_stringbuf<char> const *__frama_c_arg_0)
-{
-  this->m_content = __frama_c_arg_0->m_content;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void basic_stringbuf<char>::Ctor(struct basic_stringbuf<char> const *this,
-                                 struct basic_stringbuf<char> *__frama_c_arg_0)
-{
-  this->m_content = __frama_c_arg_0->m_content;
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void basic_stringbuf<char>::Dtor(struct basic_stringbuf<char> const *this)
 {
   return;
 }
 
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct basic_stringbuf<char> *operator=(struct basic_stringbuf<char> *this,
-                                        struct basic_stringbuf<char> const *__frama_c_arg_0)
-{
-  this->m_content = __frama_c_arg_0->m_content;
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct basic_stringbuf<char> *operator=(struct basic_stringbuf<char> *this,
-                                        struct basic_stringbuf<char> *__frama_c_arg_0)
-{
-  this->m_content = __frama_c_arg_0->m_content;
-  return this;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "basic_stringbuf",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-void basic_istream<char>::Ctor(struct basic_istream<char> const *this,
-                               struct basic_istream<char> const *__frama_c_arg_0);
-
-struct basic_istream<char> *operator=(struct basic_istream<char> *this,
-                                      struct basic_istream<char> const *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 
 struct _frama_c_vmt _frama_c_vmt_header_for_shift_0;
@@ -534,46 +445,6 @@ void init(struct basic_istream<char> *this, struct basic_stringbuf<char> *buf)
   return;
 }
 
-void basic_istream<char>::Ctor(struct basic_istream_frama_c_bare<char> const *this,
-                               struct basic_istream_frama_c_bare<char> const *__frama_c_arg_0)
-{
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void basic_istream<char>::Ctor(struct basic_istream<char> const *this,
-                               struct basic_istream<char> const *__frama_c_arg_0)
-{
-  ios_base::Ctor(& this->_frama_c__Z8ios_base,
-                 & __frama_c_arg_0->_frama_c__Z8ios_base);
-  basic_istream<char>::Ctor((struct basic_istream_frama_c_bare<char> const *)this,
-                            (struct basic_istream_frama_c_bare<char> const *)__frama_c_arg_0);
-  return;
-}
-
-struct basic_istream_frama_c_bare<char> *operator=(struct basic_istream_frama_c_bare<char> *this,
-                                                   struct basic_istream_frama_c_bare<char> const *__frama_c_arg_0)
-{
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct basic_istream<char> *operator=(struct basic_istream<char> *this,
-                                      struct basic_istream<char> const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__Z8ios_base,
-            & __frama_c_arg_0->_frama_c__Z8ios_base);
-  operator=((struct basic_istream_frama_c_bare<char> *)this,
-            (struct basic_istream_frama_c_bare<char> const *)__frama_c_arg_0);
-  return this;
-}
-
 struct _frama_c_vmt_content _frama_c_vmt[2] =
   {{.method_ptr = (void (*)())0,
     .shift_this = (char *)(& ((struct basic_istream<char> *)0)->_frama_c__Z8ios_base) - (char *)0},
@@ -604,18 +475,6 @@ struct _frama_c_vmt _frama_c_vmt_header =
   {.table = _frama_c_vmt,
    .table_size = 2,
    .rtti_info = & _frama_c_rtti_name_info};
-void basic_istringstream<char>::Ctor(struct basic_istringstream<char> const *this,
-                                     struct basic_istringstream<char> const *__frama_c_arg_0);
-
-void basic_istringstream<char>::Ctor(struct basic_istringstream<char> const *this,
-                                     struct basic_istringstream<char> *__frama_c_arg_0);
-
-struct basic_istringstream<char> *operator=(struct basic_istringstream<char> *this,
-                                            struct basic_istringstream<char> const *__frama_c_arg_0);
-
-struct basic_istringstream<char> *operator=(struct basic_istringstream<char> *this,
-                                            struct basic_istringstream<char> *__frama_c_arg_0);
-
 void basic_istringstream<char>::Dtor(struct basic_istringstream<char> const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -678,128 +537,6 @@ void basic_istringstream<char>::Ctor(struct basic_istringstream<char> const *thi
   return;
 }
 
-void basic_istringstream<char>::Ctor(struct basic_istringstream_frama_c_bare<char> const *this,
-                                     struct basic_istringstream_frama_c_bare<char> const *__frama_c_arg_0)
-{
-  basic_istream<char>::Ctor(& this->_frama_c__Z13basic_istreamIcE,
-                            & __frama_c_arg_0->_frama_c__Z13basic_istreamIcE);
-  basic_stringbuf<char>::Ctor(& this->_M_stringbuf,
-                              & __frama_c_arg_0->_M_stringbuf);
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void basic_istringstream<char>::Ctor(struct basic_istringstream<char> const *this,
-                                     struct basic_istringstream<char> const *__frama_c_arg_0)
-{
-  ios_base::Ctor(& this->_frama_c__Z8ios_base,
-                 & __frama_c_arg_0->_frama_c__Z8ios_base);
-  basic_istringstream<char>::Ctor((struct basic_istringstream_frama_c_bare<char> const *)this,
-                                  (struct basic_istringstream_frama_c_bare<char> const *)__frama_c_arg_0);
-  return;
-}
-
-void basic_istream<char>::Ctor(struct basic_istream_frama_c_bare<char> const *this,
-                               struct basic_istream_frama_c_bare<char> *__frama_c_arg_0)
-{
-  return;
-}
-
-void basic_istringstream<char>::Ctor(struct basic_istringstream_frama_c_bare<char> const *this,
-                                     struct basic_istringstream_frama_c_bare<char> *__frama_c_arg_0)
-{
-  basic_istream<char>::Ctor(& this->_frama_c__Z13basic_istreamIcE,
-                            & __frama_c_arg_0->_frama_c__Z13basic_istreamIcE);
-  basic_stringbuf<char>::Ctor(& this->_M_stringbuf,
-                              & __frama_c_arg_0->_M_stringbuf);
-  return;
-}
-
-void ios_base::Ctor(struct ios_base const *this,
-                    struct ios_base *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  this->m_buf = __frama_c_arg_0->m_buf;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void basic_istringstream<char>::Ctor(struct basic_istringstream<char> const *this,
-                                     struct basic_istringstream<char> *__frama_c_arg_0)
-{
-  ios_base::Ctor(& this->_frama_c__Z8ios_base,
-                 & __frama_c_arg_0->_frama_c__Z8ios_base);
-  basic_istringstream<char>::Ctor((struct basic_istringstream_frama_c_bare<char> const *)this,
-                                  (struct basic_istringstream_frama_c_bare<char> *)__frama_c_arg_0);
-  return;
-}
-
-struct basic_istringstream_frama_c_bare<char> *operator=(struct basic_istringstream_frama_c_bare<char> *this,
-                                                         struct basic_istringstream_frama_c_bare<char> const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__Z13basic_istreamIcE,
-            & __frama_c_arg_0->_frama_c__Z13basic_istreamIcE);
-  operator=(& this->_M_stringbuf,& __frama_c_arg_0->_M_stringbuf);
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct basic_istringstream<char> *operator=(struct basic_istringstream<char> *this,
-                                            struct basic_istringstream<char> const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__Z8ios_base,
-            & __frama_c_arg_0->_frama_c__Z8ios_base);
-  operator=((struct basic_istringstream_frama_c_bare<char> *)this,
-            (struct basic_istringstream_frama_c_bare<char> const *)__frama_c_arg_0);
-  return this;
-}
-
-struct basic_istream_frama_c_bare<char> *operator=(struct basic_istream_frama_c_bare<char> *this,
-                                                   struct basic_istream_frama_c_bare<char> *__frama_c_arg_0)
-{
-  return this;
-}
-
-struct basic_istringstream_frama_c_bare<char> *operator=(struct basic_istringstream_frama_c_bare<char> *this,
-                                                         struct basic_istringstream_frama_c_bare<char> *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__Z13basic_istreamIcE,
-            & __frama_c_arg_0->_frama_c__Z13basic_istreamIcE);
-  operator=(& this->_M_stringbuf,& __frama_c_arg_0->_M_stringbuf);
-  return this;
-}
-
-struct ios_base *operator=(struct ios_base *this,
-                           struct ios_base *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  this->m_buf = __frama_c_arg_0->m_buf;
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct basic_istringstream<char> *operator=(struct basic_istringstream<char> *this,
-                                            struct basic_istringstream<char> *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__Z8ios_base,
-            & __frama_c_arg_0->_frama_c__Z8ios_base);
-  operator=((struct basic_istringstream_frama_c_bare<char> *)this,
-            (struct basic_istringstream_frama_c_bare<char> *)__frama_c_arg_0);
-  return this;
-}
-
 void basic_istream<char>::Dtor(struct basic_istream_frama_c_bare<char> const *this)
 {
   *((struct _frama_c_vmt **)this) = & _frama_c_vmt_header;
@@ -858,12 +595,6 @@ struct _frama_c_vmt _frama_c_vmt_header =
   {.table = _frama_c_vmt,
    .table_size = 2,
    .rtti_info = & _frama_c_rtti_name_info};
-void basic_ostream<char>::Ctor(struct basic_ostream<char> const *this,
-                               struct basic_ostream<char> const *__frama_c_arg_0);
-
-struct basic_ostream<char> *operator=(struct basic_ostream<char> *this,
-                                      struct basic_ostream<char> const *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 
 struct _frama_c_vmt _frama_c_vmt_header_for_shift_0;
@@ -929,46 +660,6 @@ void init(struct basic_ostream<char> *this, struct basic_stringbuf<char> *buf)
   return;
 }
 
-void basic_ostream<char>::Ctor(struct basic_ostream_frama_c_bare<char> const *this,
-                               struct basic_ostream_frama_c_bare<char> const *__frama_c_arg_0)
-{
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void basic_ostream<char>::Ctor(struct basic_ostream<char> const *this,
-                               struct basic_ostream<char> const *__frama_c_arg_0)
-{
-  ios_base::Ctor(& this->_frama_c__Z8ios_base,
-                 & __frama_c_arg_0->_frama_c__Z8ios_base);
-  basic_ostream<char>::Ctor((struct basic_ostream_frama_c_bare<char> const *)this,
-                            (struct basic_ostream_frama_c_bare<char> const *)__frama_c_arg_0);
-  return;
-}
-
-struct basic_ostream_frama_c_bare<char> *operator=(struct basic_ostream_frama_c_bare<char> *this,
-                                                   struct basic_ostream_frama_c_bare<char> const *__frama_c_arg_0)
-{
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct basic_ostream<char> *operator=(struct basic_ostream<char> *this,
-                                      struct basic_ostream<char> const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__Z8ios_base,
-            & __frama_c_arg_0->_frama_c__Z8ios_base);
-  operator=((struct basic_ostream_frama_c_bare<char> *)this,
-            (struct basic_ostream_frama_c_bare<char> const *)__frama_c_arg_0);
-  return this;
-}
-
 struct _frama_c_vmt_content _frama_c_vmt[2] =
   {{.method_ptr = (void (*)())0,
     .shift_this = (char *)(& ((struct basic_ostream<char> *)0)->_frama_c__Z8ios_base) - (char *)0},
@@ -999,18 +690,6 @@ struct _frama_c_vmt _frama_c_vmt_header =
   {.table = _frama_c_vmt,
    .table_size = 2,
    .rtti_info = & _frama_c_rtti_name_info};
-void basic_ostringstream<char>::Ctor(struct basic_ostringstream<char> const *this,
-                                     struct basic_ostringstream<char> const *__frama_c_arg_0);
-
-void basic_ostringstream<char>::Ctor(struct basic_ostringstream<char> const *this,
-                                     struct basic_ostringstream<char> *__frama_c_arg_0);
-
-struct basic_ostringstream<char> *operator=(struct basic_ostringstream<char> *this,
-                                            struct basic_ostringstream<char> const *__frama_c_arg_0);
-
-struct basic_ostringstream<char> *operator=(struct basic_ostringstream<char> *this,
-                                            struct basic_ostringstream<char> *__frama_c_arg_0);
-
 void basic_ostringstream<char>::Dtor(struct basic_ostringstream<char> const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -1073,112 +752,6 @@ void basic_ostringstream<char>::Ctor(struct basic_ostringstream<char> const *thi
   return;
 }
 
-void basic_ostringstream<char>::Ctor(struct basic_ostringstream_frama_c_bare<char> const *this,
-                                     struct basic_ostringstream_frama_c_bare<char> const *__frama_c_arg_0)
-{
-  basic_ostream<char>::Ctor(& this->_frama_c__Z13basic_ostreamIcE,
-                            & __frama_c_arg_0->_frama_c__Z13basic_ostreamIcE);
-  basic_stringbuf<char>::Ctor(& this->_M_stringbuf,
-                              & __frama_c_arg_0->_M_stringbuf);
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void basic_ostringstream<char>::Ctor(struct basic_ostringstream<char> const *this,
-                                     struct basic_ostringstream<char> const *__frama_c_arg_0)
-{
-  ios_base::Ctor(& this->_frama_c__Z8ios_base,
-                 & __frama_c_arg_0->_frama_c__Z8ios_base);
-  basic_ostringstream<char>::Ctor((struct basic_ostringstream_frama_c_bare<char> const *)this,
-                                  (struct basic_ostringstream_frama_c_bare<char> const *)__frama_c_arg_0);
-  return;
-}
-
-void basic_ostream<char>::Ctor(struct basic_ostream_frama_c_bare<char> const *this,
-                               struct basic_ostream_frama_c_bare<char> *__frama_c_arg_0)
-{
-  return;
-}
-
-void basic_ostringstream<char>::Ctor(struct basic_ostringstream_frama_c_bare<char> const *this,
-                                     struct basic_ostringstream_frama_c_bare<char> *__frama_c_arg_0)
-{
-  basic_ostream<char>::Ctor(& this->_frama_c__Z13basic_ostreamIcE,
-                            & __frama_c_arg_0->_frama_c__Z13basic_ostreamIcE);
-  basic_stringbuf<char>::Ctor(& this->_M_stringbuf,
-                              & __frama_c_arg_0->_M_stringbuf);
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void basic_ostringstream<char>::Ctor(struct basic_ostringstream<char> const *this,
-                                     struct basic_ostringstream<char> *__frama_c_arg_0)
-{
-  ios_base::Ctor(& this->_frama_c__Z8ios_base,
-                 & __frama_c_arg_0->_frama_c__Z8ios_base);
-  basic_ostringstream<char>::Ctor((struct basic_ostringstream_frama_c_bare<char> const *)this,
-                                  (struct basic_ostringstream_frama_c_bare<char> *)__frama_c_arg_0);
-  return;
-}
-
-struct basic_ostringstream_frama_c_bare<char> *operator=(struct basic_ostringstream_frama_c_bare<char> *this,
-                                                         struct basic_ostringstream_frama_c_bare<char> const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__Z13basic_ostreamIcE,
-            & __frama_c_arg_0->_frama_c__Z13basic_ostreamIcE);
-  operator=(& this->_M_stringbuf,& __frama_c_arg_0->_M_stringbuf);
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct basic_ostringstream<char> *operator=(struct basic_ostringstream<char> *this,
-                                            struct basic_ostringstream<char> const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__Z8ios_base,
-            & __frama_c_arg_0->_frama_c__Z8ios_base);
-  operator=((struct basic_ostringstream_frama_c_bare<char> *)this,
-            (struct basic_ostringstream_frama_c_bare<char> const *)__frama_c_arg_0);
-  return this;
-}
-
-struct basic_ostream_frama_c_bare<char> *operator=(struct basic_ostream_frama_c_bare<char> *this,
-                                                   struct basic_ostream_frama_c_bare<char> *__frama_c_arg_0)
-{
-  return this;
-}
-
-struct basic_ostringstream_frama_c_bare<char> *operator=(struct basic_ostringstream_frama_c_bare<char> *this,
-                                                         struct basic_ostringstream_frama_c_bare<char> *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__Z13basic_ostreamIcE,
-            & __frama_c_arg_0->_frama_c__Z13basic_ostreamIcE);
-  operator=(& this->_M_stringbuf,& __frama_c_arg_0->_M_stringbuf);
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct basic_ostringstream<char> *operator=(struct basic_ostringstream<char> *this,
-                                            struct basic_ostringstream<char> *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__Z8ios_base,
-            & __frama_c_arg_0->_frama_c__Z8ios_base);
-  operator=((struct basic_ostringstream_frama_c_bare<char> *)this,
-            (struct basic_ostringstream_frama_c_bare<char> *)__frama_c_arg_0);
-  return this;
-}
-
 void basic_ostream<char>::Dtor(struct basic_ostream_frama_c_bare<char> const *this)
 {
   *((struct _frama_c_vmt **)this) = & _frama_c_vmt_header;
@@ -1237,12 +810,6 @@ struct _frama_c_vmt _frama_c_vmt_header =
   {.table = _frama_c_vmt,
    .table_size = 2,
    .rtti_info = & _frama_c_rtti_name_info};
-void basic_stream<char>::Ctor(struct basic_stream<char> const *this,
-                              struct basic_stream<char> const *__frama_c_arg_0);
-
-struct basic_stream<char> *operator=(struct basic_stream<char> *this,
-                                     struct basic_stream<char> const *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 
 struct _frama_c_vmt _frama_c_vmt_header_for_shift_2;
@@ -1379,58 +946,6 @@ void basic_stream<char>::Dtor(struct basic_stream<char> const *this)
 /*@ requires \valid(this); */
 void init(struct basic_stream<char> *this, struct basic_stringbuf<char> *buf);
 
-void basic_stream<char>::Ctor(struct basic_stream_frama_c_bare<char> const *this,
-                              struct basic_stream_frama_c_bare<char> const *__frama_c_arg_0)
-{
-  basic_istream<char>::Ctor(& this->_frama_c__Z13basic_istreamIcE,
-                            & __frama_c_arg_0->_frama_c__Z13basic_istreamIcE);
-  basic_ostream<char>::Ctor(& this->_frama_c__Z13basic_ostreamIcE,
-                            & __frama_c_arg_0->_frama_c__Z13basic_ostreamIcE);
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void basic_stream<char>::Ctor(struct basic_stream<char> const *this,
-                              struct basic_stream<char> const *__frama_c_arg_0)
-{
-  ios_base::Ctor(& this->_frama_c__Z8ios_base,
-                 & __frama_c_arg_0->_frama_c__Z8ios_base);
-  ios_base::Ctor(& this->_frama_c__Z8ios_base,
-                 & __frama_c_arg_0->_frama_c__Z8ios_base);
-  basic_stream<char>::Ctor((struct basic_stream_frama_c_bare<char> const *)this,
-                           (struct basic_stream_frama_c_bare<char> const *)__frama_c_arg_0);
-  return;
-}
-
-struct basic_stream_frama_c_bare<char> *operator=(struct basic_stream_frama_c_bare<char> *this,
-                                                  struct basic_stream_frama_c_bare<char> const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__Z13basic_istreamIcE,
-            & __frama_c_arg_0->_frama_c__Z13basic_istreamIcE);
-  operator=(& this->_frama_c__Z13basic_ostreamIcE,
-            & __frama_c_arg_0->_frama_c__Z13basic_ostreamIcE);
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct basic_stream<char> *operator=(struct basic_stream<char> *this,
-                                     struct basic_stream<char> const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__Z8ios_base,
-            & __frama_c_arg_0->_frama_c__Z8ios_base);
-  operator=(& this->_frama_c__Z8ios_base,
-            & __frama_c_arg_0->_frama_c__Z8ios_base);
-  operator=((struct basic_stream_frama_c_bare<char> *)this,
-            (struct basic_stream_frama_c_bare<char> const *)__frama_c_arg_0);
-  return this;
-}
-
 struct _frama_c_vmt_content _frama_c_vmt[4] =
   {{.method_ptr = (void (*)())0,
     .shift_this = (char *)(& ((struct basic_stream<char> *)0)->_frama_c__Z8ios_base) - (char *)(& ((struct basic_stream<char> *)0)->_frama_c__Z13basic_istreamIcE)},
@@ -1481,18 +996,6 @@ struct _frama_c_vmt _frama_c_vmt_header =
   {.table = _frama_c_vmt,
    .table_size = 4,
    .rtti_info = & _frama_c_rtti_name_info};
-void basic_stringstream<char>::Ctor(struct basic_stringstream<char> const *this,
-                                    struct basic_stringstream<char> const *__frama_c_arg_0);
-
-void basic_stringstream<char>::Ctor(struct basic_stringstream<char> const *this,
-                                    struct basic_stringstream<char> *__frama_c_arg_0);
-
-struct basic_stringstream<char> *operator=(struct basic_stringstream<char> *this,
-                                           struct basic_stringstream<char> const *__frama_c_arg_0);
-
-struct basic_stringstream<char> *operator=(struct basic_stringstream<char> *this,
-                                           struct basic_stringstream<char> *__frama_c_arg_0);
-
 void basic_stringstream<char>::Dtor(struct basic_stringstream<char> const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -1573,110 +1076,6 @@ void basic_stringstream<char>::Ctor(struct basic_stringstream<char> const *this,
   return;
 }
 
-void basic_stringstream<char>::Ctor(struct basic_stringstream_frama_c_bare<char> const *this,
-                                    struct basic_stringstream_frama_c_bare<char> const *__frama_c_arg_0)
-{
-  basic_istringstream<char>::Ctor(& this->_frama_c__Z19basic_istringstreamIcE,
-                                  & __frama_c_arg_0->_frama_c__Z19basic_istringstreamIcE);
-  basic_ostringstream<char>::Ctor(& this->_frama_c__Z19basic_ostringstreamIcE,
-                                  & __frama_c_arg_0->_frama_c__Z19basic_ostringstreamIcE);
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void basic_stringstream<char>::Ctor(struct basic_stringstream<char> const *this,
-                                    struct basic_stringstream<char> const *__frama_c_arg_0)
-{
-  ios_base::Ctor(& this->_frama_c__Z8ios_base,
-                 & __frama_c_arg_0->_frama_c__Z8ios_base);
-  ios_base::Ctor(& this->_frama_c__Z8ios_base,
-                 & __frama_c_arg_0->_frama_c__Z8ios_base);
-  basic_stringstream<char>::Ctor((struct basic_stringstream_frama_c_bare<char> const *)this,
-                                 (struct basic_stringstream_frama_c_bare<char> const *)__frama_c_arg_0);
-  return;
-}
-
-void basic_stringstream<char>::Ctor(struct basic_stringstream_frama_c_bare<char> const *this,
-                                    struct basic_stringstream_frama_c_bare<char> *__frama_c_arg_0)
-{
-  basic_istringstream<char>::Ctor(& this->_frama_c__Z19basic_istringstreamIcE,
-                                  & __frama_c_arg_0->_frama_c__Z19basic_istringstreamIcE);
-  basic_ostringstream<char>::Ctor(& this->_frama_c__Z19basic_ostringstreamIcE,
-                                  & __frama_c_arg_0->_frama_c__Z19basic_ostringstreamIcE);
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void basic_stringstream<char>::Ctor(struct basic_stringstream<char> const *this,
-                                    struct basic_stringstream<char> *__frama_c_arg_0)
-{
-  ios_base::Ctor(& this->_frama_c__Z8ios_base,
-                 & __frama_c_arg_0->_frama_c__Z8ios_base);
-  ios_base::Ctor(& this->_frama_c__Z8ios_base,
-                 & __frama_c_arg_0->_frama_c__Z8ios_base);
-  basic_stringstream<char>::Ctor((struct basic_stringstream_frama_c_bare<char> const *)this,
-                                 (struct basic_stringstream_frama_c_bare<char> *)__frama_c_arg_0);
-  return;
-}
-
-struct basic_stringstream_frama_c_bare<char> *operator=(struct basic_stringstream_frama_c_bare<char> *this,
-                                                        struct basic_stringstream_frama_c_bare<char> const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__Z19basic_istringstreamIcE,
-            & __frama_c_arg_0->_frama_c__Z19basic_istringstreamIcE);
-  operator=(& this->_frama_c__Z19basic_ostringstreamIcE,
-            & __frama_c_arg_0->_frama_c__Z19basic_ostringstreamIcE);
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct basic_stringstream<char> *operator=(struct basic_stringstream<char> *this,
-                                           struct basic_stringstream<char> const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__Z8ios_base,
-            & __frama_c_arg_0->_frama_c__Z8ios_base);
-  operator=(& this->_frama_c__Z8ios_base,
-            & __frama_c_arg_0->_frama_c__Z8ios_base);
-  operator=((struct basic_stringstream_frama_c_bare<char> *)this,
-            (struct basic_stringstream_frama_c_bare<char> const *)__frama_c_arg_0);
-  return this;
-}
-
-struct basic_stringstream_frama_c_bare<char> *operator=(struct basic_stringstream_frama_c_bare<char> *this,
-                                                        struct basic_stringstream_frama_c_bare<char> *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__Z19basic_istringstreamIcE,
-            & __frama_c_arg_0->_frama_c__Z19basic_istringstreamIcE);
-  operator=(& this->_frama_c__Z19basic_ostringstreamIcE,
-            & __frama_c_arg_0->_frama_c__Z19basic_ostringstreamIcE);
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct basic_stringstream<char> *operator=(struct basic_stringstream<char> *this,
-                                           struct basic_stringstream<char> *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__Z8ios_base,
-            & __frama_c_arg_0->_frama_c__Z8ios_base);
-  operator=(& this->_frama_c__Z8ios_base,
-            & __frama_c_arg_0->_frama_c__Z8ios_base);
-  operator=((struct basic_stringstream_frama_c_bare<char> *)this,
-            (struct basic_stringstream_frama_c_bare<char> *)__frama_c_arg_0);
-  return this;
-}
-
 void basic_stringstream<char>::Dtor(struct basic_stringstream_frama_c_bare<char> const *this)
 {
   *((struct _frama_c_vmt **)this) = & _frama_c_vmt_header;
diff --git a/tests/class/oracle/empty_class_bts1547.res.oracle b/tests/class/oracle/empty_class_bts1547.res.oracle
index 16942653dd7dd2cdc194918ba56d9ee99f27d8fc..a47c29216fa98d6f838bd20640f778e835d4b123 100644
--- a/tests/class/oracle/empty_class_bts1547.res.oracle
+++ b/tests/class/oracle/empty_class_bts1547.res.oracle
@@ -32,14 +32,6 @@ struct vector {
 };
 void allocator::Ctor(struct allocator const *this);
 
-void allocator::Dtor(struct allocator const *this);
-
-void allocator::Ctor(struct allocator const *this,
-                     struct allocator const *__frama_c_arg_0);
-
-void allocator::Ctor(struct allocator const *this,
-                     struct allocator *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -50,32 +42,6 @@ void allocator::Ctor(struct allocator const *this)
   return;
 }
 
-/*@ requires \valid_read(this); */
-void allocator::Dtor(struct allocator const *this)
-{
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void allocator::Ctor(struct allocator const *this,
-                     struct allocator const *__frama_c_arg_0)
-{
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void allocator::Ctor(struct allocator const *this,
-                     struct allocator *__frama_c_arg_0)
-{
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "allocator",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
@@ -83,11 +49,6 @@ struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
    .pvmt = (struct _frama_c_vmt *)0};
 void vector::Ctor(struct vector const *this);
 
-void vector::Ctor(struct vector const *this,
-                  struct vector const *__frama_c_arg_0);
-
-void vector::Ctor(struct vector const *this, struct vector *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -101,27 +62,6 @@ void vector::Ctor(struct vector const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void vector::Ctor(struct vector const *this,
-                  struct vector const *__frama_c_arg_0)
-{
-  allocator::Ctor(& this->alloc,& __frama_c_arg_0->alloc);
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void vector::Ctor(struct vector const *this, struct vector *__frama_c_arg_0)
-{
-  allocator::Ctor(& this->alloc,& __frama_c_arg_0->alloc);
-  return;
-}
-
 /*@ requires \valid(this); */
 void foo(struct vector *this)
 {
diff --git a/tests/class/oracle/explicit_destructor_bts1528.res.oracle b/tests/class/oracle/explicit_destructor_bts1528.res.oracle
index a2639f3a1b69379583d63db3347d1e583dfa28dd..a27f1d959be7d000c5379df3ba3301dfd8faa525 100644
--- a/tests/class/oracle/explicit_destructor_bts1528.res.oracle
+++ b/tests/class/oracle/explicit_destructor_bts1528.res.oracle
@@ -26,8 +26,6 @@ struct Point;
 struct Point {
    
 };
-void Point::Ctor(struct Point const *this);
-
 void Point::Ctor(struct Point const *this,
                  struct Point const *__frama_c_arg_0);
 
@@ -49,12 +47,6 @@ void foo(struct Point *this, struct Point p)
 
 void bar(struct Point *this, struct Point p);
 
-/*@ requires \valid_read(this); */
-void Point::Ctor(struct Point const *this)
-{
-  return;
-}
-
 /*@ requires \separated(this, __frama_c_arg_0);
     requires \valid_read(this);
     requires \valid_read(__frama_c_arg_0);
diff --git a/tests/class/oracle/inheritance_out_def.res.oracle b/tests/class/oracle/inheritance_out_def.res.oracle
index e2cd606eedf80a3bccbccf9923c3fb6ff95ffb11..96f87f64b9d5527a0080f952a9dc9514eacb7b67 100644
--- a/tests/class/oracle/inheritance_out_def.res.oracle
+++ b/tests/class/oracle/inheritance_out_def.res.oracle
@@ -32,16 +32,8 @@ struct B {
    struct A _frama_c__Z1A ;
    int y ;
 };
-struct A *operator=(struct A *this, struct A const *__frama_c_arg_0);
-
-struct A *operator=(struct A *this, struct A *__frama_c_arg_0);
-
 void A::Dtor(struct A const *this);
 
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0);
-
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0);
-
 void A::Ctor(struct A const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -58,28 +50,6 @@ int get_sum(struct A *this)
   return __retres;
 }
 
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct A *operator=(struct A *this, struct A const *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  this->x = __frama_c_arg_0->x;
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct A *operator=(struct A *this, struct A *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  this->x = __frama_c_arg_0->x;
-  return this;
-}
-
 /*@ requires \valid_read(this); */
 void A::Dtor(struct A const *this)
 {
@@ -87,28 +57,6 @@ void A::Dtor(struct A const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void A::Ctor(struct A const *this)
 {
@@ -341,16 +289,8 @@ struct _frama_c_vmt _frama_c_vmt_header =
   {.table = _frama_c_vmt,
    .table_size = 1,
    .rtti_info = & _frama_c_rtti_name_info};
-struct B *operator=(struct B *this, struct B const *__frama_c_arg_0);
-
-struct B *operator=(struct B *this, struct B *__frama_c_arg_0);
-
 void B::Dtor(struct B const *this);
 
-void B::Ctor(struct B const *this, struct B const *__frama_c_arg_0);
-
-void B::Ctor(struct B const *this, struct B *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
@@ -369,28 +309,6 @@ int get_sum(struct B *this)
   return __retres;
 }
 
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct B *operator=(struct B *this, struct B const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__Z1A,& __frama_c_arg_0->_frama_c__Z1A);
-  this->y = __frama_c_arg_0->y;
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct B *operator=(struct B *this, struct B *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__Z1A,& __frama_c_arg_0->_frama_c__Z1A);
-  this->y = __frama_c_arg_0->y;
-  return this;
-}
-
 /*@ requires \valid_read(this); */
 void B::Dtor(struct B const *this)
 {
@@ -399,28 +317,6 @@ void B::Dtor(struct B const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void B::Ctor(struct B const *this, struct B const *__frama_c_arg_0)
-{
-  A::Ctor(& this->_frama_c__Z1A,& __frama_c_arg_0->_frama_c__Z1A);
-  this->y = __frama_c_arg_0->y;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void B::Ctor(struct B const *this, struct B *__frama_c_arg_0)
-{
-  A::Ctor(& this->_frama_c__Z1A,& __frama_c_arg_0->_frama_c__Z1A);
-  this->y = __frama_c_arg_0->y;
-  return;
-}
-
 struct _frama_c_vmt_content _frama_c_vmt[1] =
   {{.method_ptr = (void (*)())(& get_sum), .shift_this = 0}};
 struct _frama_c_rtti_name_info_content _frama_c_base_classes[1] =
diff --git a/tests/class/oracle/loop_local_var_bts1521.res.oracle b/tests/class/oracle/loop_local_var_bts1521.res.oracle
index 3a9bac11c2e67ca70d59f0f278569e5af75d200f..aeafd8e6d103316a5ca8c2917800053168c60898 100644
--- a/tests/class/oracle/loop_local_var_bts1521.res.oracle
+++ b/tests/class/oracle/loop_local_var_bts1521.res.oracle
@@ -26,24 +26,13 @@ struct iterator;
 struct iterator {
    int a ;
 };
-void iterator::Ctor(struct iterator const *this);
-
 void iterator::Ctor(struct iterator const *this,
                     struct iterator const *__frama_c_arg_0);
 
-void iterator::Ctor(struct iterator const *this,
-                    struct iterator *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
 struct _frama_c_vmt_content _frama_c_vmt[1];
-/*@ requires \valid_read(this); */
-void iterator::Ctor(struct iterator const *this)
-{
-  return;
-}
-
 /*@ requires \separated(this, __frama_c_arg_0);
     requires \valid_read(this);
     requires \valid_read(__frama_c_arg_0);
@@ -55,17 +44,6 @@ void iterator::Ctor(struct iterator const *this,
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void iterator::Ctor(struct iterator const *this,
-                    struct iterator *__frama_c_arg_0)
-{
-  this->a = __frama_c_arg_0->a;
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "iterator",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/class/oracle/names.res.oracle b/tests/class/oracle/names.res.oracle
index e11a01e61055ae0b2d53c9012e0edb8c5ab113ac..e4f99465d9a1224661023e2bb846cc5821174040 100644
--- a/tests/class/oracle/names.res.oracle
+++ b/tests/class/oracle/names.res.oracle
@@ -28,10 +28,6 @@ struct A {
 };
 void A::Ctor(struct A const *this);
 
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0);
-
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -44,26 +40,6 @@ void A::Ctor(struct A const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "A",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/class/oracle/ostream_bts1752.res.oracle b/tests/class/oracle/ostream_bts1752.res.oracle
index 79d6c88719f03877de24577bbc1fe5511ad576a2..7d1b3f1faeba98f695632a2ddf2241e4597a4e62 100644
--- a/tests/class/oracle/ostream_bts1752.res.oracle
+++ b/tests/class/oracle/ostream_bts1752.res.oracle
@@ -30,12 +30,6 @@ struct ostream {
 };
 void ostream::Ctor(struct ostream const *this);
 
-void ostream::Ctor(struct ostream const *this,
-                   struct ostream const *__frama_c_arg_0);
-
-void ostream::Ctor(struct ostream const *this,
-                   struct ostream *__frama_c_arg_0);
-
 void ostream::Dtor(struct ostream const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -51,26 +45,6 @@ void ostream::Ctor(struct ostream const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void ostream::Ctor(struct ostream const *this,
-                   struct ostream const *__frama_c_arg_0)
-{
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void ostream::Ctor(struct ostream const *this,
-                   struct ostream *__frama_c_arg_0)
-{
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void ostream::Dtor(struct ostream const *this)
 {
diff --git a/tests/class/oracle/rt_val.res.oracle b/tests/class/oracle/rt_val.res.oracle
index 3859628719e5f971ea40b6ea8a2bab39ea23235d..492396530317b993279cf0ec0db5349c753eaed3 100644
--- a/tests/class/oracle/rt_val.res.oracle
+++ b/tests/class/oracle/rt_val.res.oracle
@@ -26,10 +26,6 @@ struct Foo;
 struct Foo {
    int x ;
 };
-void Foo::Ctor(struct Foo const *this, struct Foo const *__frama_c_arg_0);
-
-void Foo::Ctor(struct Foo const *this, struct Foo *__frama_c_arg_0);
-
 void Foo::Dtor(struct Foo const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -43,26 +39,6 @@ void Foo::Ctor(struct Foo const *this, int _x)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void Foo::Ctor(struct Foo const *this, struct Foo const *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void Foo::Ctor(struct Foo const *this, struct Foo *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void Foo::Dtor(struct Foo const *this)
 {
diff --git a/tests/class/oracle/simple_classe.res.oracle b/tests/class/oracle/simple_classe.res.oracle
index 758c20bf6cce5c591b6d35f5b5d9efce9bb94057..4c4157ca956b280e60167a90ea2ca7efa3b6741e 100644
--- a/tests/class/oracle/simple_classe.res.oracle
+++ b/tests/class/oracle/simple_classe.res.oracle
@@ -30,8 +30,6 @@ struct Point {
 void Point::Ctor(struct Point const *this,
                  struct Point const *__frama_c_arg_0);
 
-void Point::Ctor(struct Point const *this, struct Point *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -80,17 +78,6 @@ void Point::Ctor(struct Point const *this,
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void Point::Ctor(struct Point const *this, struct Point *__frama_c_arg_0)
-{
-  this->_x = __frama_c_arg_0->_x;
-  this->_y = __frama_c_arg_0->_y;
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "Point",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/class/oracle/simple_private.res.oracle b/tests/class/oracle/simple_private.res.oracle
index da067adf7e7c7d6fd1d287f264e19428b0b35ab1..51fdc7657aad7c2a50a549d881b23d52cdf3e070 100644
--- a/tests/class/oracle/simple_private.res.oracle
+++ b/tests/class/oracle/simple_private.res.oracle
@@ -26,10 +26,6 @@ struct A;
 struct A {
    int v ;
 };
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0);
-
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -57,26 +53,6 @@ int f(struct A *this)
   return __retres;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0)
-{
-  this->v = __frama_c_arg_0->v;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0)
-{
-  this->v = __frama_c_arg_0->v;
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "A",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/class/oracle/virtual_for_shift.res.oracle b/tests/class/oracle/virtual_for_shift.res.oracle
index ac24a52c181b33f73aa6f907cea66194dcbe962f..839b594d130b4fafc6494973753fe45f358b6703 100644
--- a/tests/class/oracle/virtual_for_shift.res.oracle
+++ b/tests/class/oracle/virtual_for_shift.res.oracle
@@ -37,8 +37,6 @@ struct C {
    struct B _frama_c__Z1B ;
    double _value ;
 };
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
@@ -110,17 +108,6 @@ struct A *operator=(struct A *this, struct A const *source)
   return this;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  this->_count = __frama_c_arg_0->_count;
-  return;
-}
-
 int _frama_c_find_dynamic_cast_aux(struct _frama_c_rtti_name_info_node *target_info,
                                    struct _frama_c_rtti_name_info_content *concrete_base,
                                    int number_of_bases,
@@ -348,8 +335,6 @@ struct _frama_c_vmt _frama_c_vmt_header =
   {.table = _frama_c_vmt,
    .table_size = 3,
    .rtti_info = & _frama_c_rtti_name_info};
-void B::Ctor(struct B const *this, struct B const *__frama_c_arg_0);
-
 void B::Dtor(struct B const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -394,17 +379,6 @@ struct B *operator=(struct B *this, struct B const *source)
   return this;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void B::Ctor(struct B const *this, struct B const *__frama_c_arg_0)
-{
-  A::Ctor(& this->_frama_c__Z1A,& __frama_c_arg_0->_frama_c__Z1A);
-  this->_ch = __frama_c_arg_0->_ch;
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void B::Dtor(struct B const *this)
 {
@@ -433,8 +407,6 @@ struct _frama_c_vmt _frama_c_vmt_header =
    .rtti_info = & _frama_c_rtti_name_info};
 void C::Dtor(struct C const *this);
 
-void C::Ctor(struct C const *this, struct C const *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
@@ -487,17 +459,6 @@ void C::Dtor(struct C const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void C::Ctor(struct C const *this, struct C const *__frama_c_arg_0)
-{
-  B::Ctor(& this->_frama_c__Z1B,& __frama_c_arg_0->_frama_c__Z1B);
-  this->_value = __frama_c_arg_0->_value;
-  return;
-}
-
 struct _frama_c_vmt_content _frama_c_vmt[3] =
   {{.method_ptr = (void (*)())(& C::Dtor), .shift_this = 0},
    {.method_ptr = (void (*)())(& assign), .shift_this = 0},
diff --git a/tests/class/oracle/virtual_for_shift2.res.oracle b/tests/class/oracle/virtual_for_shift2.res.oracle
index 17686cb317a1e38ed126c8512334ec612bc0ffcb..eeca3185e1be9016798dd77ba19756f9c9902652 100644
--- a/tests/class/oracle/virtual_for_shift2.res.oracle
+++ b/tests/class/oracle/virtual_for_shift2.res.oracle
@@ -37,8 +37,6 @@ struct C {
    struct B _frama_c__Z1B ;
    double _value ;
 };
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
@@ -110,17 +108,6 @@ struct A *operator=(struct A *this, struct A const *source)
   return this;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  this->_count = __frama_c_arg_0->_count;
-  return;
-}
-
 int _frama_c_find_dynamic_cast_aux(struct _frama_c_rtti_name_info_node *target_info,
                                    struct _frama_c_rtti_name_info_content *concrete_base,
                                    int number_of_bases,
@@ -348,8 +335,6 @@ struct _frama_c_vmt _frama_c_vmt_header =
   {.table = _frama_c_vmt,
    .table_size = 3,
    .rtti_info = & _frama_c_rtti_name_info};
-void B::Ctor(struct B const *this, struct B const *__frama_c_arg_0);
-
 void B::Dtor(struct B const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -394,17 +379,6 @@ struct B *operator=(struct B *this, struct B const *source)
   return this;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void B::Ctor(struct B const *this, struct B const *__frama_c_arg_0)
-{
-  A::Ctor(& this->_frama_c__Z1A,& __frama_c_arg_0->_frama_c__Z1A);
-  this->_ch = __frama_c_arg_0->_ch;
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void B::Dtor(struct B const *this)
 {
@@ -433,8 +407,6 @@ struct _frama_c_vmt _frama_c_vmt_header =
    .rtti_info = & _frama_c_rtti_name_info};
 void C::Dtor(struct C const *this);
 
-void C::Ctor(struct C const *this, struct C const *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
@@ -487,17 +459,6 @@ void C::Dtor(struct C const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void C::Ctor(struct C const *this, struct C const *__frama_c_arg_0)
-{
-  B::Ctor(& this->_frama_c__Z1B,& __frama_c_arg_0->_frama_c__Z1B);
-  this->_value = __frama_c_arg_0->_value;
-  return;
-}
-
 struct _frama_c_vmt_content _frama_c_vmt[3] =
   {{.method_ptr = (void (*)())(& C::Dtor), .shift_this = 0},
    {.method_ptr = (void (*)())(& assign), .shift_this = 0},
diff --git a/tests/class/oracle/virtual_for_shift3.res.oracle b/tests/class/oracle/virtual_for_shift3.res.oracle
index 10ddcb1b71489edf3aebdfe8951ff6f774cf4ea0..a89253b15d5da7817736a487067620b3e81f348c 100644
--- a/tests/class/oracle/virtual_for_shift3.res.oracle
+++ b/tests/class/oracle/virtual_for_shift3.res.oracle
@@ -42,8 +42,6 @@ struct D {
    struct C _frama_c__Z1C ;
    struct C _origin ;
 };
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
@@ -115,17 +113,6 @@ struct A *operator=(struct A *this, struct A const *source)
   return this;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  this->_count = __frama_c_arg_0->_count;
-  return;
-}
-
 int _frama_c_find_dynamic_cast_aux(struct _frama_c_rtti_name_info_node *target_info,
                                    struct _frama_c_rtti_name_info_content *concrete_base,
                                    int number_of_bases,
@@ -353,8 +340,6 @@ struct _frama_c_vmt _frama_c_vmt_header =
   {.table = _frama_c_vmt,
    .table_size = 3,
    .rtti_info = & _frama_c_rtti_name_info};
-void B::Ctor(struct B const *this, struct B const *__frama_c_arg_0);
-
 void B::Dtor(struct B const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -399,17 +384,6 @@ struct B *operator=(struct B *this, struct B const *source)
   return this;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void B::Ctor(struct B const *this, struct B const *__frama_c_arg_0)
-{
-  A::Ctor(& this->_frama_c__Z1A,& __frama_c_arg_0->_frama_c__Z1A);
-  this->_ch = __frama_c_arg_0->_ch;
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void B::Dtor(struct B const *this)
 {
@@ -438,8 +412,6 @@ struct _frama_c_vmt _frama_c_vmt_header =
    .rtti_info = & _frama_c_rtti_name_info};
 void C::Dtor(struct C const *this);
 
-void C::Ctor(struct C const *this, struct C const *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
@@ -492,17 +464,6 @@ void C::Dtor(struct C const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void C::Ctor(struct C const *this, struct C const *__frama_c_arg_0)
-{
-  B::Ctor(& this->_frama_c__Z1B,& __frama_c_arg_0->_frama_c__Z1B);
-  this->_value = __frama_c_arg_0->_value;
-  return;
-}
-
 struct _frama_c_vmt_content _frama_c_vmt[3] =
   {{.method_ptr = (void (*)())(& C::Dtor), .shift_this = 0},
    {.method_ptr = (void (*)())(& assign), .shift_this = 0},
@@ -523,8 +484,6 @@ struct _frama_c_vmt _frama_c_vmt_header =
    .rtti_info = & _frama_c_rtti_name_info};
 void D::Dtor(struct D const *this);
 
-void D::Ctor(struct D const *this, struct D const *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
@@ -581,17 +540,6 @@ void D::Dtor(struct D const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void D::Ctor(struct D const *this, struct D const *__frama_c_arg_0)
-{
-  C::Ctor(& this->_frama_c__Z1C,& __frama_c_arg_0->_frama_c__Z1C);
-  C::Ctor(& this->_origin,& __frama_c_arg_0->_origin);
-  return;
-}
-
 struct _frama_c_vmt_content _frama_c_vmt[3] =
   {{.method_ptr = (void (*)())(& D::Dtor), .shift_this = 0},
    {.method_ptr = (void (*)())(& assign), .shift_this = 0},
diff --git a/tests/class/oracle/virtual_inheritance.res.oracle b/tests/class/oracle/virtual_inheritance.res.oracle
index c9a613b5a152d324bcd7c9d6cb6d4140871ef0bb..1c7b55ae6ba1d8f358540f139a68f5298f2ded6f 100644
--- a/tests/class/oracle/virtual_inheritance.res.oracle
+++ b/tests/class/oracle/virtual_inheritance.res.oracle
@@ -3,8 +3,6 @@ Now output intermediate result
 [kernel] Warning: Assuming declared function ios_base::Dtor can't throw any exception
 [kernel] Warning: Assuming declared function alloc_content can't throw any exception
 [kernel] Warning: Assuming declared function alloc_content can't throw any exception
-[kernel] Warning: Assuming declared function ios_base::Ctor can't throw any exception
-[kernel] Warning: Assuming declared function ios_base::Ctor can't throw any exception
 [kernel] Warning: Assuming declared function ios_base::Dtor can't throw any exception
 [kernel] Warning: Assuming declared function atoi can't throw any exception
 /* Generated by Frama-C */
@@ -58,9 +56,6 @@ struct basic_istringstream<char> {
    __stringbuf_type _M_stringbuf ;
    struct ios_base _frama_c__Z8ios_base ;
 };
-struct ios_base *operator=(struct ios_base *this,
-                           struct ios_base const *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
@@ -85,18 +80,6 @@ void ios_base::Ctor(struct ios_base const *this,
 /*@ requires \valid_read(this); */
 void ios_base::Dtor(struct ios_base const *this);
 
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct ios_base *operator=(struct ios_base *this,
-                           struct ios_base const *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  this->m_buf = __frama_c_arg_0->m_buf;
-  return this;
-}
-
 int _frama_c_find_dynamic_cast_aux(struct _frama_c_rtti_name_info_node *target_info,
                                    struct _frama_c_rtti_name_info_content *concrete_base,
                                    int number_of_bases,
@@ -322,20 +305,8 @@ struct _frama_c_vmt _frama_c_vmt_header =
   {.table = _frama_c_vmt,
    .table_size = 1,
    .rtti_info = & _frama_c_rtti_name_info};
-void basic_stringbuf<char>::Ctor(struct basic_stringbuf<char> const *this,
-                                 struct basic_stringbuf<char> const *__frama_c_arg_0);
-
-void basic_stringbuf<char>::Ctor(struct basic_stringbuf<char> const *this,
-                                 struct basic_stringbuf<char> *__frama_c_arg_0);
-
 void basic_stringbuf<char>::Dtor(struct basic_stringbuf<char> const *this);
 
-struct basic_stringbuf<char> *operator=(struct basic_stringbuf<char> *this,
-                                        struct basic_stringbuf<char> const *__frama_c_arg_0);
-
-struct basic_stringbuf<char> *operator=(struct basic_stringbuf<char> *this,
-                                        struct basic_stringbuf<char> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -351,67 +322,17 @@ void basic_stringbuf<char>::Ctor(struct basic_stringbuf<char> const *this,
 /*@ requires \valid(this); */
 void alloc_content(struct basic_stringbuf<char> *this);
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void basic_stringbuf<char>::Ctor(struct basic_stringbuf<char> const *this,
-                                 struct basic_stringbuf<char> const *__frama_c_arg_0)
-{
-  this->m_content = __frama_c_arg_0->m_content;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void basic_stringbuf<char>::Ctor(struct basic_stringbuf<char> const *this,
-                                 struct basic_stringbuf<char> *__frama_c_arg_0)
-{
-  this->m_content = __frama_c_arg_0->m_content;
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void basic_stringbuf<char>::Dtor(struct basic_stringbuf<char> const *this)
 {
   return;
 }
 
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct basic_stringbuf<char> *operator=(struct basic_stringbuf<char> *this,
-                                        struct basic_stringbuf<char> const *__frama_c_arg_0)
-{
-  this->m_content = __frama_c_arg_0->m_content;
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct basic_stringbuf<char> *operator=(struct basic_stringbuf<char> *this,
-                                        struct basic_stringbuf<char> *__frama_c_arg_0)
-{
-  this->m_content = __frama_c_arg_0->m_content;
-  return this;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "basic_stringbuf",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-void basic_istream<char>::Ctor(struct basic_istream<char> const *this,
-                               struct basic_istream<char> const *__frama_c_arg_0);
-
-struct basic_istream<char> *operator=(struct basic_istream<char> *this,
-                                      struct basic_istream<char> const *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 
 struct _frama_c_vmt _frama_c_vmt_header_for_shift_0;
@@ -465,46 +386,6 @@ void init(struct basic_istream<char> *this, struct basic_stringbuf<char> *buf)
   return;
 }
 
-void basic_istream<char>::Ctor(struct basic_istream_frama_c_bare<char> const *this,
-                               struct basic_istream_frama_c_bare<char> const *__frama_c_arg_0)
-{
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void basic_istream<char>::Ctor(struct basic_istream<char> const *this,
-                               struct basic_istream<char> const *__frama_c_arg_0)
-{
-  ios_base::Ctor(& this->_frama_c__Z8ios_base,
-                 & __frama_c_arg_0->_frama_c__Z8ios_base);
-  basic_istream<char>::Ctor((struct basic_istream_frama_c_bare<char> const *)this,
-                            (struct basic_istream_frama_c_bare<char> const *)__frama_c_arg_0);
-  return;
-}
-
-struct basic_istream_frama_c_bare<char> *operator=(struct basic_istream_frama_c_bare<char> *this,
-                                                   struct basic_istream_frama_c_bare<char> const *__frama_c_arg_0)
-{
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct basic_istream<char> *operator=(struct basic_istream<char> *this,
-                                      struct basic_istream<char> const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__Z8ios_base,
-            & __frama_c_arg_0->_frama_c__Z8ios_base);
-  operator=((struct basic_istream_frama_c_bare<char> *)this,
-            (struct basic_istream_frama_c_bare<char> const *)__frama_c_arg_0);
-  return this;
-}
-
 struct _frama_c_vmt_content _frama_c_vmt[2] =
   {{.method_ptr = (void (*)())0,
     .shift_this = (char *)(& ((struct basic_istream<char> *)0)->_frama_c__Z8ios_base) - (char *)0},
@@ -535,18 +416,6 @@ struct _frama_c_vmt _frama_c_vmt_header =
   {.table = _frama_c_vmt,
    .table_size = 2,
    .rtti_info = & _frama_c_rtti_name_info};
-void basic_istringstream<char>::Ctor(struct basic_istringstream<char> const *this,
-                                     struct basic_istringstream<char> const *__frama_c_arg_0);
-
-void basic_istringstream<char>::Ctor(struct basic_istringstream<char> const *this,
-                                     struct basic_istringstream<char> *__frama_c_arg_0);
-
-struct basic_istringstream<char> *operator=(struct basic_istringstream<char> *this,
-                                            struct basic_istringstream<char> const *__frama_c_arg_0);
-
-struct basic_istringstream<char> *operator=(struct basic_istringstream<char> *this,
-                                            struct basic_istringstream<char> *__frama_c_arg_0);
-
 void basic_istringstream<char>::Dtor(struct basic_istringstream<char> const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -609,128 +478,6 @@ void basic_istringstream<char>::Ctor(struct basic_istringstream<char> const *thi
   return;
 }
 
-void basic_istringstream<char>::Ctor(struct basic_istringstream_frama_c_bare<char> const *this,
-                                     struct basic_istringstream_frama_c_bare<char> const *__frama_c_arg_0)
-{
-  basic_istream<char>::Ctor(& this->_frama_c__Z13basic_istreamIcE,
-                            & __frama_c_arg_0->_frama_c__Z13basic_istreamIcE);
-  basic_stringbuf<char>::Ctor(& this->_M_stringbuf,
-                              & __frama_c_arg_0->_M_stringbuf);
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void basic_istringstream<char>::Ctor(struct basic_istringstream<char> const *this,
-                                     struct basic_istringstream<char> const *__frama_c_arg_0)
-{
-  ios_base::Ctor(& this->_frama_c__Z8ios_base,
-                 & __frama_c_arg_0->_frama_c__Z8ios_base);
-  basic_istringstream<char>::Ctor((struct basic_istringstream_frama_c_bare<char> const *)this,
-                                  (struct basic_istringstream_frama_c_bare<char> const *)__frama_c_arg_0);
-  return;
-}
-
-void basic_istream<char>::Ctor(struct basic_istream_frama_c_bare<char> const *this,
-                               struct basic_istream_frama_c_bare<char> *__frama_c_arg_0)
-{
-  return;
-}
-
-void basic_istringstream<char>::Ctor(struct basic_istringstream_frama_c_bare<char> const *this,
-                                     struct basic_istringstream_frama_c_bare<char> *__frama_c_arg_0)
-{
-  basic_istream<char>::Ctor(& this->_frama_c__Z13basic_istreamIcE,
-                            & __frama_c_arg_0->_frama_c__Z13basic_istreamIcE);
-  basic_stringbuf<char>::Ctor(& this->_M_stringbuf,
-                              & __frama_c_arg_0->_M_stringbuf);
-  return;
-}
-
-void ios_base::Ctor(struct ios_base const *this,
-                    struct ios_base *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  this->m_buf = __frama_c_arg_0->m_buf;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void basic_istringstream<char>::Ctor(struct basic_istringstream<char> const *this,
-                                     struct basic_istringstream<char> *__frama_c_arg_0)
-{
-  ios_base::Ctor(& this->_frama_c__Z8ios_base,
-                 & __frama_c_arg_0->_frama_c__Z8ios_base);
-  basic_istringstream<char>::Ctor((struct basic_istringstream_frama_c_bare<char> const *)this,
-                                  (struct basic_istringstream_frama_c_bare<char> *)__frama_c_arg_0);
-  return;
-}
-
-struct basic_istringstream_frama_c_bare<char> *operator=(struct basic_istringstream_frama_c_bare<char> *this,
-                                                         struct basic_istringstream_frama_c_bare<char> const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__Z13basic_istreamIcE,
-            & __frama_c_arg_0->_frama_c__Z13basic_istreamIcE);
-  operator=(& this->_M_stringbuf,& __frama_c_arg_0->_M_stringbuf);
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct basic_istringstream<char> *operator=(struct basic_istringstream<char> *this,
-                                            struct basic_istringstream<char> const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__Z8ios_base,
-            & __frama_c_arg_0->_frama_c__Z8ios_base);
-  operator=((struct basic_istringstream_frama_c_bare<char> *)this,
-            (struct basic_istringstream_frama_c_bare<char> const *)__frama_c_arg_0);
-  return this;
-}
-
-struct basic_istream_frama_c_bare<char> *operator=(struct basic_istream_frama_c_bare<char> *this,
-                                                   struct basic_istream_frama_c_bare<char> *__frama_c_arg_0)
-{
-  return this;
-}
-
-struct basic_istringstream_frama_c_bare<char> *operator=(struct basic_istringstream_frama_c_bare<char> *this,
-                                                         struct basic_istringstream_frama_c_bare<char> *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__Z13basic_istreamIcE,
-            & __frama_c_arg_0->_frama_c__Z13basic_istreamIcE);
-  operator=(& this->_M_stringbuf,& __frama_c_arg_0->_M_stringbuf);
-  return this;
-}
-
-struct ios_base *operator=(struct ios_base *this,
-                           struct ios_base *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  this->m_buf = __frama_c_arg_0->m_buf;
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct basic_istringstream<char> *operator=(struct basic_istringstream<char> *this,
-                                            struct basic_istringstream<char> *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__Z8ios_base,
-            & __frama_c_arg_0->_frama_c__Z8ios_base);
-  operator=((struct basic_istringstream_frama_c_bare<char> *)this,
-            (struct basic_istringstream_frama_c_bare<char> *)__frama_c_arg_0);
-  return this;
-}
-
 void basic_istream<char>::Dtor(struct basic_istream_frama_c_bare<char> const *this)
 {
   *((struct _frama_c_vmt **)this) = & _frama_c_vmt_header;
diff --git a/tests/class/oracle/virtual_inheritance_2077.res.oracle b/tests/class/oracle/virtual_inheritance_2077.res.oracle
index d1ce1fc5434f8e54e219a8d6691a6f89251cd399..92051dbeb3ec39a4641efd32c79199e8f44c4316 100644
--- a/tests/class/oracle/virtual_inheritance_2077.res.oracle
+++ b/tests/class/oracle/virtual_inheritance_2077.res.oracle
@@ -39,105 +39,31 @@ struct C {
    struct A _frama_c__Z1A ;
 };
 struct D;
-struct D_frama_c_bare {
-   struct B _frama_c__Z1B ;
-   struct C_frama_c_bare _frama_c__Z1C ;
-   struct _frama_c_vmt *pvmt ;
-};
 struct D {
    struct B _frama_c__Z1B ;
    struct C_frama_c_bare _frama_c__Z1C ;
    struct _frama_c_vmt *pvmt ;
    struct A _frama_c__Z1A ;
 };
-struct A *operator=(struct A *this, struct A const *__frama_c_arg_0);
-
-struct A *operator=(struct A *this, struct A *__frama_c_arg_0);
-
-void A::Dtor(struct A const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
 struct _frama_c_vmt_content _frama_c_vmt[1];
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct A *operator=(struct A *this, struct A const *__frama_c_arg_0)
-{
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct A *operator=(struct A *this, struct A *__frama_c_arg_0)
-{
-  return this;
-}
-
-/*@ requires \valid_read(this); */
-void A::Dtor(struct A const *this)
-{
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "A",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-struct B *operator=(struct B *this, struct B const *__frama_c_arg_0);
-
-struct B *operator=(struct B *this, struct B *__frama_c_arg_0);
-
-void B::Dtor(struct B const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
 struct _frama_c_rtti_name_info_content _frama_c_base_classes[1];
 struct _frama_c_vmt_content _frama_c_vmt[1];
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct B *operator=(struct B *this, struct B const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__Z1A,& __frama_c_arg_0->_frama_c__Z1A);
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct B *operator=(struct B *this, struct B *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__Z1A,& __frama_c_arg_0->_frama_c__Z1A);
-  return this;
-}
-
-/*@ requires \valid_read(this); */
-void B::Dtor(struct B const *this)
-{
-  A::Dtor(& this->_frama_c__Z1A);
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "B",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-struct C *operator=(struct C *this, struct C const *__frama_c_arg_0);
-
-struct C *operator=(struct C *this, struct C *__frama_c_arg_0);
-
-void C::Dtor(struct C const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 
 struct _frama_c_vmt _frama_c_vmt_header_for_shift_0;
@@ -147,57 +73,6 @@ struct _frama_c_rtti_name_info_content _frama_c_base_classes[1];
 
 struct _frama_c_vmt_content _frama_c_vmt[1];
 
-struct C_frama_c_bare *operator=(struct C_frama_c_bare *this,
-                                 struct C_frama_c_bare const *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct C *operator=(struct C *this, struct C const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__Z1A,& __frama_c_arg_0->_frama_c__Z1A);
-  operator=((struct C_frama_c_bare *)this,
-            (struct C_frama_c_bare const *)__frama_c_arg_0);
-  return this;
-}
-
-struct C_frama_c_bare *operator=(struct C_frama_c_bare *this,
-                                 struct C_frama_c_bare *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct C *operator=(struct C *this, struct C *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__Z1A,& __frama_c_arg_0->_frama_c__Z1A);
-  operator=((struct C_frama_c_bare *)this,
-            (struct C_frama_c_bare *)__frama_c_arg_0);
-  return this;
-}
-
-void C::Dtor(struct C_frama_c_bare const *this)
-{
-  return;
-}
-
-/*@ requires \valid_read(this); */
-void C::Dtor(struct C const *this)
-{
-  C::Dtor((struct C_frama_c_bare const *)this);
-  A::Dtor(& this->_frama_c__Z1A);
-  return;
-}
-
 int _frama_c_find_dynamic_cast_aux(struct _frama_c_rtti_name_info_node *target_info,
                                    struct _frama_c_rtti_name_info_content *concrete_base,
                                    int number_of_bases,
@@ -440,12 +315,6 @@ struct _frama_c_vmt _frama_c_vmt_header =
   {.table = _frama_c_vmt,
    .table_size = 1,
    .rtti_info = & _frama_c_rtti_name_info};
-struct D *operator=(struct D *this, struct D const *__frama_c_arg_0);
-
-struct D *operator=(struct D *this, struct D *__frama_c_arg_0);
-
-void D::Dtor(struct D const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 
 struct _frama_c_vmt _frama_c_vmt_header_for_shift_0;
@@ -455,63 +324,6 @@ struct _frama_c_rtti_name_info_content _frama_c_base_classes[3];
 
 struct _frama_c_vmt_content _frama_c_vmt[1];
 
-struct D_frama_c_bare *operator=(struct D_frama_c_bare *this,
-                                 struct D_frama_c_bare const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__Z1B,& __frama_c_arg_0->_frama_c__Z1B);
-  operator=(& this->_frama_c__Z1C,& __frama_c_arg_0->_frama_c__Z1C);
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct D *operator=(struct D *this, struct D const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__Z1A,& __frama_c_arg_0->_frama_c__Z1A);
-  operator=((struct D_frama_c_bare *)this,
-            (struct D_frama_c_bare const *)__frama_c_arg_0);
-  return this;
-}
-
-struct D_frama_c_bare *operator=(struct D_frama_c_bare *this,
-                                 struct D_frama_c_bare *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__Z1B,& __frama_c_arg_0->_frama_c__Z1B);
-  operator=(& this->_frama_c__Z1C,& __frama_c_arg_0->_frama_c__Z1C);
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct D *operator=(struct D *this, struct D *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__Z1A,& __frama_c_arg_0->_frama_c__Z1A);
-  operator=((struct D_frama_c_bare *)this,
-            (struct D_frama_c_bare *)__frama_c_arg_0);
-  return this;
-}
-
-void D::Dtor(struct D_frama_c_bare const *this)
-{
-  C::Dtor(& this->_frama_c__Z1C);
-  B::Dtor(& this->_frama_c__Z1B);
-  return;
-}
-
-/*@ requires \valid_read(this); */
-void D::Dtor(struct D const *this)
-{
-  D::Dtor((struct D_frama_c_bare const *)this);
-  A::Dtor(& this->_frama_c__Z1A);
-  return;
-}
-
 struct _frama_c_vmt_content _frama_c_vmt[1] =
   {{.method_ptr = (void (*)())0,
     .shift_this = (char *)(& ((struct D *)0)->_frama_c__Z1A) - (char *)(& ((struct D *)0)->_frama_c__Z1C)}};
diff --git a/tests/class/oracle/virtual_method.res.oracle b/tests/class/oracle/virtual_method.res.oracle
index 7b6bbce8894a980356a300f88b60bdeab1be617e..e96a587eee2cc11cd7f67c60eb8dd2e43368d0ef 100644
--- a/tests/class/oracle/virtual_method.res.oracle
+++ b/tests/class/oracle/virtual_method.res.oracle
@@ -45,8 +45,6 @@ struct D {
 };
 void A::Dtor(struct A const *this);
 
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
@@ -104,17 +102,6 @@ void A::Dtor(struct A const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  this->_count = __frama_c_arg_0->_count;
-  return;
-}
-
 int _frama_c_find_dynamic_cast_aux(struct _frama_c_rtti_name_info_node *target_info,
                                    struct _frama_c_rtti_name_info_content *concrete_base,
                                    int number_of_bases,
@@ -342,8 +329,6 @@ struct _frama_c_vmt _frama_c_vmt_header =
    .rtti_info = & _frama_c_rtti_name_info};
 void B::Dtor(struct B const *this);
 
-void B::Ctor(struct B const *this, struct B const *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
@@ -394,17 +379,6 @@ void B::Dtor(struct B const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void B::Ctor(struct B const *this, struct B const *__frama_c_arg_0)
-{
-  A::Ctor(& this->_frama_c__Z1A,& __frama_c_arg_0->_frama_c__Z1A);
-  this->_ch = __frama_c_arg_0->_ch;
-  return;
-}
-
 struct _frama_c_vmt_content _frama_c_vmt[1] =
   {{.method_ptr = (void (*)())(& assign), .shift_this = 0}};
 struct _frama_c_rtti_name_info_content _frama_c_base_classes[1] =
@@ -422,8 +396,6 @@ struct _frama_c_vmt _frama_c_vmt_header =
    .rtti_info = & _frama_c_rtti_name_info};
 void C::Dtor(struct C const *this);
 
-void C::Ctor(struct C const *this, struct C const *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
@@ -474,17 +446,6 @@ void C::Dtor(struct C const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void C::Ctor(struct C const *this, struct C const *__frama_c_arg_0)
-{
-  A::Ctor(& this->_frama_c__Z1A,& __frama_c_arg_0->_frama_c__Z1A);
-  this->_value = __frama_c_arg_0->_value;
-  return;
-}
-
 struct _frama_c_vmt_content _frama_c_vmt[1] =
   {{.method_ptr = (void (*)())(& assign), .shift_this = 0}};
 struct _frama_c_rtti_name_info_content _frama_c_base_classes[1] =
@@ -502,8 +463,6 @@ struct _frama_c_vmt _frama_c_vmt_header =
    .rtti_info = & _frama_c_rtti_name_info};
 void D::Dtor(struct D const *this);
 
-void D::Ctor(struct D const *this, struct D const *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 
 struct _frama_c_vmt _frama_c_vmt_header_for_shift_1;
@@ -563,18 +522,6 @@ void D::Dtor(struct D const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void D::Ctor(struct D const *this, struct D const *__frama_c_arg_0)
-{
-  C::Ctor(& this->_frama_c__Z1C,& __frama_c_arg_0->_frama_c__Z1C);
-  B::Ctor(& this->_frama_c__Z1B,& __frama_c_arg_0->_frama_c__Z1B);
-  this->_isValid = __frama_c_arg_0->_isValid;
-  return;
-}
-
 struct _frama_c_vmt_content _frama_c_vmt[2] =
   {{.method_ptr = (void (*)())(& assign), .shift_this = 0},
    {.method_ptr = (void (*)())(& assign),
diff --git a/tests/exn/oracle/exn_typedef.res.oracle b/tests/exn/oracle/exn_typedef.res.oracle
index ad2c403801e96838d687bf2fb3d9be4735982122..fac5691655a585866d99e7fb0e0fbe7abde69a41 100644
--- a/tests/exn/oracle/exn_typedef.res.oracle
+++ b/tests/exn/oracle/exn_typedef.res.oracle
@@ -44,12 +44,6 @@ struct B<int> {
 };
 typedef struct A<int> C;
 typedef struct B<int> D;
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0);
-
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0);
-
-void A::Dtor(struct A const *this);
-
 enum __fc_exn_enum {
     __fc_exn_kind___fc_S_ZN9templatedE1BIiE = 4,
     __fc_exn_kind___fc_S_ZN9templatedE1AIiE = 3,
@@ -85,38 +79,6 @@ void A::Ctor(struct A const *this, int _x)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
-/*@ requires \valid_read(this); */
-void A::Dtor(struct A const *this)
-{
-  return;
-}
-
-void B::Ctor(struct B const *this, struct B const *__frama_c_arg_0);
-
-void B::Ctor(struct B const *this, struct B *__frama_c_arg_0);
-
-void B::Dtor(struct B const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -129,41 +91,6 @@ void B::Ctor(struct B const *this, int _x)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void B::Ctor(struct B const *this, struct B const *__frama_c_arg_0)
-{
-  A::Ctor(& this->_frama_c__ZN5plainE1A,
-          & __frama_c_arg_0->_frama_c__ZN5plainE1A);
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void B::Ctor(struct B const *this, struct B *__frama_c_arg_0)
-{
-  A::Ctor(& this->_frama_c__ZN5plainE1A,
-          & __frama_c_arg_0->_frama_c__ZN5plainE1A);
-  return;
-}
-
-/*@ requires \valid_read(this); */
-void B::Dtor(struct B const *this)
-{
-  A::Dtor(& this->_frama_c__ZN5plainE1A);
-  return;
-}
-
-void E::Ctor(struct E const *this, struct E const *__frama_c_arg_0);
-
-void E::Ctor(struct E const *this, struct E *__frama_c_arg_0);
-
-void E::Dtor(struct E const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -176,35 +103,6 @@ void E::Ctor(struct E const *this, int _x)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void E::Ctor(struct E const *this, struct E const *__frama_c_arg_0)
-{
-  A::Ctor(& this->_frama_c__ZN5plainE1A,
-          & __frama_c_arg_0->_frama_c__ZN5plainE1A);
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void E::Ctor(struct E const *this, struct E *__frama_c_arg_0)
-{
-  A::Ctor(& this->_frama_c__ZN5plainE1A,
-          & __frama_c_arg_0->_frama_c__ZN5plainE1A);
-  return;
-}
-
-/*@ requires \valid_read(this); */
-void E::Dtor(struct E const *this)
-{
-  A::Dtor(& this->_frama_c__ZN5plainE1A);
-  return;
-}
-
 int f(int c)
 {
   int __retres;
@@ -358,13 +256,6 @@ struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-void A<int>::Ctor(struct A<int> const *this,
-                  struct A<int> const *__frama_c_arg_0);
-
-void A<int>::Ctor(struct A<int> const *this, struct A<int> *__frama_c_arg_0);
-
-void A<int>::Dtor(struct A<int> const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -376,45 +267,11 @@ void A<int>::Ctor(struct A<int> const *this, int _x)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void A<int>::Ctor(struct A<int> const *this,
-                  struct A<int> const *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void A<int>::Ctor(struct A<int> const *this, struct A<int> *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
-/*@ requires \valid_read(this); */
-void A<int>::Dtor(struct A<int> const *this)
-{
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "A",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-void B<int>::Ctor(struct B<int> const *this,
-                  struct B<int> const *__frama_c_arg_0);
-
-void B<int>::Ctor(struct B<int> const *this, struct B<int> *__frama_c_arg_0);
-
-void B<int>::Dtor(struct B<int> const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -427,36 +284,6 @@ void B<int>::Ctor(struct B<int> const *this, int _x)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void B<int>::Ctor(struct B<int> const *this,
-                  struct B<int> const *__frama_c_arg_0)
-{
-  A<int>::Ctor(& this->_frama_c__ZN9templatedE1AIiE,
-               & __frama_c_arg_0->_frama_c__ZN9templatedE1AIiE);
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void B<int>::Ctor(struct B<int> const *this, struct B<int> *__frama_c_arg_0)
-{
-  A<int>::Ctor(& this->_frama_c__ZN9templatedE1AIiE,
-               & __frama_c_arg_0->_frama_c__ZN9templatedE1AIiE);
-  return;
-}
-
-/*@ requires \valid_read(this); */
-void B<int>::Dtor(struct B<int> const *this)
-{
-  A<int>::Dtor(& this->_frama_c__ZN9templatedE1AIiE);
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "B",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/exn/oracle/inheritance_catch.res.oracle b/tests/exn/oracle/inheritance_catch.res.oracle
index 4dacba49ab865b080555dbed472ab33c50406250..5e8f1e1c05d2451c0c4b897226021fd2a6e1f5ab 100644
--- a/tests/exn/oracle/inheritance_catch.res.oracle
+++ b/tests/exn/oracle/inheritance_catch.res.oracle
@@ -39,12 +39,6 @@ struct D {
    struct B _frama_c__Z1B ;
    struct C _frama_c__Z1C ;
 };
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0);
-
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0);
-
-void A::Dtor(struct A const *this);
-
 enum __fc_exn_enum {
     __fc_exn_kind___fc_S_Z1D = 3,
     __fc_exn_kind___fc_S_Z1C = 2,
@@ -78,43 +72,11 @@ void A::Ctor(struct A const *this, int _x)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
-/*@ requires \valid_read(this); */
-void A::Dtor(struct A const *this)
-{
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "A",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-void B::Ctor(struct B const *this, struct B const *__frama_c_arg_0);
-
-void B::Ctor(struct B const *this, struct B *__frama_c_arg_0);
-
-void B::Dtor(struct B const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -127,44 +89,11 @@ void B::Ctor(struct B const *this, int _x)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void B::Ctor(struct B const *this, struct B const *__frama_c_arg_0)
-{
-  A::Ctor(& this->_frama_c__Z1A,& __frama_c_arg_0->_frama_c__Z1A);
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void B::Ctor(struct B const *this, struct B *__frama_c_arg_0)
-{
-  A::Ctor(& this->_frama_c__Z1A,& __frama_c_arg_0->_frama_c__Z1A);
-  return;
-}
-
-/*@ requires \valid_read(this); */
-void B::Dtor(struct B const *this)
-{
-  A::Dtor(& this->_frama_c__Z1A);
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "B",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-void C::Ctor(struct C const *this, struct C const *__frama_c_arg_0);
-
-void C::Ctor(struct C const *this, struct C *__frama_c_arg_0);
-
-void C::Dtor(struct C const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -177,44 +106,11 @@ void C::Ctor(struct C const *this, int _x)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void C::Ctor(struct C const *this, struct C const *__frama_c_arg_0)
-{
-  A::Ctor(& this->_frama_c__Z1A,& __frama_c_arg_0->_frama_c__Z1A);
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void C::Ctor(struct C const *this, struct C *__frama_c_arg_0)
-{
-  A::Ctor(& this->_frama_c__Z1A,& __frama_c_arg_0->_frama_c__Z1A);
-  return;
-}
-
-/*@ requires \valid_read(this); */
-void C::Dtor(struct C const *this)
-{
-  A::Dtor(& this->_frama_c__Z1A);
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "C",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-void D::Ctor(struct D const *this, struct D const *__frama_c_arg_0);
-
-void D::Ctor(struct D const *this, struct D *__frama_c_arg_0);
-
-void D::Dtor(struct D const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -228,36 +124,6 @@ void D::Ctor(struct D const *this, int _x)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void D::Ctor(struct D const *this, struct D const *__frama_c_arg_0)
-{
-  B::Ctor(& this->_frama_c__Z1B,& __frama_c_arg_0->_frama_c__Z1B);
-  C::Ctor(& this->_frama_c__Z1C,& __frama_c_arg_0->_frama_c__Z1C);
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void D::Ctor(struct D const *this, struct D *__frama_c_arg_0)
-{
-  B::Ctor(& this->_frama_c__Z1B,& __frama_c_arg_0->_frama_c__Z1B);
-  C::Ctor(& this->_frama_c__Z1C,& __frama_c_arg_0->_frama_c__Z1C);
-  return;
-}
-
-/*@ requires \valid_read(this); */
-void D::Dtor(struct D const *this)
-{
-  C::Dtor(& this->_frama_c__Z1C);
-  B::Dtor(& this->_frama_c__Z1B);
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "D",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/specs/oracle/function_ptr.res.oracle b/tests/specs/oracle/function_ptr.res.oracle
index 945169d4d1abf28911e0fb951c931d047beaf3d2..cedfe96d5d87aaa4d08d0b5b0dfcb09b85187153 100644
--- a/tests/specs/oracle/function_ptr.res.oracle
+++ b/tests/specs/oracle/function_ptr.res.oracle
@@ -26,10 +26,6 @@ struct A;
 struct A {
    void (*f)(void) ;
 };
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0);
-
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -56,26 +52,6 @@ void A::Ctor(struct A const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0)
-{
-  this->f = __frama_c_arg_0->f;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0)
-{
-  this->f = __frama_c_arg_0->f;
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "A",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/specs/oracle/logic_defs.res.oracle b/tests/specs/oracle/logic_defs.res.oracle
index 49c53fd9ab824ba75cd47ecac056d9396a9513cc..a4d02f066441a970924d1051725c3fe3a04a87ee 100644
--- a/tests/specs/oracle/logic_defs.res.oracle
+++ b/tests/specs/oracle/logic_defs.res.oracle
@@ -28,10 +28,6 @@ struct A {
 };
 void A::Ctor(struct A const *this);
 
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0);
-
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -42,26 +38,6 @@ void A::Ctor(struct A const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "A",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/specs/oracle/new_with_ptr_fields_bts1613.res.oracle b/tests/specs/oracle/new_with_ptr_fields_bts1613.res.oracle
index 0611bcc0e692b73be5da4a6e49fbdd30f328bf17..aa0cf7b9650338601a9589e935bdb5b1d7915b9d 100644
--- a/tests/specs/oracle/new_with_ptr_fields_bts1613.res.oracle
+++ b/tests/specs/oracle/new_with_ptr_fields_bts1613.res.oracle
@@ -31,10 +31,6 @@ void *malloc(unsigned int size);
 
 void node::Ctor(struct node const *this);
 
-void node::Ctor(struct node const *this, struct node const *__frama_c_arg_0);
-
-void node::Ctor(struct node const *this, struct node *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -45,24 +41,6 @@ void node::Ctor(struct node const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void node::Ctor(struct node const *this, struct node const *__frama_c_arg_0)
-{
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void node::Ctor(struct node const *this, struct node *__frama_c_arg_0)
-{
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "node",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/stl/oracle/stl_algorithm.res.oracle b/tests/stl/oracle/stl_algorithm.res.oracle
index fa464cd46112fb40039491951df0cd1c296afb49..cec683ab6e30d3f51ec91a9ef6edd2fa78781443 100644
--- a/tests/stl/oracle/stl_algorithm.res.oracle
+++ b/tests/stl/oracle/stl_algorithm.res.oracle
@@ -4,8 +4,6 @@ Now output intermediate result
 [kernel] Warning: Assuming declared function exception::Dtor can't throw any exception
 [kernel] Warning: Assuming declared function exception::Dtor can't throw any exception
 [kernel] Warning: Assuming declared function exception::Ctor can't throw any exception
-[kernel] Warning: Assuming declared function exception::Ctor can't throw any exception
-[kernel] Warning: Assuming declared function operator= can't throw any exception
 [kernel] Warning: Assuming declared function exception::Dtor can't throw any exception
 [kernel] Warning: Assuming declared function initializer_list<int>::Ctor can't throw any exception
 [kernel] Warning: Assuming declared function initializer_list<int>::Ctor can't throw any exception
@@ -159,12 +157,6 @@ struct array<int,2> {
 };
 void initializer_list<int>::Dtor(struct initializer_list<int> const *this);
 
-void initializer_list<int>::Ctor(struct initializer_list<int> const *this,
-                                 struct initializer_list<int> const *__frama_c_arg_0);
-
-void initializer_list<int>::Ctor(struct initializer_list<int> const *this,
-                                 struct initializer_list<int> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -206,30 +198,6 @@ void initializer_list<int>::Dtor(struct initializer_list<int> const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void initializer_list<int>::Ctor(struct initializer_list<int> const *this,
-                                 struct initializer_list<int> const *__frama_c_arg_0)
-{
-  this->base = __frama_c_arg_0->base;
-  this->length = __frama_c_arg_0->length;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void initializer_list<int>::Ctor(struct initializer_list<int> const *this,
-                                 struct initializer_list<int> *__frama_c_arg_0)
-{
-  this->base = __frama_c_arg_0->base;
-  this->length = __frama_c_arg_0->length;
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "initializer_list",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
@@ -542,12 +510,6 @@ type *move<void*&,<abst>>(void (**t)(int ))
 
 void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this);
 
-void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this,
-                                 struct piecewise_construct_t const *__frama_c_arg_0);
-
-void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this,
-                                 struct piecewise_construct_t *__frama_c_arg_0);
-
 void piecewise_construct_t::Dtor(struct piecewise_construct_t const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -560,26 +522,6 @@ void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this,
-                                 struct piecewise_construct_t const *__frama_c_arg_0)
-{
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this,
-                                 struct piecewise_construct_t *__frama_c_arg_0)
-{
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void piecewise_construct_t::Dtor(struct piecewise_construct_t const *this)
 {
@@ -602,12 +544,6 @@ struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-void pair<int*,int*>::Ctor(struct pair<int*,int*> const *this,
-                           struct pair<int*,int*> const *__frama_c_arg_0);
-
-void pair<int*,int*>::Ctor(struct pair<int*,int*> const *this,
-                           struct pair<int*,int*> *__frama_c_arg_0);
-
 void pair<int*,int*>::Dtor(struct pair<int*,int*> const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -630,30 +566,6 @@ void pair<int*,int*>::Ctor(struct pair<int*,int*> const *this,
     requires \valid(p); */
 void swap(struct pair<int*,int*> *this, struct pair<int*,int*> *p);
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void pair<int*,int*>::Ctor(struct pair<int*,int*> const *this,
-                           struct pair<int*,int*> const *__frama_c_arg_0)
-{
-  this->first = __frama_c_arg_0->first;
-  this->second = __frama_c_arg_0->second;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void pair<int*,int*>::Ctor(struct pair<int*,int*> const *this,
-                           struct pair<int*,int*> *__frama_c_arg_0)
-{
-  this->first = __frama_c_arg_0->first;
-  this->second = __frama_c_arg_0->second;
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void pair<int*,int*>::Dtor(struct pair<int*,int*> const *this)
 {
@@ -2204,12 +2116,6 @@ struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-void reference_wrapper<bool&,<abst>>::Ctor(struct reference_wrapper<bool&,<abst>> const *this,
-                                           struct reference_wrapper<bool&,<abst>> const *__frama_c_arg_0);
-
-void reference_wrapper<bool&,<abst>>::Ctor(struct reference_wrapper<bool&,<abst>> const *this,
-                                           struct reference_wrapper<bool&,<abst>> *__frama_c_arg_0);
-
 void reference_wrapper<bool&,<abst>>::Dtor(struct reference_wrapper<bool&,<abst>> const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -2257,28 +2163,6 @@ _Bool operator()(struct reference_wrapper<bool&,<abst>> const *this, int arg)
   return tmp;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void reference_wrapper<bool&,<abst>>::Ctor(struct reference_wrapper<bool&,<abst>> const *this,
-                                           struct reference_wrapper<bool&,<abst>> const *__frama_c_arg_0)
-{
-  this->obj = __frama_c_arg_0->obj;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void reference_wrapper<bool&,<abst>>::Ctor(struct reference_wrapper<bool&,<abst>> const *this,
-                                           struct reference_wrapper<bool&,<abst>> *__frama_c_arg_0)
-{
-  this->obj = __frama_c_arg_0->obj;
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void reference_wrapper<bool&,<abst>>::Dtor(struct reference_wrapper<bool&,<abst>> const *this)
 {
@@ -2304,12 +2188,6 @@ void __bool_binop<int,std::__less>::Ctor(struct __bool_binop<int,std::__less> co
 
 void __bool_binop<int,std::__less>::Dtor(struct __bool_binop<int,std::__less> const *this);
 
-void __bool_binop<int,std::__less>::Ctor(struct __bool_binop<int,std::__less> const *this,
-                                         struct __bool_binop<int,std::__less> const *__frama_c_arg_0);
-
-void __bool_binop<int,std::__less>::Ctor(struct __bool_binop<int,std::__less> const *this,
-                                         struct __bool_binop<int,std::__less> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -2332,26 +2210,6 @@ void __bool_binop<int,std::__less>::Dtor(struct __bool_binop<int,std::__less> co
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void __bool_binop<int,std::__less>::Ctor(struct __bool_binop<int,std::__less> const *this,
-                                         struct __bool_binop<int,std::__less> const *__frama_c_arg_0)
-{
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void __bool_binop<int,std::__less>::Ctor(struct __bool_binop<int,std::__less> const *this,
-                                         struct __bool_binop<int,std::__less> *__frama_c_arg_0)
-{
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "__bool_binop",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
@@ -2364,9 +2222,6 @@ void __bool_binop<int,std::__equal_to>::Dtor(struct __bool_binop<int,std::__equa
 void __bool_binop<int,std::__equal_to>::Ctor(struct __bool_binop<int,std::__equal_to> const *this,
                                              struct __bool_binop<int,std::__equal_to> const *__frama_c_arg_0);
 
-void __bool_binop<int,std::__equal_to>::Ctor(struct __bool_binop<int,std::__equal_to> const *this,
-                                             struct __bool_binop<int,std::__equal_to> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -2399,16 +2254,6 @@ void __bool_binop<int,std::__equal_to>::Ctor(struct __bool_binop<int,std::__equa
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void __bool_binop<int,std::__equal_to>::Ctor(struct __bool_binop<int,std::__equal_to> const *this,
-                                             struct __bool_binop<int,std::__equal_to> *__frama_c_arg_0)
-{
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "__bool_binop",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
@@ -2440,9 +2285,6 @@ void equal_to<int>::Ctor(struct equal_to<int> const *this);
 void equal_to<int>::Ctor(struct equal_to<int> const *this,
                          struct equal_to<int> const *__frama_c_arg_0);
 
-void equal_to<int>::Ctor(struct equal_to<int> const *this,
-                         struct equal_to<int> *__frama_c_arg_0);
-
 void equal_to<int>::Dtor(struct equal_to<int> const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -2469,18 +2311,6 @@ void equal_to<int>::Ctor(struct equal_to<int> const *this,
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void equal_to<int>::Ctor(struct equal_to<int> const *this,
-                         struct equal_to<int> *__frama_c_arg_0)
-{
-  __bool_binop<int,std::__equal_to>::Ctor(& this->_frama_c__ZN3stdE12__bool_binopIiN3stdE10__equal_toE,
-                                          & __frama_c_arg_0->_frama_c__ZN3stdE12__bool_binopIiN3stdE10__equal_toE);
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void equal_to<int>::Dtor(struct equal_to<int> const *this)
 {
@@ -2516,12 +2346,6 @@ _Bool operator()(struct __bool_binop<int,std::__less> const *this,
 
 void less<int>::Ctor(struct less<int> const *this);
 
-void less<int>::Ctor(struct less<int> const *this,
-                     struct less<int> const *__frama_c_arg_0);
-
-void less<int>::Ctor(struct less<int> const *this,
-                     struct less<int> *__frama_c_arg_0);
-
 void less<int>::Dtor(struct less<int> const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -2536,30 +2360,6 @@ void less<int>::Ctor(struct less<int> const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void less<int>::Ctor(struct less<int> const *this,
-                     struct less<int> const *__frama_c_arg_0)
-{
-  __bool_binop<int,std::__less>::Ctor(& this->_frama_c__ZN3stdE12__bool_binopIiN3stdE6__lessE,
-                                      & __frama_c_arg_0->_frama_c__ZN3stdE12__bool_binopIiN3stdE6__lessE);
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void less<int>::Ctor(struct less<int> const *this,
-                     struct less<int> *__frama_c_arg_0)
-{
-  __bool_binop<int,std::__less>::Ctor(& this->_frama_c__ZN3stdE12__bool_binopIiN3stdE6__lessE,
-                                      & __frama_c_arg_0->_frama_c__ZN3stdE12__bool_binopIiN3stdE6__lessE);
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void less<int>::Dtor(struct less<int> const *this)
 {
@@ -2574,12 +2374,6 @@ struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
    .pvmt = (struct _frama_c_vmt *)0};
 void unary_negate<bool*,<abst>>::Dtor(struct unary_negate<bool*,<abst>> const *this);
 
-void unary_negate<bool*,<abst>>::Ctor(struct unary_negate<bool*,<abst>> const *this,
-                                      struct unary_negate<bool*,<abst>> const *__frama_c_arg_0);
-
-void unary_negate<bool*,<abst>>::Ctor(struct unary_negate<bool*,<abst>> const *this,
-                                      struct unary_negate<bool*,<abst>> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -2613,28 +2407,6 @@ void unary_negate<bool*,<abst>>::Dtor(struct unary_negate<bool*,<abst>> const *t
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void unary_negate<bool*,<abst>>::Ctor(struct unary_negate<bool*,<abst>> const *this,
-                                      struct unary_negate<bool*,<abst>> const *__frama_c_arg_0)
-{
-  this->__predicate = __frama_c_arg_0->__predicate;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void unary_negate<bool*,<abst>>::Ctor(struct unary_negate<bool*,<abst>> const *this,
-                                      struct unary_negate<bool*,<abst>> *__frama_c_arg_0)
-{
-  this->__predicate = __frama_c_arg_0->__predicate;
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "unary_negate",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
@@ -2642,12 +2414,6 @@ struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
    .pvmt = (struct _frama_c_vmt *)0};
 void unary_negate<std::reference_wrapper<bool&,<abst>>>::Dtor(struct unary_negate<std::reference_wrapper<bool&,<abst>>> const *this);
 
-void unary_negate<std::reference_wrapper<bool&,<abst>>>::Ctor(struct unary_negate<std::reference_wrapper<bool&,<abst>>> const *this,
-                                                              struct unary_negate<std::reference_wrapper<bool&,<abst>>> const *__frama_c_arg_0);
-
-void unary_negate<std::reference_wrapper<bool&,<abst>>>::Ctor(struct unary_negate<std::reference_wrapper<bool&,<abst>>> const *this,
-                                                              struct unary_negate<std::reference_wrapper<bool&,<abst>>> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -2681,28 +2447,6 @@ void unary_negate<std::reference_wrapper<bool&,<abst>>>::Dtor(struct unary_negat
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void unary_negate<std::reference_wrapper<bool&,<abst>>>::Ctor(struct unary_negate<std::reference_wrapper<bool&,<abst>>> const *this,
-                                                              struct unary_negate<std::reference_wrapper<bool&,<abst>>> const *__frama_c_arg_0)
-{
-  this->__predicate = __frama_c_arg_0->__predicate;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void unary_negate<std::reference_wrapper<bool&,<abst>>>::Ctor(struct unary_negate<std::reference_wrapper<bool&,<abst>>> const *this,
-                                                              struct unary_negate<std::reference_wrapper<bool&,<abst>>> *__frama_c_arg_0)
-{
-  this->__predicate = __frama_c_arg_0->__predicate;
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "unary_negate",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
@@ -2726,18 +2470,6 @@ struct unary_negate<std::reference_wrapper<bool&,<abst>>> not1<std::reference_wr
   return __fc_tmp_3;
 }
 
-void bad_function_call::Ctor(struct bad_function_call const *this,
-                             struct bad_function_call const *__frama_c_arg_0);
-
-void bad_function_call::Ctor(struct bad_function_call const *this,
-                             struct bad_function_call *__frama_c_arg_0);
-
-struct bad_function_call *operator=(struct bad_function_call *this,
-                                    struct bad_function_call const *__frama_c_arg_0);
-
-struct bad_function_call *operator=(struct bad_function_call *this,
-                                    struct bad_function_call *__frama_c_arg_0);
-
 void bad_function_call::Dtor(struct bad_function_call const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -2756,68 +2488,6 @@ void bad_function_call::Ctor(struct bad_function_call const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void bad_function_call::Ctor(struct bad_function_call const *this,
-                             struct bad_function_call const *__frama_c_arg_0)
-{
-  exception::Ctor(& this->_frama_c__ZN3stdE9exception,
-                  & __frama_c_arg_0->_frama_c__ZN3stdE9exception);
-  return;
-}
-
-void exception::Ctor(struct exception const *this,
-                     struct exception *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void bad_function_call::Ctor(struct bad_function_call const *this,
-                             struct bad_function_call *__frama_c_arg_0)
-{
-  exception::Ctor(& this->_frama_c__ZN3stdE9exception,
-                  & __frama_c_arg_0->_frama_c__ZN3stdE9exception);
-  return;
-}
-
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct bad_function_call *operator=(struct bad_function_call *this,
-                                    struct bad_function_call const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE9exception,
-            & __frama_c_arg_0->_frama_c__ZN3stdE9exception);
-  return this;
-}
-
-struct exception *operator=(struct exception *this,
-                            struct exception *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct bad_function_call *operator=(struct bad_function_call *this,
-                                    struct bad_function_call *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE9exception,
-            & __frama_c_arg_0->_frama_c__ZN3stdE9exception);
-  return this;
-}
-
 /*@ requires \valid_read(this); */
 void bad_function_call::Dtor(struct bad_function_call const *this)
 {
@@ -3418,12 +3088,6 @@ int *copy<int*,int*>(int *first, int *last, int *result)
   return result;
 }
 
-void array<int,5>::Ctor(struct array<int,5> const *this,
-                        struct array<int,5> const *__frama_c_arg_0);
-
-void array<int,5>::Ctor(struct array<int,5> const *this,
-                        struct array<int,5> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -3552,51 +3216,11 @@ int *data(struct array<int,5> *this);
 /*@ requires \valid_read(this); */
 int const *data(struct array<int,5> const *this);
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void array<int,5>::Ctor(struct array<int,5> const *this,
-                        struct array<int,5> const *__frama_c_arg_0)
-{
-  {
-    unsigned int idx = (unsigned int)0;
-    while (idx < (unsigned int)5) {
-      this->elems[idx] = __frama_c_arg_0->elems[idx];
-      idx ++;
-    }
-  }
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void array<int,5>::Ctor(struct array<int,5> const *this,
-                        struct array<int,5> *__frama_c_arg_0)
-{
-  {
-    unsigned int idx = (unsigned int)0;
-    while (idx < (unsigned int)5) {
-      this->elems[idx] = __frama_c_arg_0->elems[idx];
-      idx ++;
-    }
-  }
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "array",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-void array<int,2>::Ctor(struct array<int,2> const *this,
-                        struct array<int,2> const *__frama_c_arg_0);
-
-void array<int,2>::Ctor(struct array<int,2> const *this,
-                        struct array<int,2> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -3725,40 +3349,6 @@ int *data(struct array<int,2> *this);
 /*@ requires \valid_read(this); */
 int const *data(struct array<int,2> const *this);
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void array<int,2>::Ctor(struct array<int,2> const *this,
-                        struct array<int,2> const *__frama_c_arg_0)
-{
-  {
-    unsigned int idx = (unsigned int)0;
-    while (idx < (unsigned int)2) {
-      this->elems[idx] = __frama_c_arg_0->elems[idx];
-      idx ++;
-    }
-  }
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void array<int,2>::Ctor(struct array<int,2> const *this,
-                        struct array<int,2> *__frama_c_arg_0)
-{
-  {
-    unsigned int idx = (unsigned int)0;
-    while (idx < (unsigned int)2) {
-      this->elems[idx] = __frama_c_arg_0->elems[idx];
-      idx ++;
-    }
-  }
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "array",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/stl/oracle/stl_atomic.res.oracle b/tests/stl/oracle/stl_atomic.res.oracle
index 03d49b07f6ab5b8e9b490ccdd5c26bb6383ca79a..8fdbaf405c90b9ad41d5704be0b4383487c4c4c3 100644
--- a/tests/stl/oracle/stl_atomic.res.oracle
+++ b/tests/stl/oracle/stl_atomic.res.oracle
@@ -241,12 +241,6 @@ struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
    .pvmt = (struct _frama_c_vmt *)0};
 void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this);
 
-void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this,
-                                 struct piecewise_construct_t const *__frama_c_arg_0);
-
-void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this,
-                                 struct piecewise_construct_t *__frama_c_arg_0);
-
 void piecewise_construct_t::Dtor(struct piecewise_construct_t const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -259,26 +253,6 @@ void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this,
-                                 struct piecewise_construct_t const *__frama_c_arg_0)
-{
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this,
-                                 struct piecewise_construct_t *__frama_c_arg_0)
-{
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void piecewise_construct_t::Dtor(struct piecewise_construct_t const *this)
 {
@@ -301,8 +275,6 @@ struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-void atomic<int*>::Ctor(struct atomic<int*> const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -455,21 +427,11 @@ int *operator-=(struct atomic<int*> volatile *this, ptrdiff_t __frama_c_arg_0);
 /*@ requires \valid(this); */
 int *operator-=(struct atomic<int*> *this, ptrdiff_t __frama_c_arg_0);
 
-/*@ requires \valid_read(this); */
-void atomic<int*>::Ctor(struct atomic<int*> const *this)
-{
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "atomic",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-void __atomic<bool>::Ctor(struct __atomic<bool> const *this);
-
-void __atomic<bool>::Dtor(struct __atomic<bool> const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -663,27 +625,11 @@ _Bool operator^=(struct __atomic<bool> volatile *this, _Bool __frama_c_arg_0);
 /*@ requires \valid(this); */
 _Bool operator^=(struct __atomic<bool> *this, _Bool __frama_c_arg_0);
 
-/*@ requires \valid_read(this); */
-void __atomic<bool>::Ctor(struct __atomic<bool> const *this)
-{
-  return;
-}
-
-/*@ requires \valid_read(this); */
-void __atomic<bool>::Dtor(struct __atomic<bool> const *this)
-{
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "__atomic",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-void __atomic<char>::Ctor(struct __atomic<char> const *this);
-
-void __atomic<char>::Dtor(struct __atomic<char> const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -877,27 +823,11 @@ char operator^=(struct __atomic<char> volatile *this, char __frama_c_arg_0);
 /*@ requires \valid(this); */
 char operator^=(struct __atomic<char> *this, char __frama_c_arg_0);
 
-/*@ requires \valid_read(this); */
-void __atomic<char>::Ctor(struct __atomic<char> const *this)
-{
-  return;
-}
-
-/*@ requires \valid_read(this); */
-void __atomic<char>::Dtor(struct __atomic<char> const *this)
-{
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "__atomic",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-void __atomic<signed char>::Ctor(struct __atomic<signed char> const *this);
-
-void __atomic<signed char>::Dtor(struct __atomic<signed char> const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -1129,27 +1059,11 @@ signed char operator^=(struct __atomic<signed char> volatile *this,
 signed char operator^=(struct __atomic<signed char> *this,
                        signed char __frama_c_arg_0);
 
-/*@ requires \valid_read(this); */
-void __atomic<signed char>::Ctor(struct __atomic<signed char> const *this)
-{
-  return;
-}
-
-/*@ requires \valid_read(this); */
-void __atomic<signed char>::Dtor(struct __atomic<signed char> const *this)
-{
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "__atomic",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-void __atomic<unsigned char>::Ctor(struct __atomic<unsigned char> const *this);
-
-void __atomic<unsigned char>::Dtor(struct __atomic<unsigned char> const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -1382,27 +1296,11 @@ unsigned char operator^=(struct __atomic<unsigned char> volatile *this,
 unsigned char operator^=(struct __atomic<unsigned char> *this,
                          unsigned char __frama_c_arg_0);
 
-/*@ requires \valid_read(this); */
-void __atomic<unsigned char>::Ctor(struct __atomic<unsigned char> const *this)
-{
-  return;
-}
-
-/*@ requires \valid_read(this); */
-void __atomic<unsigned char>::Dtor(struct __atomic<unsigned char> const *this)
-{
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "__atomic",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-void __atomic<short>::Ctor(struct __atomic<short> const *this);
-
-void __atomic<short>::Dtor(struct __atomic<short> const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -1596,27 +1494,11 @@ short operator^=(struct __atomic<short> volatile *this, short __frama_c_arg_0);
 /*@ requires \valid(this); */
 short operator^=(struct __atomic<short> *this, short __frama_c_arg_0);
 
-/*@ requires \valid_read(this); */
-void __atomic<short>::Ctor(struct __atomic<short> const *this)
-{
-  return;
-}
-
-/*@ requires \valid_read(this); */
-void __atomic<short>::Dtor(struct __atomic<short> const *this)
-{
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "__atomic",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-void __atomic<unsigned short>::Ctor(struct __atomic<unsigned short> const *this);
-
-void __atomic<unsigned short>::Dtor(struct __atomic<unsigned short> const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -1849,18 +1731,6 @@ unsigned short operator^=(struct __atomic<unsigned short> volatile *this,
 unsigned short operator^=(struct __atomic<unsigned short> *this,
                           unsigned short __frama_c_arg_0);
 
-/*@ requires \valid_read(this); */
-void __atomic<unsigned short>::Ctor(struct __atomic<unsigned short> const *this)
-{
-  return;
-}
-
-/*@ requires \valid_read(this); */
-void __atomic<unsigned short>::Dtor(struct __atomic<unsigned short> const *this)
-{
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "__atomic",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
@@ -1868,8 +1738,6 @@ struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
    .pvmt = (struct _frama_c_vmt *)0};
 void __atomic<int>::Ctor(struct __atomic<int> const *this);
 
-void __atomic<int>::Dtor(struct __atomic<int> const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -2068,21 +1936,11 @@ void __atomic<int>::Ctor(struct __atomic<int> const *this)
   return;
 }
 
-/*@ requires \valid_read(this); */
-void __atomic<int>::Dtor(struct __atomic<int> const *this)
-{
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "__atomic",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-void __atomic<unsigned int>::Ctor(struct __atomic<unsigned int> const *this);
-
-void __atomic<unsigned int>::Dtor(struct __atomic<unsigned int> const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -2315,27 +2173,11 @@ unsigned int operator^=(struct __atomic<unsigned int> volatile *this,
 unsigned int operator^=(struct __atomic<unsigned int> *this,
                         unsigned int __frama_c_arg_0);
 
-/*@ requires \valid_read(this); */
-void __atomic<unsigned int>::Ctor(struct __atomic<unsigned int> const *this)
-{
-  return;
-}
-
-/*@ requires \valid_read(this); */
-void __atomic<unsigned int>::Dtor(struct __atomic<unsigned int> const *this)
-{
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "__atomic",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-void __atomic<long>::Ctor(struct __atomic<long> const *this);
-
-void __atomic<long>::Dtor(struct __atomic<long> const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -2529,27 +2371,11 @@ long operator^=(struct __atomic<long> volatile *this, long __frama_c_arg_0);
 /*@ requires \valid(this); */
 long operator^=(struct __atomic<long> *this, long __frama_c_arg_0);
 
-/*@ requires \valid_read(this); */
-void __atomic<long>::Ctor(struct __atomic<long> const *this)
-{
-  return;
-}
-
-/*@ requires \valid_read(this); */
-void __atomic<long>::Dtor(struct __atomic<long> const *this)
-{
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "__atomic",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-void __atomic<unsigned long>::Ctor(struct __atomic<unsigned long> const *this);
-
-void __atomic<unsigned long>::Dtor(struct __atomic<unsigned long> const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -2782,27 +2608,11 @@ unsigned long operator^=(struct __atomic<unsigned long> volatile *this,
 unsigned long operator^=(struct __atomic<unsigned long> *this,
                          unsigned long __frama_c_arg_0);
 
-/*@ requires \valid_read(this); */
-void __atomic<unsigned long>::Ctor(struct __atomic<unsigned long> const *this)
-{
-  return;
-}
-
-/*@ requires \valid_read(this); */
-void __atomic<unsigned long>::Dtor(struct __atomic<unsigned long> const *this)
-{
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "__atomic",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-void __atomic<long long>::Ctor(struct __atomic<long long> const *this);
-
-void __atomic<long long>::Dtor(struct __atomic<long long> const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -3020,27 +2830,11 @@ long long operator^=(struct __atomic<long long> volatile *this,
 long long operator^=(struct __atomic<long long> *this,
                      long long __frama_c_arg_0);
 
-/*@ requires \valid_read(this); */
-void __atomic<long long>::Ctor(struct __atomic<long long> const *this)
-{
-  return;
-}
-
-/*@ requires \valid_read(this); */
-void __atomic<long long>::Dtor(struct __atomic<long long> const *this)
-{
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "__atomic",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-void __atomic<unsigned long long>::Ctor(struct __atomic<unsigned long long> const *this);
-
-void __atomic<unsigned long long>::Dtor(struct __atomic<unsigned long long> const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -3273,27 +3067,11 @@ unsigned long long operator^=(struct __atomic<unsigned long long> volatile *this
 unsigned long long operator^=(struct __atomic<unsigned long long> *this,
                               unsigned long long __frama_c_arg_0);
 
-/*@ requires \valid_read(this); */
-void __atomic<unsigned long long>::Ctor(struct __atomic<unsigned long long> const *this)
-{
-  return;
-}
-
-/*@ requires \valid_read(this); */
-void __atomic<unsigned long long>::Dtor(struct __atomic<unsigned long long> const *this)
-{
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "__atomic",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-void __atomic<char16_t>::Ctor(struct __atomic<char16_t> const *this);
-
-void __atomic<char16_t>::Dtor(struct __atomic<char16_t> const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -3525,27 +3303,11 @@ unsigned short operator^=(struct __atomic<char16_t> volatile *this,
 unsigned short operator^=(struct __atomic<char16_t> *this,
                           unsigned short __frama_c_arg_0);
 
-/*@ requires \valid_read(this); */
-void __atomic<char16_t>::Ctor(struct __atomic<char16_t> const *this)
-{
-  return;
-}
-
-/*@ requires \valid_read(this); */
-void __atomic<char16_t>::Dtor(struct __atomic<char16_t> const *this)
-{
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "__atomic",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-void __atomic<char32_t>::Ctor(struct __atomic<char32_t> const *this);
-
-void __atomic<char32_t>::Dtor(struct __atomic<char32_t> const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -3775,27 +3537,11 @@ unsigned int operator^=(struct __atomic<char32_t> volatile *this,
 unsigned int operator^=(struct __atomic<char32_t> *this,
                         unsigned int __frama_c_arg_0);
 
-/*@ requires \valid_read(this); */
-void __atomic<char32_t>::Ctor(struct __atomic<char32_t> const *this)
-{
-  return;
-}
-
-/*@ requires \valid_read(this); */
-void __atomic<char32_t>::Dtor(struct __atomic<char32_t> const *this)
-{
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "__atomic",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-void __atomic<wchar_t>::Ctor(struct __atomic<wchar_t> const *this);
-
-void __atomic<wchar_t>::Dtor(struct __atomic<wchar_t> const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -3989,25 +3735,11 @@ int operator^=(struct __atomic<wchar_t> volatile *this, int __frama_c_arg_0);
 /*@ requires \valid(this); */
 int operator^=(struct __atomic<wchar_t> *this, int __frama_c_arg_0);
 
-/*@ requires \valid_read(this); */
-void __atomic<wchar_t>::Ctor(struct __atomic<wchar_t> const *this)
-{
-  return;
-}
-
-/*@ requires \valid_read(this); */
-void __atomic<wchar_t>::Dtor(struct __atomic<wchar_t> const *this)
-{
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "__atomic",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-void atomic<bool>::Ctor(struct atomic<bool> const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -4020,15 +3752,6 @@ void atomic<bool>::Ctor(struct atomic<bool> const *this, _Bool x)
   return;
 }
 
-/*@ requires \valid_read(this); */
-void atomic<bool>::Ctor(struct atomic<bool> const *this)
-{
-  __atomic<bool>::Ctor(& this->_frama_c__ZN3stdE8__atomicIbE);
-  return;
-}
-
-void atomic<char>::Ctor(struct atomic<char> const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -4041,15 +3764,6 @@ void atomic<char>::Ctor(struct atomic<char> const *this, char x)
   return;
 }
 
-/*@ requires \valid_read(this); */
-void atomic<char>::Ctor(struct atomic<char> const *this)
-{
-  __atomic<char>::Ctor(& this->_frama_c__ZN3stdE8__atomicIcE);
-  return;
-}
-
-void atomic<signed char>::Ctor(struct atomic<signed char> const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -4063,15 +3777,6 @@ void atomic<signed char>::Ctor(struct atomic<signed char> const *this,
   return;
 }
 
-/*@ requires \valid_read(this); */
-void atomic<signed char>::Ctor(struct atomic<signed char> const *this)
-{
-  __atomic<signed char>::Ctor(& this->_frama_c__ZN3stdE8__atomicIaE);
-  return;
-}
-
-void atomic<unsigned char>::Ctor(struct atomic<unsigned char> const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -4085,15 +3790,6 @@ void atomic<unsigned char>::Ctor(struct atomic<unsigned char> const *this,
   return;
 }
 
-/*@ requires \valid_read(this); */
-void atomic<unsigned char>::Ctor(struct atomic<unsigned char> const *this)
-{
-  __atomic<unsigned char>::Ctor(& this->_frama_c__ZN3stdE8__atomicIhE);
-  return;
-}
-
-void atomic<short>::Ctor(struct atomic<short> const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -4106,15 +3802,6 @@ void atomic<short>::Ctor(struct atomic<short> const *this, short x)
   return;
 }
 
-/*@ requires \valid_read(this); */
-void atomic<short>::Ctor(struct atomic<short> const *this)
-{
-  __atomic<short>::Ctor(& this->_frama_c__ZN3stdE8__atomicIsE);
-  return;
-}
-
-void atomic<unsigned short>::Ctor(struct atomic<unsigned short> const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -4128,13 +3815,6 @@ void atomic<unsigned short>::Ctor(struct atomic<unsigned short> const *this,
   return;
 }
 
-/*@ requires \valid_read(this); */
-void atomic<unsigned short>::Ctor(struct atomic<unsigned short> const *this)
-{
-  __atomic<unsigned short>::Ctor(& this->_frama_c__ZN3stdE8__atomicItE);
-  return;
-}
-
 void atomic<int>::Ctor(struct atomic<int> const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -4156,8 +3836,6 @@ void atomic<int>::Ctor(struct atomic<int> const *this)
   return;
 }
 
-void atomic<unsigned int>::Ctor(struct atomic<unsigned int> const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -4171,15 +3849,6 @@ void atomic<unsigned int>::Ctor(struct atomic<unsigned int> const *this,
   return;
 }
 
-/*@ requires \valid_read(this); */
-void atomic<unsigned int>::Ctor(struct atomic<unsigned int> const *this)
-{
-  __atomic<unsigned int>::Ctor(& this->_frama_c__ZN3stdE8__atomicIjE);
-  return;
-}
-
-void atomic<long>::Ctor(struct atomic<long> const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -4192,15 +3861,6 @@ void atomic<long>::Ctor(struct atomic<long> const *this, long x)
   return;
 }
 
-/*@ requires \valid_read(this); */
-void atomic<long>::Ctor(struct atomic<long> const *this)
-{
-  __atomic<long>::Ctor(& this->_frama_c__ZN3stdE8__atomicIlE);
-  return;
-}
-
-void atomic<unsigned long>::Ctor(struct atomic<unsigned long> const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -4214,15 +3874,6 @@ void atomic<unsigned long>::Ctor(struct atomic<unsigned long> const *this,
   return;
 }
 
-/*@ requires \valid_read(this); */
-void atomic<unsigned long>::Ctor(struct atomic<unsigned long> const *this)
-{
-  __atomic<unsigned long>::Ctor(& this->_frama_c__ZN3stdE8__atomicImE);
-  return;
-}
-
-void atomic<long long>::Ctor(struct atomic<long long> const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -4236,15 +3887,6 @@ void atomic<long long>::Ctor(struct atomic<long long> const *this, int x)
   return;
 }
 
-/*@ requires \valid_read(this); */
-void atomic<long long>::Ctor(struct atomic<long long> const *this)
-{
-  __atomic<long long>::Ctor(& this->_frama_c__ZN3stdE8__atomicIxE);
-  return;
-}
-
-void atomic<unsigned long long>::Ctor(struct atomic<unsigned long long> const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -4258,15 +3900,6 @@ void atomic<unsigned long long>::Ctor(struct atomic<unsigned long long> const *t
   return;
 }
 
-/*@ requires \valid_read(this); */
-void atomic<unsigned long long>::Ctor(struct atomic<unsigned long long> const *this)
-{
-  __atomic<unsigned long long>::Ctor(& this->_frama_c__ZN3stdE8__atomicIyE);
-  return;
-}
-
-void atomic<char16_t>::Ctor(struct atomic<char16_t> const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -4280,15 +3913,6 @@ void atomic<char16_t>::Ctor(struct atomic<char16_t> const *this,
   return;
 }
 
-/*@ requires \valid_read(this); */
-void atomic<char16_t>::Ctor(struct atomic<char16_t> const *this)
-{
-  __atomic<char16_t>::Ctor(& this->_frama_c__ZN3stdE8__atomicIDsE);
-  return;
-}
-
-void atomic<char32_t>::Ctor(struct atomic<char32_t> const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -4302,15 +3926,6 @@ void atomic<char32_t>::Ctor(struct atomic<char32_t> const *this,
   return;
 }
 
-/*@ requires \valid_read(this); */
-void atomic<char32_t>::Ctor(struct atomic<char32_t> const *this)
-{
-  __atomic<char32_t>::Ctor(& this->_frama_c__ZN3stdE8__atomicIDiE);
-  return;
-}
-
-void atomic<wchar_t>::Ctor(struct atomic<wchar_t> const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -4323,15 +3938,6 @@ void atomic<wchar_t>::Ctor(struct atomic<wchar_t> const *this, int x)
   return;
 }
 
-/*@ requires \valid_read(this); */
-void atomic<wchar_t>::Ctor(struct atomic<wchar_t> const *this)
-{
-  __atomic<wchar_t>::Ctor(& this->_frama_c__ZN3stdE8__atomicIwE);
-  return;
-}
-
-void atomic_flag::Ctor(struct atomic_flag const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -4356,12 +3962,6 @@ void atomic_flag::Ctor(struct atomic_flag const *this, _Bool b)
   return;
 }
 
-/*@ requires \valid_read(this); */
-void atomic_flag::Ctor(struct atomic_flag const *this)
-{
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "atomic",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/stl/oracle/stl_functional.res.oracle b/tests/stl/oracle/stl_functional.res.oracle
index 4c7aea5c6931178ac20eb0b5884a0e549af27784..c4935b3f3169ae3a792c3db269d627d3cf12412e 100644
--- a/tests/stl/oracle/stl_functional.res.oracle
+++ b/tests/stl/oracle/stl_functional.res.oracle
@@ -4,8 +4,6 @@ Now output intermediate result
 [kernel] Warning: Assuming declared function exception::Dtor can't throw any exception
 [kernel] Warning: Assuming declared function exception::Dtor can't throw any exception
 [kernel] Warning: Assuming declared function exception::Ctor can't throw any exception
-[kernel] Warning: Assuming declared function exception::Ctor can't throw any exception
-[kernel] Warning: Assuming declared function operator= can't throw any exception
 [kernel] Warning: Assuming declared function exception::Dtor can't throw any exception
 [kernel] Warning: Assuming declared function forward<std::minus<int>> can't throw any exception
 [kernel] Warning: Assuming declared function forward<std::plus<int>> can't throw any exception
@@ -347,12 +345,6 @@ int const *forward<int&>(type *t)
 
 void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this);
 
-void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this,
-                                 struct piecewise_construct_t const *__frama_c_arg_0);
-
-void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this,
-                                 struct piecewise_construct_t *__frama_c_arg_0);
-
 void piecewise_construct_t::Dtor(struct piecewise_construct_t const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -365,26 +357,6 @@ void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this,
-                                 struct piecewise_construct_t const *__frama_c_arg_0)
-{
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this,
-                                 struct piecewise_construct_t *__frama_c_arg_0)
-{
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void piecewise_construct_t::Dtor(struct piecewise_construct_t const *this)
 {
@@ -2009,9 +1981,6 @@ void __binop<int,std::__minus>::Ctor(struct __binop<int,std::__minus> const *thi
 
 void __binop<int,std::__minus>::Dtor(struct __binop<int,std::__minus> const *this);
 
-void __binop<int,std::__minus>::Ctor(struct __binop<int,std::__minus> const *this,
-                                     struct __binop<int,std::__minus> const *__frama_c_arg_0);
-
 void __binop<int,std::__minus>::Ctor(struct __binop<int,std::__minus> const *this,
                                      struct __binop<int,std::__minus> *__frama_c_arg_0);
 
@@ -2040,16 +2009,6 @@ void __binop<int,std::__minus>::Dtor(struct __binop<int,std::__minus> const *thi
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void __binop<int,std::__minus>::Ctor(struct __binop<int,std::__minus> const *this,
-                                     struct __binop<int,std::__minus> const *__frama_c_arg_0)
-{
-  return;
-}
-
 /*@ requires \separated(this, __frama_c_arg_0);
     requires \valid_read(this);
     requires \valid(__frama_c_arg_0);
@@ -2069,9 +2028,6 @@ void __binop<int,std::__plus>::Ctor(struct __binop<int,std::__plus> const *this)
 
 void __binop<int,std::__plus>::Dtor(struct __binop<int,std::__plus> const *this);
 
-void __binop<int,std::__plus>::Ctor(struct __binop<int,std::__plus> const *this,
-                                    struct __binop<int,std::__plus> const *__frama_c_arg_0);
-
 void __binop<int,std::__plus>::Ctor(struct __binop<int,std::__plus> const *this,
                                     struct __binop<int,std::__plus> *__frama_c_arg_0);
 
@@ -2100,16 +2056,6 @@ void __binop<int,std::__plus>::Dtor(struct __binop<int,std::__plus> const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void __binop<int,std::__plus>::Ctor(struct __binop<int,std::__plus> const *this,
-                                    struct __binop<int,std::__plus> const *__frama_c_arg_0)
-{
-  return;
-}
-
 /*@ requires \separated(this, __frama_c_arg_0);
     requires \valid_read(this);
     requires \valid(__frama_c_arg_0);
@@ -2144,9 +2090,6 @@ __funtype __funtype)(struct __binop<int,std::__plus> *this)
 
 void plus<int>::Ctor(struct plus<int> const *this);
 
-void plus<int>::Ctor(struct plus<int> const *this,
-                     struct plus<int> const *__frama_c_arg_0);
-
 void plus<int>::Ctor(struct plus<int> const *this,
                      struct plus<int> *__frama_c_arg_0);
 
@@ -2164,18 +2107,6 @@ void plus<int>::Ctor(struct plus<int> const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void plus<int>::Ctor(struct plus<int> const *this,
-                     struct plus<int> const *__frama_c_arg_0)
-{
-  __binop<int,std::__plus>::Ctor(& this->_frama_c__ZN3stdE7__binopIiN3stdE6__plusE,
-                                 & __frama_c_arg_0->_frama_c__ZN3stdE7__binopIiN3stdE6__plusE);
-  return;
-}
-
 /*@ requires \separated(this, __frama_c_arg_0);
     requires \valid_read(this);
     requires \valid(__frama_c_arg_0);
@@ -2226,9 +2157,6 @@ __funtype __funtype)(struct __binop<int,std::__minus> *this)
 
 void minus<int>::Ctor(struct minus<int> const *this);
 
-void minus<int>::Ctor(struct minus<int> const *this,
-                      struct minus<int> const *__frama_c_arg_0);
-
 void minus<int>::Ctor(struct minus<int> const *this,
                       struct minus<int> *__frama_c_arg_0);
 
@@ -2246,18 +2174,6 @@ void minus<int>::Ctor(struct minus<int> const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void minus<int>::Ctor(struct minus<int> const *this,
-                      struct minus<int> const *__frama_c_arg_0)
-{
-  __binop<int,std::__minus>::Ctor(& this->_frama_c__ZN3stdE7__binopIiN3stdE7__minusE,
-                                  & __frama_c_arg_0->_frama_c__ZN3stdE7__binopIiN3stdE7__minusE);
-  return;
-}
-
 /*@ requires \separated(this, __frama_c_arg_0);
     requires \valid_read(this);
     requires \valid(__frama_c_arg_0);
@@ -2291,14 +2207,6 @@ struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
    .pvmt = (struct _frama_c_vmt *)0};
 void __bool_binop<int,std::__less>::Ctor(struct __bool_binop<int,std::__less> const *this);
 
-void __bool_binop<int,std::__less>::Dtor(struct __bool_binop<int,std::__less> const *this);
-
-void __bool_binop<int,std::__less>::Ctor(struct __bool_binop<int,std::__less> const *this,
-                                         struct __bool_binop<int,std::__less> const *__frama_c_arg_0);
-
-void __bool_binop<int,std::__less>::Ctor(struct __bool_binop<int,std::__less> const *this,
-                                         struct __bool_binop<int,std::__less> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -2315,32 +2223,6 @@ void __bool_binop<int,std::__less>::Ctor(struct __bool_binop<int,std::__less> co
   return;
 }
 
-/*@ requires \valid_read(this); */
-void __bool_binop<int,std::__less>::Dtor(struct __bool_binop<int,std::__less> const *this)
-{
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void __bool_binop<int,std::__less>::Ctor(struct __bool_binop<int,std::__less> const *this,
-                                         struct __bool_binop<int,std::__less> const *__frama_c_arg_0)
-{
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void __bool_binop<int,std::__less>::Ctor(struct __bool_binop<int,std::__less> const *this,
-                                         struct __bool_binop<int,std::__less> *__frama_c_arg_0)
-{
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "__bool_binop",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
@@ -2369,12 +2251,6 @@ _Bool operator()(struct __bool_binop<int,std::__less> const *this,
 
 void less<int>::Ctor(struct less<int> const *this);
 
-void less<int>::Ctor(struct less<int> const *this,
-                     struct less<int> const *__frama_c_arg_0);
-
-void less<int>::Ctor(struct less<int> const *this,
-                     struct less<int> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -2387,47 +2263,11 @@ void less<int>::Ctor(struct less<int> const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void less<int>::Ctor(struct less<int> const *this,
-                     struct less<int> const *__frama_c_arg_0)
-{
-  __bool_binop<int,std::__less>::Ctor(& this->_frama_c__ZN3stdE12__bool_binopIiN3stdE6__lessE,
-                                      & __frama_c_arg_0->_frama_c__ZN3stdE12__bool_binopIiN3stdE6__lessE);
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void less<int>::Ctor(struct less<int> const *this,
-                     struct less<int> *__frama_c_arg_0)
-{
-  __bool_binop<int,std::__less>::Ctor(& this->_frama_c__ZN3stdE12__bool_binopIiN3stdE6__lessE,
-                                      & __frama_c_arg_0->_frama_c__ZN3stdE12__bool_binopIiN3stdE6__lessE);
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "less",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-void bad_function_call::Ctor(struct bad_function_call const *this,
-                             struct bad_function_call const *__frama_c_arg_0);
-
-void bad_function_call::Ctor(struct bad_function_call const *this,
-                             struct bad_function_call *__frama_c_arg_0);
-
-struct bad_function_call *operator=(struct bad_function_call *this,
-                                    struct bad_function_call const *__frama_c_arg_0);
-
-struct bad_function_call *operator=(struct bad_function_call *this,
-                                    struct bad_function_call *__frama_c_arg_0);
-
 void bad_function_call::Dtor(struct bad_function_call const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -2446,68 +2286,6 @@ void bad_function_call::Ctor(struct bad_function_call const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void bad_function_call::Ctor(struct bad_function_call const *this,
-                             struct bad_function_call const *__frama_c_arg_0)
-{
-  exception::Ctor(& this->_frama_c__ZN3stdE9exception,
-                  & __frama_c_arg_0->_frama_c__ZN3stdE9exception);
-  return;
-}
-
-void exception::Ctor(struct exception const *this,
-                     struct exception *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void bad_function_call::Ctor(struct bad_function_call const *this,
-                             struct bad_function_call *__frama_c_arg_0)
-{
-  exception::Ctor(& this->_frama_c__ZN3stdE9exception,
-                  & __frama_c_arg_0->_frama_c__ZN3stdE9exception);
-  return;
-}
-
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct bad_function_call *operator=(struct bad_function_call *this,
-                                    struct bad_function_call const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE9exception,
-            & __frama_c_arg_0->_frama_c__ZN3stdE9exception);
-  return this;
-}
-
-struct exception *operator=(struct exception *this,
-                            struct exception *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct bad_function_call *operator=(struct bad_function_call *this,
-                                    struct bad_function_call *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE9exception,
-            & __frama_c_arg_0->_frama_c__ZN3stdE9exception);
-  return this;
-}
-
 /*@ requires \valid_read(this); */
 void bad_function_call::Dtor(struct bad_function_call const *this)
 {
diff --git a/tests/stl/oracle/stl_initializer_list.res.oracle b/tests/stl/oracle/stl_initializer_list.res.oracle
index b953429cd8b5ec502ba704cfa1580e97356e43ae..c0862fdf37a69e727f256ed58b4d09b9308e0f14 100644
--- a/tests/stl/oracle/stl_initializer_list.res.oracle
+++ b/tests/stl/oracle/stl_initializer_list.res.oracle
@@ -28,12 +28,6 @@ struct initializer_list<int> {
    int const *base ;
    size_t length ;
 };
-void initializer_list<int>::Ctor(struct initializer_list<int> const *this,
-                                 struct initializer_list<int> const *__frama_c_arg_0);
-
-void initializer_list<int>::Ctor(struct initializer_list<int> const *this,
-                                 struct initializer_list<int> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -59,30 +53,6 @@ int const *begin(struct initializer_list<int> const *this);
 /*@ requires \valid_read(this); */
 int const *end(struct initializer_list<int> const *this);
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void initializer_list<int>::Ctor(struct initializer_list<int> const *this,
-                                 struct initializer_list<int> const *__frama_c_arg_0)
-{
-  this->base = __frama_c_arg_0->base;
-  this->length = __frama_c_arg_0->length;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void initializer_list<int>::Ctor(struct initializer_list<int> const *this,
-                                 struct initializer_list<int> *__frama_c_arg_0)
-{
-  this->base = __frama_c_arg_0->base;
-  this->length = __frama_c_arg_0->length;
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "initializer_list",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/stl/oracle/stl_iterator.res.oracle b/tests/stl/oracle/stl_iterator.res.oracle
index 71da5239e9d9f9d83d6f56639766282580e1f0a5..b97d9660dc973fbe0a4bb13325ae8a0b947d341d 100644
--- a/tests/stl/oracle/stl_iterator.res.oracle
+++ b/tests/stl/oracle/stl_iterator.res.oracle
@@ -173,12 +173,6 @@ struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
    .pvmt = (struct _frama_c_vmt *)0};
 void initializer_list<int>::Dtor(struct initializer_list<int> const *this);
 
-void initializer_list<int>::Ctor(struct initializer_list<int> const *this,
-                                 struct initializer_list<int> const *__frama_c_arg_0);
-
-void initializer_list<int>::Ctor(struct initializer_list<int> const *this,
-                                 struct initializer_list<int> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -220,30 +214,6 @@ void initializer_list<int>::Dtor(struct initializer_list<int> const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void initializer_list<int>::Ctor(struct initializer_list<int> const *this,
-                                 struct initializer_list<int> const *__frama_c_arg_0)
-{
-  this->base = __frama_c_arg_0->base;
-  this->length = __frama_c_arg_0->length;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void initializer_list<int>::Ctor(struct initializer_list<int> const *this,
-                                 struct initializer_list<int> *__frama_c_arg_0)
-{
-  this->base = __frama_c_arg_0->base;
-  this->length = __frama_c_arg_0->length;
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "initializer_list",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
@@ -251,12 +221,6 @@ struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
    .pvmt = (struct _frama_c_vmt *)0};
 void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this);
 
-void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this,
-                                 struct piecewise_construct_t const *__frama_c_arg_0);
-
-void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this,
-                                 struct piecewise_construct_t *__frama_c_arg_0);
-
 void piecewise_construct_t::Dtor(struct piecewise_construct_t const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -269,26 +233,6 @@ void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this,
-                                 struct piecewise_construct_t const *__frama_c_arg_0)
-{
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this,
-                                 struct piecewise_construct_t *__frama_c_arg_0)
-{
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void piecewise_construct_t::Dtor(struct piecewise_construct_t const *this)
 {
@@ -377,25 +321,13 @@ struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-void iterator<std::random_access_iterator_tag,int,int,int*,int&>::Ctor
-(struct iterator<std::random_access_iterator_tag,int,int,int*,int&> const *this,
- struct iterator<std::random_access_iterator_tag,int,int,int*,int&> const *__frama_c_arg_0);
-
-void iterator<std::random_access_iterator_tag,int,int,int*,int&>::Ctor
-(struct iterator<std::random_access_iterator_tag,int,int,int*,int&> const *this,
- struct iterator<std::random_access_iterator_tag,int,int,int*,int&> *__frama_c_arg_0);
-
 void iterator<std::random_access_iterator_tag,int,int,int*,int&>::Dtor
 (struct iterator<std::random_access_iterator_tag,int,int,int*,int&> const *this);
 
-struct iterator<std::random_access_iterator_tag,int,int,int*,int&> *operator=
-(struct iterator<std::random_access_iterator_tag,int,int,int*,int&> *this,
+void iterator<std::random_access_iterator_tag,int,int,int*,int&>::Ctor
+(struct iterator<std::random_access_iterator_tag,int,int,int*,int&> const *this,
  struct iterator<std::random_access_iterator_tag,int,int,int*,int&> const *__frama_c_arg_0);
 
-struct iterator<std::random_access_iterator_tag,int,int,int*,int&> *operator=
-(struct iterator<std::random_access_iterator_tag,int,int,int*,int&> *this,
- struct iterator<std::random_access_iterator_tag,int,int,int*,int&> *__frama_c_arg_0);
-
 void iterator<std::random_access_iterator_tag,int,int,int*,int&>::Ctor
 (struct iterator<std::random_access_iterator_tag,int,int,int*,int&> const *this);
 
@@ -403,28 +335,6 @@ struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
 struct _frama_c_vmt_content _frama_c_vmt[1];
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void iterator<std::random_access_iterator_tag,int,int,int*,int&>::Ctor
-(struct iterator<std::random_access_iterator_tag,int,int,int*,int&> const *this,
- struct iterator<std::random_access_iterator_tag,int,int,int*,int&> const *__frama_c_arg_0)
-{
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void iterator<std::random_access_iterator_tag,int,int,int*,int&>::Ctor
-(struct iterator<std::random_access_iterator_tag,int,int,int*,int&> const *this,
- struct iterator<std::random_access_iterator_tag,int,int,int*,int&> *__frama_c_arg_0)
-{
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void iterator<std::random_access_iterator_tag,int,int,int*,int&>::Dtor
 (struct iterator<std::random_access_iterator_tag,int,int,int*,int&> const *this)
@@ -432,26 +342,15 @@ void iterator<std::random_access_iterator_tag,int,int,int*,int&>::Dtor
   return;
 }
 
-/*@ requires \valid(this);
+/*@ requires \separated(this, __frama_c_arg_0);
+    requires \valid_read(this);
     requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
  */
-struct iterator<std::random_access_iterator_tag,int,int,int*,int&> *operator=
-(struct iterator<std::random_access_iterator_tag,int,int,int*,int&> *this,
+void iterator<std::random_access_iterator_tag,int,int,int*,int&>::Ctor
+(struct iterator<std::random_access_iterator_tag,int,int,int*,int&> const *this,
  struct iterator<std::random_access_iterator_tag,int,int,int*,int&> const *__frama_c_arg_0)
 {
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct iterator<std::random_access_iterator_tag,int,int,int*,int&> *operator=
-(struct iterator<std::random_access_iterator_tag,int,int,int*,int&> *this,
- struct iterator<std::random_access_iterator_tag,int,int,int*,int&> *__frama_c_arg_0)
-{
-  return this;
+  return;
 }
 
 /*@ requires \valid_read(this); */
@@ -466,16 +365,10 @@ struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-void reverse_iterator<int*>::Ctor(struct reverse_iterator<int*> const *this,
-                                  struct reverse_iterator<int*> const *__frama_c_arg_0);
-
-struct reverse_iterator<int*> *operator=(struct reverse_iterator<int*> *this,
-                                         struct reverse_iterator<int*> const *__frama_c_arg_0);
-
 void reverse_iterator<int*>::Dtor(struct reverse_iterator<int*> const *this);
 
 void reverse_iterator<int*>::Ctor(struct reverse_iterator<int*> const *this,
-                                  struct reverse_iterator<int*> *__frama_c_arg_0);
+                                  struct reverse_iterator<int*> const *__frama_c_arg_0);
 
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
@@ -537,34 +430,6 @@ _Bool operator<<int*,void>(struct reverse_iterator<int*> *this,
   return __retres;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void reverse_iterator<int*>::Ctor(struct reverse_iterator<int*> const *this,
-                                  struct reverse_iterator<int*> const *__frama_c_arg_0)
-{
-  iterator<std::random_access_iterator_tag,int,int,int*,int&>::Ctor(& this->_frama_c__ZN3stdE8iteratorIN3stdE26random_access_iterator_tagiiPKiRKiE,
-                                                                    & __frama_c_arg_0->_frama_c__ZN3stdE8iteratorIN3stdE26random_access_iterator_tagiiPKiRKiE);
-  this->current = __frama_c_arg_0->current;
-  this->deref_tmp = __frama_c_arg_0->deref_tmp;
-  return;
-}
-
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct reverse_iterator<int*> *operator=(struct reverse_iterator<int*> *this,
-                                         struct reverse_iterator<int*> const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE8iteratorIN3stdE26random_access_iterator_tagiiPKiRKiE,
-            & __frama_c_arg_0->_frama_c__ZN3stdE8iteratorIN3stdE26random_access_iterator_tagiiPKiRKiE);
-  this->current = __frama_c_arg_0->current;
-  this->deref_tmp = __frama_c_arg_0->deref_tmp;
-  return this;
-}
-
 /*@ requires \valid_read(this); */
 void reverse_iterator<int*>::Dtor(struct reverse_iterator<int*> const *this)
 {
@@ -574,10 +439,10 @@ void reverse_iterator<int*>::Dtor(struct reverse_iterator<int*> const *this)
 
 /*@ requires \separated(this, __frama_c_arg_0);
     requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
+    requires \valid_read(__frama_c_arg_0);
  */
 void reverse_iterator<int*>::Ctor(struct reverse_iterator<int*> const *this,
-                                  struct reverse_iterator<int*> *__frama_c_arg_0)
+                                  struct reverse_iterator<int*> const *__frama_c_arg_0)
 {
   iterator<std::random_access_iterator_tag,int,int,int*,int&>::Ctor(& this->_frama_c__ZN3stdE8iteratorIN3stdE26random_access_iterator_tagiiPKiRKiE,
                                                                     & __frama_c_arg_0->_frama_c__ZN3stdE8iteratorIN3stdE26random_access_iterator_tagiiPKiRKiE);
@@ -608,12 +473,6 @@ struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
 _Bool operator<<int*,int*>(struct reverse_iterator<int*> const *x,
                            struct reverse_iterator<int*> const *y);
 
-void array<int,4>::Ctor(struct array<int,4> const *this,
-                        struct array<int,4> const *__frama_c_arg_0);
-
-void array<int,4>::Ctor(struct array<int,4> const *this,
-                        struct array<int,4> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -747,51 +606,11 @@ int *data(struct array<int,4> *this);
 /*@ requires \valid_read(this); */
 int const *data(struct array<int,4> const *this);
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void array<int,4>::Ctor(struct array<int,4> const *this,
-                        struct array<int,4> const *__frama_c_arg_0)
-{
-  {
-    unsigned int idx = (unsigned int)0;
-    while (idx < (unsigned int)4) {
-      this->elems[idx] = __frama_c_arg_0->elems[idx];
-      idx ++;
-    }
-  }
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void array<int,4>::Ctor(struct array<int,4> const *this,
-                        struct array<int,4> *__frama_c_arg_0)
-{
-  {
-    unsigned int idx = (unsigned int)0;
-    while (idx < (unsigned int)4) {
-      this->elems[idx] = __frama_c_arg_0->elems[idx];
-      idx ++;
-    }
-  }
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "array",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-void array<int,2>::Ctor(struct array<int,2> const *this,
-                        struct array<int,2> const *__frama_c_arg_0);
-
-void array<int,2>::Ctor(struct array<int,2> const *this,
-                        struct array<int,2> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -944,40 +763,6 @@ int *data(struct array<int,2> *this);
 /*@ requires \valid_read(this); */
 int const *data(struct array<int,2> const *this);
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void array<int,2>::Ctor(struct array<int,2> const *this,
-                        struct array<int,2> const *__frama_c_arg_0)
-{
-  {
-    unsigned int idx = (unsigned int)0;
-    while (idx < (unsigned int)2) {
-      this->elems[idx] = __frama_c_arg_0->elems[idx];
-      idx ++;
-    }
-  }
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void array<int,2>::Ctor(struct array<int,2> const *this,
-                        struct array<int,2> *__frama_c_arg_0)
-{
-  {
-    unsigned int idx = (unsigned int)0;
-    while (idx < (unsigned int)2) {
-      this->elems[idx] = __frama_c_arg_0->elems[idx];
-      idx ++;
-    }
-  }
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "array",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/stl/oracle/stl_memory.res.oracle b/tests/stl/oracle/stl_memory.res.oracle
index 8370541a27eceeb8a78e4c5e152ababcfbe9216d..da9ca32647d85b95609d72a9f4d3f0a651799315 100644
--- a/tests/stl/oracle/stl_memory.res.oracle
+++ b/tests/stl/oracle/stl_memory.res.oracle
@@ -15,8 +15,6 @@ Now output intermediate result
 [kernel] Warning: Assuming declared function forward<std::default_delete<int[]>> can't throw any exception
 [kernel] Warning: Assuming declared function forward<std::default_delete<int[]>> can't throw any exception
 [kernel] Warning: Assuming declared function exception::Ctor can't throw any exception
-[kernel] Warning: Assuming declared function exception::Ctor can't throw any exception
-[kernel] Warning: Assuming declared function operator= can't throw any exception
 [kernel] Warning: Assuming declared function exception::Dtor can't throw any exception
 [kernel] Warning: Assuming declared function malloc can't throw any exception
 [kernel] Warning: Assuming declared function malloc can't throw any exception
@@ -350,12 +348,6 @@ struct default_delete<int[]> *forward<std::default_delete<int[]>>(type *t);
 
 void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this);
 
-void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this,
-                                 struct piecewise_construct_t const *__frama_c_arg_0);
-
-void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this,
-                                 struct piecewise_construct_t *__frama_c_arg_0);
-
 void piecewise_construct_t::Dtor(struct piecewise_construct_t const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -368,26 +360,6 @@ void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this,
-                                 struct piecewise_construct_t const *__frama_c_arg_0)
-{
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this,
-                                 struct piecewise_construct_t *__frama_c_arg_0)
-{
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void piecewise_construct_t::Dtor(struct piecewise_construct_t const *this)
 {
@@ -1757,15 +1729,9 @@ void default_delete<int>::Ctor(struct default_delete<int> const *this);
 void default_delete<int>::Ctor(struct default_delete<int> const *this,
                                struct default_delete<int> const *__frama_c_arg_0);
 
-void default_delete<int>::Ctor(struct default_delete<int> const *this,
-                               struct default_delete<int> *__frama_c_arg_0);
-
 struct default_delete<int> *operator=(struct default_delete<int> *this,
                                       struct default_delete<int> const *__frama_c_arg_0);
 
-struct default_delete<int> *operator=(struct default_delete<int> *this,
-                                      struct default_delete<int> *__frama_c_arg_0);
-
 void default_delete<int>::Dtor(struct default_delete<int> const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -1795,16 +1761,6 @@ void default_delete<int>::Ctor(struct default_delete<int> const *this,
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void default_delete<int>::Ctor(struct default_delete<int> const *this,
-                               struct default_delete<int> *__frama_c_arg_0)
-{
-  return;
-}
-
 /*@ requires \valid(this);
     requires \valid_read(__frama_c_arg_0);
     ensures \valid(\result);
@@ -1815,16 +1771,6 @@ struct default_delete<int> *operator=(struct default_delete<int> *this,
   return this;
 }
 
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct default_delete<int> *operator=(struct default_delete<int> *this,
-                                      struct default_delete<int> *__frama_c_arg_0)
-{
-  return this;
-}
-
 /*@ requires \valid_read(this); */
 void default_delete<int>::Dtor(struct default_delete<int> const *this)
 {
@@ -1853,20 +1799,12 @@ struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
    .pvmt = (struct _frama_c_vmt *)0};
 void default_delete<int[]>::Ctor(struct default_delete<int[]> const *this);
 
-void default_delete<int[]>::Ctor(struct default_delete<int[]> const *this,
-                                 struct default_delete<int[]> const *__frama_c_arg_0);
-
 void default_delete<int[]>::Ctor(struct default_delete<int[]> const *this,
                                  struct default_delete<int[]> *__frama_c_arg_0);
 
-struct default_delete<int[]> *operator=(struct default_delete<int[]> *this,
-                                        struct default_delete<int[]> const *__frama_c_arg_0);
-
 struct default_delete<int[]> *operator=(struct default_delete<int[]> *this,
                                         struct default_delete<int[]> *__frama_c_arg_0);
 
-void default_delete<int[]>::Dtor(struct default_delete<int[]> const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -1884,16 +1822,6 @@ void default_delete<int[]>::Ctor(struct default_delete<int[]> const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void default_delete<int[]>::Ctor(struct default_delete<int[]> const *this,
-                                 struct default_delete<int[]> const *__frama_c_arg_0)
-{
-  return;
-}
-
 /*@ requires \separated(this, __frama_c_arg_0);
     requires \valid_read(this);
     requires \valid(__frama_c_arg_0);
@@ -1904,16 +1832,6 @@ void default_delete<int[]>::Ctor(struct default_delete<int[]> const *this,
   return;
 }
 
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct default_delete<int[]> *operator=(struct default_delete<int[]> *this,
-                                        struct default_delete<int[]> const *__frama_c_arg_0)
-{
-  return this;
-}
-
 /*@ requires \valid(this);
     requires \valid(__frama_c_arg_0);
     ensures \valid(\result);
@@ -1924,12 +1842,6 @@ struct default_delete<int[]> *operator=(struct default_delete<int[]> *this,
   return this;
 }
 
-/*@ requires \valid_read(this); */
-void default_delete<int[]>::Dtor(struct default_delete<int[]> const *this)
-{
-  return;
-}
-
 /*@ requires \valid(t);
     ensures \valid(\result); */
 struct default_delete<int[]> *forward<std::default_delete<int[]>>(type *t)
@@ -2025,20 +1937,6 @@ struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-struct __shared_ref_base *operator=(struct __shared_ref_base *this,
-                                    struct __shared_ref_base const *__frama_c_arg_0);
-
-struct __shared_ref_base *operator=(struct __shared_ref_base *this,
-                                    struct __shared_ref_base *__frama_c_arg_0);
-
-void __shared_ref_base::Dtor(struct __shared_ref_base const *this);
-
-void __shared_ref_base::Ctor(struct __shared_ref_base const *this,
-                             struct __shared_ref_base const *__frama_c_arg_0);
-
-void __shared_ref_base::Ctor(struct __shared_ref_base const *this,
-                             struct __shared_ref_base *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
@@ -2071,57 +1969,6 @@ void *get_deleter(struct __shared_ref_base *this)
   return __retres;
 }
 
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct __shared_ref_base *operator=(struct __shared_ref_base *this,
-                                    struct __shared_ref_base const *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct __shared_ref_base *operator=(struct __shared_ref_base *this,
-                                    struct __shared_ref_base *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return this;
-}
-
-/*@ requires \valid_read(this); */
-void __shared_ref_base::Dtor(struct __shared_ref_base const *this)
-{
-  *((struct _frama_c_vmt **)this) = & _frama_c_vmt_header;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void __shared_ref_base::Ctor(struct __shared_ref_base const *this,
-                             struct __shared_ref_base const *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void __shared_ref_base::Ctor(struct __shared_ref_base const *this,
-                             struct __shared_ref_base *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return;
-}
-
 struct _frama_c_vmt_content _frama_c_vmt[7] =
   {{.method_ptr = (void (*)())(& unlink), .shift_this = 0},
    {.method_ptr = (void (*)())(& link), .shift_this = 0},
@@ -2139,20 +1986,6 @@ struct _frama_c_vmt _frama_c_vmt_header =
   {.table = _frama_c_vmt,
    .table_size = 7,
    .rtti_info = & _frama_c_rtti_name_info};
-struct __shared_ref<void> *operator=(struct __shared_ref<void> *this,
-                                     struct __shared_ref<void> const *__frama_c_arg_0);
-
-struct __shared_ref<void> *operator=(struct __shared_ref<void> *this,
-                                     struct __shared_ref<void> *__frama_c_arg_0);
-
-void __shared_ref<void>::Dtor(struct __shared_ref<void> const *this);
-
-void __shared_ref<void>::Ctor(struct __shared_ref<void> const *this,
-                              struct __shared_ref<void> const *__frama_c_arg_0);
-
-void __shared_ref<void>::Ctor(struct __shared_ref<void> const *this,
-                              struct __shared_ref<void> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
@@ -2182,74 +2015,6 @@ void weak_link(struct __shared_ref<void> *this);
 /*@ requires \valid(this); */
 struct __shared_ref_base *ref(struct __shared_ref<void> *this);
 
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct __shared_ref<void> *operator=(struct __shared_ref<void> *this,
-                                     struct __shared_ref<void> const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE17__shared_ref_base,
-            & __frama_c_arg_0->_frama_c__ZN3stdE17__shared_ref_base);
-  this->__ptr = __frama_c_arg_0->__ptr;
-  this->_n = __frama_c_arg_0->_n;
-  this->_w = __frama_c_arg_0->_w;
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct __shared_ref<void> *operator=(struct __shared_ref<void> *this,
-                                     struct __shared_ref<void> *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE17__shared_ref_base,
-            & __frama_c_arg_0->_frama_c__ZN3stdE17__shared_ref_base);
-  this->__ptr = __frama_c_arg_0->__ptr;
-  this->_n = __frama_c_arg_0->_n;
-  this->_w = __frama_c_arg_0->_w;
-  return this;
-}
-
-/*@ requires \valid_read(this); */
-void __shared_ref<void>::Dtor(struct __shared_ref<void> const *this)
-{
-  *((struct _frama_c_vmt **)this) = & _frama_c_vmt_header;
-  __shared_ref_base::Dtor(& this->_frama_c__ZN3stdE17__shared_ref_base);
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void __shared_ref<void>::Ctor(struct __shared_ref<void> const *this,
-                              struct __shared_ref<void> const *__frama_c_arg_0)
-{
-  __shared_ref_base::Ctor(& this->_frama_c__ZN3stdE17__shared_ref_base,
-                          & __frama_c_arg_0->_frama_c__ZN3stdE17__shared_ref_base);
-  this->__ptr = __frama_c_arg_0->__ptr;
-  this->_n = __frama_c_arg_0->_n;
-  this->_w = __frama_c_arg_0->_w;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void __shared_ref<void>::Ctor(struct __shared_ref<void> const *this,
-                              struct __shared_ref<void> *__frama_c_arg_0)
-{
-  __shared_ref_base::Ctor(& this->_frama_c__ZN3stdE17__shared_ref_base,
-                          & __frama_c_arg_0->_frama_c__ZN3stdE17__shared_ref_base);
-  this->__ptr = __frama_c_arg_0->__ptr;
-  this->_n = __frama_c_arg_0->_n;
-  this->_w = __frama_c_arg_0->_w;
-  return;
-}
-
 struct _frama_c_vmt_content _frama_c_vmt[7] =
   {{.method_ptr = (void (*)())(& unlink), .shift_this = 0},
    {.method_ptr = (void (*)())(& link), .shift_this = 0},
@@ -2540,18 +2305,6 @@ struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
 struct _frama_c_vmt_content _frama_c_vmt[1];
-void bad_weak_ptr::Ctor(struct bad_weak_ptr const *this,
-                        struct bad_weak_ptr const *__frama_c_arg_0);
-
-void bad_weak_ptr::Ctor(struct bad_weak_ptr const *this,
-                        struct bad_weak_ptr *__frama_c_arg_0);
-
-struct bad_weak_ptr *operator=(struct bad_weak_ptr *this,
-                               struct bad_weak_ptr const *__frama_c_arg_0);
-
-struct bad_weak_ptr *operator=(struct bad_weak_ptr *this,
-                               struct bad_weak_ptr *__frama_c_arg_0);
-
 void bad_weak_ptr::Dtor(struct bad_weak_ptr const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -2570,68 +2323,6 @@ void bad_weak_ptr::Ctor(struct bad_weak_ptr const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void bad_weak_ptr::Ctor(struct bad_weak_ptr const *this,
-                        struct bad_weak_ptr const *__frama_c_arg_0)
-{
-  exception::Ctor(& this->_frama_c__ZN3stdE9exception,
-                  & __frama_c_arg_0->_frama_c__ZN3stdE9exception);
-  return;
-}
-
-void exception::Ctor(struct exception const *this,
-                     struct exception *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void bad_weak_ptr::Ctor(struct bad_weak_ptr const *this,
-                        struct bad_weak_ptr *__frama_c_arg_0)
-{
-  exception::Ctor(& this->_frama_c__ZN3stdE9exception,
-                  & __frama_c_arg_0->_frama_c__ZN3stdE9exception);
-  return;
-}
-
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct bad_weak_ptr *operator=(struct bad_weak_ptr *this,
-                               struct bad_weak_ptr const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE9exception,
-            & __frama_c_arg_0->_frama_c__ZN3stdE9exception);
-  return this;
-}
-
-struct exception *operator=(struct exception *this,
-                            struct exception *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct bad_weak_ptr *operator=(struct bad_weak_ptr *this,
-                               struct bad_weak_ptr *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE9exception,
-            & __frama_c_arg_0->_frama_c__ZN3stdE9exception);
-  return this;
-}
-
 /*@ requires \valid_read(this); */
 void bad_weak_ptr::Dtor(struct bad_weak_ptr const *this)
 {
diff --git a/tests/stl/oracle/stl_shared_ptr_mistake10.res.oracle b/tests/stl/oracle/stl_shared_ptr_mistake10.res.oracle
index 041928b9ddc478c1c50a91d1299eea5d0fc34acc..9459d839ac65d11470634fe9ee59a7e912fffa11 100644
--- a/tests/stl/oracle/stl_shared_ptr_mistake10.res.oracle
+++ b/tests/stl/oracle/stl_shared_ptr_mistake10.res.oracle
@@ -4,10 +4,7 @@ Now output intermediate result
 [kernel] Warning: Assuming declared function free can't throw any exception
 [kernel] Warning: Assuming declared function exception::Ctor can't throw any exception
 [kernel] Warning: Assuming declared function exception::Ctor can't throw any exception
-[kernel] Warning: Assuming declared function exception::Ctor can't throw any exception
-[kernel] Warning: Assuming declared function operator= can't throw any exception
 [kernel] Warning: Assuming declared function exception::Dtor can't throw any exception
-[kernel] Warning: Assuming declared function weak_ptr<Aircraft>::Ctor can't throw any exception
 [kernel] Warning: Assuming declared function malloc can't throw any exception
 [kernel] Warning: Assuming declared function free can't throw any exception
 [kernel] Warning: Assuming declared function free can't throw any exception
@@ -300,12 +297,6 @@ void swap<std::__shared_ref_base*>(struct __shared_ref_base **a,
 
 void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this);
 
-void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this,
-                                 struct piecewise_construct_t const *__frama_c_arg_0);
-
-void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this,
-                                 struct piecewise_construct_t *__frama_c_arg_0);
-
 void piecewise_construct_t::Dtor(struct piecewise_construct_t const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -318,26 +309,6 @@ void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this,
-                                 struct piecewise_construct_t const *__frama_c_arg_0)
-{
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this,
-                                 struct piecewise_construct_t *__frama_c_arg_0)
-{
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void piecewise_construct_t::Dtor(struct piecewise_construct_t const *this)
 {
@@ -1845,20 +1816,8 @@ struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-struct __shared_ref_base *operator=(struct __shared_ref_base *this,
-                                    struct __shared_ref_base const *__frama_c_arg_0);
-
-struct __shared_ref_base *operator=(struct __shared_ref_base *this,
-                                    struct __shared_ref_base *__frama_c_arg_0);
-
 void __shared_ref_base::Dtor(struct __shared_ref_base const *this);
 
-void __shared_ref_base::Ctor(struct __shared_ref_base const *this,
-                             struct __shared_ref_base const *__frama_c_arg_0);
-
-void __shared_ref_base::Ctor(struct __shared_ref_base const *this,
-                             struct __shared_ref_base *__frama_c_arg_0);
-
 void __shared_ref_base::Ctor(struct __shared_ref_base const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -1893,28 +1852,6 @@ void *get_deleter(struct __shared_ref_base *this)
   return __retres;
 }
 
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct __shared_ref_base *operator=(struct __shared_ref_base *this,
-                                    struct __shared_ref_base const *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct __shared_ref_base *operator=(struct __shared_ref_base *this,
-                                    struct __shared_ref_base *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return this;
-}
-
 /*@ requires \valid_read(this); */
 void __shared_ref_base::Dtor(struct __shared_ref_base const *this)
 {
@@ -1922,28 +1859,6 @@ void __shared_ref_base::Dtor(struct __shared_ref_base const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void __shared_ref_base::Ctor(struct __shared_ref_base const *this,
-                             struct __shared_ref_base const *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void __shared_ref_base::Ctor(struct __shared_ref_base const *this,
-                             struct __shared_ref_base *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void __shared_ref_base::Ctor(struct __shared_ref_base const *this)
 {
@@ -1997,20 +1912,6 @@ struct _frama_c_vmt _frama_c_vmt_header =
   {.table = _frama_c_vmt,
    .table_size = 7,
    .rtti_info = & _frama_c_rtti_name_info};
-struct __shared_ref<void> *operator=(struct __shared_ref<void> *this,
-                                     struct __shared_ref<void> const *__frama_c_arg_0);
-
-struct __shared_ref<void> *operator=(struct __shared_ref<void> *this,
-                                     struct __shared_ref<void> *__frama_c_arg_0);
-
-void __shared_ref<void>::Dtor(struct __shared_ref<void> const *this);
-
-void __shared_ref<void>::Ctor(struct __shared_ref<void> const *this,
-                              struct __shared_ref<void> const *__frama_c_arg_0);
-
-void __shared_ref<void>::Ctor(struct __shared_ref<void> const *this,
-                              struct __shared_ref<void> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
@@ -2040,74 +1941,6 @@ void weak_link(struct __shared_ref<void> *this);
 /*@ requires \valid(this); */
 struct __shared_ref_base *ref(struct __shared_ref<void> *this);
 
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct __shared_ref<void> *operator=(struct __shared_ref<void> *this,
-                                     struct __shared_ref<void> const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE17__shared_ref_base,
-            & __frama_c_arg_0->_frama_c__ZN3stdE17__shared_ref_base);
-  this->__ptr = __frama_c_arg_0->__ptr;
-  this->_n = __frama_c_arg_0->_n;
-  this->_w = __frama_c_arg_0->_w;
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct __shared_ref<void> *operator=(struct __shared_ref<void> *this,
-                                     struct __shared_ref<void> *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE17__shared_ref_base,
-            & __frama_c_arg_0->_frama_c__ZN3stdE17__shared_ref_base);
-  this->__ptr = __frama_c_arg_0->__ptr;
-  this->_n = __frama_c_arg_0->_n;
-  this->_w = __frama_c_arg_0->_w;
-  return this;
-}
-
-/*@ requires \valid_read(this); */
-void __shared_ref<void>::Dtor(struct __shared_ref<void> const *this)
-{
-  *((struct _frama_c_vmt **)this) = & _frama_c_vmt_header;
-  __shared_ref_base::Dtor(& this->_frama_c__ZN3stdE17__shared_ref_base);
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void __shared_ref<void>::Ctor(struct __shared_ref<void> const *this,
-                              struct __shared_ref<void> const *__frama_c_arg_0)
-{
-  __shared_ref_base::Ctor(& this->_frama_c__ZN3stdE17__shared_ref_base,
-                          & __frama_c_arg_0->_frama_c__ZN3stdE17__shared_ref_base);
-  this->__ptr = __frama_c_arg_0->__ptr;
-  this->_n = __frama_c_arg_0->_n;
-  this->_w = __frama_c_arg_0->_w;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void __shared_ref<void>::Ctor(struct __shared_ref<void> const *this,
-                              struct __shared_ref<void> *__frama_c_arg_0)
-{
-  __shared_ref_base::Ctor(& this->_frama_c__ZN3stdE17__shared_ref_base,
-                          & __frama_c_arg_0->_frama_c__ZN3stdE17__shared_ref_base);
-  this->__ptr = __frama_c_arg_0->__ptr;
-  this->_n = __frama_c_arg_0->_n;
-  this->_w = __frama_c_arg_0->_w;
-  return;
-}
-
 struct _frama_c_vmt_content _frama_c_vmt[7] =
   {{.method_ptr = (void (*)())(& unlink), .shift_this = 0},
    {.method_ptr = (void (*)())(& link), .shift_this = 0},
@@ -2130,20 +1963,8 @@ struct _frama_c_vmt _frama_c_vmt_header =
   {.table = _frama_c_vmt,
    .table_size = 7,
    .rtti_info = & _frama_c_rtti_name_info};
-struct __shared_ref<Aircraft> *operator=(struct __shared_ref<Aircraft> *this,
-                                         struct __shared_ref<Aircraft> const *__frama_c_arg_0);
-
-struct __shared_ref<Aircraft> *operator=(struct __shared_ref<Aircraft> *this,
-                                         struct __shared_ref<Aircraft> *__frama_c_arg_0);
-
 void __shared_ref<Aircraft>::Dtor(struct __shared_ref<Aircraft> const *this);
 
-void __shared_ref<Aircraft>::Ctor(struct __shared_ref<Aircraft> const *this,
-                                  struct __shared_ref<Aircraft> const *__frama_c_arg_0);
-
-void __shared_ref<Aircraft>::Ctor(struct __shared_ref<Aircraft> const *this,
-                                  struct __shared_ref<Aircraft> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
@@ -2198,36 +2019,6 @@ struct __shared_ref_base *ref(struct __shared_ref<Aircraft> *this)
   return __retres;
 }
 
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct __shared_ref<Aircraft> *operator=(struct __shared_ref<Aircraft> *this,
-                                         struct __shared_ref<Aircraft> const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE17__shared_ref_base,
-            & __frama_c_arg_0->_frama_c__ZN3stdE17__shared_ref_base);
-  this->__ptr = __frama_c_arg_0->__ptr;
-  this->_n = __frama_c_arg_0->_n;
-  this->_w = __frama_c_arg_0->_w;
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct __shared_ref<Aircraft> *operator=(struct __shared_ref<Aircraft> *this,
-                                         struct __shared_ref<Aircraft> *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE17__shared_ref_base,
-            & __frama_c_arg_0->_frama_c__ZN3stdE17__shared_ref_base);
-  this->__ptr = __frama_c_arg_0->__ptr;
-  this->_n = __frama_c_arg_0->_n;
-  this->_w = __frama_c_arg_0->_w;
-  return this;
-}
-
 /*@ requires \valid_read(this); */
 void __shared_ref<Aircraft>::Dtor(struct __shared_ref<Aircraft> const *this)
 {
@@ -2236,36 +2027,6 @@ void __shared_ref<Aircraft>::Dtor(struct __shared_ref<Aircraft> const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void __shared_ref<Aircraft>::Ctor(struct __shared_ref<Aircraft> const *this,
-                                  struct __shared_ref<Aircraft> const *__frama_c_arg_0)
-{
-  __shared_ref_base::Ctor(& this->_frama_c__ZN3stdE17__shared_ref_base,
-                          & __frama_c_arg_0->_frama_c__ZN3stdE17__shared_ref_base);
-  this->__ptr = __frama_c_arg_0->__ptr;
-  this->_n = __frama_c_arg_0->_n;
-  this->_w = __frama_c_arg_0->_w;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void __shared_ref<Aircraft>::Ctor(struct __shared_ref<Aircraft> const *this,
-                                  struct __shared_ref<Aircraft> *__frama_c_arg_0)
-{
-  __shared_ref_base::Ctor(& this->_frama_c__ZN3stdE17__shared_ref_base,
-                          & __frama_c_arg_0->_frama_c__ZN3stdE17__shared_ref_base);
-  this->__ptr = __frama_c_arg_0->__ptr;
-  this->_n = __frama_c_arg_0->_n;
-  this->_w = __frama_c_arg_0->_w;
-  return;
-}
-
 /*@ requires \valid(this); */
 void weak_unlink(struct __shared_ref<Aircraft> *this)
 {
@@ -2344,6 +2105,12 @@ void weak_ptr<Aircraft>::Dtor(struct weak_ptr<Aircraft> const *this)
 struct weak_ptr<Aircraft> *operator=(struct weak_ptr<Aircraft> *this,
                                      struct weak_ptr<Aircraft> const *r);
 
+/*@ requires \valid(this);
+    requires \valid_read(r);
+    ensures \valid(\result); */
+struct weak_ptr<Aircraft> *operator=<Aircraft,void>(struct weak_ptr<Aircraft> *this,
+                                                    struct weak_ptr<Aircraft> const *r);
+
 /*@ requires \valid(this);
     requires \valid_read(r);
     ensures __fc_exn.exn_uncaught ≡ 0 ⇒ \valid(\result);
@@ -2468,18 +2235,6 @@ struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
 struct _frama_c_vmt_content _frama_c_vmt[1];
-void bad_weak_ptr::Ctor(struct bad_weak_ptr const *this,
-                        struct bad_weak_ptr const *__frama_c_arg_0);
-
-void bad_weak_ptr::Ctor(struct bad_weak_ptr const *this,
-                        struct bad_weak_ptr *__frama_c_arg_0);
-
-struct bad_weak_ptr *operator=(struct bad_weak_ptr *this,
-                               struct bad_weak_ptr const *__frama_c_arg_0);
-
-struct bad_weak_ptr *operator=(struct bad_weak_ptr *this,
-                               struct bad_weak_ptr *__frama_c_arg_0);
-
 void bad_weak_ptr::Dtor(struct bad_weak_ptr const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -2498,68 +2253,6 @@ void bad_weak_ptr::Ctor(struct bad_weak_ptr const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void bad_weak_ptr::Ctor(struct bad_weak_ptr const *this,
-                        struct bad_weak_ptr const *__frama_c_arg_0)
-{
-  exception::Ctor(& this->_frama_c__ZN3stdE9exception,
-                  & __frama_c_arg_0->_frama_c__ZN3stdE9exception);
-  return;
-}
-
-void exception::Ctor(struct exception const *this,
-                     struct exception *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void bad_weak_ptr::Ctor(struct bad_weak_ptr const *this,
-                        struct bad_weak_ptr *__frama_c_arg_0)
-{
-  exception::Ctor(& this->_frama_c__ZN3stdE9exception,
-                  & __frama_c_arg_0->_frama_c__ZN3stdE9exception);
-  return;
-}
-
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct bad_weak_ptr *operator=(struct bad_weak_ptr *this,
-                               struct bad_weak_ptr const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE9exception,
-            & __frama_c_arg_0->_frama_c__ZN3stdE9exception);
-  return this;
-}
-
-struct exception *operator=(struct exception *this,
-                            struct exception *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct bad_weak_ptr *operator=(struct bad_weak_ptr *this,
-                               struct bad_weak_ptr *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE9exception,
-            & __frama_c_arg_0->_frama_c__ZN3stdE9exception);
-  return this;
-}
-
 /*@ requires \valid_read(this); */
 void bad_weak_ptr::Dtor(struct bad_weak_ptr const *this)
 {
@@ -3580,9 +3273,6 @@ int posix_memalign(void **memptr, size_t alignment, size_t size);
  */
 int mkstemp(char *templat);
 
-void Aircraft::Ctor(struct Aircraft const *this,
-                    struct Aircraft const *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -3615,19 +3305,6 @@ void Aircraft::Dtor(struct Aircraft const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void Aircraft::Ctor(struct Aircraft const *this,
-                    struct Aircraft const *__frama_c_arg_0)
-{
-  this->m_id = __frama_c_arg_0->m_id;
-  this->m_flyCount = __frama_c_arg_0->m_flyCount;
-  weak_ptr<Aircraft>::Ctor(& this->myWingMan,& __frama_c_arg_0->myWingMan);
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void shared_ptr<Aircraft>::Ctor(struct shared_ptr<Aircraft> const *this,
                                 struct Aircraft *p)
diff --git a/tests/stl/oracle/stl_shared_ptr_mistake5.res.oracle b/tests/stl/oracle/stl_shared_ptr_mistake5.res.oracle
index 75c1adbcb0b670e7a33cedad59d9e75f4e300fec..f2db83c2f9074826407a9020ff6952219eb51bf5 100644
--- a/tests/stl/oracle/stl_shared_ptr_mistake5.res.oracle
+++ b/tests/stl/oracle/stl_shared_ptr_mistake5.res.oracle
@@ -3,10 +3,7 @@ Now output intermediate result
 [kernel] Warning: Assuming declared function exception::Dtor can't throw any exception
 [kernel] Warning: Assuming declared function free can't throw any exception
 [kernel] Warning: Assuming declared function exception::Ctor can't throw any exception
-[kernel] Warning: Assuming declared function exception::Ctor can't throw any exception
-[kernel] Warning: Assuming declared function operator= can't throw any exception
 [kernel] Warning: Assuming declared function exception::Dtor can't throw any exception
-[kernel] Warning: Assuming declared function weak_ptr<Aircraft>::Ctor can't throw any exception
 [kernel] Warning: Assuming declared function malloc can't throw any exception
 [kernel] Warning: Assuming declared function free can't throw any exception
 [kernel] Warning: Assuming declared function free can't throw any exception
@@ -281,12 +278,6 @@ void swap<std::__shared_ref_base*>(struct __shared_ref_base **a,
 
 void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this);
 
-void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this,
-                                 struct piecewise_construct_t const *__frama_c_arg_0);
-
-void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this,
-                                 struct piecewise_construct_t *__frama_c_arg_0);
-
 void piecewise_construct_t::Dtor(struct piecewise_construct_t const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -299,26 +290,6 @@ void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this,
-                                 struct piecewise_construct_t const *__frama_c_arg_0)
-{
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this,
-                                 struct piecewise_construct_t *__frama_c_arg_0)
-{
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void piecewise_construct_t::Dtor(struct piecewise_construct_t const *this)
 {
@@ -1803,20 +1774,8 @@ struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-struct __shared_ref_base *operator=(struct __shared_ref_base *this,
-                                    struct __shared_ref_base const *__frama_c_arg_0);
-
-struct __shared_ref_base *operator=(struct __shared_ref_base *this,
-                                    struct __shared_ref_base *__frama_c_arg_0);
-
 void __shared_ref_base::Dtor(struct __shared_ref_base const *this);
 
-void __shared_ref_base::Ctor(struct __shared_ref_base const *this,
-                             struct __shared_ref_base const *__frama_c_arg_0);
-
-void __shared_ref_base::Ctor(struct __shared_ref_base const *this,
-                             struct __shared_ref_base *__frama_c_arg_0);
-
 void __shared_ref_base::Ctor(struct __shared_ref_base const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -1851,28 +1810,6 @@ void *get_deleter(struct __shared_ref_base *this)
   return __retres;
 }
 
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct __shared_ref_base *operator=(struct __shared_ref_base *this,
-                                    struct __shared_ref_base const *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct __shared_ref_base *operator=(struct __shared_ref_base *this,
-                                    struct __shared_ref_base *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return this;
-}
-
 /*@ requires \valid_read(this); */
 void __shared_ref_base::Dtor(struct __shared_ref_base const *this)
 {
@@ -1880,28 +1817,6 @@ void __shared_ref_base::Dtor(struct __shared_ref_base const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void __shared_ref_base::Ctor(struct __shared_ref_base const *this,
-                             struct __shared_ref_base const *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void __shared_ref_base::Ctor(struct __shared_ref_base const *this,
-                             struct __shared_ref_base *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void __shared_ref_base::Ctor(struct __shared_ref_base const *this)
 {
@@ -1938,20 +1853,6 @@ struct _frama_c_vmt _frama_c_vmt_header =
   {.table = _frama_c_vmt,
    .table_size = 7,
    .rtti_info = & _frama_c_rtti_name_info};
-struct __shared_ref<void> *operator=(struct __shared_ref<void> *this,
-                                     struct __shared_ref<void> const *__frama_c_arg_0);
-
-struct __shared_ref<void> *operator=(struct __shared_ref<void> *this,
-                                     struct __shared_ref<void> *__frama_c_arg_0);
-
-void __shared_ref<void>::Dtor(struct __shared_ref<void> const *this);
-
-void __shared_ref<void>::Ctor(struct __shared_ref<void> const *this,
-                              struct __shared_ref<void> const *__frama_c_arg_0);
-
-void __shared_ref<void>::Ctor(struct __shared_ref<void> const *this,
-                              struct __shared_ref<void> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
@@ -1981,74 +1882,6 @@ void weak_link(struct __shared_ref<void> *this);
 /*@ requires \valid(this); */
 struct __shared_ref_base *ref(struct __shared_ref<void> *this);
 
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct __shared_ref<void> *operator=(struct __shared_ref<void> *this,
-                                     struct __shared_ref<void> const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE17__shared_ref_base,
-            & __frama_c_arg_0->_frama_c__ZN3stdE17__shared_ref_base);
-  this->__ptr = __frama_c_arg_0->__ptr;
-  this->_n = __frama_c_arg_0->_n;
-  this->_w = __frama_c_arg_0->_w;
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct __shared_ref<void> *operator=(struct __shared_ref<void> *this,
-                                     struct __shared_ref<void> *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE17__shared_ref_base,
-            & __frama_c_arg_0->_frama_c__ZN3stdE17__shared_ref_base);
-  this->__ptr = __frama_c_arg_0->__ptr;
-  this->_n = __frama_c_arg_0->_n;
-  this->_w = __frama_c_arg_0->_w;
-  return this;
-}
-
-/*@ requires \valid_read(this); */
-void __shared_ref<void>::Dtor(struct __shared_ref<void> const *this)
-{
-  *((struct _frama_c_vmt **)this) = & _frama_c_vmt_header;
-  __shared_ref_base::Dtor(& this->_frama_c__ZN3stdE17__shared_ref_base);
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void __shared_ref<void>::Ctor(struct __shared_ref<void> const *this,
-                              struct __shared_ref<void> const *__frama_c_arg_0)
-{
-  __shared_ref_base::Ctor(& this->_frama_c__ZN3stdE17__shared_ref_base,
-                          & __frama_c_arg_0->_frama_c__ZN3stdE17__shared_ref_base);
-  this->__ptr = __frama_c_arg_0->__ptr;
-  this->_n = __frama_c_arg_0->_n;
-  this->_w = __frama_c_arg_0->_w;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void __shared_ref<void>::Ctor(struct __shared_ref<void> const *this,
-                              struct __shared_ref<void> *__frama_c_arg_0)
-{
-  __shared_ref_base::Ctor(& this->_frama_c__ZN3stdE17__shared_ref_base,
-                          & __frama_c_arg_0->_frama_c__ZN3stdE17__shared_ref_base);
-  this->__ptr = __frama_c_arg_0->__ptr;
-  this->_n = __frama_c_arg_0->_n;
-  this->_w = __frama_c_arg_0->_w;
-  return;
-}
-
 struct _frama_c_vmt_content _frama_c_vmt[7] =
   {{.method_ptr = (void (*)())(& unlink), .shift_this = 0},
    {.method_ptr = (void (*)())(& link), .shift_this = 0},
@@ -2071,20 +1904,8 @@ struct _frama_c_vmt _frama_c_vmt_header =
   {.table = _frama_c_vmt,
    .table_size = 7,
    .rtti_info = & _frama_c_rtti_name_info};
-struct __shared_ref<Aircraft> *operator=(struct __shared_ref<Aircraft> *this,
-                                         struct __shared_ref<Aircraft> const *__frama_c_arg_0);
-
-struct __shared_ref<Aircraft> *operator=(struct __shared_ref<Aircraft> *this,
-                                         struct __shared_ref<Aircraft> *__frama_c_arg_0);
-
 void __shared_ref<Aircraft>::Dtor(struct __shared_ref<Aircraft> const *this);
 
-void __shared_ref<Aircraft>::Ctor(struct __shared_ref<Aircraft> const *this,
-                                  struct __shared_ref<Aircraft> const *__frama_c_arg_0);
-
-void __shared_ref<Aircraft>::Ctor(struct __shared_ref<Aircraft> const *this,
-                                  struct __shared_ref<Aircraft> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
@@ -2139,36 +1960,6 @@ struct __shared_ref_base *ref(struct __shared_ref<Aircraft> *this)
   return __retres;
 }
 
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct __shared_ref<Aircraft> *operator=(struct __shared_ref<Aircraft> *this,
-                                         struct __shared_ref<Aircraft> const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE17__shared_ref_base,
-            & __frama_c_arg_0->_frama_c__ZN3stdE17__shared_ref_base);
-  this->__ptr = __frama_c_arg_0->__ptr;
-  this->_n = __frama_c_arg_0->_n;
-  this->_w = __frama_c_arg_0->_w;
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct __shared_ref<Aircraft> *operator=(struct __shared_ref<Aircraft> *this,
-                                         struct __shared_ref<Aircraft> *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE17__shared_ref_base,
-            & __frama_c_arg_0->_frama_c__ZN3stdE17__shared_ref_base);
-  this->__ptr = __frama_c_arg_0->__ptr;
-  this->_n = __frama_c_arg_0->_n;
-  this->_w = __frama_c_arg_0->_w;
-  return this;
-}
-
 /*@ requires \valid_read(this); */
 void __shared_ref<Aircraft>::Dtor(struct __shared_ref<Aircraft> const *this)
 {
@@ -2177,36 +1968,6 @@ void __shared_ref<Aircraft>::Dtor(struct __shared_ref<Aircraft> const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void __shared_ref<Aircraft>::Ctor(struct __shared_ref<Aircraft> const *this,
-                                  struct __shared_ref<Aircraft> const *__frama_c_arg_0)
-{
-  __shared_ref_base::Ctor(& this->_frama_c__ZN3stdE17__shared_ref_base,
-                          & __frama_c_arg_0->_frama_c__ZN3stdE17__shared_ref_base);
-  this->__ptr = __frama_c_arg_0->__ptr;
-  this->_n = __frama_c_arg_0->_n;
-  this->_w = __frama_c_arg_0->_w;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void __shared_ref<Aircraft>::Ctor(struct __shared_ref<Aircraft> const *this,
-                                  struct __shared_ref<Aircraft> *__frama_c_arg_0)
-{
-  __shared_ref_base::Ctor(& this->_frama_c__ZN3stdE17__shared_ref_base,
-                          & __frama_c_arg_0->_frama_c__ZN3stdE17__shared_ref_base);
-  this->__ptr = __frama_c_arg_0->__ptr;
-  this->_n = __frama_c_arg_0->_n;
-  this->_w = __frama_c_arg_0->_w;
-  return;
-}
-
 /*@ requires \valid(this); */
 void weak_unlink(struct __shared_ref<Aircraft> *this)
 {
@@ -2278,6 +2039,12 @@ void weak_ptr<Aircraft>::Dtor(struct weak_ptr<Aircraft> const *this)
 struct weak_ptr<Aircraft> *operator=(struct weak_ptr<Aircraft> *this,
                                      struct weak_ptr<Aircraft> const *r);
 
+/*@ requires \valid(this);
+    requires \valid_read(r);
+    ensures \valid(\result); */
+struct weak_ptr<Aircraft> *operator=<Aircraft,void>(struct weak_ptr<Aircraft> *this,
+                                                    struct weak_ptr<Aircraft> const *r);
+
 /*@ requires \valid(this);
     requires \valid(r); */
 void swap(struct weak_ptr<Aircraft> *this, struct weak_ptr<Aircraft> *r);
@@ -2303,18 +2070,6 @@ struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
 struct _frama_c_vmt_content _frama_c_vmt[1];
-void bad_weak_ptr::Ctor(struct bad_weak_ptr const *this,
-                        struct bad_weak_ptr const *__frama_c_arg_0);
-
-void bad_weak_ptr::Ctor(struct bad_weak_ptr const *this,
-                        struct bad_weak_ptr *__frama_c_arg_0);
-
-struct bad_weak_ptr *operator=(struct bad_weak_ptr *this,
-                               struct bad_weak_ptr const *__frama_c_arg_0);
-
-struct bad_weak_ptr *operator=(struct bad_weak_ptr *this,
-                               struct bad_weak_ptr *__frama_c_arg_0);
-
 void bad_weak_ptr::Dtor(struct bad_weak_ptr const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -2333,68 +2088,6 @@ void bad_weak_ptr::Ctor(struct bad_weak_ptr const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void bad_weak_ptr::Ctor(struct bad_weak_ptr const *this,
-                        struct bad_weak_ptr const *__frama_c_arg_0)
-{
-  exception::Ctor(& this->_frama_c__ZN3stdE9exception,
-                  & __frama_c_arg_0->_frama_c__ZN3stdE9exception);
-  return;
-}
-
-void exception::Ctor(struct exception const *this,
-                     struct exception *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void bad_weak_ptr::Ctor(struct bad_weak_ptr const *this,
-                        struct bad_weak_ptr *__frama_c_arg_0)
-{
-  exception::Ctor(& this->_frama_c__ZN3stdE9exception,
-                  & __frama_c_arg_0->_frama_c__ZN3stdE9exception);
-  return;
-}
-
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct bad_weak_ptr *operator=(struct bad_weak_ptr *this,
-                               struct bad_weak_ptr const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE9exception,
-            & __frama_c_arg_0->_frama_c__ZN3stdE9exception);
-  return this;
-}
-
-struct exception *operator=(struct exception *this,
-                            struct exception *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct bad_weak_ptr *operator=(struct bad_weak_ptr *this,
-                               struct bad_weak_ptr *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE9exception,
-            & __frama_c_arg_0->_frama_c__ZN3stdE9exception);
-  return this;
-}
-
 /*@ requires \valid_read(this); */
 void bad_weak_ptr::Dtor(struct bad_weak_ptr const *this)
 {
@@ -3333,9 +3026,6 @@ int posix_memalign(void **memptr, size_t alignment, size_t size);
  */
 int mkstemp(char *templat);
 
-void Aircraft::Ctor(struct Aircraft const *this,
-                    struct Aircraft const *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -3368,19 +3058,6 @@ void Aircraft::Dtor(struct Aircraft const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void Aircraft::Ctor(struct Aircraft const *this,
-                    struct Aircraft const *__frama_c_arg_0)
-{
-  this->m_id = __frama_c_arg_0->m_id;
-  this->m_flyCount = __frama_c_arg_0->m_flyCount;
-  weak_ptr<Aircraft>::Ctor(& this->myWingMan,& __frama_c_arg_0->myWingMan);
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void shared_ptr<Aircraft>::Ctor(struct shared_ptr<Aircraft> const *this,
                                 struct Aircraft *p)
diff --git a/tests/stl/oracle/stl_shared_ptr_mistake6.res.oracle b/tests/stl/oracle/stl_shared_ptr_mistake6.res.oracle
index babbcd2fdb5b320f1dca0507c5ee5f10fb940856..5e6fbbc1e378b9b362ee0957771425c7ee17c20f 100644
--- a/tests/stl/oracle/stl_shared_ptr_mistake6.res.oracle
+++ b/tests/stl/oracle/stl_shared_ptr_mistake6.res.oracle
@@ -3,10 +3,7 @@ Now output intermediate result
 [kernel] Warning: Assuming declared function exception::Dtor can't throw any exception
 [kernel] Warning: Assuming declared function free can't throw any exception
 [kernel] Warning: Assuming declared function exception::Ctor can't throw any exception
-[kernel] Warning: Assuming declared function exception::Ctor can't throw any exception
-[kernel] Warning: Assuming declared function operator= can't throw any exception
 [kernel] Warning: Assuming declared function exception::Dtor can't throw any exception
-[kernel] Warning: Assuming declared function weak_ptr<Aircraft>::Ctor can't throw any exception
 [kernel] Warning: Assuming declared function malloc can't throw any exception
 [kernel] Warning: Assuming declared function free can't throw any exception
 [kernel] Warning: Assuming declared function free can't throw any exception
@@ -282,12 +279,6 @@ void swap<std::__shared_ref_base*>(struct __shared_ref_base **a,
 
 void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this);
 
-void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this,
-                                 struct piecewise_construct_t const *__frama_c_arg_0);
-
-void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this,
-                                 struct piecewise_construct_t *__frama_c_arg_0);
-
 void piecewise_construct_t::Dtor(struct piecewise_construct_t const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -300,26 +291,6 @@ void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this,
-                                 struct piecewise_construct_t const *__frama_c_arg_0)
-{
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this,
-                                 struct piecewise_construct_t *__frama_c_arg_0)
-{
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void piecewise_construct_t::Dtor(struct piecewise_construct_t const *this)
 {
@@ -1809,20 +1780,8 @@ struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-struct __shared_ref_base *operator=(struct __shared_ref_base *this,
-                                    struct __shared_ref_base const *__frama_c_arg_0);
-
-struct __shared_ref_base *operator=(struct __shared_ref_base *this,
-                                    struct __shared_ref_base *__frama_c_arg_0);
-
 void __shared_ref_base::Dtor(struct __shared_ref_base const *this);
 
-void __shared_ref_base::Ctor(struct __shared_ref_base const *this,
-                             struct __shared_ref_base const *__frama_c_arg_0);
-
-void __shared_ref_base::Ctor(struct __shared_ref_base const *this,
-                             struct __shared_ref_base *__frama_c_arg_0);
-
 void __shared_ref_base::Ctor(struct __shared_ref_base const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -1857,28 +1816,6 @@ void *get_deleter(struct __shared_ref_base *this)
   return __retres;
 }
 
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct __shared_ref_base *operator=(struct __shared_ref_base *this,
-                                    struct __shared_ref_base const *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct __shared_ref_base *operator=(struct __shared_ref_base *this,
-                                    struct __shared_ref_base *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return this;
-}
-
 /*@ requires \valid_read(this); */
 void __shared_ref_base::Dtor(struct __shared_ref_base const *this)
 {
@@ -1886,28 +1823,6 @@ void __shared_ref_base::Dtor(struct __shared_ref_base const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void __shared_ref_base::Ctor(struct __shared_ref_base const *this,
-                             struct __shared_ref_base const *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void __shared_ref_base::Ctor(struct __shared_ref_base const *this,
-                             struct __shared_ref_base *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void __shared_ref_base::Ctor(struct __shared_ref_base const *this)
 {
@@ -1944,20 +1859,6 @@ struct _frama_c_vmt _frama_c_vmt_header =
   {.table = _frama_c_vmt,
    .table_size = 7,
    .rtti_info = & _frama_c_rtti_name_info};
-struct __shared_ref<void> *operator=(struct __shared_ref<void> *this,
-                                     struct __shared_ref<void> const *__frama_c_arg_0);
-
-struct __shared_ref<void> *operator=(struct __shared_ref<void> *this,
-                                     struct __shared_ref<void> *__frama_c_arg_0);
-
-void __shared_ref<void>::Dtor(struct __shared_ref<void> const *this);
-
-void __shared_ref<void>::Ctor(struct __shared_ref<void> const *this,
-                              struct __shared_ref<void> const *__frama_c_arg_0);
-
-void __shared_ref<void>::Ctor(struct __shared_ref<void> const *this,
-                              struct __shared_ref<void> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
@@ -1987,74 +1888,6 @@ void weak_link(struct __shared_ref<void> *this);
 /*@ requires \valid(this); */
 struct __shared_ref_base *ref(struct __shared_ref<void> *this);
 
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct __shared_ref<void> *operator=(struct __shared_ref<void> *this,
-                                     struct __shared_ref<void> const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE17__shared_ref_base,
-            & __frama_c_arg_0->_frama_c__ZN3stdE17__shared_ref_base);
-  this->__ptr = __frama_c_arg_0->__ptr;
-  this->_n = __frama_c_arg_0->_n;
-  this->_w = __frama_c_arg_0->_w;
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct __shared_ref<void> *operator=(struct __shared_ref<void> *this,
-                                     struct __shared_ref<void> *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE17__shared_ref_base,
-            & __frama_c_arg_0->_frama_c__ZN3stdE17__shared_ref_base);
-  this->__ptr = __frama_c_arg_0->__ptr;
-  this->_n = __frama_c_arg_0->_n;
-  this->_w = __frama_c_arg_0->_w;
-  return this;
-}
-
-/*@ requires \valid_read(this); */
-void __shared_ref<void>::Dtor(struct __shared_ref<void> const *this)
-{
-  *((struct _frama_c_vmt **)this) = & _frama_c_vmt_header;
-  __shared_ref_base::Dtor(& this->_frama_c__ZN3stdE17__shared_ref_base);
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void __shared_ref<void>::Ctor(struct __shared_ref<void> const *this,
-                              struct __shared_ref<void> const *__frama_c_arg_0)
-{
-  __shared_ref_base::Ctor(& this->_frama_c__ZN3stdE17__shared_ref_base,
-                          & __frama_c_arg_0->_frama_c__ZN3stdE17__shared_ref_base);
-  this->__ptr = __frama_c_arg_0->__ptr;
-  this->_n = __frama_c_arg_0->_n;
-  this->_w = __frama_c_arg_0->_w;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void __shared_ref<void>::Ctor(struct __shared_ref<void> const *this,
-                              struct __shared_ref<void> *__frama_c_arg_0)
-{
-  __shared_ref_base::Ctor(& this->_frama_c__ZN3stdE17__shared_ref_base,
-                          & __frama_c_arg_0->_frama_c__ZN3stdE17__shared_ref_base);
-  this->__ptr = __frama_c_arg_0->__ptr;
-  this->_n = __frama_c_arg_0->_n;
-  this->_w = __frama_c_arg_0->_w;
-  return;
-}
-
 struct _frama_c_vmt_content _frama_c_vmt[7] =
   {{.method_ptr = (void (*)())(& unlink), .shift_this = 0},
    {.method_ptr = (void (*)())(& link), .shift_this = 0},
@@ -2077,20 +1910,8 @@ struct _frama_c_vmt _frama_c_vmt_header =
   {.table = _frama_c_vmt,
    .table_size = 7,
    .rtti_info = & _frama_c_rtti_name_info};
-struct __shared_ref<Aircraft> *operator=(struct __shared_ref<Aircraft> *this,
-                                         struct __shared_ref<Aircraft> const *__frama_c_arg_0);
-
-struct __shared_ref<Aircraft> *operator=(struct __shared_ref<Aircraft> *this,
-                                         struct __shared_ref<Aircraft> *__frama_c_arg_0);
-
 void __shared_ref<Aircraft>::Dtor(struct __shared_ref<Aircraft> const *this);
 
-void __shared_ref<Aircraft>::Ctor(struct __shared_ref<Aircraft> const *this,
-                                  struct __shared_ref<Aircraft> const *__frama_c_arg_0);
-
-void __shared_ref<Aircraft>::Ctor(struct __shared_ref<Aircraft> const *this,
-                                  struct __shared_ref<Aircraft> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
@@ -2145,36 +1966,6 @@ struct __shared_ref_base *ref(struct __shared_ref<Aircraft> *this)
   return __retres;
 }
 
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct __shared_ref<Aircraft> *operator=(struct __shared_ref<Aircraft> *this,
-                                         struct __shared_ref<Aircraft> const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE17__shared_ref_base,
-            & __frama_c_arg_0->_frama_c__ZN3stdE17__shared_ref_base);
-  this->__ptr = __frama_c_arg_0->__ptr;
-  this->_n = __frama_c_arg_0->_n;
-  this->_w = __frama_c_arg_0->_w;
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct __shared_ref<Aircraft> *operator=(struct __shared_ref<Aircraft> *this,
-                                         struct __shared_ref<Aircraft> *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE17__shared_ref_base,
-            & __frama_c_arg_0->_frama_c__ZN3stdE17__shared_ref_base);
-  this->__ptr = __frama_c_arg_0->__ptr;
-  this->_n = __frama_c_arg_0->_n;
-  this->_w = __frama_c_arg_0->_w;
-  return this;
-}
-
 /*@ requires \valid_read(this); */
 void __shared_ref<Aircraft>::Dtor(struct __shared_ref<Aircraft> const *this)
 {
@@ -2183,36 +1974,6 @@ void __shared_ref<Aircraft>::Dtor(struct __shared_ref<Aircraft> const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void __shared_ref<Aircraft>::Ctor(struct __shared_ref<Aircraft> const *this,
-                                  struct __shared_ref<Aircraft> const *__frama_c_arg_0)
-{
-  __shared_ref_base::Ctor(& this->_frama_c__ZN3stdE17__shared_ref_base,
-                          & __frama_c_arg_0->_frama_c__ZN3stdE17__shared_ref_base);
-  this->__ptr = __frama_c_arg_0->__ptr;
-  this->_n = __frama_c_arg_0->_n;
-  this->_w = __frama_c_arg_0->_w;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void __shared_ref<Aircraft>::Ctor(struct __shared_ref<Aircraft> const *this,
-                                  struct __shared_ref<Aircraft> *__frama_c_arg_0)
-{
-  __shared_ref_base::Ctor(& this->_frama_c__ZN3stdE17__shared_ref_base,
-                          & __frama_c_arg_0->_frama_c__ZN3stdE17__shared_ref_base);
-  this->__ptr = __frama_c_arg_0->__ptr;
-  this->_n = __frama_c_arg_0->_n;
-  this->_w = __frama_c_arg_0->_w;
-  return;
-}
-
 /*@ requires \valid(this); */
 void weak_unlink(struct __shared_ref<Aircraft> *this)
 {
@@ -2284,6 +2045,12 @@ void weak_ptr<Aircraft>::Dtor(struct weak_ptr<Aircraft> const *this)
 struct weak_ptr<Aircraft> *operator=(struct weak_ptr<Aircraft> *this,
                                      struct weak_ptr<Aircraft> const *r);
 
+/*@ requires \valid(this);
+    requires \valid_read(r);
+    ensures \valid(\result); */
+struct weak_ptr<Aircraft> *operator=<Aircraft,void>(struct weak_ptr<Aircraft> *this,
+                                                    struct weak_ptr<Aircraft> const *r);
+
 /*@ requires \valid(this);
     requires \valid(r); */
 void swap(struct weak_ptr<Aircraft> *this, struct weak_ptr<Aircraft> *r);
@@ -2309,18 +2076,6 @@ struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
 struct _frama_c_vmt_content _frama_c_vmt[1];
-void bad_weak_ptr::Ctor(struct bad_weak_ptr const *this,
-                        struct bad_weak_ptr const *__frama_c_arg_0);
-
-void bad_weak_ptr::Ctor(struct bad_weak_ptr const *this,
-                        struct bad_weak_ptr *__frama_c_arg_0);
-
-struct bad_weak_ptr *operator=(struct bad_weak_ptr *this,
-                               struct bad_weak_ptr const *__frama_c_arg_0);
-
-struct bad_weak_ptr *operator=(struct bad_weak_ptr *this,
-                               struct bad_weak_ptr *__frama_c_arg_0);
-
 void bad_weak_ptr::Dtor(struct bad_weak_ptr const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -2339,68 +2094,6 @@ void bad_weak_ptr::Ctor(struct bad_weak_ptr const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void bad_weak_ptr::Ctor(struct bad_weak_ptr const *this,
-                        struct bad_weak_ptr const *__frama_c_arg_0)
-{
-  exception::Ctor(& this->_frama_c__ZN3stdE9exception,
-                  & __frama_c_arg_0->_frama_c__ZN3stdE9exception);
-  return;
-}
-
-void exception::Ctor(struct exception const *this,
-                     struct exception *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void bad_weak_ptr::Ctor(struct bad_weak_ptr const *this,
-                        struct bad_weak_ptr *__frama_c_arg_0)
-{
-  exception::Ctor(& this->_frama_c__ZN3stdE9exception,
-                  & __frama_c_arg_0->_frama_c__ZN3stdE9exception);
-  return;
-}
-
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct bad_weak_ptr *operator=(struct bad_weak_ptr *this,
-                               struct bad_weak_ptr const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE9exception,
-            & __frama_c_arg_0->_frama_c__ZN3stdE9exception);
-  return this;
-}
-
-struct exception *operator=(struct exception *this,
-                            struct exception *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct bad_weak_ptr *operator=(struct bad_weak_ptr *this,
-                               struct bad_weak_ptr *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE9exception,
-            & __frama_c_arg_0->_frama_c__ZN3stdE9exception);
-  return this;
-}
-
 /*@ requires \valid_read(this); */
 void bad_weak_ptr::Dtor(struct bad_weak_ptr const *this)
 {
@@ -3339,9 +3032,6 @@ int posix_memalign(void **memptr, size_t alignment, size_t size);
  */
 int mkstemp(char *templat);
 
-void Aircraft::Ctor(struct Aircraft const *this,
-                    struct Aircraft const *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -3374,19 +3064,6 @@ void Aircraft::Dtor(struct Aircraft const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void Aircraft::Ctor(struct Aircraft const *this,
-                    struct Aircraft const *__frama_c_arg_0)
-{
-  this->m_id = __frama_c_arg_0->m_id;
-  this->m_flyCount = __frama_c_arg_0->m_flyCount;
-  weak_ptr<Aircraft>::Ctor(& this->myWingMan,& __frama_c_arg_0->myWingMan);
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void shared_ptr<Aircraft>::Ctor(struct shared_ptr<Aircraft> const *this,
                                 struct Aircraft *p)
diff --git a/tests/stl/oracle/stl_system_error.res.oracle b/tests/stl/oracle/stl_system_error.res.oracle
index 0560f74f31a1bdeb8c5103653b4d3b85b18a89a4..5bb4c46b190b51b462f86657bde82efa6dbddc4f 100644
--- a/tests/stl/oracle/stl_system_error.res.oracle
+++ b/tests/stl/oracle/stl_system_error.res.oracle
@@ -3,14 +3,8 @@ Now output intermediate result
 [kernel] Warning: Assuming declared function exception::Dtor can't throw any exception
 [kernel] Warning: Assuming declared function tm::Ctor can't throw any exception
 [kernel] Warning: Assuming declared function exception::Ctor can't throw any exception
-[kernel] Warning: Assuming declared function exception::Ctor can't throw any exception
-[kernel] Warning: Assuming declared function operator= can't throw any exception
 [kernel] Warning: Assuming declared function exception::Dtor can't throw any exception
-[kernel] Warning: Assuming declared function exception::Ctor can't throw any exception
-[kernel] Warning: Assuming declared function operator= can't throw any exception
 [kernel] Warning: Assuming declared function exception::Dtor can't throw any exception
-[kernel] Warning: Assuming declared function exception::Ctor can't throw any exception
-[kernel] Warning: Assuming declared function operator= can't throw any exception
 [kernel] Warning: Assuming declared function exception::Dtor can't throw any exception
 /* Generated by Frama-C */
 struct _frama_c_vmt_content {
@@ -2259,12 +2253,6 @@ void swap<std::__shared_ref_base*>(struct __shared_ref_base **a,
 
 void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this);
 
-void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this,
-                                 struct piecewise_construct_t const *__frama_c_arg_0);
-
-void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this,
-                                 struct piecewise_construct_t *__frama_c_arg_0);
-
 void piecewise_construct_t::Dtor(struct piecewise_construct_t const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -2277,26 +2265,6 @@ void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this,
-                                 struct piecewise_construct_t const *__frama_c_arg_0)
-{
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this,
-                                 struct piecewise_construct_t *__frama_c_arg_0)
-{
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void piecewise_construct_t::Dtor(struct piecewise_construct_t const *this)
 {
@@ -2323,20 +2291,6 @@ struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
 struct _frama_c_vmt_content _frama_c_vmt[1];
-struct __shared_ref_base *operator=(struct __shared_ref_base *this,
-                                    struct __shared_ref_base const *__frama_c_arg_0);
-
-struct __shared_ref_base *operator=(struct __shared_ref_base *this,
-                                    struct __shared_ref_base *__frama_c_arg_0);
-
-void __shared_ref_base::Dtor(struct __shared_ref_base const *this);
-
-void __shared_ref_base::Ctor(struct __shared_ref_base const *this,
-                             struct __shared_ref_base const *__frama_c_arg_0);
-
-void __shared_ref_base::Ctor(struct __shared_ref_base const *this,
-                             struct __shared_ref_base *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
@@ -2369,57 +2323,6 @@ void *get_deleter(struct __shared_ref_base *this)
   return __retres;
 }
 
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct __shared_ref_base *operator=(struct __shared_ref_base *this,
-                                    struct __shared_ref_base const *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct __shared_ref_base *operator=(struct __shared_ref_base *this,
-                                    struct __shared_ref_base *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return this;
-}
-
-/*@ requires \valid_read(this); */
-void __shared_ref_base::Dtor(struct __shared_ref_base const *this)
-{
-  *((struct _frama_c_vmt **)this) = & _frama_c_vmt_header;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void __shared_ref_base::Ctor(struct __shared_ref_base const *this,
-                             struct __shared_ref_base const *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void __shared_ref_base::Ctor(struct __shared_ref_base const *this,
-                             struct __shared_ref_base *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "allocator",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
@@ -2442,20 +2345,6 @@ struct _frama_c_vmt _frama_c_vmt_header =
   {.table = _frama_c_vmt,
    .table_size = 7,
    .rtti_info = & _frama_c_rtti_name_info};
-struct __shared_ref<void> *operator=(struct __shared_ref<void> *this,
-                                     struct __shared_ref<void> const *__frama_c_arg_0);
-
-struct __shared_ref<void> *operator=(struct __shared_ref<void> *this,
-                                     struct __shared_ref<void> *__frama_c_arg_0);
-
-void __shared_ref<void>::Dtor(struct __shared_ref<void> const *this);
-
-void __shared_ref<void>::Ctor(struct __shared_ref<void> const *this,
-                              struct __shared_ref<void> const *__frama_c_arg_0);
-
-void __shared_ref<void>::Ctor(struct __shared_ref<void> const *this,
-                              struct __shared_ref<void> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
@@ -2485,74 +2374,6 @@ void weak_link(struct __shared_ref<void> *this);
 /*@ requires \valid(this); */
 struct __shared_ref_base *ref(struct __shared_ref<void> *this);
 
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct __shared_ref<void> *operator=(struct __shared_ref<void> *this,
-                                     struct __shared_ref<void> const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE17__shared_ref_base,
-            & __frama_c_arg_0->_frama_c__ZN3stdE17__shared_ref_base);
-  this->__ptr = __frama_c_arg_0->__ptr;
-  this->_n = __frama_c_arg_0->_n;
-  this->_w = __frama_c_arg_0->_w;
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct __shared_ref<void> *operator=(struct __shared_ref<void> *this,
-                                     struct __shared_ref<void> *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE17__shared_ref_base,
-            & __frama_c_arg_0->_frama_c__ZN3stdE17__shared_ref_base);
-  this->__ptr = __frama_c_arg_0->__ptr;
-  this->_n = __frama_c_arg_0->_n;
-  this->_w = __frama_c_arg_0->_w;
-  return this;
-}
-
-/*@ requires \valid_read(this); */
-void __shared_ref<void>::Dtor(struct __shared_ref<void> const *this)
-{
-  *((struct _frama_c_vmt **)this) = & _frama_c_vmt_header;
-  __shared_ref_base::Dtor(& this->_frama_c__ZN3stdE17__shared_ref_base);
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void __shared_ref<void>::Ctor(struct __shared_ref<void> const *this,
-                              struct __shared_ref<void> const *__frama_c_arg_0)
-{
-  __shared_ref_base::Ctor(& this->_frama_c__ZN3stdE17__shared_ref_base,
-                          & __frama_c_arg_0->_frama_c__ZN3stdE17__shared_ref_base);
-  this->__ptr = __frama_c_arg_0->__ptr;
-  this->_n = __frama_c_arg_0->_n;
-  this->_w = __frama_c_arg_0->_w;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void __shared_ref<void>::Ctor(struct __shared_ref<void> const *this,
-                              struct __shared_ref<void> *__frama_c_arg_0)
-{
-  __shared_ref_base::Ctor(& this->_frama_c__ZN3stdE17__shared_ref_base,
-                          & __frama_c_arg_0->_frama_c__ZN3stdE17__shared_ref_base);
-  this->__ptr = __frama_c_arg_0->__ptr;
-  this->_n = __frama_c_arg_0->_n;
-  this->_w = __frama_c_arg_0->_w;
-  return;
-}
-
 struct _frama_c_vmt_content _frama_c_vmt[7] =
   {{.method_ptr = (void (*)())(& unlink), .shift_this = 0},
    {.method_ptr = (void (*)())(& link), .shift_this = 0},
@@ -2579,18 +2400,6 @@ struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
 struct _frama_c_vmt_content _frama_c_vmt[1];
-void bad_weak_ptr::Ctor(struct bad_weak_ptr const *this,
-                        struct bad_weak_ptr const *__frama_c_arg_0);
-
-void bad_weak_ptr::Ctor(struct bad_weak_ptr const *this,
-                        struct bad_weak_ptr *__frama_c_arg_0);
-
-struct bad_weak_ptr *operator=(struct bad_weak_ptr *this,
-                               struct bad_weak_ptr const *__frama_c_arg_0);
-
-struct bad_weak_ptr *operator=(struct bad_weak_ptr *this,
-                               struct bad_weak_ptr *__frama_c_arg_0);
-
 void bad_weak_ptr::Dtor(struct bad_weak_ptr const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -2609,68 +2418,6 @@ void bad_weak_ptr::Ctor(struct bad_weak_ptr const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void bad_weak_ptr::Ctor(struct bad_weak_ptr const *this,
-                        struct bad_weak_ptr const *__frama_c_arg_0)
-{
-  exception::Ctor(& this->_frama_c__ZN3stdE9exception,
-                  & __frama_c_arg_0->_frama_c__ZN3stdE9exception);
-  return;
-}
-
-void exception::Ctor(struct exception const *this,
-                     struct exception *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void bad_weak_ptr::Ctor(struct bad_weak_ptr const *this,
-                        struct bad_weak_ptr *__frama_c_arg_0)
-{
-  exception::Ctor(& this->_frama_c__ZN3stdE9exception,
-                  & __frama_c_arg_0->_frama_c__ZN3stdE9exception);
-  return;
-}
-
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct bad_weak_ptr *operator=(struct bad_weak_ptr *this,
-                               struct bad_weak_ptr const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE9exception,
-            & __frama_c_arg_0->_frama_c__ZN3stdE9exception);
-  return this;
-}
-
-struct exception *operator=(struct exception *this,
-                            struct exception *__frama_c_arg_0)
-{
-  this->pvmt = __frama_c_arg_0->pvmt;
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct bad_weak_ptr *operator=(struct bad_weak_ptr *this,
-                               struct bad_weak_ptr *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE9exception,
-            & __frama_c_arg_0->_frama_c__ZN3stdE9exception);
-  return this;
-}
-
 /*@ requires \valid_read(this); */
 void bad_weak_ptr::Dtor(struct bad_weak_ptr const *this)
 {
@@ -2924,18 +2671,6 @@ double stod(string const *str, size_t *idx);
 /*@ requires \valid_read(str); */
 long double stold(string const *str, size_t *idx);
 
-void logic_error::Ctor(struct logic_error const *this,
-                       struct logic_error const *__frama_c_arg_0);
-
-void logic_error::Ctor(struct logic_error const *this,
-                       struct logic_error *__frama_c_arg_0);
-
-struct logic_error *operator=(struct logic_error *this,
-                              struct logic_error const *__frama_c_arg_0);
-
-struct logic_error *operator=(struct logic_error *this,
-                              struct logic_error *__frama_c_arg_0);
-
 void logic_error::Dtor(struct logic_error const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -2953,54 +2688,6 @@ void logic_error::Ctor(struct logic_error const *this, string const *what_arg);
 /*@ requires \valid_read(this); */
 void logic_error::Ctor(struct logic_error const *this, char const *what_arg);
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void logic_error::Ctor(struct logic_error const *this,
-                       struct logic_error const *__frama_c_arg_0)
-{
-  exception::Ctor(& this->_frama_c__ZN3stdE9exception,
-                  & __frama_c_arg_0->_frama_c__ZN3stdE9exception);
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void logic_error::Ctor(struct logic_error const *this,
-                       struct logic_error *__frama_c_arg_0)
-{
-  exception::Ctor(& this->_frama_c__ZN3stdE9exception,
-                  & __frama_c_arg_0->_frama_c__ZN3stdE9exception);
-  return;
-}
-
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct logic_error *operator=(struct logic_error *this,
-                              struct logic_error const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE9exception,
-            & __frama_c_arg_0->_frama_c__ZN3stdE9exception);
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct logic_error *operator=(struct logic_error *this,
-                              struct logic_error *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE9exception,
-            & __frama_c_arg_0->_frama_c__ZN3stdE9exception);
-  return this;
-}
-
 /*@ requires \valid_read(this); */
 void logic_error::Dtor(struct logic_error const *this)
 {
@@ -3009,12 +2696,6 @@ void logic_error::Dtor(struct logic_error const *this)
   return;
 }
 
-struct domain_error *operator=(struct domain_error *this,
-                               struct domain_error const *__frama_c_arg_0);
-
-struct domain_error *operator=(struct domain_error *this,
-                               struct domain_error *__frama_c_arg_0);
-
 void domain_error::Dtor(struct domain_error const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -3033,30 +2714,6 @@ void domain_error::Ctor(struct domain_error const *this,
 /*@ requires \valid_read(this); */
 void domain_error::Ctor(struct domain_error const *this, char const *what_arg);
 
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct domain_error *operator=(struct domain_error *this,
-                               struct domain_error const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE11logic_error,
-            & __frama_c_arg_0->_frama_c__ZN3stdE11logic_error);
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct domain_error *operator=(struct domain_error *this,
-                               struct domain_error *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE11logic_error,
-            & __frama_c_arg_0->_frama_c__ZN3stdE11logic_error);
-  return this;
-}
-
 /*@ requires \valid_read(this); */
 void domain_error::Dtor(struct domain_error const *this)
 {
@@ -3065,12 +2722,6 @@ void domain_error::Dtor(struct domain_error const *this)
   return;
 }
 
-struct invalid_argument *operator=(struct invalid_argument *this,
-                                   struct invalid_argument const *__frama_c_arg_0);
-
-struct invalid_argument *operator=(struct invalid_argument *this,
-                                   struct invalid_argument *__frama_c_arg_0);
-
 void invalid_argument::Dtor(struct invalid_argument const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -3090,30 +2741,6 @@ void invalid_argument::Ctor(struct invalid_argument const *this,
 void invalid_argument::Ctor(struct invalid_argument const *this,
                             char const *what_arg);
 
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct invalid_argument *operator=(struct invalid_argument *this,
-                                   struct invalid_argument const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE11logic_error,
-            & __frama_c_arg_0->_frama_c__ZN3stdE11logic_error);
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct invalid_argument *operator=(struct invalid_argument *this,
-                                   struct invalid_argument *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE11logic_error,
-            & __frama_c_arg_0->_frama_c__ZN3stdE11logic_error);
-  return this;
-}
-
 /*@ requires \valid_read(this); */
 void invalid_argument::Dtor(struct invalid_argument const *this)
 {
@@ -3122,12 +2749,6 @@ void invalid_argument::Dtor(struct invalid_argument const *this)
   return;
 }
 
-struct length_error *operator=(struct length_error *this,
-                               struct length_error const *__frama_c_arg_0);
-
-struct length_error *operator=(struct length_error *this,
-                               struct length_error *__frama_c_arg_0);
-
 void length_error::Dtor(struct length_error const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -3146,30 +2767,6 @@ void length_error::Ctor(struct length_error const *this,
 /*@ requires \valid_read(this); */
 void length_error::Ctor(struct length_error const *this, char const *what_arg);
 
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct length_error *operator=(struct length_error *this,
-                               struct length_error const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE11logic_error,
-            & __frama_c_arg_0->_frama_c__ZN3stdE11logic_error);
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct length_error *operator=(struct length_error *this,
-                               struct length_error *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE11logic_error,
-            & __frama_c_arg_0->_frama_c__ZN3stdE11logic_error);
-  return this;
-}
-
 /*@ requires \valid_read(this); */
 void length_error::Dtor(struct length_error const *this)
 {
@@ -3178,12 +2775,6 @@ void length_error::Dtor(struct length_error const *this)
   return;
 }
 
-struct out_of_range *operator=(struct out_of_range *this,
-                               struct out_of_range const *__frama_c_arg_0);
-
-struct out_of_range *operator=(struct out_of_range *this,
-                               struct out_of_range *__frama_c_arg_0);
-
 void out_of_range::Dtor(struct out_of_range const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -3202,30 +2793,6 @@ void out_of_range::Ctor(struct out_of_range const *this,
 /*@ requires \valid_read(this); */
 void out_of_range::Ctor(struct out_of_range const *this, char const *what_arg);
 
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct out_of_range *operator=(struct out_of_range *this,
-                               struct out_of_range const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE11logic_error,
-            & __frama_c_arg_0->_frama_c__ZN3stdE11logic_error);
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct out_of_range *operator=(struct out_of_range *this,
-                               struct out_of_range *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE11logic_error,
-            & __frama_c_arg_0->_frama_c__ZN3stdE11logic_error);
-  return this;
-}
-
 /*@ requires \valid_read(this); */
 void out_of_range::Dtor(struct out_of_range const *this)
 {
@@ -3234,18 +2801,6 @@ void out_of_range::Dtor(struct out_of_range const *this)
   return;
 }
 
-void runtime_error::Ctor(struct runtime_error const *this,
-                         struct runtime_error const *__frama_c_arg_0);
-
-void runtime_error::Ctor(struct runtime_error const *this,
-                         struct runtime_error *__frama_c_arg_0);
-
-struct runtime_error *operator=(struct runtime_error *this,
-                                struct runtime_error const *__frama_c_arg_0);
-
-struct runtime_error *operator=(struct runtime_error *this,
-                                struct runtime_error *__frama_c_arg_0);
-
 void runtime_error::Dtor(struct runtime_error const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -3265,54 +2820,6 @@ void runtime_error::Ctor(struct runtime_error const *this,
 void runtime_error::Ctor(struct runtime_error const *this,
                          char const *what_arg);
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void runtime_error::Ctor(struct runtime_error const *this,
-                         struct runtime_error const *__frama_c_arg_0)
-{
-  exception::Ctor(& this->_frama_c__ZN3stdE9exception,
-                  & __frama_c_arg_0->_frama_c__ZN3stdE9exception);
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void runtime_error::Ctor(struct runtime_error const *this,
-                         struct runtime_error *__frama_c_arg_0)
-{
-  exception::Ctor(& this->_frama_c__ZN3stdE9exception,
-                  & __frama_c_arg_0->_frama_c__ZN3stdE9exception);
-  return;
-}
-
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct runtime_error *operator=(struct runtime_error *this,
-                                struct runtime_error const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE9exception,
-            & __frama_c_arg_0->_frama_c__ZN3stdE9exception);
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct runtime_error *operator=(struct runtime_error *this,
-                                struct runtime_error *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE9exception,
-            & __frama_c_arg_0->_frama_c__ZN3stdE9exception);
-  return this;
-}
-
 /*@ requires \valid_read(this); */
 void runtime_error::Dtor(struct runtime_error const *this)
 {
@@ -3321,12 +2828,6 @@ void runtime_error::Dtor(struct runtime_error const *this)
   return;
 }
 
-struct range_error *operator=(struct range_error *this,
-                              struct range_error const *__frama_c_arg_0);
-
-struct range_error *operator=(struct range_error *this,
-                              struct range_error *__frama_c_arg_0);
-
 void range_error::Dtor(struct range_error const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -3344,30 +2845,6 @@ void range_error::Ctor(struct range_error const *this, string const *what_arg);
 /*@ requires \valid_read(this); */
 void range_error::Ctor(struct range_error const *this, char const *what_arg);
 
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct range_error *operator=(struct range_error *this,
-                              struct range_error const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE13runtime_error,
-            & __frama_c_arg_0->_frama_c__ZN3stdE13runtime_error);
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct range_error *operator=(struct range_error *this,
-                              struct range_error *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE13runtime_error,
-            & __frama_c_arg_0->_frama_c__ZN3stdE13runtime_error);
-  return this;
-}
-
 /*@ requires \valid_read(this); */
 void range_error::Dtor(struct range_error const *this)
 {
@@ -3376,12 +2853,6 @@ void range_error::Dtor(struct range_error const *this)
   return;
 }
 
-struct overflow_error *operator=(struct overflow_error *this,
-                                 struct overflow_error const *__frama_c_arg_0);
-
-struct overflow_error *operator=(struct overflow_error *this,
-                                 struct overflow_error *__frama_c_arg_0);
-
 void overflow_error::Dtor(struct overflow_error const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -3401,30 +2872,6 @@ void overflow_error::Ctor(struct overflow_error const *this,
 void overflow_error::Ctor(struct overflow_error const *this,
                           char const *what_arg);
 
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct overflow_error *operator=(struct overflow_error *this,
-                                 struct overflow_error const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE13runtime_error,
-            & __frama_c_arg_0->_frama_c__ZN3stdE13runtime_error);
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct overflow_error *operator=(struct overflow_error *this,
-                                 struct overflow_error *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE13runtime_error,
-            & __frama_c_arg_0->_frama_c__ZN3stdE13runtime_error);
-  return this;
-}
-
 /*@ requires \valid_read(this); */
 void overflow_error::Dtor(struct overflow_error const *this)
 {
@@ -3433,12 +2880,6 @@ void overflow_error::Dtor(struct overflow_error const *this)
   return;
 }
 
-struct underflow_error *operator=(struct underflow_error *this,
-                                  struct underflow_error const *__frama_c_arg_0);
-
-struct underflow_error *operator=(struct underflow_error *this,
-                                  struct underflow_error *__frama_c_arg_0);
-
 void underflow_error::Dtor(struct underflow_error const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -3458,30 +2899,6 @@ void underflow_error::Ctor(struct underflow_error const *this,
 void underflow_error::Ctor(struct underflow_error const *this,
                            char const *what_arg);
 
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct underflow_error *operator=(struct underflow_error *this,
-                                  struct underflow_error const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE13runtime_error,
-            & __frama_c_arg_0->_frama_c__ZN3stdE13runtime_error);
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct underflow_error *operator=(struct underflow_error *this,
-                                  struct underflow_error *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE13runtime_error,
-            & __frama_c_arg_0->_frama_c__ZN3stdE13runtime_error);
-  return this;
-}
-
 /*@ requires \valid_read(this); */
 void underflow_error::Dtor(struct underflow_error const *this)
 {
@@ -3729,12 +3146,6 @@ string message(struct error_code const *this);
 /*@ requires \valid_read(this); */
 _Bool conversion(bool)(struct error_code const *this);
 
-struct system_error *operator=(struct system_error *this,
-                               struct system_error const *__frama_c_arg_0);
-
-struct system_error *operator=(struct system_error *this,
-                               struct system_error *__frama_c_arg_0);
-
 void system_error::Dtor(struct system_error const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -3783,30 +3194,6 @@ struct error_code const *code(struct system_error const *this);
 /*@ requires \valid_read(this); */
 char const *what(struct system_error const *this);
 
-/*@ requires \valid(this);
-    requires \valid_read(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct system_error *operator=(struct system_error *this,
-                               struct system_error const *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE13runtime_error,
-            & __frama_c_arg_0->_frama_c__ZN3stdE13runtime_error);
-  return this;
-}
-
-/*@ requires \valid(this);
-    requires \valid(__frama_c_arg_0);
-    ensures \valid(\result);
- */
-struct system_error *operator=(struct system_error *this,
-                               struct system_error *__frama_c_arg_0)
-{
-  operator=(& this->_frama_c__ZN3stdE13runtime_error,
-            & __frama_c_arg_0->_frama_c__ZN3stdE13runtime_error);
-  return this;
-}
-
 /*@ requires \valid_read(this); */
 void system_error::Dtor(struct system_error const *this)
 {
diff --git a/tests/stl/oracle/stl_typeinfo.res.oracle b/tests/stl/oracle/stl_typeinfo.res.oracle
index b7aa81d0ceece5c3994762a1a77c42cde29b0631..83430930b7cfd151960b992b302f821f1e5258ea 100644
--- a/tests/stl/oracle/stl_typeinfo.res.oracle
+++ b/tests/stl/oracle/stl_typeinfo.res.oracle
@@ -1689,18 +1689,10 @@ void __si_class_type_info::Dtor(struct __si_class_type_info const *this)
   return;
 }
 
-void __base_class_type_info::Dtor(struct __base_class_type_info const *this);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
 struct _frama_c_vmt_content _frama_c_vmt[1];
-/*@ requires \valid_read(this); */
-void __base_class_type_info::Dtor(struct __base_class_type_info const *this)
-{
-  return;
-}
-
 void __vmi_class_type_info::Dtor(struct __vmi_class_type_info const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
diff --git a/tests/stl/oracle/stl_utility.res.oracle b/tests/stl/oracle/stl_utility.res.oracle
index 0431513143b17f6a4915a75f06281136ed3226f7..69dc88fa52bb4dab6386e234cc99df078bb6d365 100644
--- a/tests/stl/oracle/stl_utility.res.oracle
+++ b/tests/stl/oracle/stl_utility.res.oracle
@@ -901,12 +901,6 @@ type move_if_noexcept<int>(int *x)
 
 void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this);
 
-void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this,
-                                 struct piecewise_construct_t const *__frama_c_arg_0);
-
-void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this,
-                                 struct piecewise_construct_t *__frama_c_arg_0);
-
 void piecewise_construct_t::Dtor(struct piecewise_construct_t const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -919,26 +913,6 @@ void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this,
-                                 struct piecewise_construct_t const *__frama_c_arg_0)
-{
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void piecewise_construct_t::Ctor(struct piecewise_construct_t const *this,
-                                 struct piecewise_construct_t *__frama_c_arg_0)
-{
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void piecewise_construct_t::Dtor(struct piecewise_construct_t const *this)
 {
@@ -961,12 +935,6 @@ struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-void pair<int&,bool>::Ctor(struct pair<int&,bool> const *this,
-                           struct pair<int&,bool> const *__frama_c_arg_0);
-
-void pair<int&,bool>::Ctor(struct pair<int&,bool> const *this,
-                           struct pair<int&,bool> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -1012,41 +980,11 @@ struct pair<int&,bool> *operator=<int,bool,void>(struct pair<int&,bool> *this,
     requires \valid(p); */
 void swap(struct pair<int&,bool> *this, struct pair<int&,bool> *p);
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void pair<int&,bool>::Ctor(struct pair<int&,bool> const *this,
-                           struct pair<int&,bool> const *__frama_c_arg_0)
-{
-  this->first = __frama_c_arg_0->first;
-  this->second = __frama_c_arg_0->second;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void pair<int&,bool>::Ctor(struct pair<int&,bool> const *this,
-                           struct pair<int&,bool> *__frama_c_arg_0)
-{
-  this->first = __frama_c_arg_0->first;
-  this->second = __frama_c_arg_0->second;
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "pair",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-void pair<int,bool>::Ctor(struct pair<int,bool> const *this,
-                          struct pair<int,bool> const *__frama_c_arg_0);
-
-void pair<int,bool>::Ctor(struct pair<int,bool> const *this,
-                          struct pair<int,bool> *__frama_c_arg_0);
-
 void pair<int,bool>::Dtor(struct pair<int,bool> const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -1069,30 +1007,6 @@ void pair<int,bool>::Ctor(struct pair<int,bool> const *this, int const *x,
     requires \valid(p); */
 void swap(struct pair<int,bool> *this, struct pair<int,bool> *p);
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void pair<int,bool>::Ctor(struct pair<int,bool> const *this,
-                          struct pair<int,bool> const *__frama_c_arg_0)
-{
-  this->first = __frama_c_arg_0->first;
-  this->second = __frama_c_arg_0->second;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void pair<int,bool>::Ctor(struct pair<int,bool> const *this,
-                          struct pair<int,bool> *__frama_c_arg_0)
-{
-  this->first = __frama_c_arg_0->first;
-  this->second = __frama_c_arg_0->second;
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void pair<int,bool>::Dtor(struct pair<int,bool> const *this)
 {
@@ -1119,12 +1033,6 @@ struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-void pair<int,double>::Ctor(struct pair<int,double> const *this,
-                            struct pair<int,double> const *__frama_c_arg_0);
-
-void pair<int,double>::Ctor(struct pair<int,double> const *this,
-                            struct pair<int,double> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -1158,30 +1066,6 @@ void swap(struct pair<int,double> *this, struct pair<int,double> *p)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void pair<int,double>::Ctor(struct pair<int,double> const *this,
-                            struct pair<int,double> const *__frama_c_arg_0)
-{
-  this->first = __frama_c_arg_0->first;
-  this->second = __frama_c_arg_0->second;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void pair<int,double>::Ctor(struct pair<int,double> const *this,
-                            struct pair<int,double> *__frama_c_arg_0)
-{
-  this->first = __frama_c_arg_0->first;
-  this->second = __frama_c_arg_0->second;
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "pair",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
@@ -1304,10 +1188,6 @@ type const *get<0,int,double>(struct pair<int,double> const *p);
     ensures \valid_read(\result); */
 type const *get<1,int,double>(struct pair<int,double> const *p);
 
-void S::Ctor(struct S const *this, struct S const *__frama_c_arg_0);
-
-void S::Ctor(struct S const *this, struct S *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -1319,26 +1199,6 @@ void S::Ctor(struct S const *this, int y)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void S::Ctor(struct S const *this, struct S const *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void S::Ctor(struct S const *this, struct S *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "S",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/template/oracle/17_4_11.res.oracle b/tests/template/oracle/17_4_11.res.oracle
index 9c2d8aa5a01273c0488f75b17f93eeb4b006a28d..64c3e1cce89d377215e8cc3f5f24fe1681092ec1 100644
--- a/tests/template/oracle/17_4_11.res.oracle
+++ b/tests/template/oracle/17_4_11.res.oracle
@@ -25,12 +25,6 @@ struct _frama_c_rtti_name_info_node {
 struct Foo<int> {
    int *x ;
 };
-void Foo<int>::Ctor(struct Foo<int> const *this,
-                    struct Foo<int> const *__frama_c_arg_0);
-
-void Foo<int>::Ctor(struct Foo<int> const *this,
-                    struct Foo<int> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -42,28 +36,6 @@ void Foo<int>::Ctor(struct Foo<int> const *this, int *_x)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void Foo<int>::Ctor(struct Foo<int> const *this,
-                    struct Foo<int> const *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void Foo<int>::Ctor(struct Foo<int> const *this,
-                    struct Foo<int> *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "Foo",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/template/oracle/class_in_template.res.oracle b/tests/template/oracle/class_in_template.res.oracle
index ca2c0d9baec622588b7b5476de4d638e05f1dc0d..69518e0dc436f7a9f1324915be5a9e0bee288224 100644
--- a/tests/template/oracle/class_in_template.res.oracle
+++ b/tests/template/oracle/class_in_template.res.oracle
@@ -40,14 +40,6 @@ struct sentry {
 struct basic_ostream<char> {
    struct basic_ios<char> _frama_c__ZN3stdE9basic_iosIcE ;
 };
-void ios_base::Dtor(struct ios_base const *this);
-
-void ios_base::Ctor(struct ios_base const *this,
-                    struct ios_base const *__frama_c_arg_0);
-
-void ios_base::Ctor(struct ios_base const *this,
-                    struct ios_base *__frama_c_arg_0);
-
 void ios_base::Ctor(struct ios_base const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -55,32 +47,6 @@ struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
 struct _frama_c_vmt_content _frama_c_vmt[1];
 int const bad_bit = 1;
-/*@ requires \valid_read(this); */
-void ios_base::Dtor(struct ios_base const *this)
-{
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void ios_base::Ctor(struct ios_base const *this,
-                    struct ios_base const *__frama_c_arg_0)
-{
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void ios_base::Ctor(struct ios_base const *this,
-                    struct ios_base *__frama_c_arg_0)
-{
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void ios_base::Ctor(struct ios_base const *this)
 {
@@ -92,14 +58,6 @@ struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-void basic_ios<char>::Dtor(struct basic_ios<char> const *this);
-
-void basic_ios<char>::Ctor(struct basic_ios<char> const *this,
-                           struct basic_ios<char> const *__frama_c_arg_0);
-
-void basic_ios<char>::Ctor(struct basic_ios<char> const *this,
-                           struct basic_ios<char> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -116,39 +74,6 @@ void basic_ios<char>::Ctor(struct basic_ios<char> const *this)
 /*@ requires \valid(this); */
 void setstate(struct basic_ios<char> *this, int state);
 
-/*@ requires \valid_read(this); */
-void basic_ios<char>::Dtor(struct basic_ios<char> const *this)
-{
-  ios_base::Dtor(& this->_frama_c__ZN3stdE8ios_base);
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void basic_ios<char>::Ctor(struct basic_ios<char> const *this,
-                           struct basic_ios<char> const *__frama_c_arg_0)
-{
-  ios_base::Ctor(& this->_frama_c__ZN3stdE8ios_base,
-                 & __frama_c_arg_0->_frama_c__ZN3stdE8ios_base);
-  this->_M_tie = __frama_c_arg_0->_M_tie;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void basic_ios<char>::Ctor(struct basic_ios<char> const *this,
-                           struct basic_ios<char> *__frama_c_arg_0)
-{
-  ios_base::Ctor(& this->_frama_c__ZN3stdE8ios_base,
-                 & __frama_c_arg_0->_frama_c__ZN3stdE8ios_base);
-  this->_M_tie = __frama_c_arg_0->_M_tie;
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "basic_ios",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
@@ -181,12 +106,6 @@ struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
    .pvmt = (struct _frama_c_vmt *)0};
 void basic_ostream<char>::Ctor(struct basic_ostream<char> const *this);
 
-void basic_ostream<char>::Ctor(struct basic_ostream<char> const *this,
-                               struct basic_ostream<char> const *__frama_c_arg_0);
-
-void basic_ostream<char>::Ctor(struct basic_ostream<char> const *this,
-                               struct basic_ostream<char> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -208,30 +127,6 @@ void basic_ostream<char>::Ctor(struct basic_ostream<char> const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void basic_ostream<char>::Ctor(struct basic_ostream<char> const *this,
-                               struct basic_ostream<char> const *__frama_c_arg_0)
-{
-  basic_ios<char>::Ctor(& this->_frama_c__ZN3stdE9basic_iosIcE,
-                        & __frama_c_arg_0->_frama_c__ZN3stdE9basic_iosIcE);
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void basic_ostream<char>::Ctor(struct basic_ostream<char> const *this,
-                               struct basic_ostream<char> *__frama_c_arg_0)
-{
-  basic_ios<char>::Ctor(& this->_frama_c__ZN3stdE9basic_iosIcE,
-                        & __frama_c_arg_0->_frama_c__ZN3stdE9basic_iosIcE);
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "basic_ostream",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/template/oracle/fwd_decl.res.oracle b/tests/template/oracle/fwd_decl.res.oracle
index 1479d6723d03b888d77270ba1bc09fc4e9cc950f..44efca72d9b588adabba69a502d798a7d2313b1a 100644
--- a/tests/template/oracle/fwd_decl.res.oracle
+++ b/tests/template/oracle/fwd_decl.res.oracle
@@ -33,10 +33,6 @@ struct A *id<A>(struct A *x)
 
 void A::Ctor(struct A const *this);
 
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0);
-
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -47,26 +43,6 @@ void A::Ctor(struct A const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A const *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void A::Ctor(struct A const *this, struct A *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "A",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/template/oracle/fwd_decl2.res.oracle b/tests/template/oracle/fwd_decl2.res.oracle
index f723dfb24989a1df214a8a119220cd55e28734c4..9ddc45784f9f8c6aa02683daa2cc34acf8a033a5 100644
--- a/tests/template/oracle/fwd_decl2.res.oracle
+++ b/tests/template/oracle/fwd_decl2.res.oracle
@@ -30,12 +30,6 @@ struct bar {
    int y ;
    int z ;
 };
-void foo<bar>::Ctor(struct foo<bar> const *this,
-                    struct foo<bar> const *__frama_c_arg_0);
-
-void foo<bar>::Ctor(struct foo<bar> const *this,
-                    struct foo<bar> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -58,37 +52,11 @@ struct bar *get_x(struct foo<bar> *this)
 /*@ requires \valid(this); */
 void set_x(struct foo<bar> *this, struct bar *_x);
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void foo<bar>::Ctor(struct foo<bar> const *this,
-                    struct foo<bar> const *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void foo<bar>::Ctor(struct foo<bar> const *this,
-                    struct foo<bar> *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "foo",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
-void bar::Ctor(struct bar const *this, struct bar const *__frama_c_arg_0);
-
-void bar::Ctor(struct bar const *this, struct bar *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -116,28 +84,6 @@ void incr(struct bar *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void bar::Ctor(struct bar const *this, struct bar const *__frama_c_arg_0)
-{
-  this->y = __frama_c_arg_0->y;
-  this->z = __frama_c_arg_0->z;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void bar::Ctor(struct bar const *this, struct bar *__frama_c_arg_0)
-{
-  this->y = __frama_c_arg_0->y;
-  this->z = __frama_c_arg_0->z;
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "bar",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/template/oracle/global_var_instantiation_bts1552.res.oracle b/tests/template/oracle/global_var_instantiation_bts1552.res.oracle
index 628f03670e1e0f72c5b2d7c3943a500232e4414a..7f9b15898a517ed368bfe185d93e78954dd4020d 100644
--- a/tests/template/oracle/global_var_instantiation_bts1552.res.oracle
+++ b/tests/template/oracle/global_var_instantiation_bts1552.res.oracle
@@ -27,12 +27,6 @@ struct Stack<5> {
 };
 void Stack<5>::Ctor(struct Stack<5> const *this);
 
-void Stack<5>::Ctor(struct Stack<5> const *this,
-                    struct Stack<5> const *__frama_c_arg_0);
-
-void Stack<5>::Ctor(struct Stack<5> const *this,
-                    struct Stack<5> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -43,26 +37,6 @@ void Stack<5>::Ctor(struct Stack<5> const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void Stack<5>::Ctor(struct Stack<5> const *this,
-                    struct Stack<5> const *__frama_c_arg_0)
-{
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void Stack<5>::Ctor(struct Stack<5> const *this,
-                    struct Stack<5> *__frama_c_arg_0)
-{
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "Stack",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/template/oracle/inner_class.res.oracle b/tests/template/oracle/inner_class.res.oracle
index 20e31d06ebb54d63d1f5ed3b37d5599e81aa0a0a..f8041b21f4daa564449a86e54966a0a16cab8ee6 100644
--- a/tests/template/oracle/inner_class.res.oracle
+++ b/tests/template/oracle/inner_class.res.oracle
@@ -35,68 +35,20 @@ struct A<1> {
 };
 void A<1>::Ctor(struct A<1> const *this);
 
-void A<1>::Ctor(struct A<1> const *this, struct A<1> const *__frama_c_arg_0);
-
-void A<1>::Ctor(struct A<1> const *this, struct A<1> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
 struct _frama_c_vmt_content _frama_c_vmt[1];
 void anonymous_class_1::Ctor(struct anonymous_class_1 const *this);
 
-void anonymous_class_1::Dtor(struct anonymous_class_1 const *this);
-
-void anonymous_class_1::Ctor(struct anonymous_class_1 const *this,
-                             struct anonymous_class_1 const *__frama_c_arg_0);
-
-void anonymous_class_1::Ctor(struct anonymous_class_1 const *this,
-                             struct anonymous_class_1 *__frama_c_arg_0);
-
 void anonymous_class_2::Ctor(struct anonymous_class_2 const *this);
 
-void anonymous_class_2::Dtor(struct anonymous_class_2 const *this);
-
-void anonymous_class_2::Ctor(struct anonymous_class_2 const *this,
-                             struct anonymous_class_2 const *__frama_c_arg_0);
-
-void anonymous_class_2::Ctor(struct anonymous_class_2 const *this,
-                             struct anonymous_class_2 *__frama_c_arg_0);
-
 /*@ requires \valid_read(this); */
 void anonymous_class_2::Ctor(struct anonymous_class_2 const *this)
 {
   return;
 }
 
-/*@ requires \valid_read(this); */
-void anonymous_class_2::Dtor(struct anonymous_class_2 const *this)
-{
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void anonymous_class_2::Ctor(struct anonymous_class_2 const *this,
-                             struct anonymous_class_2 const *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void anonymous_class_2::Ctor(struct anonymous_class_2 const *this,
-                             struct anonymous_class_2 *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void anonymous_class_1::Ctor(struct anonymous_class_1 const *this)
 {
@@ -104,35 +56,6 @@ void anonymous_class_1::Ctor(struct anonymous_class_1 const *this)
   return;
 }
 
-/*@ requires \valid_read(this); */
-void anonymous_class_1::Dtor(struct anonymous_class_1 const *this)
-{
-  anonymous_class_2::Dtor(& this->s2);
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void anonymous_class_1::Ctor(struct anonymous_class_1 const *this,
-                             struct anonymous_class_1 const *__frama_c_arg_0)
-{
-  anonymous_class_2::Ctor(& this->s2,& __frama_c_arg_0->s2);
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void anonymous_class_1::Ctor(struct anonymous_class_1 const *this,
-                             struct anonymous_class_1 *__frama_c_arg_0)
-{
-  anonymous_class_2::Ctor(& this->s2,& __frama_c_arg_0->s2);
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void A<1>::Ctor(struct A<1> const *this)
 {
@@ -140,26 +63,6 @@ void A<1>::Ctor(struct A<1> const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void A<1>::Ctor(struct A<1> const *this, struct A<1> const *__frama_c_arg_0)
-{
-  anonymous_class_1::Ctor(& this->s1,& __frama_c_arg_0->s1);
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void A<1>::Ctor(struct A<1> const *this, struct A<1> *__frama_c_arg_0)
-{
-  anonymous_class_1::Ctor(& this->s1,& __frama_c_arg_0->s1);
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "A",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/template/oracle/logic_fct.res.oracle b/tests/template/oracle/logic_fct.res.oracle
index b33c58adf838384663f30de975bcc16e224b851b..997c030998dbb76f06ddc928c75a44372e9b8e12 100644
--- a/tests/template/oracle/logic_fct.res.oracle
+++ b/tests/template/oracle/logic_fct.res.oracle
@@ -28,12 +28,6 @@ struct Stack<6> {
 };
 void Stack<6>::Ctor(struct Stack<6> const *this);
 
-void Stack<6>::Ctor(struct Stack<6> const *this,
-                    struct Stack<6> const *__frama_c_arg_0);
-
-void Stack<6>::Ctor(struct Stack<6> const *this,
-                    struct Stack<6> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -58,28 +52,6 @@ void Stack<6>::Ctor(struct Stack<6> const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void Stack<6>::Ctor(struct Stack<6> const *this,
-                    struct Stack<6> const *__frama_c_arg_0)
-{
-  this->sz = __frama_c_arg_0->sz;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void Stack<6>::Ctor(struct Stack<6> const *this,
-                    struct Stack<6> *__frama_c_arg_0)
-{
-  this->sz = __frama_c_arg_0->sz;
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "Stack",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/template/oracle/namespace.res.oracle b/tests/template/oracle/namespace.res.oracle
index 18ce7cc14febb026055d7e45d64f57159fa7fbe8..1f6df20d2c222e0bd4b6f260bba4788b3b9206ad 100644
--- a/tests/template/oracle/namespace.res.oracle
+++ b/tests/template/oracle/namespace.res.oracle
@@ -31,12 +31,6 @@ struct baz {
 };
 void bar<int>::Ctor(struct bar<int> const *this);
 
-void bar<int>::Ctor(struct bar<int> const *this,
-                    struct bar<int> const *__frama_c_arg_0);
-
-void bar<int>::Ctor(struct bar<int> const *this,
-                    struct bar<int> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -47,28 +41,6 @@ void bar<int>::Ctor(struct bar<int> const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void bar<int>::Ctor(struct bar<int> const *this,
-                    struct bar<int> const *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void bar<int>::Ctor(struct bar<int> const *this,
-                    struct bar<int> *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "bar",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
@@ -76,10 +48,6 @@ struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
    .pvmt = (struct _frama_c_vmt *)0};
 void baz::Ctor(struct baz const *this);
 
-void baz::Ctor(struct baz const *this, struct baz const *__frama_c_arg_0);
-
-void baz::Ctor(struct baz const *this, struct baz *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -90,26 +58,6 @@ void baz::Ctor(struct baz const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void baz::Ctor(struct baz const *this, struct baz const *__frama_c_arg_0)
-{
-  this->y = __frama_c_arg_0->y;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void baz::Ctor(struct baz const *this, struct baz *__frama_c_arg_0)
-{
-  this->y = __frama_c_arg_0->y;
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "baz",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/template/oracle/template_autofriend.res.oracle b/tests/template/oracle/template_autofriend.res.oracle
index 76ba9e7e26612c8f3ec089b9e285216ad41e2d68..f19ec8d8b097f008f4297907ba85fa8f9de0dcfe 100644
--- a/tests/template/oracle/template_autofriend.res.oracle
+++ b/tests/template/oracle/template_autofriend.res.oracle
@@ -33,12 +33,6 @@ struct b<a::e> {
 };
 void b<void>::Ctor(struct b<void> const *this);
 
-void b<void>::Ctor(struct b<void> const *this,
-                   struct b<void> const *__frama_c_arg_0);
-
-void b<void>::Ctor(struct b<void> const *this,
-                   struct b<void> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -49,28 +43,6 @@ void b<void>::Ctor(struct b<void> const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void b<void>::Ctor(struct b<void> const *this,
-                   struct b<void> const *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void b<void>::Ctor(struct b<void> const *this,
-                   struct b<void> *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "b",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
@@ -78,11 +50,6 @@ struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
    .pvmt = (struct _frama_c_vmt *)0};
 void b<int>::Ctor(struct b<int> const *this);
 
-void b<int>::Ctor(struct b<int> const *this,
-                  struct b<int> const *__frama_c_arg_0);
-
-void b<int>::Ctor(struct b<int> const *this, struct b<int> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -93,27 +60,6 @@ void b<int>::Ctor(struct b<int> const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void b<int>::Ctor(struct b<int> const *this,
-                  struct b<int> const *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void b<int>::Ctor(struct b<int> const *this, struct b<int> *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "b",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
@@ -121,12 +67,6 @@ struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
    .pvmt = (struct _frama_c_vmt *)0};
 void b<a::e>::Ctor(struct b<a::e> const *this);
 
-void b<a::e>::Ctor(struct b<a::e> const *this,
-                   struct b<a::e> const *__frama_c_arg_0);
-
-void b<a::e>::Ctor(struct b<a::e> const *this,
-                   struct b<a::e> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -137,28 +77,6 @@ void b<a::e>::Ctor(struct b<a::e> const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void b<a::e>::Ctor(struct b<a::e> const *this,
-                   struct b<a::e> const *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void b<a::e>::Ctor(struct b<a::e> const *this,
-                   struct b<a::e> *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "b",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/template/oracle/template_impl_arg.res.oracle b/tests/template/oracle/template_impl_arg.res.oracle
index 209d75adc0cdd8d70b89cd93588affae4fcbee97..9b0414cfe07b767b35632acfa8c34cbfba812edc 100644
--- a/tests/template/oracle/template_impl_arg.res.oracle
+++ b/tests/template/oracle/template_impl_arg.res.oracle
@@ -25,12 +25,6 @@ struct _frama_c_rtti_name_info_node {
 struct Foo<int> {
    int *x ;
 };
-void Foo<int>::Ctor(struct Foo<int> const *this,
-                    struct Foo<int> const *__frama_c_arg_0);
-
-void Foo<int>::Ctor(struct Foo<int> const *this,
-                    struct Foo<int> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -42,28 +36,6 @@ void Foo<int>::Ctor(struct Foo<int> const *this, int *_x)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void Foo<int>::Ctor(struct Foo<int> const *this,
-                    struct Foo<int> const *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void Foo<int>::Ctor(struct Foo<int> const *this,
-                    struct Foo<int> *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "Foo",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/template/oracle/template_of_template.res.oracle b/tests/template/oracle/template_of_template.res.oracle
index 6501ad85fabf147ece8627640c3bc3a8a67c2f37..2280a71c969521246ca33304fab8a484f1d9b03f 100644
--- a/tests/template/oracle/template_of_template.res.oracle
+++ b/tests/template/oracle/template_of_template.res.oracle
@@ -30,12 +30,6 @@ struct e<a::c<a::b<char>>> {
 };
 void e<void>::Ctor(struct e<void> const *this);
 
-void e<void>::Ctor(struct e<void> const *this,
-                   struct e<void> const *__frama_c_arg_0);
-
-void e<void>::Ctor(struct e<void> const *this,
-                   struct e<void> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -46,26 +40,6 @@ void e<void>::Ctor(struct e<void> const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void e<void>::Ctor(struct e<void> const *this,
-                   struct e<void> const *__frama_c_arg_0)
-{
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void e<void>::Ctor(struct e<void> const *this,
-                   struct e<void> *__frama_c_arg_0)
-{
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "e",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
@@ -73,12 +47,6 @@ struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
    .pvmt = (struct _frama_c_vmt *)0};
 void e<a::c<a::b<char>>>::Ctor(struct e<a::c<a::b<char>>> const *this);
 
-void e<a::c<a::b<char>>>::Ctor(struct e<a::c<a::b<char>>> const *this,
-                               struct e<a::c<a::b<char>>> const *__frama_c_arg_0);
-
-void e<a::c<a::b<char>>>::Ctor(struct e<a::c<a::b<char>>> const *this,
-                               struct e<a::c<a::b<char>>> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -89,26 +57,6 @@ void e<a::c<a::b<char>>>::Ctor(struct e<a::c<a::b<char>>> const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void e<a::c<a::b<char>>>::Ctor(struct e<a::c<a::b<char>>> const *this,
-                               struct e<a::c<a::b<char>>> const *__frama_c_arg_0)
-{
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void e<a::c<a::b<char>>>::Ctor(struct e<a::c<a::b<char>>> const *this,
-                               struct e<a::c<a::b<char>>> *__frama_c_arg_0)
-{
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "e",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/template/oracle/template_of_template2.res.oracle b/tests/template/oracle/template_of_template2.res.oracle
index 6a9edcf4641546e0f2f463a68b8954813a19bade..350c877920675ee7a97ea0464f899b16b8d98f1c 100644
--- a/tests/template/oracle/template_of_template2.res.oracle
+++ b/tests/template/oracle/template_of_template2.res.oracle
@@ -30,12 +30,6 @@ struct c<char> {
 };
 void c<void>::Ctor(struct c<void> const *this);
 
-void c<void>::Ctor(struct c<void> const *this,
-                   struct c<void> const *__frama_c_arg_0);
-
-void c<void>::Ctor(struct c<void> const *this,
-                   struct c<void> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -46,26 +40,6 @@ void c<void>::Ctor(struct c<void> const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void c<void>::Ctor(struct c<void> const *this,
-                   struct c<void> const *__frama_c_arg_0)
-{
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void c<void>::Ctor(struct c<void> const *this,
-                   struct c<void> *__frama_c_arg_0)
-{
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "c",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
@@ -73,12 +47,6 @@ struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
    .pvmt = (struct _frama_c_vmt *)0};
 void c<char>::Ctor(struct c<char> const *this);
 
-void c<char>::Ctor(struct c<char> const *this,
-                   struct c<char> const *__frama_c_arg_0);
-
-void c<char>::Ctor(struct c<char> const *this,
-                   struct c<char> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -89,26 +57,6 @@ void c<char>::Ctor(struct c<char> const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void c<char>::Ctor(struct c<char> const *this,
-                   struct c<char> const *__frama_c_arg_0)
-{
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void c<char>::Ctor(struct c<char> const *this,
-                   struct c<char> *__frama_c_arg_0)
-{
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "c",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/template/oracle/template_spec_bts1551.res.oracle b/tests/template/oracle/template_spec_bts1551.res.oracle
index 1c97018849e686a25de6e78e0ccc38a7c5e9f0ed..97040002303a71b57dda6ca2efe393db18ac8966 100644
--- a/tests/template/oracle/template_spec_bts1551.res.oracle
+++ b/tests/template/oracle/template_spec_bts1551.res.oracle
@@ -27,12 +27,6 @@ struct array<5> {
 };
 void array<5>::Ctor(struct array<5> const *this);
 
-void array<5>::Ctor(struct array<5> const *this,
-                    struct array<5> const *__frama_c_arg_0);
-
-void array<5>::Ctor(struct array<5> const *this,
-                    struct array<5> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -47,26 +41,6 @@ void array<5>::Ctor(struct array<5> const *this)
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void array<5>::Ctor(struct array<5> const *this,
-                    struct array<5> const *__frama_c_arg_0)
-{
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void array<5>::Ctor(struct array<5> const *this,
-                    struct array<5> *__frama_c_arg_0)
-{
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "array",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/template/oracle/template_variadic.res.oracle b/tests/template/oracle/template_variadic.res.oracle
index 344ad1122b0fe31f93d59e13d166484206b8fbe5..76cef059303ddaae9861c8e140b76d37a7bd3509 100644
--- a/tests/template/oracle/template_variadic.res.oracle
+++ b/tests/template/oracle/template_variadic.res.oracle
@@ -29,14 +29,6 @@ typedef struct Tuple<Pair<int,unsigned int>,Pair<signed char,unsigned char>> typ
 void Tuple<Pair<int,unsigned int>,Pair<signed char,unsigned char>>::Ctor
 (struct Tuple<Pair<int,unsigned int>,Pair<signed char,unsigned char>> const *this);
 
-void Tuple<Pair<int,unsigned int>,Pair<signed char,unsigned char>>::Ctor
-(struct Tuple<Pair<int,unsigned int>,Pair<signed char,unsigned char>> const *this,
- struct Tuple<Pair<int,unsigned int>,Pair<signed char,unsigned char>> const *__frama_c_arg_0);
-
-void Tuple<Pair<int,unsigned int>,Pair<signed char,unsigned char>>::Ctor
-(struct Tuple<Pair<int,unsigned int>,Pair<signed char,unsigned char>> const *this,
- struct Tuple<Pair<int,unsigned int>,Pair<signed char,unsigned char>> *__frama_c_arg_0);
-
 struct _frama_c_vmt _frama_c_vmt_header;
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info;
 
@@ -48,28 +40,6 @@ void Tuple<Pair<int,unsigned int>,Pair<signed char,unsigned char>>::Ctor
   return;
 }
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void Tuple<Pair<int,unsigned int>,Pair<signed char,unsigned char>>::Ctor
-(struct Tuple<Pair<int,unsigned int>,Pair<signed char,unsigned char>> const *this,
- struct Tuple<Pair<int,unsigned int>,Pair<signed char,unsigned char>> const *__frama_c_arg_0)
-{
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void Tuple<Pair<int,unsigned int>,Pair<signed char,unsigned char>>::Ctor
-(struct Tuple<Pair<int,unsigned int>,Pair<signed char,unsigned char>> const *this,
- struct Tuple<Pair<int,unsigned int>,Pair<signed char,unsigned char>> *__frama_c_arg_0)
-{
-  return;
-}
-
 struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
   {.name = "Tuple",
    .base_classes = (struct _frama_c_rtti_name_info_content *)0,
diff --git a/tests/template/oracle/using_typedef.res.oracle b/tests/template/oracle/using_typedef.res.oracle
index 5a3b4d813acb3774700ba4d8316c1801c0c80361..4f4082e4e6a529091b3dbe84ba4c90771572bae0 100644
--- a/tests/template/oracle/using_typedef.res.oracle
+++ b/tests/template/oracle/using_typedef.res.oracle
@@ -25,12 +25,6 @@ struct _frama_c_rtti_name_info_node {
 struct Foo<int> {
    int x ;
 };
-void Foo<int>::Ctor(struct Foo<int> const *this,
-                    struct Foo<int> const *__frama_c_arg_0);
-
-void Foo<int>::Ctor(struct Foo<int> const *this,
-                    struct Foo<int> *__frama_c_arg_0);
-
 void Foo<int>::Dtor(struct Foo<int> const *this);
 
 struct _frama_c_vmt _frama_c_vmt_header;
@@ -50,28 +44,6 @@ int get(struct Foo<int> *this);
 /*@ requires \valid(this); */
 void set(struct Foo<int> *this, int i);
 
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid_read(__frama_c_arg_0);
- */
-void Foo<int>::Ctor(struct Foo<int> const *this,
-                    struct Foo<int> const *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
-/*@ requires \separated(this, __frama_c_arg_0);
-    requires \valid_read(this);
-    requires \valid(__frama_c_arg_0);
- */
-void Foo<int>::Ctor(struct Foo<int> const *this,
-                    struct Foo<int> *__frama_c_arg_0)
-{
-  this->x = __frama_c_arg_0->x;
-  return;
-}
-
 /*@ requires \valid_read(this); */
 void Foo<int>::Dtor(struct Foo<int> const *this)
 {
diff --git a/tests/val_analysis/oracle/union.res.oracle b/tests/val_analysis/oracle/union.res.oracle
index 545265a1e43f205dc1046934f39a8ccbf181f4ba..2f559a0f2af5e4f0eaf2e4c54338ddeb267006f9 100644
--- a/tests/val_analysis/oracle/union.res.oracle
+++ b/tests/val_analysis/oracle/union.res.oracle
@@ -1,7 +1,6 @@
 [kernel] Parsing tests/val_analysis/union.cc (external front-end)
 Now output intermediate result
 [kernel] Warning: Assuming declared function Frama_C_memcpy can't throw any exception
-[kernel] Warning: Assuming declared function Frama_C_memcpy can't throw any exception
 [kernel:annot:missing-spec] tests/val_analysis/union.cc:8: Warning: 
   Neither code nor specification for function Frama_C_memcpy, generating default assigns from the prototype
 [eva] Analyzing a complete application starting at main
diff --git a/tests/val_analysis/oracle/union_struct.res.oracle b/tests/val_analysis/oracle/union_struct.res.oracle
index f6888f560bc65e817611c9f0fe955cd91a8d91c3..67977e37c5fd6c1bd20f7296aed00b59b1cb3efe 100644
--- a/tests/val_analysis/oracle/union_struct.res.oracle
+++ b/tests/val_analysis/oracle/union_struct.res.oracle
@@ -1,9 +1,6 @@
 [kernel] Parsing tests/val_analysis/union_struct.cc (external front-end)
 Now output intermediate result
 [kernel] Warning: Assuming declared function Frama_C_memcpy can't throw any exception
-[kernel] Warning: Assuming declared function Frama_C_memcpy can't throw any exception
-[kernel] Warning: Assuming declared function Frama_C_memcpy can't throw any exception
-[kernel] Warning: Assuming declared function Frama_C_memcpy can't throw any exception
 [kernel:annot:missing-spec] tests/val_analysis/union_struct.cc:17: Warning: 
   Neither code nor specification for function Frama_C_memcpy, generating default assigns from the prototype
 [eva] Analyzing a complete application starting at main