В YAP или SWI вы можете использовать library(clpfd)
, что также допускает целочисленное возведение в степень. Однако распространение не очень сильное.
?- <b>use_module(library(clpfd)).</b>
?- <b>[A,B,C] ins 0..9, A^(B+C) #= A^B*A^C.</b>
A in 0..9,
A^C#=_A,
A^B#=_B,
A^_C#=_D,
C in 0..9,
B+C#=_C,
B in 0..9,
_B*_A#=_D,
_C in 0..18
?- <b>abs(X) #=< 7^7^7</b>.
X in -37598235267....
Обратите внимание, что интервалы не ограничиваются машинными словами, такими как 2 ^ 32 или 2 ^ 64.