- 1.1.0
Frontend to library(clpr) and library(clpfd) in order to allow
- multifile shorthand/3 notations in domains and constraints,
including subscripted variables with Array[Indices] notation
?- array(A, [3]), for_all(I in 1..2, A[I] #< A[I+1]).
A = array(_A, _B, _C),
clpfd:(_A#=<_B+ -1),
clpfd:(_B#=<_C+ -1).
- hybrid clpr clpfd constraints, including op_rel/5, sum/3, and hybrid reification constraints, e.g.
?- array(A, [3]), {A[1] < 3.14} #<==> B.
A = array(_A, _, _),
freeze(B, clp:clpr_boolean(_A<3.14, _A>=3.14, B)),
clpfd:(B in 0..1).
?- array_list(A, [1, 1.5, 2]), {A[1] < 3.14} #<==> B.
A = array(1, 1.5, 2),
B = 1.
?- A=array([1,2],[3,4]), op_rel(A, +, A, #=, C).
A = array([1, 2], [3, 4]),
C = array(array(2, 4), array(6, 8)).
?- A=[[1,2],[3,4]], op_rel(A, +, A, #=, C).
A = [[1, 2], [3, 4]],
C = [[2, 4], [6, 8]].
?- L=[X, Y, Z], L ins 1..3, for_all(V in L, V#>1).
L = [X, Y, Z],
clpfd:(X in 2..3),
clpfd:(Y in 2..3),
clpfd:(Z in 2..3).