Definição adequada de "átomo" em Prolog e Programação Lógica
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 t
s 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
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