type 'a t
= 'a Logic_monad.Logical(P).t
val return : 'a -> 'a t
val (>>=) : 'a t -> ('a -> 'b t) -> 'b t
val (>>) : unit t -> 'a t -> 'a t
val map : ('a -> 'b) -> 'a t -> 'b t
module List : sig ... end
val ignore : 'a t -> unit t
val set : P.s -> unit t
val get : P.s t
val modify : (P.s -> P.s) -> unit t
val put : P.w -> unit t
val current : P.e t
val local : P.e -> 'a t -> 'a t
val update : (P.u -> P.u) -> unit t
val zero : Exninfo.iexn -> 'a t
val plus : 'a t -> (Exninfo.iexn -> 'a t) -> 'a t
val split : 'a t -> ('a, 'a t, Exninfo.iexn) Logic_monad.list_view t
val once : 'a t -> 'a t
val break : (Exninfo.iexn -> Exninfo.iexn option) -> 'a t -> 'a t
val lift : 'a Logic_monad.NonLogical.t -> 'a t
type 'a reified
= ('a, Exninfo.iexn) Logic_monad.BackState.reified
type 'a reified_
= ('a, Exninfo.iexn) Logic_monad.BackState.reified_
val repr : 'a reified -> ('a, 'a reified_, Exninfo.iexn) Logic_monad.list_view_ Logic_monad.NonLogical.t
val run : 'a t -> P.e -> P.s -> ('a * P.s * P.w * P.u) reified