sig
type state = Dom.t
type value = Val.t
type origin = Dom.origin
type loc = Loc.location
module Valuation :
sig
type t
type value = value
type origin = origin
type loc = loc
val empty : t
val find :
t -> Cil_types.exp -> (value, origin) Eval.record_val Eval.or_top
val add : t -> Cil_types.exp -> (value, origin) Eval.record_val -> t
val fold :
(Cil_types.exp -> (value, origin) Eval.record_val -> 'a -> 'a) ->
t -> 'a -> 'a
val find_loc : t -> Cil_types.lval -> loc Eval.record_loc Eval.or_top
val remove : t -> Cil_types.exp -> t
val remove_loc : t -> Cil_types.lval -> t
end
val to_domain_valuation :
Valuation.t -> (value, loc, origin) Abstract_domain.valuation
val evaluate :
?valuation:Valuation.t ->
?reduction:bool ->
?subdivnb:int ->
state -> Cil_types.exp -> (Valuation.t * value) Eval.evaluated
val copy_lvalue :
?valuation:Valuation.t ->
?subdivnb:int ->
state ->
Cil_types.lval -> (Valuation.t * value Eval.flagged_value) Eval.evaluated
val lvaluate :
?valuation:Valuation.t ->
?subdivnb:int ->
for_writing:bool ->
state ->
Cil_types.lval -> (Valuation.t * loc * Cil_types.typ) Eval.evaluated
val reduce :
?valuation:Valuation.t ->
state -> Cil_types.exp -> bool -> Valuation.t Eval.evaluated
val assume :
?valuation:Valuation.t ->
state -> Cil_types.exp -> value -> Valuation.t Eval.or_bottom
val eval_function_exp :
?subdivnb:int ->
Cil_types.exp ->
?args:Cil_types.exp list ->
state -> (Kernel_function.t * Valuation.t) list Eval.evaluated
val interpret_truth :
alarm:(unit -> Alarms.t) ->
'a -> 'a Abstract_value.truth -> 'a Eval.evaluated
end