私の意図は、Prolog で推移性の簡単な例を (自分用に) 実装することでした。
これらは私の事実です:
trust_direct(p1, p2).
trust_direct(p1, p3).
trust_direct(p2, p4).
trust_direct(p2, p5).
trust_direct(p5, p6).
trust_direct(p6, p7).
trust_direct(p7, p8).
trust_direct(p100, p200).
私はこの述語を書いて、 trusts かどうかを確認Aしました。CBCAB
trusts(A, B) :-
trust_direct(A, B).
trusts(A, C) :-
trusts(A, B),
trusts(B, C).
述語はたとえばtruefortrusts(p1, p2)またはを返しますが、すでに を返しています。trusts(p1, p5)trusts(p5, p6)ERROR: Out of local stack
Prolog はスタックをこれほど速くフラッディングしますか?
または、私のアイデア/実装がtrusts悪い/無駄なシステムメモリですか?