Właściwa definicja „atomu” w Prologu i Programowaniu Logicznym

Aug 15 2020

Opublikowałem to pytanie na forum dyskursu SWI Prolog i otrzymałem kilka przydatnych komentarzy, ale być może ludzie tutaj również mogą mieć jakieś pomysły na ten temat.

Nie wiem, jak użyć słowa „atom” w artykule, który piszemy.

(1) W Prologu o atomie mówi się, że jest „stałą tekstową. Używany jako nazwa terminów złożonych, do reprezentowania stałych lub tekstu. ”. Zobacz tutaj . W związku z tym są to atomy: john, grandparentitp

(2) W tekstach o programowaniu logicznym, np. Riguzzi (2018) oraz Baral i Gelfond (1994) , „atomy” są określane jako terminy z formą p(t1, t2, ..., tn), gdzie ts są terminami i psą symbolem predykatu. Odpowiada to użyciu „atomu” w klasycznej logice pierwszego rzędu.

Czy mam rację, zakładając, że (1) jest poprawną definicją „atomu”, kiedy mówię o Prologu, a (2) jest właściwą definicją „atomu”, kiedy mówimy o programowaniu logicznym? Myślę, że powodem mojego zamieszania jest to, że myślę o Prologu jako o przykładzie programowania logicznego.

Pozdrawiam / JC

EDYCJA 2020-08-18 ******************************************** **

Wyjaśnienie unifikacji przy używaniu terminologii LP było dość trudne; podjąłem próbę.

Ujednolicenie z typową terminologią Prologu:

  • Atomy, liczby, zmienne i związki to terminy
  • Atom = ciąg zaczynający się od małej litery
  • Liczba = liczba
  • Zmienna = ciąg zaczynający się od dużej litery
  • Związek = p (t1, t2, ..., tn), gdzie p jest symbolem predykatu, a ts są wyrażeniami.

Zjednoczenie:

  • Dwa atomy jednoczą się, jeśli są takie same
  • Dwie liczby jednoczą się, jeśli są takie same
  • Zmienna łączy się z dowolnym rodzajem terminu
  • Dwa związki zunifikują się, jeśli (1) mają tę samą nazwę, (2) tę samą liczbę argumentów, (3) wszystkie ich argumenty są ujednolicone, (4) ich zmienne mogą być konsekwentnie tworzone

Ujednolicenie z typową terminologią LP:

  • Stałe, zmienne i funkcje to terminy
  • Stała = ciąg rozpoczynający się od małej litery lub liczby
  • Zmienna = ciąg zaczynający się od dużej litery
  • Funkcja = f (t1, t3, ..., tn), gdzie f jest symbolem funkcji, a ts są wyrazami
  • Wzór atomowy = p (t1, t2, ..., tn), gdzie p jest symbolem predykatu, a ts są wyrażeniami

Zjednoczenie:

  • Dwie stałe łączą się, jeśli są takie same
  • Zmienna łączy się z dowolnym rodzajem terminu
  • Dwie formuły atomowe lub dwie funkcje ujednolicają się, jeśli (1) mają tę samą nazwę, (2) tę samą liczbę argumentów, (3) wszystkie ich argumenty są ujednolicone, (4) instancje ich zmiennych mogą być konsekwentnie tworzone

Odpowiedzi

MostowskiCollapse Aug 15 2020 at 20:44

Aby uniknąć konfliktu nazw, możesz mówić o formułach pierwszych
lub dodatnich literałach, ale te 3 są takie same:

https://en.wiktionary.org/wiki/prime_formula

https://en.wikipedia.org/wiki/Literal_(mathematical_logic)

https://en.wikipedia.org/wiki/Atomic_formula