31 lines
701 B
Prolog
31 lines
701 B
Prolog
% Issue 2632
|
|
|
|
% Repro for cycle detection crash
|
|
:- use_module(library(lists)).
|
|
:- use_module(library(clpz)).
|
|
:- use_module(library(error)).
|
|
:- use_module(library(lambda)).
|
|
:- use_module(library(debug)).
|
|
|
|
clpz:monotonic.
|
|
|
|
q_r(T/N, T:U) :- 0 #=< #T, 0 #=< #U, #N #= T + U.
|
|
|
|
qs_Ts_Us(Qs, ΣTs, ΣUs) :-
|
|
maplist(\Q^T^U^(q_r(Q, T:U)), Qs, Ts, Us),
|
|
intlist_partsums(Ts, ΣTs),
|
|
intlist_partsums(Us, ΣUs).
|
|
|
|
%% Utility predicates used above:
|
|
|
|
intlist_partsums([X|Xs], [X|Ss]) :-
|
|
intlist_partsums_acc(Xs, Ss, X).
|
|
|
|
intlist_partsums_acc([], [], _).
|
|
intlist_partsums_acc([X|Xs], [S|Ss], A) :-
|
|
#S #= #X + #A,
|
|
intlist_partsums_acc(Xs, Ss, S).
|
|
|
|
test_b :-
|
|
once(qs_Ts_Us(_, [1,3], [5,9])).
|