fd_domain([A, B, C], 0, 9), (A**(B+C)) #= ((A**B)*(A**C)).
多分いくつかの解決策?大丈夫そうです;P特定のエラーが発生しています:
uncaught exception: error(instantiation_error,(#=)/2)
電力関数には制限があるようです。GNU Prolog doc wie で次を見つけます。
9.6.1 FD 算術式
http://www.gprolog.org/manual/gprolog.html#htoc329
エラー状態がリストされていること:
サブ式の形式が _ ** E であり、E が変数のインスタンス化エラーであるエラー
さよなら
YAP または SWI では、library(clpfd)
整数の累乗も許可する which を使用できます。ただし、伝播はそれほど強力ではありません。
?- use_module(ライブラリ(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, C で 0..9、 B+C#=_C, 0..9 の B、 _B*_A#=_D, _C in 0..18 ?- abs(X) #=< 7^7^7 . X in -37598235267....
間隔は 2^32 や 2^64 のような機械語サイズに制限されないことに注意してください。