sig
type t
val empty : Passive.t
val is_empty : Passive.t -> bool
val union : Passive.t -> Passive.t -> Passive.t
val bind : fresh:Lang.F.var -> bound:Lang.F.var -> Passive.t -> Passive.t
val join : Lang.F.var -> Lang.F.var -> Passive.t -> Passive.t
val conditions : Passive.t -> (Lang.F.var -> bool) -> Lang.F.pred list
val apply : Passive.t -> Lang.F.pred -> Lang.F.pred
type binding =
Bind of Lang.F.var * Lang.F.var
| Join of Lang.F.var * Lang.F.var
val iter : (Passive.binding -> unit) -> Passive.t -> unit
val pretty : Format.formatter -> Passive.t -> unit
end