Почему объединение так важно для механизмов вывода?


17

Я сам изучаю Автоматизированное доказательство теорем / SMT-решатели / Помощники по проверке и выкладываю серию вопросов о процессе, начиная здесь .

Я продолжаю читать об Алгоритме Объединения .

  • Что это такое и почему это так важно для двигателей вывода ?
  • Почему это так важно для информатики?

Ответы:


11

Унификация является настолько фундаментальным понятием в информатике, что, возможно, мы даже воспринимаем это как должное. Каждый раз, когда у нас есть правило, уравнение или шаблон, и мы хотим применить его к некоторым данным, унификация используется, чтобы специализировать правило на данных. Или, если мы хотим объединить два общих, но частично совпадающих правила, объединение предоставляет нам наиболее общее объединенное правило. Объединение лежит в основе

  • Теорема доказатели и помощники доказательства, в том числе некоторые из них на основе объединения более высокого порядка.
  • Реализация Пролога (как Резолюция).
  • Алгоритмы вывода типов.
  • Компьютерная лингвистика / обработка естественного языка.
  • Термин переписывания систем, таких как Мод, который может быть использован в качестве основы семантики языка программирования.
  • Дедуктивные базы данных.
  • Экспертные системы или, в более общем смысле, искусственный интеллект.
  • Системы компьютерной алгебры.
  • Сопоставление с образцом в функциональных языках (по крайней мере, частично ... только сопоставление).
  • Некоторые подходы разбора.
  • Некоторые языки запросов, особенно с использованием семантической паутины.

8

Корректоры, такие как Изабель / HOL, работают на синтаксическом уровне в логическом исчислении. Представьте, что у вас есть правило modus ponens (MP)

P→Q,P ⟹ Q

и доказательство цели

(a∨б)→(с∧d),a∨б ⟹!с∧d

Мы, люди, сразу же видим, что это следует за modus ponens, но машина должна соответствовать цели, чтобы управлять синтаксически (независимо от того, делаете ли вы apply rule mpили apply simp), и это то, что делает объединение. Алгоритм находит с и , создает экземпляр правила и применяет его.φ ( P ) = a ∨ b φ ( Q ) = c ∧ dφφ(п)знак равноa∨бφ(Q)знак равнос∧d

Хорошая вещь о методах помощников, как simpсейчас, заключается в том, что если ваша цель

(a∨б)→(с∧d),a ⟹!d

что они найдут подходящую последовательность применений правил MP, и с совместимыми унификациями для соответствующих шагов и решат поставленную задачу.п∧Q⟹пп⟹п∨Q


Обозначение: С набор логических формул, обозначенияΓзнак равно{φ1,...,φN}

Γ⟹ψ

означает следующее:

Если я вывел / доказал все формулы в (то есть они действительны ), то это правило утверждает, что также допустимо.Γψ

В некотором смысле правило является последним шагом в (длинном) доказательстве . Доказательства - это не что иное, как цепочки таких приложений правил.Γ⟹ψψ

Обратите внимание, что правила обычно содержат схематические переменные ( и выше), которые могут быть заменены произвольными формулами, если одна и та же переменная заменяется на одну и ту же формулу во всех случаях; Результатом этого формата является конкретный экземпляр правила (или интуитивно понятный шаг проверки). Эта замена выше обозначена которая была найдена объединением.пQφ

Часто люди используют вместо .⊨⟹


3
⊨ часто используется для семантики, тогда как это синтаксическая манипуляция, для которой обычно используется . Это может зависеть от сообщества, хотя. ⊢
— Дэйв Кларк

2

Я не думаю, что это важно для вывода двигателей . Однако алгоритм объединения очень полезен для вывода типов . Это два очень разных вида вывода.

Вывод типа важен для информатики, потому что типы важны в теории языков программирования, которая является важной частью информатики. Типы также близки к логике и интенсивно используются в автоматическом доказательстве теорем. Существуют реализации алгоритмов унификации во многих, если не во всех, помощниках по проверке и специалистах по SMT.

Механизмы вывода связаны с искусственным интеллектом, который также важен, но очень отличается. (Я видел связи между обучением и логикой, но это кажется надуманным.)


Я не думаю, что первое предложение действительно; смотри мой ответ.
— Рафаэль

1
Я также не согласен с первым предложением. Решение (специализация унификации) является ядром Пролога, который является одним из наиболее распространенных языков реализации для экспертных систем и других механизмов вывода.
— Дэйв Кларк

@ Рафаэль и Дейв: вы говорите, что алгоритм объединения непосредственно используется в механизмах логического вывода?
— Джмад

@jmad: Я не уверен , что есть алгоритм объединения, и я также не уверен , какие системы называются «логический вывод». Я знаю, что унификация широко используется везде, где появляется логика и / или формальная семантика; см. ответ Дэйва для списка.
— Рафаэль

@ Рафаэль: это в значительной степени проблема, которую я хотел решить: кажется, что механизмы вывода - это не вывод, который я знаю о типе и логике.
— Джмад
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.