:- load_files( [best,abcde,cond], [silent(true),if(not_loaded)]). learn(W,A) --> stagger(50,W,A). stagger(0,_,_) --> []. stagger(N0,W,A) --> {N is N0 - 1}, stagger1(W,A),!,stagger(N,W,A). asList([],[]). asList([H=X0|T0],[H=X|T]) :- asList1(X0,X), asList(T0,T). asList1([H|T],[H|T]) :- !. asList1(H ,[H] ). stagger1(W,A0,B0,B) :- print(7),nl, pick2(B0,_=One0,_=Two0), print(8),nl, asList(One0,One), asList(Two0,Two), print(9),nl, append(One,Two,Three), print(4),nl, combine(Three,Four), print(5),nl, (instances(Four,W,Instances) -> print(3),nl, abcdes(Instances,A0,A), balance(A,Bal), hash_term(Four,H), Bal1 is Bal + (H mod 100)/1000000, best(Bal1=Four,X,B0,B), print(X) ; print(-),nl, print(one0 = One0),nl, print(two0 = Two0),nl, print(one = One),nl, print(two = Two),nl, print(three = Three),nl, print(four = Four),nl, B=B0 ). instances([H|T],W,L) :- instances1(H,W,L0), instances2(T,W,L0,L), L=[_|_]. instances2([],_,L,L). instances2([Var=Details|Rest],W,L0,L ) :- instances1(Var=Details,W,L1), intersection(L0,L1,L2), instances2(Rest,W,L2,L). instances1(Var=Range,W,I) :- rangeUnion(Range,Var,W,[],I). rangeUnion([],_,_,X,X). rangeUnion([H|T],Var,W,B4,Out) :- wme_(independentRange,H*Var=Details,W), union(B4,Details,Temp), rangeUnion(T,Var,W,Temp,Out).