% first line :- use_module(library(clpfd)). ceiled_square_root(0, 0). ceiled_square_root(N0, Root) :- N1 #= N0 - 1, Max in 0..N1, R0^2 #= Max, Root #= Root0 + 1, fd_sup(R0, Root0). % 1 % 2 % 3 % 4 almost empty lines; next line is: line 15 %?- time(ceiled_square_root(2^10000, R)).