sig
type e = private
SExp of Syntax.s
| Let of Syntax.plab * Location.LSet.t option * Syntax.var * Syntax.s *
Syntax.e
| Mask of Syntax.plab * Location.LSet.t option * Syntax.e
and s = private
Val of Syntax.v
| App of Syntax.plab * Syntax.v * Syntax.v
| New of Syntax.plab * Location.Loc.t
| Read of Syntax.p
| Write of Syntax.plab * Syntax.p * Syntax.v
| MethodCall of Syntax.plab * Syntax.p * Syntax.v
and v = private
Var of Syntax.plab * Syntax.var
| Lam of Syntax.plab * Syntax.var * Syntax.var * Syntax.e
| Undef of Syntax.plab
| Pointer of Syntax.plab * Location.P.t
| Int of Syntax.plab * int
and p = private Prop of Syntax.plab * Syntax.v * Syntax.label
and var
and label
and plab
val e_sexp : Syntax.s -> Syntax.e
val e_let : Syntax.var -> Syntax.s -> Syntax.e -> Syntax.e
val e_mask : Location.LSet.t -> Syntax.e -> Syntax.e
val string_of_e : Syntax.e -> string
val string_of_e_with_plabs : Syntax.e -> string
val s_val : Syntax.v -> Syntax.s
val s_app : Syntax.v -> Syntax.v -> Syntax.s
val s_new : unit -> Syntax.s
val s_new_loc : Location.Loc.t -> Syntax.s
val s_read : Syntax.v -> Syntax.label -> Syntax.s
val s_write : Syntax.v -> Syntax.label -> Syntax.v -> Syntax.s
val s_mcall : Syntax.v -> Syntax.label -> Syntax.v -> Syntax.s
val v_var : Syntax.var -> Syntax.v
val v_lam : Syntax.var -> Syntax.var -> Syntax.e -> Syntax.v
val v_undef : unit -> Syntax.v
val v_int : int -> Syntax.v
val string_of_v : Syntax.v -> string
val string_of_lam : Syntax.var -> Syntax.var -> Syntax.e -> string
val string_of_v_with_plabs : Syntax.v -> string
val string_of_lam_with_plabs :
Syntax.var -> Syntax.var -> Syntax.e -> string
val string_of_v_without_plabs : Syntax.v -> string
val create_var : string -> Syntax.var
val compare_var : Syntax.var -> Syntax.var -> int
val string_of_var : Syntax.var -> string
val create_label : string -> Syntax.label
val compare_label : Syntax.label -> Syntax.label -> int
val string_of_label : Syntax.label -> string
val create_plab : unit -> Syntax.plab
val compare_plab : Syntax.plab -> Syntax.plab -> int
val string_of_plab : Syntax.plab -> string
val e_get_plab : Syntax.e -> Syntax.plab
val s_get_plab : Syntax.s -> Syntax.plab
val v_get_plab : Syntax.v -> Syntax.plab
val p_get_plab : Syntax.p -> Syntax.plab
val collect_locs : Syntax.e -> Location.LSet.t
module VarSet :
sig
type elt = var
type t
val empty : t
val is_empty : t -> bool
val mem : elt -> t -> bool
val add : elt -> t -> t
val add_list : elt list -> t -> t
val singleton : elt -> t
val remove : elt -> t -> t
val union : t -> t -> t
val inter : t -> t -> t
val diff : t -> t -> t
val compare : t -> t -> int
val equal : t -> t -> bool
val subset : t -> t -> bool
val iter : (elt -> unit) -> t -> unit
val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
val for_all : (elt -> bool) -> t -> bool
val exists : (elt -> bool) -> t -> bool
val filter : (elt -> bool) -> t -> t
val partition : (elt -> bool) -> t -> t * t
val cardinal : t -> int
val elements : t -> elt list
val min_elt : t -> elt
val max_elt : t -> elt
val choose : t -> elt
val choose' : t -> elt option
val split : elt -> t -> t * bool * t
val from_list : elt list -> t
val string_of : t -> string
val string_of_complex :
?start_char:string -> ?end_char:string -> t -> string
end
val free_e : Syntax.e -> Syntax.VarSet.t
val free_s : Syntax.s -> Syntax.VarSet.t
val free_v : Syntax.v -> Syntax.VarSet.t
module LabelSet : ProglangUtils.ExtSSet.S
module LabelSetRef :
sig
type t
type elt = label
val create : unit -> t
val is_empty : t -> bool
val mem : elt -> t -> bool
val add : elt -> t -> unit
val add_list : elt list -> t -> unit
val singleton : elt -> t
val remove : elt -> t -> unit
val compare : t -> t -> int
val equal : t -> t -> bool
val subset : t -> t -> bool
val iter : (elt -> unit) -> t -> unit
val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
val for_all : (elt -> bool) -> t -> bool
val exists : (elt -> bool) -> t -> bool
val filter : (elt -> bool) -> t -> unit
val cardinal : t -> int
val elements : t -> elt list
val min_elt : t -> elt
val max_elt : t -> elt
val choose : t -> elt
val from_list : elt list -> t
val string_of : t -> string
val string_of_complex :
?start_char:string -> ?end_char:string -> t -> string
val laset : t -> LabelSet.t
end
val set_print_with_label : unit -> unit
val set_print_without_label : unit -> unit
end