sig
type set = Vset.vset list
and vset =
Set of Lang.F.tau * Lang.F.term
| Singleton of Lang.F.term
| Range of Lang.F.term option * Lang.F.term option
| Descr of Lang.F.var list * Lang.F.term * Lang.F.pred
val tau_of_set : Lang.F.tau -> Lang.F.tau
val vars : Vset.set -> Lang.F.Vars.t
val occurs : Lang.F.var -> Vset.set -> bool
val empty : Vset.set
val singleton : Lang.F.term -> Vset.set
val range : Lang.F.term option -> Lang.F.term option -> Vset.set
val union : Vset.set -> Vset.set -> Vset.set
val inter : Lang.F.term -> Lang.F.term -> Lang.F.term
val member : Lang.F.term -> Vset.set -> Lang.F.pred
val in_size : Lang.F.term -> int -> Lang.F.pred
val in_range :
Lang.F.term -> Lang.F.term option -> Lang.F.term option -> Lang.F.pred
val sub_range :
Lang.F.term ->
Lang.F.term -> Lang.F.term option -> Lang.F.term option -> Lang.F.pred
val ordered :
limit:bool ->
strict:bool -> Lang.F.term option -> Lang.F.term option -> Lang.F.pred
val equal : Vset.set -> Vset.set -> Lang.F.pred
val subset : Vset.set -> Vset.set -> Lang.F.pred
val disjoint : Vset.set -> Vset.set -> Lang.F.pred
val concretize : Vset.set -> Lang.F.term
val bound_shift : Lang.F.term option -> Lang.F.term -> Lang.F.term option
val bound_add :
Lang.F.term option -> Lang.F.term option -> Lang.F.term option
val bound_sub :
Lang.F.term option -> Lang.F.term option -> Lang.F.term option
val pp_bound : Format.formatter -> Lang.F.term option -> unit
val pp_vset : Format.formatter -> Vset.vset -> unit
val map : (Lang.F.term -> Lang.F.term) -> Vset.set -> Vset.set
val map_opp : Vset.set -> Vset.set
val lift :
(Lang.F.term -> Lang.F.term -> Lang.F.term) ->
Vset.set -> Vset.set -> Vset.set
val lift_add : Vset.set -> Vset.set -> Vset.set
val lift_sub : Vset.set -> Vset.set -> Vset.set
val descr : Vset.vset -> Lang.F.var list * Lang.F.term * Lang.F.pred
end