Definição adequada de "átomo" em Prolog e Programação Lógica

Aug 15 2020

Eu postei esta pergunta no fórum SWI Prolog Discourse e recebi alguns comentários úteis, mas talvez as pessoas aqui também possam ter algumas idéias sobre este tópico.

Estou um tanto confuso sobre como usar a palavra “átomo” em um artigo que estamos escrevendo.

(1) Em Prolog, um átomo é considerado uma “constante textual. Usado como nome para termos compostos, para representar constantes ou texto. ”. Veja aqui . Por conseguinte estas são átomos de: john, grandparent, etc.

(2) Em textos sobre programação lógica, por exemplo, Riguzzi (2018) e Baral e Gelfond (1994) , “átomos” são chamados de termos com a forma p(t1, t2, ..., tn), onde os ts são termos e pé um símbolo predicado. Isso corresponde ao uso de “átomo” na lógica clássica de primeira ordem.

Estou correto em assumir que (1) é a definição apropriada para “átomo” quando falamos sobre Prolog, e que (2) é a definição apropriada para “átomo” quando falamos sobre programação lógica? Acho que o motivo da minha confusão é que penso no Prolog como uma instância de programação lógica.

Saúde / JC

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

Foi um pouco desafiador explicar a unificação ao usar a terminologia LP; eu fiz uma tentativa.

Unificação com terminologia Prolog típica:

  • Átomos, números, variáveis ​​e compostos são termos
  • Atom = string que começa com uma letra minúscula
  • Número = um número
  • Variable = string que começa com uma letra maiúscula
  • Composto = p (t1, t2, ..., tn) onde p é um símbolo de predicado e ts são termos.

Unificação:

  • Dois átomos se unem se forem iguais
  • Dois números se unificam se forem iguais
  • Uma variável se une a qualquer tipo de termo
  • Dois compostos se unificam se (1) eles têm o mesmo nome, (2) o mesmo número de argumentos, (3) todos os seus argumentos se unificam, (4) suas variáveis ​​podem ser instanciadas de forma consistente

Unificação com terminologia LP típica:

  • Constantes, variáveis ​​e funções são termos
  • Constante = uma string que começa com uma letra minúscula ou um número
  • Variável = uma string que começa com uma letra maiúscula
  • Função = f (t1, t3, ..., tn) onde f é um símbolo de função e os ts são termos
  • Fórmula atômica = p (t1, t2, ..., tn) onde p é um símbolo de predicado e os ts são termos

Unificação:

  • Duas constantes se unificam se forem iguais
  • Uma variável se une a qualquer tipo de termo
  • Duas fórmulas atômicas, ou duas funções, se unificam se (1) elas têm o mesmo nome, (2) o mesmo número de argumentos, (3) todos os seus argumentos se unificam, (4) suas variáveis ​​podem ser instanciadas de forma consistente

Respostas

MostowskiCollapse Aug 15 2020 at 20:44

Para evitar o conflito de nomes, você pode falar sobre fórmulas primárias
ou literais positivos, mas esses três são todos iguais:

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

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

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