Codom.SMtype st = t optionmodule Symex = CSYMEXinclude Soteria.Sym_states.State_monad.Base_sig
with type 'a t := 'a t
with module Value = CSYMEX.Valueinclude Soteria.Symex.Core
with type 'a t := 'a t
with module Value = CSYMEX.Valuemodule Value = CSYMEX.ValueType of error that corresponds to a logical failure (i.e. a logical mismatch during consumption).
Use this instead of `Lfail directly in type signatures to avoid potential typos such as `LFail which will take precious time to debug... trust me.
val pp_lfail :
Ppx_deriving_runtime.Format.formatter ->
lfail ->
Ppx_deriving_runtime.unitval show_lfail : lfail -> Ppx_deriving_runtime.stringval pp_cons_fail :
Ppx_deriving_runtime.Format.formatter ->
cons_fail ->
Ppx_deriving_runtime.unitval show_cons_fail : cons_fail -> Ppx_deriving_runtime.stringtype 'a v := 'a Value.ttype 'a vt := 'a Value.tytype sbool := Value.sboolval vanish : unit -> 'a tAssert is a symbolic process that does not branch but tests for the feasibility of the input symbolic value.
assert_ returns false if and only if not value is satisfiable.assert_ returns true if and only if not value is unsatisfiable.simplify v simplifies the value v according to the current path condition.
val fresh_var : 'a vt -> Soteria.Symex.Var.t tval if_sure :
?left_branch_name:string ->
?right_branch_name:string ->
sbool v ->
then_:(unit -> 'a t) ->
else_:(unit -> 'a t) ->
'a tif_sure cond ~then_ ~else_ evaluates the ~then_ branch if cond is guaranteed to hold in the current context, and otherwise evaluates ~else_.
This is to be used with caution: the ~then_ branch should always describe a behaviour that is semantically equivalent to that of the ~else_ branch when cond holds.
val branch_on_take_one :
?left_branch_name:string ->
?right_branch_name:string ->
sbool v ->
then_:(unit -> 'a t) ->
else_:(unit -> 'a t) ->
'a tBranches on value, and (in UX only) takes at most one branch, starting with the then branch. This means that if the then_ branch is SAT, it is taken and the else_ branch is ignored, otherwise the else_ branch is taken. In OX mode, this behaves exactly as branch_on.
val give_up : string -> 'a tGives up on this path of execution for incompleteness reason. For instance, if a give feature is unsupported.
val consume_fuel_steps : int -> unit tval assert_or_error :
Value.sbool Value.t ->
'err ->
(unit, 'err, 'f) Soteria.Symex.Compo_res.t tassert_or_error guard err asserts guard is true, and otherwise returns Compo_res.Error err. Biased towards the assertion being false to reduce SAT-checks.
This is provided as a utility, and is equivalent to
branch_on (not guard)
~then_:(fun () -> return (Compo_res.error err))
~else_:(fun () -> return (Compo_res.ok ()))val some_or_give_up : string -> 'a option -> 'a tIf the given option is None, gives up execution, otherwise continues, unwrapping the option.
val fold_iter :
'a Soteria.Soteria_std.Iter.t ->
init:'b ->
f:('b -> 'a -> 'b t) ->
'b tval fold_seq :
'a Soteria.Soteria_std.Seq.t ->
init:'b ->
f:('b -> 'a -> 'b t) ->
'b tval iter_iter : 'a Soteria.Soteria_std.Iter.t -> f:('a -> unit t) -> unit tmodule Producer : sig ... endmodule Consumer : sig ... endmodule Result : sig ... endmodule Syntax : sig ... end