test(2^N-T) :- length(_,N), N > 17, BN is 2 ^ N, length(L, BN), statistics(runtime,[T0|_]), t(L), statistics(runtime,[T1|_]), T is T1 - T0. call_with_occurs_check(Goal) :- call_cleanup((set_prolog_flag(occurs_check,true), Goal), set_prolog_flag(occurs_check, false)). t(L) :- unify_with_occurs_check(L,V), V \= [].