module Aorai_dataflow:sig
..end
Compute the set of possible set at each function call and return.
val dkey : Aorai_option.category
val set_of_map : 'a Data_for_aorai.Aorai_state.Map.t -> Data_for_aorai.Aorai_state.Set.t
val filter_state : Data_for_aorai.Aorai_state.Set.t ->
'a Data_for_aorai.Aorai_state.Map.t -> 'a Data_for_aorai.Aorai_state.Map.t
module Call_state:State_builder.Hashtbl
(
Cil_datatype.Stmt.Hashtbl
)
(
Data_for_aorai.Case_state
)
(
sig
val name :string
val dependencies :State.t list
val size :int
end
)
val set_call_state : Call_state.key -> Data_for_aorai.state -> unit
module Return_state:State_builder.Hashtbl
(
Cil_datatype.Stmt.Hashtbl
)
(
Data_for_aorai.Case_state
)
(
sig
val name :string
val dependencies :State.t list
val size :int
end
)
val set_return_state : Return_state.key -> Data_for_aorai.state -> unit
module type Init =sig
..end
val compute_func : ((Kernel_function.t * bool Pervasives.ref) list ->
Cil_datatype.Kinstr.t ->
Kernel_function.t -> Data_for_aorai.state -> Data_for_aorai.state)
Pervasives.ref
val extract_current_states : 'a Data_for_aorai.Aorai_state.Map.t Data_for_aorai.Aorai_state.Map.t ->
Data_for_aorai.Aorai_state.Set.t
val add_or_merge : Data_for_aorai.Aorai_state.Map.key ->
Data_for_aorai.Aorai_state.Set.t * Data_for_aorai.Aorai_state.Set.t *
Data_for_aorai.Vals.t ->
(Data_for_aorai.Aorai_state.Set.t * Data_for_aorai.Aorai_state.Set.t *
Data_for_aorai.Vals.t)
Data_for_aorai.Aorai_state.Map.t ->
(Data_for_aorai.Aorai_state.Set.t * Data_for_aorai.Aorai_state.Set.t *
Data_for_aorai.Vals.t)
Data_for_aorai.Aorai_state.Map.t
val actions_to_range : Promelaast.single_action list ->
Data_for_aorai.range Cil_datatype.Term.Map.t Cil_datatype.Term.Map.t
val make_start_transition : ?is_main:bool ->
Cil_types.kernel_function ->
Data_for_aorai.Aorai_state.Set.t ->
(Data_for_aorai.Aorai_state.Set.t * Data_for_aorai.Aorai_state.Set.t *
Data_for_aorai.Vals.t)
Data_for_aorai.Aorai_state.Map.t Data_for_aorai.Aorai_state.Map.t
val compose_range : Cil_types.term ->
Cil_types.term ->
Data_for_aorai.range -> Data_for_aorai.range -> Data_for_aorai.Range.t
val compose_bindings : Data_for_aorai.range Cil_datatype.Term.Map.t Cil_datatype.Term.Map.t ->
Cil_datatype.Term.Map.key ->
Data_for_aorai.Range.t Cil_datatype.Term.Map.t ->
Data_for_aorai.Range.t Cil_datatype.Term.Map.t Cil_datatype.Term.Map.t ->
Data_for_aorai.Range.t Cil_datatype.Term.Map.t Cil_datatype.Term.Map.t
val compose_actions : 'a * 'b *
Data_for_aorai.Range.t Cil_datatype.Term.Map.t Cil_datatype.Term.Map.t ->
'c * 'd *
Data_for_aorai.Range.t Cil_datatype.Term.Map.t Cil_datatype.Term.Map.t ->
'a * 'd *
Data_for_aorai.Range.t Cil_datatype.Term.Map.t Cil_datatype.Term.Map.t
val compose_states : (Data_for_aorai.Aorai_state.Set.t * 'a *
Data_for_aorai.Intervals.t Cil_datatype.Term.Map.t)
Data_for_aorai.Aorai_state.Map.t Data_for_aorai.Aorai_state.Map.t ->
('b * Data_for_aorai.Aorai_state.Set.t *
Data_for_aorai.Range.t Cil_datatype.Term.Map.t Cil_datatype.Term.Map.t)
Data_for_aorai.Aorai_state.Map.t Data_for_aorai.Aorai_state.Map.t ->
(Data_for_aorai.Aorai_state.Set.t * Data_for_aorai.Aorai_state.Set.t *
Data_for_aorai.Vals.t)
Data_for_aorai.Aorai_state.Map.t Data_for_aorai.Aorai_state.Map.t
val make_return_transition : Kernel_function.t ->
Data_for_aorai.state ->
(Data_for_aorai.Aorai_state.Set.t * Data_for_aorai.Aorai_state.Set.t *
Data_for_aorai.Vals.t)
Data_for_aorai.Aorai_state.Map.t Data_for_aorai.Aorai_state.Map.t
module Computer:
val compute_func_aux : (Kernel_function.t * bool Pervasives.ref) list ->
Cil_datatype.Kinstr.t ->
Kernel_function.t -> Data_for_aorai.state -> Data_for_aorai.state
val compute_forward : unit -> unit
module type Reachable_end_states =sig
..end
module Pre_state:Kernel_function.Make_Table
(
Data_for_aorai.Case_state
)
(
sig
val name :string
val dependencies :State.t list
val size :int
end
)
val set_kf_init_state : Pre_state.key -> Data_for_aorai.state -> unit
module Post_state:Kernel_function.Make_Table
(
Data_for_aorai.Case_state
)
(
sig
val name :string
val dependencies :State.t list
val size :int
end
)
val set_kf_return_state : Post_state.key -> Data_for_aorai.state -> unit
module Init_loop_state:State_builder.Hashtbl
(
Cil_datatype.Stmt.Hashtbl
)
(
Data_for_aorai.Case_state
)
(
sig
val name :string
val dependencies :State.t list
val size :int
end
)
val set_init_loop_state : Init_loop_state.key -> Data_for_aorai.state -> unit
module Invariant_loop_state:State_builder.Hashtbl
(
Cil_datatype.Stmt.Hashtbl
)
(
Data_for_aorai.Case_state
)
(
sig
val name :string
val dependencies :State.t list
val size :int
end
)
val set_invariant_loop_state : Invariant_loop_state.key -> Data_for_aorai.state -> unit
val backward_analysis : (Kernel_function.t list ->
Kernel_function.t ->
Data_for_aorai.Aorai_state.Set.t -> Data_for_aorai.state)
Pervasives.ref
module Backwards_computer:
val filter_possible_states : Kernel_function.t ->
Data_for_aorai.Aorai_state.Set.t ->
(Data_for_aorai.Aorai_state.Set.t * Data_for_aorai.Aorai_state.Set.t *
Data_for_aorai.Vals.t)
Data_for_aorai.Aorai_state.Map.t Data_for_aorai.Aorai_state.Map.t
val filter_return_states : Kernel_function.t ->
'a Data_for_aorai.Aorai_state.Map.t Data_for_aorai.Aorai_state.Map.t ->
(Data_for_aorai.Aorai_state.Set.t * Data_for_aorai.Aorai_state.Set.t *
Data_for_aorai.Vals.t)
Data_for_aorai.Aorai_state.Map.t Data_for_aorai.Aorai_state.Map.t
val filter_loop_states : 'a Data_for_aorai.Aorai_state.Map.t Data_for_aorai.Aorai_state.Map.t ->
'b Data_for_aorai.Aorai_state.Map.t Data_for_aorai.Aorai_state.Map.t ->
'a Data_for_aorai.Aorai_state.Map.t Data_for_aorai.Aorai_state.Map.t
val filter_init_state : 'a Data_for_aorai.Aorai_state.Map.t Data_for_aorai.Aorai_state.Map.t ->
Data_for_aorai.Aorai_state.Map.key ->
'b Data_for_aorai.Aorai_state.Map.t ->
'b Data_for_aorai.Aorai_state.Map.t Data_for_aorai.Aorai_state.Map.t ->
'b Data_for_aorai.Aorai_state.Map.t Data_for_aorai.Aorai_state.Map.t
val backward_analysis_aux : Kernel_function.t list ->
Kernel_function.t -> Data_for_aorai.Aorai_state.Set.t -> Data_for_aorai.state
val compute_backward : unit -> unit
val compute : unit -> unit