#const lasttime=1. bucket(a;b). %amount(1..1). amount(1..2). time(0..lasttime). volume(a,0) $== 0. volume(b,0) $== 1. down(X,T) :- volume(X,T) $> volume(Y,T), bucket(X;Y), time(T). up(X,T) :- volume(X,T) $< volume(Y,T), bucket(X;Y), time(T). balance(T) :- volume(X,T) $== volume(Y,T), bucket(X;Y), X != Y, time(T). volume(B,T+1) $== volume(B,T) + A :- pour(B,T,A), bucket(B), time(T), T=0 :- bucket(B), time(T). %volume(B,T) $<10 :- bucket(B), time(T). $domain(0..100). #hide bucket/1. #hide time/1.