module Aorai_utils:exception to avoid pre computation with structure and array*sig
..end
Given a transition a function and a function status (call or return)
it returns if the cross condition can be statisfied
with only function status.
val mkStmt : Cil_types.stmtkind -> Cil_types.stmt
val mkStmtOneInstr : Cil_types.instr -> Cil_types.stmt
exception LazyInit
val rename_pred : Cil_datatype.Logic_var.t ->
Cil_types.logic_var ->
Cil_types.predicate Cil_types.named -> Cil_types.predicate Cil_types.named
val isCrossable : (Promelaast.typed_condition * 'a) Promelaast.trans ->
Kernel_function.t -> Promelaast.funcStatus -> bool
val debug_display_func_status : string -> unit
val get_next : Kernel_function.t ->
Promelaast.funcStatus -> bool array -> bool array * bool array
Given a function, its status (call or return) and an array of boolean
describing states status, it returns a couple of boolean array.
The first one describes the set of reachable states and
the second one is the set of crossable transitions.
val get_prev : Kernel_function.t ->
Promelaast.funcStatus -> bool array * bool array -> bool array * bool array
Given a function, its status (call or return) and an array of boolean
describing states status, it returns a couple of boolean array.
The first one describes the set of possible initial states and
the second one is the set of crossable transitions.
val mk_pre_or_post_bycase_from_pre_or_post : bool array * bool array -> bool array array * bool array array
val debug_display_func_status_bycase : string -> unit
val get_next_bycase : Kernel_function.t ->
Promelaast.funcStatus ->
bool array array -> bool array array * bool array array
Given a function name, is status (call or return) and an array of boolean describing states status, it returns a couple of boolean array. The first one describes the set of reachable states and the second one is the set of crossable transitions.
val get_prev_bycase : Kernel_function.t ->
Promelaast.funcStatus ->
bool array array * bool array array -> bool array array * bool array array
Given a function name, is status (call or return) and an array of boolean describing states status, it returns a couple of boolean array. The first one describes the set of possible initial states and the second one is the set of crossable transitions.
val isCrossableAtInit : (Promelaast.typed_condition * 'a) Promelaast.trans ->
Kernel_function.t -> bool
Given a transition and the main entry point it returns if
the cross condition can be statisfied at the beginning of the program.
val mk_int_exp : int -> Cil_types.exp
val mk_offseted_array_lval : string -> Cil_types.exp -> Cil_types.lval
val mk_int_offseted_array_lval : string -> int -> Cil_types.lval
val get_concrete_param_from_formal : String.t ->
Cil_types.varinfo list ->
Cil_types.exp list -> string -> int -> Cil_types.exp_node
val get_concrete_value_of_call : string -> int -> String.t list -> Cil_types.exp_node list
f
: name of the called functionsid
: stmt id of the callparamlist
: list of parameters nameval get_concrete_value_of_return : string -> Cil_types.exp_node
f
: name of the called functionval crosscond_to_pred : ?event:Kernel_function.t * Promelaast.funcStatus ->
Promelaast.typed_condition ->
Cil_types.logic_var ->
Cil_types.logic_var -> Cil_types.predicate Cil_types.named
When called with an event (func, call_or_return), the conditions related
to a particular event (PCall & co) will be directly evaluated to true or
false. When event is None (in particular when generating the invariants),
an appropriate predicate is generated.
cross
: condition to convert from Promelaast.condition to
Cil_types.predicate
op_logic_var
: operation variablestatus_logic_var
: status variable (call/return)val file : Cil_types.file Pervasives.ref
val initFile : Cil_types.file -> unit
Copy the file pointer locally in the class in order to easiest globals management and initializes some tables.
val globals_queue : Cil_types.global list Pervasives.ref
val flush_globals : unit -> unit
val mk_global : Cil_types.global -> unit
val mk_global_c_initialized_vars : string -> Cil_types.typ -> Cil_types.initinfo -> unit
val mk_global_var : Cil_types.varinfo -> unit
val mk_global_c_vars : string -> Cil_types.typ -> unit
val mk_global_c_var_init : string -> Cil_types.exp -> unit
val mk_int_const : int -> Cil_types.exp
val mk_global_c_initialized_array : string -> int -> Cil_types.initinfo -> unit
val mk_global_c_array : string -> int -> unit
val mk_global_c_int : string -> unit
val mk_global_c_enum_type_tagged : string -> (string * int) list -> Cil_types.enuminfo
val mk_global_c_enum_type : string -> string list -> unit
val mk_global_c_enum : string -> string -> unit
val mk_global_c_initialized_enum : string -> string -> Cil_types.initinfo -> unit
val mk_int_term : int -> Cil_types.term
val zero_term : unit -> Cil_types.term
Return an integer constant term with the 0 value.
val one_term : unit -> Cil_types.term
val mk_term_from_logic_var : Cil_types.logic_var -> Cil_types.term
val mk_term_from_vi : Cil_types.varinfo -> Cil_types.term
Returns a term representing the given logic variable
(usually a fresh quantified variable).
val mk_trans_cst : int -> Cil_types.term
val mk_offseted_array : Cil_types.term_lval -> int -> Cil_types.term
off
.
Given an lval term 'host' and an integer value 'off', it returns a lval term hostoff
.
val int2enumstate : int -> Cil_types.term
val mk_offseted_array_states_as_enum : Cil_types.term_lval -> int -> Cil_types.term
off
.val mk_offseted_array_lval_from_term : Cil_types.term_lval -> Cil_types.term -> Cil_types.term
off
.val mk_offseted_array_lval_from_lval : Cil_types.term_lval -> Cil_types.logic_var -> Cil_types.term
off
.
Usually, logic variables stand for fresh quantified variables.val mk_logic_call : string -> Cil_types.logic_var list -> Cil_types.term
val host_state_term : unit -> Cil_types.term_lval
base lhost corresponding to curState.
val state_term : unit -> Cil_types.term
val is_state_pred : Promelaast.state -> Cil_types.predicate Cil_types.named
val is_out_of_state_pred : Promelaast.state -> Cil_types.predicate Cil_types.named
val mk_logicvar_intervalle : Cil_types.logic_var -> int -> int -> Cil_types.predicate Cil_types.named
val mk_eq_tables : string -> string -> int -> Cil_types.predicate Cil_types.named
i
==host2i
)val mk_valid_range : string -> int -> Cil_types.predicate
val mk_global_invariant : Cil_types.predicate Cil_types.named -> string -> unit
val mk_global_comment : string -> unit
val mk_global_logic : string ->
Cil_types.logic_var list ->
Cil_types.logic_type option -> Cil_types.global_annotation
val mk_global_axiom : string -> Cil_types.predicate -> Cil_types.global_annotation
val mk_global_predicate : string ->
string list ->
Cil_types.logic_var list -> Cil_types.predicate Cil_types.named -> unit
val get_states_trans_init : Kernel_function.t -> Cil_types.initinfo
val func_to_init : string -> Cil_types.initinfo
val funcStatus_to_init : Promelaast.funcStatus -> Cil_types.initinfo
class visit_decl_loops_init :unit ->
object
..end
val mk_decl_loops_init : unit -> unit
val change_vars : Cil_types.logic_var Cil_datatype.Logic_var.Hashtbl.t ->
Cil_types.logic_var Kernel_function.Hashtbl.t ->
Kernel_function.Hashtbl.key option ->
Cil_types.logic_label -> Cil_types.predicate -> Cil_types.predicate
val make_prev_pred : Kernel_function.t ->
Promelaast.funcStatus ->
Promelaast.state -> 'a * bool array -> Cil_types.predicate Cil_types.named
val make_prev_pred_neg : Kernel_function.t ->
Promelaast.funcStatus ->
Promelaast.state list ->
'a * bool array -> Cil_types.predicate Cil_types.named
val pred_of_condition : Cil_types.logic_var Cil_datatype.Logic_var.Hashtbl.t ->
Cil_types.logic_var Kernel_function.Hashtbl.t ->
Cil_types.logic_label ->
Promelaast.typed_condition -> Cil_types.predicate Cil_types.named
val mk_deterministic_lemma : unit -> unit
val unique_initial_trans : Kernel_function.t -> int option
val make_enum_states : unit -> unit
val getInitialState : unit -> Cil_types.exp
val initGlobals : Kernel_function.t -> bool -> unit
Given the name of the main function, this function computes all newly introduced globals (variables, enumeration structure, invariants, etc.)
val mk_abstract_pre_post : 'a list * (Promelaast.typed_condition * 'b) Promelaast.trans list ->
Kernel_function.t -> Promelaast.funcStatus -> bool array * bool array
val mk_abstract_pre : 'a list * (Promelaast.typed_condition * 'b) Promelaast.trans list ->
Kernel_function.t -> bool array * bool array
Given the buchi automata and the name of a function, it returns two arrays
corresponding to the abstract pre-condition.
val mk_abstract_post : 'a list * (Promelaast.typed_condition * 'b) Promelaast.trans list ->
Kernel_function.t -> bool array * bool array
Given the buchi automata and the name of a function, it returns two arrays
corresponding to the abstract post-condition.
val pre_post_to_term : bool array * 'a -> Cil_types.predicate Cil_types.named
Generates a term representing the given pre or post condition, i.e.
that the automaton is in one of the states mapped to true
.
val pre_post_to_term_neg : bool array * 'a -> Cil_types.predicate Cil_types.named
true
.val aorai_assigns : Cil_datatype.Location.t -> Cil_types.identified_term Cil_types.assigns
val action_assigns : ('a * Promelaast.single_action list) Promelaast.trans list ->
Cil_types.identified_term Cil_types.assigns
val force_transition : Cil_types.location ->
Kernel_function.t ->
Promelaast.funcStatus ->
'a * bool array -> Cil_types.identified_predicate list
val mk_action : loc:Cil_datatype.Location.t ->
Promelaast.single_action -> Cil_types.predicate Cil_types.named list
val find_pebble_origin : Cil_types.logic_label -> Promelaast.single_action list -> Cil_types.term
val mk_sub : loc:Cil_types.location ->
Cil_types.term -> Cil_types.logic_var -> Cil_types.predicate Cil_types.named
val pebble_guard : loc:Cil_types.location ->
Cil_types.term ->
Cil_datatype.Logic_var.t ->
Cil_types.predicate Cil_types.named -> Cil_types.predicate Cil_types.named
val pebble_guard_neg : loc:Cil_types.location ->
Cil_types.term ->
Cil_datatype.Logic_var.t ->
Cil_types.predicate Cil_types.named -> Cil_types.predicate Cil_types.named
val pebble_post : loc:Cil_types.location ->
Cil_types.term ->
Cil_datatype.Logic_var.t ->
Cil_types.predicate Cil_types.named -> Cil_types.predicate Cil_types.named
val add_behavior_pebble_actions : loc:Cil_types.location ->
Kernel_function.t * Promelaast.funcStatus ->
(Cil_types.identified_predicate, 'a) Cil_types.behavior list ->
Promelaast.state ->
(Promelaast.typed_condition * Promelaast.single_action list) Promelaast.trans
list -> (Cil_types.identified_predicate, 'a) Cil_types.behavior list
val mk_action : loc:Cil_datatype.Location.t ->
Promelaast.single_action -> Cil_types.predicate Cil_types.named list
val mk_behavior : loc:Cil_types.location ->
'a *
(Promelaast.typed_condition * Promelaast.single_action list) Promelaast.trans
list ->
Kernel_function.t * Promelaast.funcStatus ->
bool array * bool array ->
Promelaast.state ->
(Cil_types.identified_predicate, 'b) Cil_types.behavior list
val auto_func_behaviors : Cil_types.location ->
Kernel_function.t ->
Promelaast.funcStatus ->
bool array * bool array ->
(Cil_types.identified_predicate, Cil_types.identified_term)
Cil_types.behavior list
val get_preds_wrt_params : bool array ->
Kernel_function.t ->
Promelaast.funcStatus -> Cil_types.predicate Cil_types.named option
val get_preds_pre_wrt_params : Kernel_function.t -> Cil_types.predicate Cil_types.named option
val get_preds_post_bc_wrt_params : Kernel_function.t -> Cil_types.predicate Cil_types.named option
val force_condition_to_predicate : bool array * 'a -> bool array * 'b -> Cil_types.predicate Cil_types.named
val treat_val : Cil_types.term ->
Cil_types.predicate Cil_types.named ->
Cil_types.term * Data_for_aorai.range -> Cil_types.predicate Cil_types.named
val update_to_pred : Promelaast.state ->
Cil_types.term * (Cil_types.term * Data_for_aorai.range) list ->
Cil_types.predicate Cil_types.named
val action_to_pred : pre_state:Promelaast.state ->
post_state:Promelaast.state ->
Kernel_function.t -> Cil_types.predicate Cil_types.named list
val get_global_loop_inv : Cil_types.stmt -> bool array * bool array
val get_restricted_int_pre_bc : Cil_types.stmt -> Cil_types.predicate Cil_types.named
val get_restricted_ext_pre_bc : Cil_types.stmt -> Cil_types.predicate Cil_types.named
val get_restricted_int_post_bc : Cil_types.stmt -> Cil_types.predicate Cil_types.named
val display : string -> unit
val display_operations_spec__ : bool -> bool -> unit
val display_operations_spec : unit -> unit
val display_operations_spec_bycase : unit -> unit
val display_operations_spec_sorted : unit -> unit
val display_operations_spec_sorted_bycase : unit -> unit
val debug_display_all_specs : unit -> unit
val pasEtatOp : string -> string -> unit
val pasEtatAvantOp : string -> unit
val pasEtatApresOp : string -> unit
val pasEtatLoop : string -> string -> int -> unit
val pasEtatAvantLoop : int -> unit
val pasEtatApresLoop : int -> unit
val pasEtatAvantLoopBlock : int -> unit
val pasEtatApresLoopBlock : int -> unit
val display_all_warnings_about_operations_specs : unit -> unit
val display_all_warnings_about_loops_specs : unit -> unit
val display_all_warnings_about_specs : unit -> unit