|
Guest
|
I have problems with writing indexicals in sicstus:
| -? X in 1..3,Y in 0..2,'abs(x)
=y'(X,Y).
1 1 Call: 'abs(x)=y'(_1093,_1124) ?
1 1 Fail: 'abs(x)=y'(_1093,_1124) ?
no
The code behind:
'abs(x)=y'(X,Y)+:
% break1,
(
min(X)>0,
Y in dom(X)
;
max(X)<0,
Y in -min(X)..(-max(X))
;
% min(X)=<0,max(X)>=0
Max is max(-1*fd_min(X),fd_max(X)),
Y in -Max..Max
).
'abs(x)=y'(X,Y)-: true.
'abs(x)=y'(X,Y)+?
% break1,
(
fd_size(X,1);
fd_size(Y,1)
),
(
Y = X
;
Y = -1 * X
).
'abs(x)=y'(X,Y)-?
% break1,
(
fd_size(X,1);
fd_size(Y,1)
),
\+
(
Y = X
;
Y = -1 * X
).
I don't know a good narrowing for the "-:" indexical. Is it compulsory
to write it? |
|
|