5. Тому, кто очень общителен, всегда можно верить.
Если читатели попробуют «с ходу» сказать, какое заключение следует из этих посылок, то они тут же поймут, что сделать это практически невозможно. Поэтому будем двигаться постепенно, выполняя все необходимые в силлогистике шаги. Постепенность весьма важна, ибо она позволит впоследствии сделать из анализа этого процесса важные выводы для автоматизации вывода рассуждений. Прежде всего преобразуем все посылки сорита в нормальную форму.
1. Всякий, кто нарушает свои обещания, есть не заслуживающий доверия.
2. Всякий любитель выпить есть человек очень общительный.
3. Всякий, кто выполняет свои обещания, есть человек честный.
4. Всякий трезвенник не есть ростовщик.
5. Всякий общительный человек есть человек, заслуживающий доверия.
Обратим внимание на то, что переход к нормальной форме для посылок требует прежде всего уточнения того, что за универсум объединяет все имеющиеся посылки. Каков он для нашего сорита? О каких сущностях идет в посылках речь? По-видимому, общей сущностью для всех, о ком говорится в посылках сорита, является сущность с именем «люди», как это было и в предшествующем сорите. Заметим, что если мы не хотим оперировать с «отрицательными классами» сущностей, то надо провести дальнейшую нормализацию посылок, ибо в силлогистике Аристотеля должно неукоснительно выполняться правило, согласно которому при
Итак, девять классов сущностей вместо полагающихся шести. Какие из классов можно исключить из рассмотрения? Анализируя семантику имен классов, можно прийти к тому, что имеют место соотношения:
Сохраним все высказывания, в которые не входят классы
На рис. 18 показана общая структура системы, позволяющей получать силлогистические выводы. Четыре блока системы выполняют следующие функции. Новые факты, поступающие в систему, попадают в лингвистический блок, который преобразует их в нормальную форму. Если вспомнить первоначальную форму посылок в сорите о ростовщиках и любителях выпить, то становится понятным, что работа лингвистического блока не столь проста. В его задачу входит не только «навешивание» кванторов «всякий» и «некоторые», но и вычленение имен классов сущностей, а также освобождение высказываний от тех слов, которые не влияют на суть той информации, которая в высказывании содержится. Лингвистический блок должен определить, говорит ли высказывание о некоторой единичной сущности или о совокупности таких сущностей.
Рис. 18.
Наконец, в задачу лингвистического блока входит расшифровка входного сообщения. Эти сообщения могут быть двух типов: факты для пополнения базы фактов системы и факты, истинность которых хотелось бы установить. В первом случае факт после его перевода в нормальную форму передается в базу фактов, а во втором – поступает в блок формирования заключения, где он выступает в качестве задания на вывод.
Значительные проблемы возникают при исключении омонимии в названиях классов сущностей. Лингвистический блок должен, например, установить, что в рамках некоторого определенного универсума «люди» имена «трезвенники» и «те, кто не пьют» относятся к одному и тому же классу сущностей. Установление подобных соотношений невозможно без учета специфики той проблемной области, к которой относятся силлогистические утверждения. В памяти лингвистического блока должна храниться достаточная информация о возможных преобразованиях имен классов сущностей.
Если очередной факт, переведенный в нормальную форму, поступает в базу фактов, то прежде чем занять в ней свое место, он подвергается проверке с помощью процедур, встроенных в базу фактов. Сначала проверяется, не содержится ли такой же факт в базе. Если подобный факт уже есть, то он не дублируется. Затем проверяется, не противоречит ли вновь поступивший факт тем, которые уже хранятся в базе фактов. Противоречивыми являются пары, отмеченные крестиком в табл. 2.
Таблица 2
Они противоречивы тогда, когда в обоих высказываниях речь идет об одинаковых классах сущностей
Поэтому если, например, на вход базы фактов поступил факт
Какие решения принимает система, если она обнаруживает противоречие между вновь поступившим фактом и теми, которые до этого хранились в базе фактов? Какому из двух выявившихся противоречивых фактов система должна верить?
На эти вопросы практически нет ответа. Возможные альтернативы: хранение всех фактов при условии, что противоречивые факты относятся к различным возможным мирам; исключение этой пары фактов из базы фактов, так как в системе нет средств для определения предпочтительности истинности