Правильное определение «атома» в Прологе и логическом программировании
Я разместил этот вопрос на форуме SWI Prolog Discourse и получил несколько полезных комментариев, но, возможно, люди здесь тоже могут иметь какие-то идеи по этой теме.
Я несколько не понимаю, как использовать слово «атом» в статье, которую мы пишем.
(1) В Прологе атом называется «Текстовой константой. Используется как имя для составных терминов, для представления констант или текста. ». Смотрите здесь . Соответственно эти атомы: john
, grandparent
и т.д.
(2) В текстах о логическом программировании, например, Ригуцци (2018) и Барал и Гельфонд (1994) , «атомы» называются терминами с формой p(t1, t2, ..., tn)
, где t
s - это термины и p
является предикатным символом. Это соответствует использованию «атома» в классической логике первого порядка.
Правильно ли я предполагаю, что (1) - правильное определение для «атома», когда речь идет о Прологе, и что (2) - правильное определение для «атома», когда речь идет о логическом программировании? Я думаю, что причина моего замешательства в том, что я думаю о Прологе как о примере логического программирования.
Ура / JC
ИЗМЕНИТЬ 2020-08-18 ******************************************* **
Было довольно сложно объяснить унификацию, используя терминологию LP; я сделал попытку.
Унификация с типичной терминологией Пролога:
- Атомы, числа, переменные и соединения - это термины
- Atom = строка, начинающаяся со строчной буквы
- Число = число
- Переменная = строка, начинающаяся с заглавной буквы
- Compound = p (t1, t2, ..., tn), где p - предикатный символ, а ts - термы.
Объединение:
- Два атома объединяются, если они одинаковы
- Два числа объединяются, если они одинаковы
- Переменная объединяется с любым термином
- Два соединения объединяются, если (1) они имеют одинаковое имя, (2) одинаковое количество аргументов, (3) все их аргументы объединяются, (4) их переменные могут быть инстанциированы последовательно.
Унификация с типичной терминологией LP:
- Константы, переменные и функции - это термины
- Константа = строка, которая начинается со строчной буквы или цифры
- Переменная = строка, начинающаяся с заглавной буквы
- Function = f (t1, t3, ..., tn), где f - символ функции, а t - члены
- Атомарная формула = p (t1, t2, ..., tn), где p - предикатный символ, а t - термины
Объединение:
- Две константы объединяются, если они одинаковы
- Переменная объединяется с любым термином
- Две атомарные формулы или две функции объединяются, если (1) они имеют одинаковое имя, (2) одинаковое количество аргументов, (3) все их аргументы объединяются, (4) их переменные могут быть инстанцированы последовательно.
Ответы
Чтобы избежать конфликта имен, вы можете говорить о простых формулах
или положительных литералах, но все эти 3 слова одинаковы:
https://en.wiktionary.org/wiki/prime_formula
https://en.wikipedia.org/wiki/Literal_(mathematical_logic)
https://en.wikipedia.org/wiki/Atomic_formula