Frama-C API - Make
Parameters
module _ : Memory.CompilerSignature
type node = Cfg.nodetype cfg = Cfg.cfgval goals_nodes : goal Frama_c_kernel.Bag.t -> Cfg.Node.Set.texception LabelNotFound of Clabels.c_labelCompilation environment
val empty_env : Frama_c_kernel.Kernel_function.t -> envval bind : Clabels.c_label -> node -> env -> envval result : env -> Lang.F.varval (@*) : env -> (Clabels.c_label * node) list -> envfold bind
val (@:) : env -> Clabels.c_label -> nodeLabelMap.find with refined exception.
val (@-) : env -> (Clabels.c_label -> bool) -> envChain compiler by introducing fresh nodes between each element of the list. For each consecutive x;y elements, a fresh node n is created, and x is compiled with Next:n and y is compiled with Here:n.
val choice : ?pre:Clabels.c_label -> ?post:Clabels.c_label -> (env -> 'a -> paths) -> env -> 'a list -> pathsChain compiler in parallel, between labels ~pre and ~post, which defaults to resp. here and next. The list of eventualities is exhastive, hence an either assumption is also inserted.
val parallel : ?pre:Clabels.c_label -> ?post:Clabels.c_label -> (env -> 'a -> Cfg.C.t * paths) -> env -> 'a list -> pathsChain compiler in parallel, between labels ~pre and ~post, which defaults to resp. here and next. The list of eventualities is exhastive, hence an either assumption is also inserted.
Instructions Compilation
Each instruction or statement is typically compiled between Here and Next nodes in the flow. Pre, Post and Exit are reserved for the entry and exit points of current function. in flow are used when needed such as Break and Continue and should be added before calling.
val set : env -> Frama_c_kernel.Cil_types.lval -> Frama_c_kernel.Cil_types.exp -> pathsval scope : env -> Memory.scope -> Frama_c_kernel.Cil_types.varinfo list -> pathsval instr : env -> Frama_c_kernel.Cil_types.instr -> pathsval return : env -> Frama_c_kernel.Cil_types.exp option -> pathsval call_kf : env -> Frama_c_kernel.Cil_types.lval option -> Frama_c_kernel.Cil_types.kernel_function -> Frama_c_kernel.Cil_types.exp list -> pathsval call : env -> Frama_c_kernel.Cil_types.lval option -> Frama_c_kernel.Cil_types.lhost -> Frama_c_kernel.Cil_types.exp list -> pathsACSL Compilation
val spec : env -> Frama_c_kernel.Cil_types.spec -> pathsval assume_ : env -> Memory.polarity -> Frama_c_kernel.Cil_types.predicate -> pathsval assigns : env -> Frama_c_kernel.Cil_types.assigns -> pathsval froms : env -> Frama_c_kernel.Cil_types.from list -> pathsAutomata Compilation
val automaton : env -> Frama_c_kernel.Interpreted_automata.automaton -> pathsval compute_kf : Frama_c_kernel.Kernel_function.t -> paths * nodeFull Compilation
Returns the set of all paths for the function, with all proof obligations. The returned node corresponds to the Init label.
