Если расставить логические значения по Брусенцову:Shaos wrote:В данном случае нам проще раздать значения таким образом:Mac Buster wrote: Вообще третье состояние не совсем не определено. Совершенно точно известно, что это "не истина" и "не ложь".
P - истина (true в терминах Пролога)
O - неизвестно (unknown)
N - ложь (fail в терминах Пролога)
Мы можем ввести оператор \ обозначающий отрицание, который превращал бы истину в ложь, ложь в истину, а неизвестность оставлял бы неизвестностью
Запятая (,) обозначающая в обычном Прологе И в нашем случае не может быть заменена на троичный эквивалент MIN, вместо этого предлагается следующая таблица истинности для И в ПРОТЕРЛОГе:
\ N O P
N N O N
O O O O
P N O P
расшифровывается так - если хотя бы один из аргументов неизвестность, то результат неизвестен и если все аргументы истина, то результат - истина
Точка с запятой (;) обозначающая в обычном Прологе ИЛИ в нашем случае не может быть заменена на троичный эквивалент MAX, вместо этого предлагается следующая таблица истинности для ИЛИ в ПРОТЕРЛОГе:
\ N O P
N N N P
O N O P
P P P P
расшифровывается так - если хотя бы один из аргументов правда, то результат считать правдой, если аргументы принимают значения ложь и неизвестность, то результат - ложь, и, наконец, если все аргументы неизвестность, то результат неизвестен (неопределен)
P - истина (true в терминах Пролога)
O - ложь (fail в терминах Пролога)
N - неизвестно (unknown)
то мои таблицы получаются аналогичными MIN (И) и MAX (ИЛИ)