diff --git a/src/kernel_internals/runtime/special_hooks.ml b/src/kernel_internals/runtime/special_hooks.ml
index 96deb0afdae6330f7d383b4a44339077ae9435f0..9c4ebad617365527cf71277e10a5884b17703b79 100644
--- a/src/kernel_internals/runtime/special_hooks.ml
+++ b/src/kernel_internals/runtime/special_hooks.ml
@@ -277,7 +277,7 @@ let warn_if_another_compiler_builtin name =
    depends on Ast_info *)
 let on_call_to_undeclared_function vi =
   let name = vi.Cil_types.vname in
-  if not (Ast_info.is_frama_c_builtin name) then begin
+  if not (Ast_info.start_with_frama_c_builtin name) then begin
     if not (warn_if_another_compiler_builtin name) then
       Kernel.warning ~wkey:Kernel.wkey_implicit_function_declaration
         ~current:true ~once:true
diff --git a/src/kernel_internals/typing/ghost_accesses.ml b/src/kernel_internals/typing/ghost_accesses.ml
index aba019286b2148db0fc9d9689ff377d4bc3298dc..6f159f16bb6af7a9686a30e25c573f57e0cf7082 100644
--- a/src/kernel_internals/typing/ghost_accesses.ml
+++ b/src/kernel_internals/typing/ghost_accesses.ml
@@ -173,7 +173,7 @@ class visitor = object(self)
           Error.assigns_non_ghost_lvalue ~current:true lv
       in
       let is_builtin vi =
-        Ast_info.is_frama_c_builtin vi.vname ||
+        Ast_info.start_with_frama_c_builtin vi.vname ||
         Cil_builtins.is_builtin vi
       in
       let failed = match i with
diff --git a/src/kernel_services/ast_queries/ast_info.ml b/src/kernel_services/ast_queries/ast_info.ml
index 5030a6d76bd152f57382bd79873086bc11eed9b9..5c49b7a54704a590d4b598f163e5fde059325675 100644
--- a/src/kernel_services/ast_queries/ast_info.ml
+++ b/src/kernel_services/ast_queries/ast_info.ml
@@ -465,33 +465,33 @@ let pointed_type ty =
 (** {2 Predefined} *)
 (* ************************************************************************** *)
 
-let can_be_cea_function name =
-  String.starts_with ~prefix:"Frama_" name
+let start_with_frama_c name =
+  String.starts_with ~prefix:"Frama_C_" name
 
-let is_cea_function name =
+let is_show_each_builtin name =
   String.starts_with ~prefix:"Frama_C_show_each" name
 
-let is_cea_domain_function name =
+let is_domain_show_each_builtin name =
   String.starts_with ~prefix:"Frama_C_domain_show_each" name
 
-let is_cea_dump_function name =
+let is_dump_each_builtin name =
   String.starts_with ~prefix:"Frama_C_dump_each" name
 
-let is_cea_dump_file_function name =
+let is_dump_file_builtin name =
   String.starts_with ~prefix:"Frama_C_dump_each_file" name
 
-let is_cea_builtin name =
-  String.starts_with ~prefix:"Frama_C_builtin" name
+let is_split_builtin name =
+  String.starts_with ~prefix:"Frama_C_builtin_split" name
 
-let is_frama_c_builtin n =
-  can_be_cea_function n &&
-  (is_cea_dump_function n ||
-   is_cea_function n ||
-   is_cea_builtin n ||
-   is_cea_domain_function n ||
-   is_cea_dump_file_function n)
+let start_with_frama_c_builtin n =
+  start_with_frama_c n &&
+  (is_dump_each_builtin n ||
+   is_show_each_builtin n ||
+   is_split_builtin n ||
+   is_domain_show_each_builtin n ||
+   is_dump_file_builtin n)
 
