2013-04-06 1 views
2

В прологе есть ли способ сказать «существует ровно один» (∃!)? Я думал о делать что-то вродеЕсть ли способ сказать ∃! в прологе?

% a predicate which is proven true if there is only one tall person 
only_one_tall() :- is_tall(X), is_tall(Y), X\=Y. 

, а затем отрицая все это. Но я не думаю, что это сработает.

Кто-нибудь знает?

Спасибо.

ответ

2

Один из способов получения состояния, как, что в стандартном Прологе состоит в следующем:

only_one_tall() :- findall(X, is_tall(X), List), length(List, 1). 

Вот demo on ideone.