module Logic:
type
logic = M.loc Memory.logic
Projections
val value : logic -> Lang.F.term
val loc : logic -> M.loc
val vset : logic -> Vset.set
val sloc : logic -> M.loc Memory.sloc list
val rdescr : M.loc Memory.sloc -> Lang.F.var list * M.loc * Lang.F.pred
Morphisms
val map : Lang.F.unop -> logic -> logic
val map_opp : logic -> logic
val map_loc : (M.loc -> M.loc) -> logic -> logic
val map_l2t : (M.loc -> Lang.F.term) -> logic -> logic
val map_t2l : (Lang.F.term -> M.loc) -> logic -> logic
val apply : Lang.F.binop ->
logic -> logic -> logic
val apply_add : logic -> logic -> logic
val apply_sub : logic -> logic -> logic
Locations
val field : logic -> Cil_types.fieldinfo -> logic
val shift : logic ->
Ctypes.c_object -> ?size:int -> logic -> logic
val load : M.Sigma.t -> Ctypes.c_object -> logic -> logic
Sets of loc-or-values
val union : Cil_types.logic_type -> logic list -> logic
val inter : Cil_types.logic_type -> logic list -> logic
val subset : Cil_types.logic_type ->
logic ->
Cil_types.logic_type -> logic -> Lang.F.pred
Regions
type
region = M.loc Memory.sloc list
val separated : (Ctypes.c_object * region) list -> Lang.F.pred
val included : Ctypes.c_object ->
region ->
Ctypes.c_object -> region -> Lang.F.pred
val valid : M.Sigma.t ->
Memory.acs -> Ctypes.c_object -> region -> Lang.F.pred