Module SM.Syntax

val (let*) : 'a t -> ('a -> 'b t) -> 'b t
val (let+) : 'a t -> ('a -> 'b) -> 'b t
val (let**) : ('a, 'c, 'd) Soteria.Symex.Compo_res.t t -> ('a -> ('b, 'c, 'd) Soteria.Symex.Compo_res.t t) -> ('b, 'c, 'd) Soteria.Symex.Compo_res.t t
val (let++) : ('a, 'c, 'd) Soteria.Symex.Compo_res.t t -> ('a -> 'b) -> ('b, 'c, 'd) Soteria.Symex.Compo_res.t t
val (let+-) : ('a, 'b, 'd) Soteria.Symex.Compo_res.t t -> ('b -> 'c) -> ('a, 'c, 'd) Soteria.Symex.Compo_res.t t
val (let*-) : ('a, 'b, 'c) Soteria.Symex.Compo_res.t t -> ('b -> ('a, 'd, 'c) Soteria.Symex.Compo_res.t t) -> ('a, 'd, 'c) Soteria.Symex.Compo_res.t t
val (let+?) : ('a, 'b, 'c) Soteria.Symex.Compo_res.t t -> ('c -> 'd) -> ('a, 'b, 'd) Soteria.Symex.Compo_res.t t
module Symex_syntax : Soteria.Symex.Symex_syntax_S with type ('a, 'b) t := 'a t and type sbool_v := Value.sbool Value.t
val (let*^) : 'a Symex.t -> ('a -> 'b t) -> 'b t
val (let+^) : 'a Symex.t -> ('a -> 'b) -> 'b t
val (let**^) : ('a, 'e, 'f) Symex.Result.t -> ('a -> ('b, 'e, 'f) Result.t) -> ('b, 'e, 'f) Result.t
val (let++^) : ('a, 'e, 'f) Symex.Result.t -> ('a -> 'b) -> ('b, 'e, 'f) Result.t