-let () = Cil_builtins.add_special_builtin_family is_frama_c_builtin
+let () = Cil_builtins.add_special_builtin_family start_with_frama_c_builtin
 
 (*
 Local Variables:
diff --git a/src/kernel_services/ast_queries/ast_info.mli b/src/kernel_services/ast_queries/ast_info.mli
index b068cb7fac8bb92949e2f65de23804d936f63c43..f1284573e29f27e6c4de66fedd84f318b50deff6 100644
--- a/src/kernel_services/ast_queries/ast_info.mli
+++ b/src/kernel_services/ast_queries/ast_info.mli
@@ -240,12 +240,40 @@ end
 (** {2 Predefined} *)
 (* ************************************************************************** *)
 
-val can_be_cea_function : string -> bool
-val is_cea_function : string -> bool
-val is_cea_domain_function : string -> bool
-val is_cea_dump_function : string -> bool
-val is_cea_dump_file_function : string -> bool
-val is_frama_c_builtin : string -> bool
+val start_with_frama_c: string -> bool
+(** @return true if the given string starts with ["Frama_C_"].
+    @since Frama-C+dev
+*)
+
+val is_show_each_builtin: string -> bool
+(** @return true if the given string starts with ["Frama_C_show_each"].
+    @since Frama-C+dev
+*)
+
+val is_domain_show_each_builtin: string -> bool
+(** @return true if the given string starts with ["Frama_C_domain_show_each"].
+    @since Frama-C+dev
+*)
+
+val is_dump_each_builtin: string -> bool
+(** @return true if the given string starts with ["Frama_C_dump_each"].
+    @since Frama-C+dev
+*)
+
+val is_dump_file_builtin: string -> bool
+(** @return true if the given string starts with ["Frama_C_dump_each_file"].
+    @since Frama-C+dev
+*)
+
+val is_split_builtin: string -> bool
+(** @return true if the given string starts with ["Frama_C_builtin_split"].
+    @since Frama-C+dev
+*)
+
+val start_with_frama_c_builtin: string -> bool
+(** @return true if the given string starts with ["Frama_C_"].
+    @since Frama-C+dev
+*)
 
 (*
 Local Variables:
diff --git a/src/kernel_services/ast_queries/filecheck.ml b/src/kernel_services/ast_queries/filecheck.ml
index 262a40268e873206e5d593f5b673c4280092ad51..891a2394b1970e1e017adeed3274f822dcfcaea6 100644
--- a/src/kernel_services/ast_queries/filecheck.ml
+++ b/src/kernel_services/ast_queries/filecheck.ml
@@ -177,7 +177,7 @@ module Base_checker = struct
         let unknown () =
           check_abort "variable %s(%d) is not declared" v.vname v.vid
         in
-        if not v.vglob || not (Ast_info.is_frama_c_builtin v.vname) then
+        if not v.vglob || not (Ast_info.start_with_frama_c_builtin v.vname) then
           (try
              if Varinfo.Hashtbl.find known_vars v != v then not_shared ()
            with Not_found -> unknown ()
diff --git a/src/plugins/eva/engine/function_calls.ml b/src/plugins/eva/engine/function_calls.ml
index ee88bbdc58569980f49e7cbca5c5c539ca06cdeb..5b8cd029a76e9302b0b46e434645ee209704b11d 100644
--- a/src/plugins/eva/engine/function_calls.ml
+++ b/src/plugins/eva/engine/function_calls.ml
@@ -146,7 +146,7 @@ let analysis_status kf =
 
 (* Must be consistent with the choice made by [analysis_target] below. *)
 let use_spec_instead_of_definition ?(recursion_depth = -1) kf =
-  Ast_info.is_frama_c_builtin (Kernel_function.get_name kf) ||
+  Ast_info.start_with_frama_c_builtin (Kernel_function.get_name kf) ||
   Builtins.is_builtin_overridden kf ||
   recursion_depth >= Parameters.RecursiveUnroll.get () ||
   not (Kernel_function.is_definition kf) ||
diff --git a/src/plugins/eva/engine/transfer_stmt.ml b/src/plugins/eva/engine/transfer_stmt.ml
index 1bb0994dc6e1d37e40f2327b477b4a1df71ad98a..34a7b67ef1f8590dd7a6a5ea37dc447b8ca7104e 100644
--- a/src/plugins/eva/engine/transfer_stmt.ml
+++ b/src/plugins/eva/engine/transfer_stmt.ml
@@ -85,7 +85,7 @@ let do_copy_at = function
 let is_determinate kf =
   let name = Kernel_function.get_name kf in
   (warn_indeterminate kf || Function_calls.use_spec_instead_of_definition kf)
-  && not (Ast_info.is_frama_c_builtin name)
+  && not (Ast_info.start_with_frama_c_builtin name)
 
 let subdivide_stmt = Eva_utils.get_subdivision
 
@@ -708,15 +708,15 @@ module Make (Abstract: Abstractions.S_with_evaluation) = struct
   (** Applies the show_each or dump_each directives. *)
   let apply_special_directives ~subdivnb kf arguments state =
     let name = Kernel_function.get_name kf in
-    if Ast_info.can_be_cea_function name
+    if Ast_info.start_with_frama_c name
     then
-      if Ast_info.is_cea_function name
+      if Ast_info.is_show_each_builtin name
       then (show_each ~subdivnb name arguments state; true)
-      else if Ast_info.is_cea_domain_function name
+      else if Ast_info.is_domain_show_each_builtin name
       then (domain_show_each ~subdivnb name arguments state; true)
-      else if Ast_info.is_cea_dump_file_function name
+      else if Ast_info.is_dump_file_builtin name
       then (dump_state_file ~subdivnb name arguments state; true)
-      else if Ast_info.is_cea_dump_function name
+      else if Ast_info.is_dump_each_builtin name
       then (dump_state name state; true)
       else false
     else false
diff --git a/src/plugins/eva/partitioning/auto_loop_unroll.ml b/src/plugins/eva/partitioning/auto_loop_unroll.ml
index 58b52807752271e0a9c58bb69d832deeb6f78844..fca0c44ebc07734543e871f4d45fa8be744cf173 100644
--- a/src/plugins/eva/partitioning/auto_loop_unroll.ml
+++ b/src/plugins/eva/partitioning/auto_loop_unroll.ml
@@ -177,7 +177,7 @@ let add_written_var vi effect =
 
 let is_frama_c_builtin exp =
   match exp.enode with
-  | Lval (Var vi, NoOffset) -> Ast_info.is_frama_c_builtin vi.vname
+  | Lval (Var vi, NoOffset) -> Ast_info.start_with_frama_c_builtin vi.vname
   | _ -> false
 
 let compute_instr_effect effect = function
diff --git a/src/plugins/from/from_compute.ml b/src/plugins/from/from_compute.ml
index 4060d0d518378c27d35ebfd9724579e3e3f6354a..4c662872580ba2732f0583f403dda70ffe646c7a 100644
--- a/src/plugins/from/from_compute.ml
+++ b/src/plugins/from/from_compute.ml
@@ -346,7 +346,7 @@ struct
       let states_with_formals = ref [] in
       let do_on kf =
         let called_vinfo = Kernel_function.get_vi kf in
-        if Ast_info.is_frama_c_builtin called_vinfo.vname then
+        if Ast_info.start_with_frama_c_builtin called_vinfo.vname then
           state
         else
           let froms_call = To_Use.get_from_call kf stmt in
diff --git a/src/plugins/gui/property_navigator.ml b/src/plugins/gui/property_navigator.ml
index 3f874465f59b47884281ad734ce6e00f19b98259..a873fdbf6f894e4b03faea6bdaded41d0c61d0da 100644
--- a/src/plugins/gui/property_navigator.ml
+++ b/src/plugins/gui/property_navigator.ml
@@ -43,7 +43,7 @@ let all_properties () =
        match Property.get_kf ip with
        | None -> globals := Property.Set.add ip !globals
        | Some kf ->
-         if not (Ast_info.is_frama_c_builtin (Kernel_function.get_name kf))
+         if not (Ast_info.start_with_frama_c_builtin (Kernel_function.get_name kf))
          then try
              let fips = Kernel_function.Map.find kf !functions in
              fips := Property.Set.add ip !fips
diff --git a/src/plugins/metrics/metrics_base.ml b/src/plugins/metrics/metrics_base.ml
index b20821d6b8dfc2fbdccfbd0c2ecfa44a9f66d9df..777bce0fd9b012002a2b9da61bb378a01dad7207 100644
--- a/src/plugins/metrics/metrics_base.ml
+++ b/src/plugins/metrics/metrics_base.ml
@@ -367,7 +367,7 @@ let get_filename fdef =
 
 let consider_function ~libc vinfo =
   not (Eva.Builtins.is_builtin vinfo.vname
-       || Ast_info.is_frama_c_builtin vinfo.vname
+       || Ast_info.start_with_frama_c_builtin vinfo.vname
        || Cil_builtins.is_unused_builtin vinfo
       ) && (libc || not (Cil.is_in_libc vinfo.vattr))
 
diff --git a/src/plugins/report/scan.ml b/src/plugins/report/scan.ml
index 522d3376dddb4c87dfd1fcf7be3625996a5b3c4c..e7c28026e6a13de377f8e617906f036c57b8399a 100644
--- a/src/plugins/report/scan.ml
+++ b/src/plugins/report/scan.ml
@@ -126,7 +126,7 @@ let iter (inspector:inspector) =
          match Property.get_kf ip with
          | None -> globals := Property.Set.add ip !globals
          | Some kf ->
-           if not (Ast_info.is_frama_c_builtin (Kernel_function.get_name kf))
+           if not (Ast_info.start_with_frama_c_builtin (Kernel_function.get_name kf))
            then try
                let fips = Kernel_function.Map.find kf !functions in
                fips := Property.Set.add ip !fips
diff --git a/src/plugins/rte/visit.ml b/src/plugins/rte/visit.ml
index 02f8d10d536283f588b0daca43e8f97a0aa45050..c92bf683b585155d67ef88c99292989ecde548e7 100644
--- a/src/plugins/rte/visit.ml
+++ b/src/plugins/rte/visit.ml
@@ -170,7 +170,7 @@ class annot_visitor kf flags on_alarm = object (self)
         match funcexp.enode with
         | Lval (Var vinfo, NoOffset) ->
           let kf = Globals.Functions.get vinfo in
-          let frama_b = Ast_info.is_frama_c_builtin (Kernel_function.get_name kf)
+          let frama_b = Ast_info.start_with_frama_c_builtin (Kernel_function.get_name kf)
           in
           let va_start = Kernel_function.get_name kf = "__builtin_va_start" in
           (frama_b, va_start)
diff --git a/src/plugins/server/kernel_ast.ml b/src/plugins/server/kernel_ast.ml
index 46a17d9e1422e7e5d1569cf3da7cf30b5291bd8f..0128d7e8bbe9cc86363a7291ed01efc65bf7992b 100644
--- a/src/plugins/server/kernel_ast.ml
+++ b/src/plugins/server/kernel_ast.ml
@@ -618,7 +618,7 @@ struct
     Globals.Functions.iter
       (fun kf ->
          let name = Kernel_function.get_name kf in
-         if not (Ast_info.is_frama_c_builtin name) then f kf)
+         if not (Ast_info.start_with_frama_c_builtin name) then f kf)
 
   let array : kernel_function States.array =
     begin
diff --git a/src/plugins/server/kernel_properties.ml b/src/plugins/server/kernel_properties.ml
index 57d3d0305f4bfaa0aaf686adb88ccdae1f3d18ba..b7e821e4906a83172ef293c0de6fd5a6b36723eb 100644
--- a/src/plugins/server/kernel_properties.ml
+++ b/src/plugins/server/kernel_properties.ml
@@ -308,7 +308,7 @@ let is_relevant ip =
   match Property.get_kf ip with
   | None -> true
   | Some kf ->
-    not (Ast_info.is_frama_c_builtin (Kernel_function.get_name kf)
+    not (Ast_info.start_with_frama_c_builtin (Kernel_function.get_name kf)
          || Cil_builtins.is_unused_builtin (Kernel_function.get_vi kf))
 
 let iter f =
diff --git a/src/plugins/variadic/classify.ml b/src/plugins/variadic/classify.ml
index 32d4c8c2c3690afd523cc768515874f2ba7813f3..7717ee908379ed0e830a06ec4b92ec6be8d108d2 100644
--- a/src/plugins/variadic/classify.ml
+++ b/src/plugins/variadic/classify.ml
@@ -111,7 +111,7 @@ let mk_format_fun vi f_kind f_buffer ~format_pos =
 (* ************************************************************************ *)
 
 let is_frama_c_builtin name =
-  Ast_info.is_frama_c_builtin name ||
+  Ast_info.start_with_frama_c_builtin name ||
   Cil_builtins.Builtin_functions.mem name ||
   String.starts_with ~prefix:"__FRAMAC_" name (* Mthread prefixes *)