#const n = 100. 1{num(1..n)}1. dom(1..n). $domain(0..n*n). number(N) $> 0 :- dom(N). number(N) $<= n :- dom(N). number(N) $< number(N+1) :- dom(N), N < n, num(M), N < M. number(N) $== n :- dom(N), num(M), N > M. sq(N) $== number(N) * number(N) :- num(M), dom(N), N <= M. sq(N) $== 0 :- num(M), dom(N), N > M. summe(0) $== 0. summe(X) $== sq(X) + summe(X-1) :- num(M), dom(X), X<=M. summe(X) $== sq(X) + summe(X-1) :- num(M), dom(X), X>M. summe(N) $== n*n :- num(N). #maximize [num(X) : dom(X) = X]. #hide dom/1.