fd_domain([A, B, C], 0, 9), (A**(B+C)) #= ((A**B)*(A**C)).
也许一些解决方案?似乎还可以;P 我收到了那个特定的错误:
uncaught exception: error(instantiation_error,(#=)/2)
幂函数似乎有局限性。在 GNU Prolog 文档中找到:
9.6.1 FD算术表达式
http://www.gprolog.org/manual/gprolog.html#htoc329
列出了错误情况:
错误
子表达式的形式为 _ ** E 和 E 是变量 instanceation_error
再见
在 YAP 或 SWI 中,您可以使用library(clpfd)
which 也允许整数取幂。然而,传播不是很强。
?-使用模块(库(clpfd))。 ?- [A,B,C] ins 0..9, A^(B+C) #= A^B*A^C。 0..9 中的 A, A^C#=_A, A^B#=_B, A^_C#=_D, 0..9 中的 C, B+C#=_C, B 在 0..9 中, _B*_A#=_D, _C 在 0..18 ?- abs(X) #=< 7^7^7。 X在-37598235267....
请注意,间隔不限于机器字长,如 2^32 或 2^64。