module Ltl_utils:exception to avoid pre computation with structure and array*sig
..end
Given a transition a function name and a function status (call or return) it returns if the cross condition can be statisfied with only function status.
exception LazyInit
val isCrossable : Promelaast.trans -> string -> Promelaast.funcStatus -> bool
val debug_display_func_status : string -> unit
val get_next : string -> Promelaast.funcStatus -> bool array -> bool array * bool 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 : string ->
Promelaast.funcStatus -> bool array * bool array -> bool array * bool 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 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 compose_assocs_post : bool array -> bool array array * bool array array -> bool array * bool array
val mk_forward_composition : bool array array ->
bool array array * bool array array -> bool array array * bool array array
Given a set of states and the bycase post-condition of an operation
this function returns the new post-condition after the execution of the operation in the context of current_st.
val compose_assocs_pre : bool array ->
'a * bool array -> bool array array * 'b -> bool array * bool array
val mk_backward_composition : bool array array ->
'a * bool array ->
bool array array * 'b -> bool array array * bool array array
Given a set of states and the bycases pre and post-conditions of an operation
this function returns the new pre-condition before the execution of the operation in the context of current_st.
val get_next_bycase : string ->
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 : string ->
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.trans -> string -> bool
Given a transition a function name and a function status (call or return) it returns if the cross condition can be statisfied with only function status.
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 crosscond_to_exp : Promelaast.condition ->
string -> Promelaast.funcStatus -> Bool3.bool3 * Cil_types.exp
val crosscond_to_pred : Promelaast.condition ->
Cil_types.logic_var -> Cil_types.logic_var -> Cil_types.predicate
val mk_expr_disjunction : Cil_types.exp list -> Cil_types.exp
val conj_crosscond_old : Bool3.bool3 * Cil_types.exp -> Cil_types.exp -> Cil_types.exp
transStart(tr)
)val upd_one_state : Promelaast.trans list ->
int -> Cil_types.location -> bool array -> bool array -> Cil_types.instr
state
transStart(trans)
&& curStatetransStop(trans)
val upd_one_trans : Promelaast.trans ->
string ->
Promelaast.funcStatus ->
Cil_types.location -> bool array -> bool array -> bool * Cil_types.instr
trans
val synch_upd_linear : Promelaast.state list * Promelaast.trans list ->
string ->
Promelaast.funcStatus ->
Cil_types.location -> string option -> int option -> Cil_types.instr list
func
: the name of the function that is called or that returnsstatus
: the status of this action (call or return)loc
: the localisation associated to this generated codecaller
: the name of the caller (if any)sid
: the stmt id of the call (if any)val synch_upd : Promelaast.state list * Promelaast.trans list ->
string ->
Promelaast.funcStatus ->
Cil_types.location -> string option -> int option -> Cil_types.instr list
This function returns the list of instructions that have to be introduced just before each call of function and each return of function. These instructions correspond to the synchronisation between C code and Buchi automata. The parameters are :
automata
: The buchi automatafunc
: the name of the function that is called or that returnsstatus
: the status of this action (call or return)loc
: the localisation associated to this generated codecaller
: the name of the caller (if any)sid
: the stmt id of the call (if any)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_c_initialized_vars : string -> Cil_types.typ -> Cil_types.initinfo -> unit
val mk_global_c_vars : string -> Cil_types.typ -> 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 : 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 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_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 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
val host_stateOld_term : unit -> Cil_types.term_lval
val host_trans_term : unit -> Cil_types.term_lval
val mk_logicvar_intervalle : Cil_types.logic_var -> int -> int -> Cil_types.predicate
val mk_eq_tables : string -> string -> int -> Cil_types.predicate
i
==host2i
)val mk_valid_range : string -> int -> Cil_types.predicate
val mk_conjunction : Cil_types.predicate list -> Cil_types.predicate
val mk_conjunction_named : Cil_types.predicate Cil_types.named list ->
Cil_types.predicate Cil_types.named
val mk_disjunction : Cil_types.predicate list -> Cil_types.predicate
val mk_disjunction_named : Cil_types.predicate Cil_types.named list ->
Cil_types.predicate Cil_types.named
val mk_global_invariant : Cil_types.predicate -> 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 -> unit
val mk_decl_axiomatized_auotmata : unit -> unit
val get_states_trans_init : string ->
Cil_types.initinfo * Cil_types.initinfo * Cil_types.initinfo *
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 mk_invariant_1 : unit -> unit
val mk_invariant_2 : unit -> unit
val mk_invariant_3 : unit -> unit
val mk_invariant_4 : unit -> unit
val mk_invariant_5 : unit -> unit
val mk_invariant_6 : unit -> unit
val mk_invariant_1_2 : unit -> unit
val mk_invariant_2_2 : unit -> unit
val mk_invariant_2_2_1 : unit -> unit
val mk_invariant_2_2_2 : unit -> unit
val mk_invariant_3_2 : unit -> unit
val mk_invariant_4_2 : unit -> unit
val mk_invariant_StatesDisjunction : unit -> unit
val mk_invariant_TransitionsDisjunction : unit -> unit
val initGlobals : string -> 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.trans list ->
string -> Promelaast.funcStatus -> bool array * bool array
val mk_asbstract_pre : 'a list * Promelaast.trans list -> string -> 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_asbstract_post : 'a list * Promelaast.trans list -> string -> 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 * bool array -> Cil_types.predicate Cil_types.named list
Generates a term representing the given pre or post condition.
Transitions and states are rewrited into predicates in the same maner. The computation is then generalized
Conjunction of forbidden and disjunction of authorized are compute together.
val force_condition_to_predicate : bool array * bool array -> bool array * bool array -> Cil_types.predicate
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