Did you know ... Search Documentation:
Pack modeling -- prolog/examplesFLOPS2024.pl
PublicShow source
author
- Francois Fages
version
- 1.1.0

Examples of use of SWI-Prolog pack modeling described in

F. Fages. A Constraint-based Mathematical Modeling Library in Prolog with Answer Constraint Semantics. 17th International Symposium on Functional and Logic Programming, FLOPS 2024. May 15, 2024 - May 17, 2024, Kumamoto, Japan. LNCS, Springer-Verlag.

?- queens(8,Queens), show(Queens).
Q . . . . . . .
. . . . . . Q .
. . . . Q . . .
. . . . . . . Q
. Q . . . . . .
. . . Q . . . .
. . . . . Q . .
. . Q . . . . .

Queens = array(1, 5, 8, 6, 3, 7, 2, 4) .

?- fourier(3, X, Y, 1).
X = Y, Y = 6.666666666666667.

?- fourier(3.1, X, Y, 1).
false.

?- fourier(2, X, Y, 1).
{Y=20.0-10.0*_A-10.0*_B, X=10.0*_B, _=2.0-_A-_B, _A+_B>=1.0, _B=<1.0, _A=<1.0}.

?- fourier(0, X, Y, 1).
true.
  
?- fourier(2, X, Y, 1), minimize(X).
X = 0.0,
Y = 10.0.

?- fourier(2, X, Y, 1), maximize(X).
X = 10.0,
{Y=10.0-10.0*_A, _=1.0-_A, _A=<1.0, _A>=0.0}.

?- fourier(2, X, Y, 1), maximize(Y).
Y = 10.0,
{X=10.0*_A, _A>=0.0, _A=<1.0, _=1.0-_A}.

?- fourier(2, X, Y, 1), minimize(Y).
X = 10.0,
Y = 0.0.
 show(+Queens)
pretty prints chessboard Queens (either array or list).
 benchmark
computation time benchmark of problems used in FLOPS paper for comparing bounded quantifiers on subscripted variables, to recursion on lists.

Undocumented predicates

The following predicates are exported, but not or incorrectly documented.

 queens(Arg1, Arg2)
 queens_distinct(Arg1, Arg2)
 queens_sym(Arg1, Arg2)
 sym_elim(Arg1, Arg2)
 queens_sym_distinct(Arg1, Arg2)
 queens_list(Arg1, Arg2)
 queens_distinct_list(Arg1, Arg2)
 queens_sym_list(Arg1, Arg2)
 sym_elim_list(Arg1, Arg2)
 queens_sym_distinct_list(Arg1, Arg2)
 fourier(Arg1, Arg2, Arg3, Arg4)
 int_array(Arg1, Arg2)
 int_array(Arg1, Arg2, Arg3)
 bool_array(Arg1, Arg2)
 float_array(Arg1, Arg2)
 float_array(Arg1, Arg2, Arg3)
 satisfy(Arg1)
 satisfy(Arg1, Arg2)
 satisfy_attvars(Arg1)
 satisfy_attvars(Arg1, Arg2)
 minimize(Arg1, Arg2)
 minimize(Arg1, Arg2, Arg3)
 maximize(Arg1, Arg2)
 maximize(Arg1, Arg2, Arg3)