Есть ли способ сказать ∃! в прологе?

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

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

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

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

Спасибо.


person omega    schedule 06.04.2013    source источник


Ответы (1)


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

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

Вот демонстрация ideone.

person Sergey Kalinichenko    schedule 06.04.2013