Definisi yang tepat dari "atom" dalam Prolog dan Pemrograman Logika

Aug 15 2020

Saya memposting pertanyaan ini di forum Wacana Prolog SWI dan mendapat beberapa komentar yang berguna, tetapi mungkin orang-orang di sini mungkin juga memiliki beberapa ide tentang topik ini.

Saya agak bingung bagaimana menggunakan kata “atom” dalam makalah yang kami tulis.

(1) Dalam Prolog, sebuah atom dikatakan sebagai “Konstanta tekstual. Digunakan sebagai nama untuk istilah majemuk, untuk mewakili konstanta atau teks. ”. Lihat disini . Dengan demikian ini adalah atom: john, grandparent, dll

(2) Dalam teks tentang logika pemrograman, misalnya Riguzzi (2018) dan Baral dan Gelfond (1994) , "atom" dikatakan istilah dengan bentuk p(t1, t2, ..., tn), di mana ts adalah istilah dan psimbol predikat. Ini sesuai dengan penggunaan "atom" dalam logika orde pertama klasik.

Apakah saya benar dalam mengasumsikan bahwa (1) adalah definisi yang tepat untuk "atom" ketika berbicara tentang Prolog, dan bahwa (2) adalah definisi yang tepat untuk "atom" ketika berbicara tentang pemrograman logika? Saya pikir alasan kebingungan saya adalah karena saya menganggap Prolog sebagai contoh pemrograman logika.

Ceria / JC

EDIT 2020-08-18 ******************************************** **

Agak menantang untuk menjelaskan penyatuan saat menggunakan terminologi LP; saya mencoba.

Penyatuan dengan terminologi Prolog tipikal:

  • Atom, bilangan, variabel, dan senyawa adalah suku-suku
  • Atom = string yang dimulai dengan huruf kecil
  • Angka = angka
  • Variabel = string yang diawali dengan huruf kapital
  • Senyawa = p (t1, t2, ..., tn) di mana p adalah simbol predikat dan ts adalah suku-suku.

Penyatuan:

  • Dua atom bersatu jika keduanya sama
  • Dua angka bersatu jika sama
  • Variabel menyatu dengan semua jenis istilah
  • Dua senyawa bersatu jika (1) memiliki nama yang sama, (2) jumlah argumen yang sama, (3) semua argumennya bersatu, (4) variabelnya dapat dipakai secara konsisten

Penyatuan dengan terminologi LP tipikal:

  • Konstanta, variabel, dan fungsi adalah suku-suku
  • Constant = string yang dimulai dengan huruf kecil atau angka
  • Variabel = string yang dimulai dengan huruf besar
  • Fungsi = f (t1, t3, ..., tn) di mana f adalah simbol fungsi dan ts adalah suku-suku
  • Rumus atom = p (t1, t2, ..., tn) di mana p adalah simbol predikat dan ts adalah istilah

Penyatuan:

  • Dua konstanta bersatu jika keduanya sama
  • Variabel menyatu dengan semua jenis istilah
  • Dua rumus atom, atau dua fungsi, bersatu jika (1) memiliki nama yang sama, (2) jumlah argumen yang sama, (3) semua argumennya bersatu, (4) variabelnya dapat dipakai secara konsisten

Jawaban

MostowskiCollapse Aug 15 2020 at 20:44

Untuk menghindari bentrokan nama, Anda dapat berbicara tentang rumus utama
atau literal positif, tetapi ketiganya sama:

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

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

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