2017-01-25 5 views
0

指定されたファクトを使用して使用できる真の述語の数を制限できる特定の方法はありますか?真の述語の数をカウントして制限する

私は合計(2)を持っています。事実として。 これはうまくいくと思いました:

:合計(N)、#count {x:something_to_limit(x)} = K、K = Nです。

しかし、これは、Nは任意の助けを大幅に高く評価されるであろう:)

答えて

2

x:something_to_limit(x)xである2

に等しくなる指定の合計(2)実際にsomething_to_limit述語の数を限定するものではありません定数シンボルの場合は、変数Xを使用します。制約は、

:- total(N), #count{X:something_to_limit(X)} = K, K=N. 

が有効です。

+1

これにより、正確に2つの定数(total(2))に対して述語something_to_limitが真であるすべての回答セットが削除されます。厳密に2つの原子が真である解を得たいなら、 '#count'の前に' not'を追加する必要があります。 –

関連する問題