Module Assume_info.Value
type t =
Ocaml_utils.Zero_alloc_utils.Make_value(Ocaml_utils.Zero_alloc_utils.Assume_info.Witnesses)(Ocaml_utils.Zero_alloc_utils.Assume_info.V).t =
{nor : Ocaml_utils.Zero_alloc_utils.Assume_info.V.t;(*Property about all paths from this program location that may reach a Normal Return
*)exn : Ocaml_utils.Zero_alloc_utils.Assume_info.V.t;(*Property about all paths from this program point that may reach a Return with Exception
*)div : Ocaml_utils.Zero_alloc_utils.Assume_info.V.t;(*Property about all paths from this program point that may diverge.
*)
}Abstract value associated with each program location in a function.
val lessequal :
Ocaml_utils.Zero_alloc_utils.Assume_info.Value.t ->
Ocaml_utils.Zero_alloc_utils.Assume_info.Value.t ->
boolval normal_return : Ocaml_utils.Zero_alloc_utils.Assume_info.Value.tnormal_return means property holds on paths to normal return, exceptional return is not reachable and execution will not diverge.
val exn_escape : Ocaml_utils.Zero_alloc_utils.Assume_info.Value.texn_escape means the property holds on paths to exceptional return, normal return is not reachable and execution will not diverge.
val diverges : Ocaml_utils.Zero_alloc_utils.Assume_info.Value.tdiverges means the execution may diverge without violating the property, but normal and exceptional return are not reachable (i.e., div is Safe, `nor` and `exn` are Bot).
safe means the property holds on all paths (i.e., all three components are set to Safe).
val relaxed :
Ocaml_utils.Zero_alloc_utils.Assume_info.Witnesses.t ->
Ocaml_utils.Zero_alloc_utils.Assume_info.Value.trelaxed means the property holds on paths that lead to normal returns only (i.e., nor component is Safe, others are Top.
val of_annotation :
strict:bool ->
never_returns_normally:bool ->
never_raises:bool ->
Ocaml_utils.Zero_alloc_utils.Assume_info.Value.tConstructs a value from a user annotation. The witness will be empty.
val print :
witnesses:bool ->
Stdlib.Format.formatter ->
Ocaml_utils.Zero_alloc_utils.Assume_info.Value.t ->
unitval compare :
Ocaml_utils.Zero_alloc_utils.Assume_info.Value.t ->
Ocaml_utils.Zero_alloc_utils.Assume_info.Value.t ->
intUse compare for structural comparison of terms, for example to store them in a set. Use lessequal for checking fixed point of the abstract domain.
compare must be consistent with lessthan order of the abstract domain, i.e., if compare t1 t2 <= 0 then lessequal v1 v2 = true.
compare may distinguish terms that are equivalent w.r.t. the abstraction, i.e., lessequal v1 v2 = true does not always imply compare t1 t2 <= 0. In particular, compare distinguishes between two "Top" values with different witnesses.