Module Biabduction.Attribute

Attribute manipulation in Propositions (i.e., Symbolic Heaps)

val is_pred : Predicates.atom -> bool

Check whether an atom is used to mark an attribute

val add : IR.Tenv.t -> ?footprint:bool -> ?polarity:bool -> Prop.normal Prop.t -> IR.PredSymb.t -> IR.Exp.t list -> Prop.normal Prop.t

Add an attribute associated to the argument expressions

Replace an attribute associated to the expression

val add_or_replace_check_changed : IR.Tenv.t -> Prop.normal Prop.t -> Predicates.atom -> Prop.normal Prop.t

Replace an attribute associated to the expression, and call the given function with new and old attributes if they changed.

val get_all : 'a Prop.t -> Predicates.atom list

Get all the attributes of the prop

val get_for_exp : IR.Tenv.t -> 'a Prop.t -> IR.Exp.t -> Predicates.atom list

Get the attributes associated to the expression, if any

val get_objc_null : IR.Tenv.t -> 'a Prop.t -> IR.Exp.t -> Predicates.atom option

Get the objc null attribute associated to the expression, if any

val get_observer : IR.Tenv.t -> 'a Prop.t -> IR.Exp.t -> Predicates.atom option

Get the observer attribute associated to the expression, if any

val get_resource : IR.Tenv.t -> 'a Prop.t -> IR.Exp.t -> Predicates.atom option

Get the resource attribute associated to the expression, if any

val get_undef : IR.Tenv.t -> 'a Prop.t -> IR.Exp.t -> Predicates.atom option

Get the undef attribute associated to the expression, if any

val get_wontleak : IR.Tenv.t -> 'a Prop.t -> IR.Exp.t -> Predicates.atom option

Get the wontleak attribute associated to the expression, if any

val has_dangling_uninit : IR.Tenv.t -> 'a Prop.t -> IR.Exp.t -> bool

Test for existence of an Adangling DAuninit attribute associated to the exp

Remove an attribute

Remove all attributes for the given attr

Remove all attributes for the given resource and kind

Apply f to every resource attribute in the prop

val replace_objc_null : IR.Tenv.t -> Prop.normal Prop.t -> IR.Exp.t -> IR.Exp.t -> Prop.normal Prop.t

replace_objc_null lhs rhs. If rhs has the objc_null attribute, replace the attribute and set the lhs = 0

val nullify_exp_with_objc_null : IR.Tenv.t -> Prop.normal Prop.t -> IR.Exp.t -> Prop.normal Prop.t

For each Var subexp of the argument with an Aobjc_null attribute, remove the attribute and conjoin an equality to zero.

val mark_vars_as_undefined : IR.Tenv.t -> Prop.normal Prop.t -> ret_exp:IR.Exp.t -> undefined_actuals_by_ref:IR.Exp.t list -> IR.Procname.t -> IR.Annot.Item.t -> IBase.Location.t -> IR.PredSymb.path_pos -> Prop.normal Prop.t

mark Exp.Var's or Exp.Lvar's as undefined

type arith_problem =
  1. | Div0 of IR.Exp.t
  2. | UminusUnsigned of IR.Exp.t * IR.Typ.t

type for arithmetic problems

val find_arithmetic_problem : IR.Tenv.t -> IR.PredSymb.path_pos -> Prop.normal Prop.t -> IR.Exp.t -> arith_problem option * Prop.normal Prop.t

Look for an arithmetic problem in exp

val deallocate_stack_vars : IR.Tenv.t -> Prop.normal Prop.t -> IR.Pvar.t list -> IR.Pvar.t list * Prop.normal Prop.t

Deallocate the stack variables in pvars, and replace them by normal variables. Return the list of stack variables whose address was still present after deallocation.

val find_equal_formal_path : IR.Tenv.t -> IR.Exp.t -> 'a Prop.t -> IR.Exp.t option