module List: sig
.. end
val forall : ?select:('a list -> 'a * 'a list) -> ('a -> Goals.t) -> 'a list -> Goals.t
forall ?select g [x1;x2;...;xn]
is g x1 &&~ g x2 &&~ ... &&~ g xn
,
i.e. returns the conjunctive iteration of goal g
on list a
.
val exists : ?select:('a list -> 'a * 'a list) -> ('a -> Goals.t) -> 'a list -> Goals.t
exists ?select g [x1;x2;...;xn]
is g x1 ||~ g x2 ||~ ... ||~ g xn
,
i.e. returns the disjunctive iteration of goal g
on list a
.
val member : Var.Fd.t -> int list -> Goals.t
member v l
returns the disjunctive iteration of the instantiation of
the variable v
to the values in the integer list l
. Defined by
fun v l -> exists (fun x -> create (fun () -> Fd.unify v x)) l
.
val labeling : Var.Fd.t list -> Goals.t
Standard labeling, i.e. conjunctive non-deterministic instantiation of
a list of variables. Defined as forall indomain
.