package frama-c
Install
dune-project
Dependency
Authors
-
MMichele Alberti
-
TThibaud Antignac
-
GGergö Barany
-
PPatrick Baudin
-
TThibaut Benjamin
-
AAllan Blanchard
-
LLionel Blatter
-
FFrançois Bobot
-
RRichard Bonichon
-
QQuentin Bouillaguet
-
DDavid Bühler
-
ZZakaria Chihani
-
LLoïc Correnson
-
JJulien Crétin
-
PPascal Cuoq
-
ZZaynah Dargaye
-
BBasile Desloges
-
JJean-Christophe Filliâtre
-
PPhilippe Herrmann
-
MMaxime Jacquemin
-
FFlorent Kirchner
-
AAlexander Kogtenkov
-
TTristan Le Gall
-
JJean-Christophe Léchenet
-
MMatthieu Lemerre
-
DDara Ly
-
DDavid Maison
-
CClaude Marché
-
AAndré Maroneze
-
TThibault Martin
-
FFonenantsoa Maurica
-
MMelody Méaulle
-
BBenjamin Monate
-
YYannick Moy
-
PPierre Nigron
-
AAnne Pacalet
-
VValentin Perrelle
-
GGuillaume Petiot
-
DDario Pinto
-
VVirgile Prevosto
-
AArmand Puccetti
-
FFélix Ridoux
-
VVirgile Robles
-
JJan Rochel
-
MMuriel Roger
-
JJulien Signoles
-
NNicolas Stouls
-
KKostyantyn Vorobyov
-
BBoris Yakobowski
Maintainers
Sources
sha256=29612882330ecb6eddd0b4ca3afc0492b70d0feb3379a1b8e893194c6e173983
doc/frama-c.kernel/Frama_c_kernel/Logic_env/index.html
Module Frama_c_kernel.Logic_env
Global Logic Environment
registered ACSL extensions
val extension_category : string -> Cil_types.ext_categoryval preprocess_extension :
string ->
Logic_ptree.lexpr list ->
Logic_ptree.lexpr listval preprocess_extension_block :
string ->
(string * Logic_ptree.extended_decl list) ->
string * Logic_ptree.extended_decl listmodule Logic_info :
State_builder.Hashtbl
with type key = string
and type data = Cil_types.logic_info listmodule Logic_type_info :
State_builder.Hashtbl
with type key = string
and type data = Cil_types.logic_type_infomodule Logic_ctor_info :
State_builder.Hashtbl
with type key = string
and type data = Cil_types.logic_ctor_infomodule Model_info :
State_builder.Hashtbl
with type key = string
and type data = Cil_types.model_infomodule Lemmas :
State_builder.Hashtbl
with type key = string
and type data = Cil_types.global_annotationmodule Axiomatics :
State_builder.Hashtbl
with type key = string
and type data = Cil_types.locationval builtin_states : State.t listShortcuts to the functions of the modules above
Prepare all internal tables before their uses: clear all tables except builtins.
Add an user-defined object
val add_logic_function_gen :
(Cil_types.logic_info -> Cil_types.logic_info -> bool) ->
Cil_types.logic_info ->
unitadd_logic_function_gen takes as argument a function eq_logic_info which decides whether two logic_info are identical. It is intended to be Logic_utils.is_same_logic_profile, but this one can not be called from here since it will cause a circular dependency Logic_env <- Logic_utils <- Cil <- Logic_env. Do not use this function directly unless you're really sure about what you're doing. Use Logic_utils.add_logic_function instead.
val add_logic_type : string -> Cil_types.logic_type_info -> unitval add_logic_ctor : string -> Cil_types.logic_ctor_info -> unitval add_model_field : Cil_types.model_info -> unitAdd a builtin object
module Builtins : sig ... endmodule Logic_builtin_used : sig ... endlogic function/predicates that are effectively used in current project.
val add_builtin_logic_function_gen :
(Cil_types.builtin_logic_info -> Cil_types.builtin_logic_info -> bool) ->
Cil_types.builtin_logic_info ->
unitsee add_logic_function_gen above
val add_builtin_logic_type : string -> Cil_types.logic_type_info -> unitval add_builtin_logic_ctor : string -> Cil_types.logic_ctor_info -> unitval iter_builtin_logic_function :
(Cil_types.builtin_logic_info -> unit) ->
unitval iter_builtin_logic_type : (Cil_types.logic_type_info -> unit) -> unitval iter_builtin_logic_ctor : (Cil_types.logic_ctor_info -> unit) -> unitsearching the environment
val find_all_logic_functions : string -> Cil_types.logic_info listval find_all_model_fields : string -> Cil_types.model_info listreturns all model fields of the same name.
val find_model_field : string -> Cil_types.typ -> Cil_types.model_infofind_model_info field typ returns the model field associated to field in type typ.
val find_logic_cons : Cil_types.logic_var -> Cil_types.logic_infocons is a logic function with no argument. It is used as a variable, but may occasionally need to find associated logic_info.
val find_logic_type : string -> Cil_types.logic_type_infoval find_logic_ctor : string -> Cil_types.logic_ctor_inforemoving
val remove_logic_info_gen :
(Cil_types.logic_info -> Cil_types.logic_info -> bool) ->
Cil_types.logic_info ->
unitremove_logic_info_gen is_same_profile li removes a specific logic info among all the overloaded ones. If the name corresponds to built-ins, all overloaded functions are removed at once (overloaded built-ins are always considered as a whole). Otherwise, does nothing if no logic info with the same profile as li is in the table.
See Logic_env.add_logic_function_gen for more information about the is_same_profile argument.
remove_logic_type s removes the definition of logic type s. If s is a sum type, also removes the associated constructors. Does nothing in case s is not a known logic type.
removes the given logic constructor. Does nothing if no such constructor exists.
Typename table
marks temporarily a typename as being a normal identifier in the logic
marks builtin logical types as logical typenames for the logic lexer.
Internal use
val set_extension_handler :
category:(string -> Cil_types.ext_category) ->
is_extension:(string -> bool) ->
preprocess:(string -> Logic_ptree.lexpr list -> Logic_ptree.lexpr list) ->
is_extension_block:(string -> bool) ->
preprocess_block:
(string ->
(string * Logic_ptree.extended_decl list) ->
string * Logic_ptree.extended_decl list) ->
unitUsed to setup references related to the handling of ACSL extensions. If your name is not Acsl_extension, do not call this
val init_dependencies : State.t -> unitUsed to postpone dependency of Lenv global tables wrt Cil_state, which is initialized afterwards.