Definición adecuada de "átomo" en Prolog and Logic Programming

Aug 15 2020

Publiqué esta pregunta en el foro SWI Prolog Discourse y obtuve algunos comentarios útiles, pero tal vez la gente de aquí también tenga algunas ideas sobre este tema.

Estoy algo confundido acerca de cómo usar la palabra "átomo" en un artículo que estamos escribiendo.

(1) En Prolog, se dice que un átomo es una “constante textual. Se utiliza como nombre para términos compuestos, para representar constantes o texto ”. Vea aquí . En consecuencia estos son átomos: john, grandparent, etc.

(2) En textos sobre programación lógica, por ejemplo, Riguzzi (2018) y Baral y Gelfond (1994) , se dice que los “átomos” son términos con la forma p(t1, t2, ..., tn), donde la ts son términos y pes un símbolo de predicado. Esto corresponde al uso de "átomo" en la lógica clásica de primer orden.

¿Estoy en lo cierto al suponer que (1) es la definición adecuada de "átomo" cuando se habla de Prolog, y que (2) es la definición adecuada de "átomo" cuando se habla de programación lógica? Creo que una de las razones de mi confusión es que pienso en Prolog como una instancia de programación lógica.

Saludos / JC

EDITAR 2020-08-18 ***************************************** **

Fue un poco difícil explicar la unificación cuando se usa la terminología LP; Hice un intento.

Unificación con la terminología típica de Prolog:

  • Los átomos, números, variables y compuestos son términos
  • Átomo = cadena que comienza con una letra minúscula
  • Número = un número
  • Variable = cadena que comienza con una letra mayúscula
  • Compuesto = p (t1, t2, ..., tn) donde p es un símbolo de predicado y ts son términos.

Unificación:

  • Dos átomos se unifican si son iguales
  • Dos números se unifican si son iguales
  • Una variable unifica con cualquier tipo de término
  • Dos compuestos se unifican si (1) tienen el mismo nombre, (2) el mismo número de argumentos, (3) todos sus argumentos se unifican, (4) sus variables pueden instanciarse de manera consistente

Unificación con terminología LP típica:

  • Las constantes, variables y funciones son términos
  • Constante = una cadena que comienza con una letra minúscula o un número
  • Variable = una cadena que comienza con una letra mayúscula
  • Función = f (t1, t3, ..., tn) donde f es un símbolo de función y ts son términos
  • Fórmula atómica = p (t1, t2, ..., tn) donde p es un símbolo de predicado y ts son términos

Unificación:

  • Dos constantes se unifican si son iguales
  • Una variable unifica con cualquier tipo de término
  • Dos fórmulas atómicas, o dos funciones, se unifican si (1) tienen el mismo nombre, (2) el mismo número de argumentos, (3) todos sus argumentos se unifican, (4) sus variables pueden instanciarse de manera consistente

Respuestas

MostowskiCollapse Aug 15 2020 at 20:44

Para evitar el choque de nombres, puede hablar de fórmulas primos
o literales positivos, pero estos 3 son todos iguales:

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

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

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