O documento descreve as bases de dados em lógica de primeira ordem, como interagir com elas fazendo buscas (queries) por meio de sentenças lógicas em LPO, e como qualquer query que possa ser inferida logicamente pela base de dados será respondida afirmativamente. As bases de dados contêm axiomas com informações básicas e teoremas derivados dos axiomas, e o documento discute técnicas como forward chaining, backward chaining e resolução para realizar inferência nas bases de dados.
O documento descreve uma aula sobre lógica de primeira ordem. Apresenta os elementos básicos da lógica de primeira ordem, incluindo termos, predicados e a gramática formal para construir sentenças. Também explica como modelos e interpretações funcionam na lógica de primeira ordem, diferentemente da lógica proposicional.
O documento descreve buscas informadas e heurísticas de busca. Ele discute estratégias como melhor primeiro, gulosa e A*, que usam heurísticas para guiar a busca em direção a soluções mais promissoras. O documento também discute problemas que podem ocorrer dependendo da heurística escolhida.
O documento discute representação do conhecimento através de ontologias, incluindo taxonomias e herança. Ontologias organizam o conhecimento em categorias hierárquicas e permitem raciocinar sobre objetos classificados. Categorias podem ser representadas como predicados ou objetos. A herança permite que propriedades sejam herdadas por subcategorias.
O documento discute aprendizado supervisionado bayesiano. Ele introduz o aprendizado bayesiano como um método probabilístico e descreve que o aprendizado supervisionado tem como objetivo classificação ou regressão para mapear entradas em saídas com base em exemplos.
O documento discute o tratamento de incerteza em inteligência artificial. Aborda como a probabilidade e a teoria da decisão podem ser usadas para tomar decisões racionais quando os resultados são incertos, levando em conta a probabilidade de cada resultado e sua utilidade segundo as preferências de quem decide.
O documento discute inferência em lógica proposicional, incluindo tipos de provas como verificação de modelos e aplicação de regras de inferência. Ele explica como aplicar regras de inferência como modus ponens e modus tollens para derivar novas sentenças a partir de premissas, formando uma prova.
O documento discute busca como uma abordagem para solução de problemas em inteligência artificial. Explica que os problemas podem ser reduzidos a uma busca em um grafo, onde cada nó representa um estado do mundo e as arestas representam ações que levam de um estado a outro. A solução é um caminho no grafo que leva de um estado inicial a um estado final desejado. Exemplos de tipos de problemas incluem determinísticos e não determinísticos.
O documento descreve uma aula sobre lógica de primeira ordem. Apresenta os elementos básicos da lógica de primeira ordem, incluindo termos, predicados e a gramática formal para construir sentenças. Também explica como modelos e interpretações funcionam na lógica de primeira ordem, diferentemente da lógica proposicional.
O documento descreve buscas informadas e heurísticas de busca. Ele discute estratégias como melhor primeiro, gulosa e A*, que usam heurísticas para guiar a busca em direção a soluções mais promissoras. O documento também discute problemas que podem ocorrer dependendo da heurística escolhida.
O documento discute representação do conhecimento através de ontologias, incluindo taxonomias e herança. Ontologias organizam o conhecimento em categorias hierárquicas e permitem raciocinar sobre objetos classificados. Categorias podem ser representadas como predicados ou objetos. A herança permite que propriedades sejam herdadas por subcategorias.
O documento discute aprendizado supervisionado bayesiano. Ele introduz o aprendizado bayesiano como um método probabilístico e descreve que o aprendizado supervisionado tem como objetivo classificação ou regressão para mapear entradas em saídas com base em exemplos.
O documento discute o tratamento de incerteza em inteligência artificial. Aborda como a probabilidade e a teoria da decisão podem ser usadas para tomar decisões racionais quando os resultados são incertos, levando em conta a probabilidade de cada resultado e sua utilidade segundo as preferências de quem decide.
O documento discute inferência em lógica proposicional, incluindo tipos de provas como verificação de modelos e aplicação de regras de inferência. Ele explica como aplicar regras de inferência como modus ponens e modus tollens para derivar novas sentenças a partir de premissas, formando uma prova.
O documento discute busca como uma abordagem para solução de problemas em inteligência artificial. Explica que os problemas podem ser reduzidos a uma busca em um grafo, onde cada nó representa um estado do mundo e as arestas representam ações que levam de um estado a outro. A solução é um caminho no grafo que leva de um estado inicial a um estado final desejado. Exemplos de tipos de problemas incluem determinísticos e não determinísticos.
O documento discute árvores de decisão e florestas aleatórias. Ele explica que árvores de decisão são uma das formas mais simples de aprendizado de máquina, representando uma sequência de regras "se...então" para classificar ou prever saídas com base em atributos de entrada. O documento também descreve características como nós internos representando testes de atributos e folhas especificando saídas, e discute expressividade e variações de árvores de decisão.
O documento descreve um algoritmo de busca retroativa para resolver problemas de satisfação de restrições, utilizando forward checking e heurísticas como valores restantes mínimos, grau e valor menos restritivo. O algoritmo é demonstrado passo a passo em um exemplo de coloração de grafos, definindo variáveis, valores e propagando escolhas.
O documento discute a avaliação de desempenho de classificadores treinados. Explica que é necessário testar o modelo em um conjunto de dados independente para medir seu desempenho em dados novos. Também apresenta métricas como taxa de erro e curva de aprendizagem para avaliar quantitativamente o modelo.
O documento discute algoritmos genéticos e representação de cromossomos. Ele explica que os cromossomos podem ser representados de várias formas, incluindo binária, valores inteiros e reais. A representação binária é a mais simples, onde o cromossomo consiste de uma sequência de bits. A mutação e o cruzamento ocorrem durante o algoritmo genético para gerar novas soluções.
O documento descreve problemas de satisfação de restrições (CSPs), definidos por um conjunto de variáveis, domínios de valores para cada variável, e restrições sobre combinações de valores de variáveis. Apresenta exemplos de agendamento de aulas e coloração de mapas como CSPs, definindo suas variáveis, domínios e restrições.
O documento descreve os princípios da computação evolutiva e algoritmos genéticos. Ele define computação evolutiva como técnicas que simulam a evolução natural, usando seleção, mutação e reprodução. O documento então explica o processo de seleção, mutação e reprodução em algoritmos genéticos e fornece detalhes sobre sua terminologia e funcionamento.
O documento descreve a regra de Bayes e redes Bayesianas. Ele fornece um exemplo detalhado sobre como calcular a probabilidade de uma mulher ter câncer de mama dado um resultado positivo em um mamograma usando a regra de Bayes. Ele também define brevemente o que são redes Bayesianas, que representam dependências probabilísticas entre variáveis aleatórias através de um grafo direcionado acíclico.
O documento discute estimativas de erro em modelos de aprendizagem de máquina. Explica que o erro esperado no conjunto de teste tende a ser maior que no conjunto de treino, devido ao ajuste do modelo aos dados de treino. Também aborda medidas como viés e variância para avaliar estimadores, e como o erro quadrático médio equilibra ambos para medir o desvio total esperado entre a estimativa e o valor real.
O documento descreve o algoritmo de máquina de vetor de suporte (SVM), explicando como ele busca encontrar o hiperplano separador de margem máxima entre os dados de treinamento de duas classes. O SVM define fronteiras lineares ótimas para dados linearmente separáveis, maximizando a distância entre o hiperplano separador e os exemplos de treinamento mais próximos, chamados de vetores de suporte. O problema é formulado como um problema de otimização para encontrar os parâmetros ω e b que maximizam essa distância de separação.
O documento descreve as redes neurais e o perceptron. Ele explica que as redes neurais se inspiram nos neurônios biológicos e como o perceptron funciona como a unidade básica de uma rede neural, recebendo sinais de entrada e aplicando uma função de ativação. Também discute possíveis funções de ativação como a função degrau e sigmóide e como os pesos das conexões, incluindo o viés, determinam se um perceptron é ativado ou não.
O documento descreve o funcionamento do algoritmo de backward chaining em programação lógica, começando com uma explicação geral do processo de raciocínio de trás para frente a partir de um objetivo. Em seguida, apresenta formalmente o algoritmo de backward chaining, explicando cada parte do processo de forma recursiva para encontrar substituições que satisfaçam a query dada uma base de conhecimento. Por fim, exemplifica o algoritmo em uma base de conhecimento sobre venda de armas.
O documento descreve os passos para executar resolução e encadeamento para frente em lógica de primeira ordem. Primeiro, as expressões lógicas devem ser convertidas para forma clausal sem quantificadores. Em seguida, as variáveis devem ser substituídas durante a resolução usando o processo de unificação. Por fim, a resolução é executada para derivar novas conclusões.
O documento discute arquivos e exceções em Java. Primeiramente, explica que dados de configuração precisam ser salvos em arquivos para serem preservados entre execuções do programa. Em seguida, descreve como objetos da classe File representam caminhos para arquivos e diretórios, e que escrever dados em arquivos requer objetos FileWriter. Por fim, discute que métodos que manipulam arquivos podem lançar exceções IOException, as quais precisam ser capturadas ou declaradas no método.
Este documento discute métodos abstratos e classes abstratas em Java. Explica que métodos abstratos não têm implementação definida na classe abstrata, mas sim nas subclasses, que são obrigadas a implementá-los. Também explica que a existência de pelo menos um método abstrato torna a classe abstrata, impedindo sua instanciação direta. A classe Casa é usada como exemplo de classe abstrata, já que no sistema modelo existem apenas casas quadradas e retangulares.
As três frases são:
1) O documento discute listas ligadas como uma alternativa a arranjos para alocar dinamicamente espaço na memória para novos itens.
2) Listas ligadas permitem adicionar itens de forma simples, sem necessidade de alocar um novo arranjo maior e copiar o conteúdo do anterior.
3) Cada nó de uma lista ligada contém um valor e um ponteiro para o próximo nó, permitindo navegar pela lista de forma flexível.
O documento discute especificadores de acesso em Java e como eles afetam a herança entre classes. Apresenta exemplos de como atributos privados na classe pai não podem ser acessados na classe filha, mesmo que estejam na memória do objeto, e como os construtores this() e super() devem ser a primeira instrução no construtor da classe filha.
O documento discute herança em classes. Foi quebrada a classe AreaCasa em subclasses Casa, CasaQuad e CasaRet. A classe Residência foi modificada para receber uma instância de Casa (superclasse) em vez de AreaCasa, permitindo o uso de CasaQuad e CasaRet. Isso é demonstrado em um exemplo de código.
O documento descreve o algoritmo de ordenação por inserção (insertion sort). Ele ordena um array percorrendo-o de esquerda para direita e inserindo cada novo elemento na posição correta na subparte já ordenada, deslocando os demais elementos para a direita quando necessário. O exemplo demonstra graficamente cada etapa do processo de ordenação de um array.
O documento discute a busca binária em arranjos ordenados. Ele explica que a busca binária divide o arranjo ao meio em cada etapa e descarta metade dos elementos, levando a buscas potencialmente muito mais rápidas do que a busca sequencial. A busca binária para no elemento buscado, no fim do arranjo, ou quando encontrar um elemento maior que o buscado.
Strings em Java são imutáveis. Ao modificar um caractere em um String, na verdade se está criando um novo objeto String. Comparar Strings com == verifica se os objetos são os mesmos na memória, não se o conteúdo é igual.
O documento discute árvores de decisão e florestas aleatórias. Ele explica que árvores de decisão são uma das formas mais simples de aprendizado de máquina, representando uma sequência de regras "se...então" para classificar ou prever saídas com base em atributos de entrada. O documento também descreve características como nós internos representando testes de atributos e folhas especificando saídas, e discute expressividade e variações de árvores de decisão.
O documento descreve um algoritmo de busca retroativa para resolver problemas de satisfação de restrições, utilizando forward checking e heurísticas como valores restantes mínimos, grau e valor menos restritivo. O algoritmo é demonstrado passo a passo em um exemplo de coloração de grafos, definindo variáveis, valores e propagando escolhas.
O documento discute a avaliação de desempenho de classificadores treinados. Explica que é necessário testar o modelo em um conjunto de dados independente para medir seu desempenho em dados novos. Também apresenta métricas como taxa de erro e curva de aprendizagem para avaliar quantitativamente o modelo.
O documento discute algoritmos genéticos e representação de cromossomos. Ele explica que os cromossomos podem ser representados de várias formas, incluindo binária, valores inteiros e reais. A representação binária é a mais simples, onde o cromossomo consiste de uma sequência de bits. A mutação e o cruzamento ocorrem durante o algoritmo genético para gerar novas soluções.
O documento descreve problemas de satisfação de restrições (CSPs), definidos por um conjunto de variáveis, domínios de valores para cada variável, e restrições sobre combinações de valores de variáveis. Apresenta exemplos de agendamento de aulas e coloração de mapas como CSPs, definindo suas variáveis, domínios e restrições.
O documento descreve os princípios da computação evolutiva e algoritmos genéticos. Ele define computação evolutiva como técnicas que simulam a evolução natural, usando seleção, mutação e reprodução. O documento então explica o processo de seleção, mutação e reprodução em algoritmos genéticos e fornece detalhes sobre sua terminologia e funcionamento.
O documento descreve a regra de Bayes e redes Bayesianas. Ele fornece um exemplo detalhado sobre como calcular a probabilidade de uma mulher ter câncer de mama dado um resultado positivo em um mamograma usando a regra de Bayes. Ele também define brevemente o que são redes Bayesianas, que representam dependências probabilísticas entre variáveis aleatórias através de um grafo direcionado acíclico.
O documento discute estimativas de erro em modelos de aprendizagem de máquina. Explica que o erro esperado no conjunto de teste tende a ser maior que no conjunto de treino, devido ao ajuste do modelo aos dados de treino. Também aborda medidas como viés e variância para avaliar estimadores, e como o erro quadrático médio equilibra ambos para medir o desvio total esperado entre a estimativa e o valor real.
O documento descreve o algoritmo de máquina de vetor de suporte (SVM), explicando como ele busca encontrar o hiperplano separador de margem máxima entre os dados de treinamento de duas classes. O SVM define fronteiras lineares ótimas para dados linearmente separáveis, maximizando a distância entre o hiperplano separador e os exemplos de treinamento mais próximos, chamados de vetores de suporte. O problema é formulado como um problema de otimização para encontrar os parâmetros ω e b que maximizam essa distância de separação.
O documento descreve as redes neurais e o perceptron. Ele explica que as redes neurais se inspiram nos neurônios biológicos e como o perceptron funciona como a unidade básica de uma rede neural, recebendo sinais de entrada e aplicando uma função de ativação. Também discute possíveis funções de ativação como a função degrau e sigmóide e como os pesos das conexões, incluindo o viés, determinam se um perceptron é ativado ou não.
O documento descreve o funcionamento do algoritmo de backward chaining em programação lógica, começando com uma explicação geral do processo de raciocínio de trás para frente a partir de um objetivo. Em seguida, apresenta formalmente o algoritmo de backward chaining, explicando cada parte do processo de forma recursiva para encontrar substituições que satisfaçam a query dada uma base de conhecimento. Por fim, exemplifica o algoritmo em uma base de conhecimento sobre venda de armas.
O documento descreve os passos para executar resolução e encadeamento para frente em lógica de primeira ordem. Primeiro, as expressões lógicas devem ser convertidas para forma clausal sem quantificadores. Em seguida, as variáveis devem ser substituídas durante a resolução usando o processo de unificação. Por fim, a resolução é executada para derivar novas conclusões.
O documento discute arquivos e exceções em Java. Primeiramente, explica que dados de configuração precisam ser salvos em arquivos para serem preservados entre execuções do programa. Em seguida, descreve como objetos da classe File representam caminhos para arquivos e diretórios, e que escrever dados em arquivos requer objetos FileWriter. Por fim, discute que métodos que manipulam arquivos podem lançar exceções IOException, as quais precisam ser capturadas ou declaradas no método.
Este documento discute métodos abstratos e classes abstratas em Java. Explica que métodos abstratos não têm implementação definida na classe abstrata, mas sim nas subclasses, que são obrigadas a implementá-los. Também explica que a existência de pelo menos um método abstrato torna a classe abstrata, impedindo sua instanciação direta. A classe Casa é usada como exemplo de classe abstrata, já que no sistema modelo existem apenas casas quadradas e retangulares.
As três frases são:
1) O documento discute listas ligadas como uma alternativa a arranjos para alocar dinamicamente espaço na memória para novos itens.
2) Listas ligadas permitem adicionar itens de forma simples, sem necessidade de alocar um novo arranjo maior e copiar o conteúdo do anterior.
3) Cada nó de uma lista ligada contém um valor e um ponteiro para o próximo nó, permitindo navegar pela lista de forma flexível.
O documento discute especificadores de acesso em Java e como eles afetam a herança entre classes. Apresenta exemplos de como atributos privados na classe pai não podem ser acessados na classe filha, mesmo que estejam na memória do objeto, e como os construtores this() e super() devem ser a primeira instrução no construtor da classe filha.
O documento discute herança em classes. Foi quebrada a classe AreaCasa em subclasses Casa, CasaQuad e CasaRet. A classe Residência foi modificada para receber uma instância de Casa (superclasse) em vez de AreaCasa, permitindo o uso de CasaQuad e CasaRet. Isso é demonstrado em um exemplo de código.
O documento descreve o algoritmo de ordenação por inserção (insertion sort). Ele ordena um array percorrendo-o de esquerda para direita e inserindo cada novo elemento na posição correta na subparte já ordenada, deslocando os demais elementos para a direita quando necessário. O exemplo demonstra graficamente cada etapa do processo de ordenação de um array.
O documento discute a busca binária em arranjos ordenados. Ele explica que a busca binária divide o arranjo ao meio em cada etapa e descarta metade dos elementos, levando a buscas potencialmente muito mais rápidas do que a busca sequencial. A busca binária para no elemento buscado, no fim do arranjo, ou quando encontrar um elemento maior que o buscado.
Strings em Java são imutáveis. Ao modificar um caractere em um String, na verdade se está criando um novo objeto String. Comparar Strings com == verifica se os objetos são os mesmos na memória, não se o conteúdo é igual.
Slides Lição 11, CPAD, A Realidade Bíblica do Inferno, 2Tr24.pptxLuizHenriquedeAlmeid6
Slideshare Lição 11, CPAD, A Realidade Bíblica do Inferno, 2Tr24, Pr Henrique, EBD NA TV, Lições Bíblicas, 2º Trimestre de 2024, adultos, Tema, A CARREIRA QUE NOS ESTÁ PROPOSTA, O CAMINHO DA SALVAÇÃO, SANTIDADE E PERSEVERANÇA PARA CHEGAR AO CÉU, Coment Osiel Gomes, estudantes, professores, Ervália, MG, Imperatriz, MA, Cajamar, SP, estudos bíblicos, gospel, DEUS, ESPÍRITO SANTO, JESUS CRISTO, Com. Extra Pr. Luiz Henrique, de Almeida Silva, tel-What, 99-99152-0454, Canal YouTube, Henriquelhas, @PrHenrique, https://ebdnatv.blogspot.com/
PP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptxLuizHenriquedeAlmeid6
Slideshare Lição 11, Betel, Ordenança para exercer a fé, 2Tr24, Pr Henrique, EBD NA TV, 2° TRIMESTRE DE 2024, ADULTOS, EDITORA BETEL, TEMA, ORDENANÇAS BÍBLICAS, Doutrina Fundamentais Imperativas aos Cristãos para uma vida bem-sucedida e de Comunhão com DEUS, estudantes, professores, Ervália, MG, Imperatriz, MA, Cajamar, SP, estudos bíblicos, gospel, DEUS, ESPÍRITO SANTO, JESUS CRISTO, Comentários, Bispo Abner Ferreira, Com. Extra Pr. Luiz Henrique, 99-99152-0454, Canal YouTube, Henriquelhas, @PrHenrique
1. Inteligência Artificial – ACH2016
Aula 11 – Inferência em Lógica de Primeira
Ordem
Norton Trevisan Roman
(norton@usp.br)
5 de abril de 2019
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 1 / 34
2. Bases em Lógica de Primeira Ordem
Interagindo com uma BC
Fazemos buscas (queries) na base
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 2 / 34
3. Bases em Lógica de Primeira Ordem
Interagindo com uma BC
Fazemos buscas (queries) na base
Feitas por meio de sentenças lógicas em LPO
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 2 / 34
4. Bases em Lógica de Primeira Ordem
Interagindo com uma BC
Fazemos buscas (queries) na base
Feitas por meio de sentenças lógicas em LPO
Qualquer query que possa ser inferida logicamente pela base
de dados será respondida afirmativamente
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 2 / 34
5. Bases em Lógica de Primeira Ordem
Interagindo com uma BC
Fazemos buscas (queries) na base
Feitas por meio de sentenças lógicas em LPO
Qualquer query que possa ser inferida logicamente pela base
de dados será respondida afirmativamente
A BC é composta por:
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 2 / 34
6. Bases em Lógica de Primeira Ordem
Interagindo com uma BC
Fazemos buscas (queries) na base
Feitas por meio de sentenças lógicas em LPO
Qualquer query que possa ser inferida logicamente pela base
de dados será respondida afirmativamente
A BC é composta por:
Axiomas: informação factual básica da qual conclusões
úteis podem ser derivadas
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 2 / 34
7. Bases em Lógica de Primeira Ordem
Interagindo com uma BC
Fazemos buscas (queries) na base
Feitas por meio de sentenças lógicas em LPO
Qualquer query que possa ser inferida logicamente pela base
de dados será respondida afirmativamente
A BC é composta por:
Axiomas: informação factual básica da qual conclusões
úteis podem ser derivadas
Ex: ∀p, f Progenitor(p, f ) ⇔ Prole(f , p); Homem(Pedro); etc
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 2 / 34
8. Bases em Lógica de Primeira Ordem
Interagindo com uma BC
Fazemos buscas (queries) na base
Feitas por meio de sentenças lógicas em LPO
Qualquer query que possa ser inferida logicamente pela base
de dados será respondida afirmativamente
A BC é composta por:
Axiomas: informação factual básica da qual conclusões
úteis podem ser derivadas
Ex: ∀p, f Progenitor(p, f ) ⇔ Prole(f , p); Homem(Pedro); etc
Teoremas: sentenças acarretadas pelos axiomas
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 2 / 34
9. Bases em Lógica de Primeira Ordem
Interagindo com uma BC
Fazemos buscas (queries) na base
Feitas por meio de sentenças lógicas em LPO
Qualquer query que possa ser inferida logicamente pela base
de dados será respondida afirmativamente
A BC é composta por:
Axiomas: informação factual básica da qual conclusões
úteis podem ser derivadas
Ex: ∀p, f Progenitor(p, f ) ⇔ Prole(f , p); Homem(Pedro); etc
Teoremas: sentenças acarretadas pelos axiomas
Não precisam existir na base, bastam os axiomas
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 2 / 34
10. Bases em Lógica de Primeira Ordem
Interagindo com uma BC
Fazemos buscas (queries) na base
Feitas por meio de sentenças lógicas em LPO
Qualquer query que possa ser inferida logicamente pela base
de dados será respondida afirmativamente
A BC é composta por:
Axiomas: informação factual básica da qual conclusões
úteis podem ser derivadas
Ex: ∀p, f Progenitor(p, f ) ⇔ Prole(f , p); Homem(Pedro); etc
Teoremas: sentenças acarretadas pelos axiomas
Não precisam existir na base, bastam os axiomas
Reduzem o custo computacional de derivar novas sentenças
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 2 / 34
11. Lógica de Primeira Ordem
Inferência
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 3 / 34
12. Lógica de Primeira Ordem
Inferência
Como em lógica proposicional
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 3 / 34
13. Lógica de Primeira Ordem
Inferência
Como em lógica proposicional
Uma sentença pode ser inferida de uma BC sse for
verdadeira em toda interpretação na qual a BC é verdadeira
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 3 / 34
14. Lógica de Primeira Ordem
Inferência
Como em lógica proposicional
Uma sentença pode ser inferida de uma BC sse for
verdadeira em toda interpretação na qual a BC é verdadeira
Força bruta está fora de questão
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 3 / 34
15. Lógica de Primeira Ordem
Inferência
Como em lógica proposicional
Uma sentença pode ser inferida de uma BC sse for
verdadeira em toda interpretação na qual a BC é verdadeira
Força bruta está fora de questão
Número enorme (possivelmente ∞) de interpretações
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 3 / 34
16. Lógica de Primeira Ordem
Inferência
Como em lógica proposicional
Uma sentença pode ser inferida de uma BC sse for
verdadeira em toda interpretação na qual a BC é verdadeira
Força bruta está fora de questão
Número enorme (possivelmente ∞) de interpretações
Quantificadores ∀ e ∃
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 3 / 34
17. Lógica de Primeira Ordem
Inferência
Como em lógica proposicional
Uma sentença pode ser inferida de uma BC sse for
verdadeira em toda interpretação na qual a BC é verdadeira
Força bruta está fora de questão
Número enorme (possivelmente ∞) de interpretações
Quantificadores ∀ e ∃
Para ∃ existe skolemização (mais adiante), contudo...
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 3 / 34
18. Lógica de Primeira Ordem
Inferência
Como em lógica proposicional
Uma sentença pode ser inferida de uma BC sse for
verdadeira em toda interpretação na qual a BC é verdadeira
Força bruta está fora de questão
Número enorme (possivelmente ∞) de interpretações
Quantificadores ∀ e ∃
Para ∃ existe skolemização (mais adiante), contudo...
∀ pode mapear a infinitos elementos, dependendo do domı́nio
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 3 / 34
19. Lógica de Primeira Ordem
Inferência
Como em lógica proposicional
Uma sentença pode ser inferida de uma BC sse for
verdadeira em toda interpretação na qual a BC é verdadeira
Força bruta está fora de questão
Número enorme (possivelmente ∞) de interpretações
Quantificadores ∀ e ∃
Para ∃ existe skolemização (mais adiante), contudo...
∀ pode mapear a infinitos elementos, dependendo do domı́nio
Solução: provas
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 3 / 34
20. Lógica de Primeira Ordem – Inferência
Provas
Há versões de primeira ordem para cada técnica
vista em lógica proposicional
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 4 / 34
21. Lógica de Primeira Ordem – Inferência
Provas
Há versões de primeira ordem para cada técnica
vista em lógica proposicional
Forward Chaining, Backward Chaining e Resolução
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 4 / 34
22. Lógica de Primeira Ordem – Inferência
Provas
Há versões de primeira ordem para cada técnica
vista em lógica proposicional
Forward Chaining, Backward Chaining e Resolução
Forward Chaining e Backward Chaining exigem que
a base contenha apenas cláusulas definidas
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 4 / 34
23. Lógica de Primeira Ordem – Inferência
Provas
Há versões de primeira ordem para cada técnica
vista em lógica proposicional
Forward Chaining, Backward Chaining e Resolução
Forward Chaining e Backward Chaining exigem que
a base contenha apenas cláusulas definidas
Disjunções de literais dos quais exatamente um é positivo
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 4 / 34
24. Lógica de Primeira Ordem – Inferência
Provas
Há versões de primeira ordem para cada técnica
vista em lógica proposicional
Forward Chaining, Backward Chaining e Resolução
Forward Chaining e Backward Chaining exigem que
a base contenha apenas cláusulas definidas
Disjunções de literais dos quais exatamente um é positivo
Literais
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 4 / 34
25. Lógica de Primeira Ordem – Inferência
Provas
Há versões de primeira ordem para cada técnica
vista em lógica proposicional
Forward Chaining, Backward Chaining e Resolução
Forward Chaining e Backward Chaining exigem que
a base contenha apenas cláusulas definidas
Disjunções de literais dos quais exatamente um é positivo
Literais
Literais em LPO podem incluir variáveis
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 4 / 34
26. Lógica de Primeira Ordem – Inferência
Provas
Há versões de primeira ordem para cada técnica
vista em lógica proposicional
Forward Chaining, Backward Chaining e Resolução
Forward Chaining e Backward Chaining exigem que
a base contenha apenas cláusulas definidas
Disjunções de literais dos quais exatamente um é positivo
Literais
Literais em LPO podem incluir variáveis
“Amigo(Pedro)” (constante)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 4 / 34
27. Lógica de Primeira Ordem – Inferência
Provas
Há versões de primeira ordem para cada técnica
vista em lógica proposicional
Forward Chaining, Backward Chaining e Resolução
Forward Chaining e Backward Chaining exigem que
a base contenha apenas cláusulas definidas
Disjunções de literais dos quais exatamente um é positivo
Literais
Literais em LPO podem incluir variáveis
“Amigo(Pedro)” (constante)
“Grande(x)” (variável)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 4 / 34
28. Lógica de Primeira Ordem – Inferência
Provas
Em qualquer técnica, expressões com variáveis são
assumidas como universalmente quantificadas
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 5 / 34
29. Lógica de Primeira Ordem – Inferência
Provas
Em qualquer técnica, expressões com variáveis são
assumidas como universalmente quantificadas
Ou seja, todas são naturalmente precedidas por ∀
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 5 / 34
30. Lógica de Primeira Ordem – Inferência
Provas
Em qualquer técnica, expressões com variáveis são
assumidas como universalmente quantificadas
Ou seja, todas são naturalmente precedidas por ∀
“Grande(x)” ≡ “∀x Grande(x)” (literal)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 5 / 34
31. Lógica de Primeira Ordem – Inferência
Provas
Em qualquer técnica, expressões com variáveis são
assumidas como universalmente quantificadas
Ou seja, todas são naturalmente precedidas por ∀
“Grande(x)” ≡ “∀x Grande(x)” (literal)
“Tio(x, y) ⇔ Sobrinho(y, x)” ≡
“∀x, y Tio(x, y) ⇔ Sobrinho(y, x)”
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 5 / 34
32. Lógica de Primeira Ordem – Inferência
Provas
Em qualquer técnica, expressões com variáveis são
assumidas como universalmente quantificadas
Ou seja, todas são naturalmente precedidas por ∀
“Grande(x)” ≡ “∀x Grande(x)” (literal)
“Tio(x, y) ⇔ Sobrinho(y, x)” ≡
“∀x, y Tio(x, y) ⇔ Sobrinho(y, x)”
Começaremos pela resolução, por ser mais geral
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 5 / 34
33. Lógica de Primeira Ordem – Inferência
Resolução
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 6 / 34
34. Lógica de Primeira Ordem – Resolução
Passos
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 7 / 34
35. Lógica de Primeira Ordem – Resolução
Passos
∀x∃y P(x) ⇒ R(x, y)
¬P(x) ∨ R(x, F(x))
1 Converter de LPO para forma clausal
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 7 / 34
36. Lógica de Primeira Ordem – Resolução
Passos
∀x∃y P(x) ⇒ R(x, y)
¬P(x) ∨ R(x, F(x))
1 Converter de LPO para forma clausal
Generalização da Forma Normal
Conjuntiva para LPO
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 7 / 34
37. Lógica de Primeira Ordem – Resolução
Passos
∀x∃y P(x) ⇒ R(x, y)
¬P(x) ∨ R(x, F(x))
1 Converter de LPO para forma clausal
Generalização da Forma Normal
Conjuntiva para LPO
Uma conjunção de disjunções
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 7 / 34
38. Lógica de Primeira Ordem – Resolução
Passos
∀x∃y P(x) ⇒ R(x, y)
¬P(x) ∨ R(x, F(x))
1 Converter de LPO para forma clausal
Generalização da Forma Normal
Conjuntiva para LPO
Uma conjunção de disjunções
Sem quantificadores
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 7 / 34
39. Lógica de Primeira Ordem – Resolução
Passos
∀x∃y P(x) ⇒ R(x, y)
¬P(x) ∨ R(x, F(x))
1 Converter de LPO para forma clausal
Generalização da Forma Normal
Conjuntiva para LPO
Uma conjunção de disjunções
Sem quantificadores
2 Determinar que variáveis substituir por quais quando
da resolução
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 7 / 34
40. Lógica de Primeira Ordem – Resolução
Passos
∀x∃y P(x) ⇒ R(x, y)
¬P(x) ∨ R(x, F(x))
1 Converter de LPO para forma clausal
Generalização da Forma Normal
Conjuntiva para LPO
Uma conjunção de disjunções
Sem quantificadores
2 Determinar que variáveis substituir por quais quando
da resolução
Processo chamado Unificação
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 7 / 34
41. Lógica de Primeira Ordem – Resolução
Passos
∀x∃y P(x) ⇒ R(x, y)
¬P(x) ∨ R(x, F(x))
1 Converter de LPO para forma clausal
Generalização da Forma Normal
Conjuntiva para LPO
Uma conjunção de disjunções
Sem quantificadores
2 Determinar que variáveis substituir por quais quando
da resolução
Processo chamado Unificação
3 Executar a resolução
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 7 / 34
42. Lógica de Primeira Ordem – Resolução
Passos
∀x∃y P(x) ⇒ R(x, y)
¬P(x) ∨ R(x, F(x))
1 Converter de LPO para forma clausal +
Generalização da Forma Normal
Conjuntiva para LPO
Uma conjunção de disjunções
Sem quantificadores
2 Determinar que variáveis substituir por quais quando
da resolução
Processo chamado Unificação
3 Executar a resolução
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 7 / 34
43. Lógica de Primeira Ordem – Resolução
Forma Normal Conjuntiva
Como no caso proposicional, resolução em LPO
também exige que as sentenças estejam na FNC
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 8 / 34
44. Lógica de Primeira Ordem – Resolução
Forma Normal Conjuntiva
Como no caso proposicional, resolução em LPO
também exige que as sentenças estejam na FNC
Conjunção de cláusulas, onde cada cláusula é uma disjunção
de literais
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 8 / 34
45. Lógica de Primeira Ordem – Resolução
Forma Normal Conjuntiva
Como no caso proposicional, resolução em LPO
também exige que as sentenças estejam na FNC
Conjunção de cláusulas, onde cada cláusula é uma disjunção
de literais
Lembrando que literais podem conter variáveis
universalmente quantificadas
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 8 / 34
46. Lógica de Primeira Ordem – Resolução
Forma Normal Conjuntiva
Como no caso proposicional, resolução em LPO
também exige que as sentenças estejam na FNC
Conjunção de cláusulas, onde cada cláusula é uma disjunção
de literais
Lembrando que literais podem conter variáveis
universalmente quantificadas
Também chamada de Forma Clausal
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 8 / 34
47. Lógica de Primeira Ordem – Resolução
Forma Normal Conjuntiva
Como no caso proposicional, resolução em LPO
também exige que as sentenças estejam na FNC
Conjunção de cláusulas, onde cada cláusula é uma disjunção
de literais
Lembrando que literais podem conter variáveis
universalmente quantificadas
Também chamada de Forma Clausal
Também como no caso proposicional, toda sentença
em LPO pode ser convertida em uma sentença
inferencialmente equivalente na FNC
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 8 / 34
48. Lógica de Primeira Ordem – Resolução
Equivalência Inferencial
Duas sentenças são tidas como inferencialmente
equivalentes quando uma for satisfatı́vel sse a
outra for satisfatı́vel também
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 9 / 34
49. Lógica de Primeira Ordem – Resolução
Equivalência Inferencial
Duas sentenças são tidas como inferencialmente
equivalentes quando uma for satisfatı́vel sse a
outra for satisfatı́vel também
Alternativamente, uma será insatisfatı́vel somente quando a
outra também o for
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 9 / 34
50. Lógica de Primeira Ordem – Resolução
Equivalência Inferencial
Duas sentenças são tidas como inferencialmente
equivalentes quando uma for satisfatı́vel sse a
outra for satisfatı́vel também
Alternativamente, uma será insatisfatı́vel somente quando a
outra também o for
A ` B e B ` A
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 9 / 34
51. Lógica de Primeira Ordem – Resolução
Equivalência Inferencial
Duas sentenças são tidas como inferencialmente
equivalentes quando uma for satisfatı́vel sse a
outra for satisfatı́vel também
Alternativamente, uma será insatisfatı́vel somente quando a
outra também o for
A ` B e B ` A
Elas não precisam ser logicamente equivalentes
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 9 / 34
52. Lógica de Primeira Ordem – Resolução
Equivalência Inferencial
Duas sentenças são tidas como inferencialmente
equivalentes quando uma for satisfatı́vel sse a
outra for satisfatı́vel também
Alternativamente, uma será insatisfatı́vel somente quando a
outra também o for
A ` B e B ` A
Elas não precisam ser logicamente equivalentes
Apenas permitem que o mesmo conjunto de inferências seja
feito
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 9 / 34
53. Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 10 / 34
54. Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal
1 Elimine implicações
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 10 / 34
55. Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal
α ⇔ β ≡ (α ⇒ β) ∧ (β ⇒ α)
α ⇒ β ≡ ¬α ∨ β
1 Elimine implicações
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 10 / 34
56. Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal
α ⇔ β ≡ (α ⇒ β) ∧ (β ⇒ α)
α ⇒ β ≡ ¬α ∨ β
1 Elimine implicações
2 Mova a negação “para dentro”
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 10 / 34
57. Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal
α ⇔ β ≡ (α ⇒ β) ∧ (β ⇒ α)
α ⇒ β ≡ ¬α ∨ β
1 Elimine implicações
2 Mova a negação “para dentro”
Leis de de Morgan
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 10 / 34
58. Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal
α ⇔ β ≡ (α ⇒ β) ∧ (β ⇒ α)
α ⇒ β ≡ ¬α ∨ β
¬(α ∨ β) ≡ ¬α ∧ ¬β
¬(α ∧ β) ≡ ¬α ∨ ¬β
1 Elimine implicações
2 Mova a negação “para dentro”
Leis de de Morgan
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 10 / 34
59. Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal
α ⇔ β ≡ (α ⇒ β) ∧ (β ⇒ α)
α ⇒ β ≡ ¬α ∨ β
¬(α ∨ β) ≡ ¬α ∧ ¬β
¬(α ∧ β) ≡ ¬α ∨ ¬β
1 Elimine implicações
2 Mova a negação “para dentro”
Leis de de Morgan
Eliminação de negações duplas
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 10 / 34
60. Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal
α ⇔ β ≡ (α ⇒ β) ∧ (β ⇒ α)
α ⇒ β ≡ ¬α ∨ β
¬(α ∨ β) ≡ ¬α ∧ ¬β
¬(α ∧ β) ≡ ¬α ∨ ¬β
¬¬α ≡ α
1 Elimine implicações
2 Mova a negação “para dentro”
Leis de de Morgan
Eliminação de negações duplas
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 10 / 34
61. Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal
α ⇔ β ≡ (α ⇒ β) ∧ (β ⇒ α)
α ⇒ β ≡ ¬α ∨ β
¬(α ∨ β) ≡ ¬α ∧ ¬β
¬(α ∧ β) ≡ ¬α ∨ ¬β
¬¬α ≡ α
1 Elimine implicações
2 Mova a negação “para dentro”
Leis de de Morgan
Eliminação de negações duplas
Extensões a de Morgan
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 10 / 34
62. Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal
α ⇔ β ≡ (α ⇒ β) ∧ (β ⇒ α)
α ⇒ β ≡ ¬α ∨ β
¬(α ∨ β) ≡ ¬α ∧ ¬β
¬(α ∧ β) ≡ ¬α ∨ ¬β
¬¬α ≡ α
¬∀x α ≡ ∃x ¬α
¬∃x α ≡ ∀x ¬α
1 Elimine implicações
2 Mova a negação “para dentro”
Leis de de Morgan
Eliminação de negações duplas
Extensões a de Morgan
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 10 / 34
63. Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal
α ⇔ β ≡ (α ⇒ β) ∧ (β ⇒ α)
α ⇒ β ≡ ¬α ∨ β
¬(α ∨ β) ≡ ¬α ∧ ¬β
¬(α ∧ β) ≡ ¬α ∨ ¬β
¬¬α ≡ α
¬∀x α ≡ ∃x ¬α
¬∃x α ≡ ∀x ¬α
1 Elimine implicações
2 Mova a negação “para dentro”
Leis de de Morgan
Eliminação de negações duplas
Extensões a de Morgan
3 Padronize as variáveis
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 10 / 34
64. Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal
α ⇔ β ≡ (α ⇒ β) ∧ (β ⇒ α)
α ⇒ β ≡ ¬α ∨ β
¬(α ∨ β) ≡ ¬α ∧ ¬β
¬(α ∧ β) ≡ ¬α ∨ ¬β
¬¬α ≡ α
¬∀x α ≡ ∃x ¬α
¬∃x α ≡ ∀x ¬α
1 Elimine implicações
2 Mova a negação “para dentro”
Leis de de Morgan
Eliminação de negações duplas
Extensões a de Morgan
3 Padronize as variáveis
Cada quantificador deve agir sobre uma variável diferente
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 10 / 34
65. Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal
α ⇔ β ≡ (α ⇒ β) ∧ (β ⇒ α)
α ⇒ β ≡ ¬α ∨ β
¬(α ∨ β) ≡ ¬α ∧ ¬β
¬(α ∧ β) ≡ ¬α ∨ ¬β
¬¬α ≡ α
¬∀x α ≡ ∃x ¬α
¬∃x α ≡ ∀x ¬α
1 Elimine implicações
2 Mova a negação “para dentro”
Leis de de Morgan
Eliminação de negações duplas
Extensões a de Morgan
3 Padronize as variáveis
Cada quantificador deve agir sobre uma variável diferente
Se a sentença usar um mesmo nome de variável duas vezes
em escopos diferentes, mude o nome de uma delas
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 10 / 34
66. Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal
4 Skolemize
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 11 / 34
67. Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal
4 Skolemize
Skolemização é o processo de remoção de quantificadores
existenciais (∃) por eliminação
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 11 / 34
68. Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal
4 Skolemize
Skolemização é o processo de remoção de quantificadores
existenciais (∃) por eliminação
Deve-se a Thoralf Skolem
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 11 / 34
69. Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal
4 Skolemize
Skolemização é o processo de remoção de quantificadores
existenciais (∃) por eliminação
Deve-se a Thoralf Skolem
5 Remova quantificadores universais
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 11 / 34
70. Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal
4 Skolemize
Skolemização é o processo de remoção de quantificadores
existenciais (∃) por eliminação
Deve-se a Thoralf Skolem
5 Remova quantificadores universais
Já removemos ∃ e não temos mais o problema do escopo →
as variáveis restantes estão quantificadas universalmente
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 11 / 34
71. Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal
4 Skolemize
Skolemização é o processo de remoção de quantificadores
existenciais (∃) por eliminação
Deve-se a Thoralf Skolem
5 Remova quantificadores universais
Já removemos ∃ e não temos mais o problema do escopo →
as variáveis restantes estão quantificadas universalmente
Podemos então mover os quantificadores para a esquerda e
sumir com eles (FNC já assume ∀ nas variáveis)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 11 / 34
72. Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal
4 Skolemize
Skolemização é o processo de remoção de quantificadores
existenciais (∃) por eliminação
Deve-se a Thoralf Skolem
5 Remova quantificadores universais
Já removemos ∃ e não temos mais o problema do escopo →
as variáveis restantes estão quantificadas universalmente
Podemos então mover os quantificadores para a esquerda e
sumir com eles (FNC já assume ∀ nas variáveis)
6 Distribua ∨ sobre ∧
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 11 / 34
73. Lógica de Primeira Ordem – Resolução
Skolemização
No caso do padrão simples “∃x P(x)”, basta
substituir a variável x por uma constante inédita
(não existente na base de conhecimento)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 12 / 34
74. Lógica de Primeira Ordem – Resolução
Skolemização
No caso do padrão simples “∃x P(x)”, basta
substituir a variável x por uma constante inédita
(não existente na base de conhecimento)
Ex:
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 12 / 34
75. Lógica de Primeira Ordem – Resolução
Skolemização
No caso do padrão simples “∃x P(x)”, basta
substituir a variável x por uma constante inédita
(não existente na base de conhecimento)
Ex:
∃x Unicórnio(x)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 12 / 34
76. Lógica de Primeira Ordem – Resolução
Skolemização
No caso do padrão simples “∃x P(x)”, basta
substituir a variável x por uma constante inédita
(não existente na base de conhecimento)
Ex:
∃x Unicórnio(x)
Se existe um unicórnio, vamos chamá-lo de Fred
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 12 / 34
77. Lógica de Primeira Ordem – Resolução
Skolemização
No caso do padrão simples “∃x P(x)”, basta
substituir a variável x por uma constante inédita
(não existente na base de conhecimento)
Ex:
∃x Unicórnio(x)
Se existe um unicórnio, vamos chamá-lo de Fred
Funciona se não houver nenhum outro objeto chamado
Fred, pois nesse caso afirmarı́amos que ele é um unicórnio
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 12 / 34
78. Lógica de Primeira Ordem – Resolução
Skolemização
No caso do padrão simples “∃x P(x)”, basta
substituir a variável x por uma constante inédita
(não existente na base de conhecimento)
Ex:
∃x Unicórnio(x)
Se existe um unicórnio, vamos chamá-lo de Fred
Funciona se não houver nenhum outro objeto chamado
Fred, pois nesse caso afirmarı́amos que ele é um unicórnio
Podemos então trocar ∃x Unicórnio(x) por Unicórnio(Fred)
livremente
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 12 / 34
79. Lógica de Primeira Ordem – Resolução
Skolemização
Então
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 13 / 34
80. Lógica de Primeira Ordem – Resolução
Skolemização
Então
∃x P(x) → P(C1)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 13 / 34
81. Lógica de Primeira Ordem – Resolução
Skolemização
Então
∃x P(x) → P(C1)
∃x, y R(x, y) → R(C1, C2) (2 variáveis)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 13 / 34
82. Lógica de Primeira Ordem – Resolução
Skolemização
Então
∃x P(x) → P(C1)
∃x, y R(x, y) → R(C1, C2) (2 variáveis)
∃x P(x) ∧ Q(x) → P(C1) ∧ Q(C1)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 13 / 34
83. Lógica de Primeira Ordem – Resolução
Skolemização
Então
∃x P(x) → P(C1)
∃x, y R(x, y) → R(C1, C2) (2 variáveis)
∃x P(x) ∧ Q(x) → P(C1) ∧ Q(C1)
Cada ocorrência da variável é mapeada ao mesmo nome
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 13 / 34
84. Lógica de Primeira Ordem – Resolução
Skolemização
Então
∃x P(x) → P(C1)
∃x, y R(x, y) → R(C1, C2) (2 variáveis)
∃x P(x) ∧ Q(x) → P(C1) ∧ Q(C1)
Cada ocorrência da variável é mapeada ao mesmo nome
∃x P(x) ∧ ∃x Q(x) → P(C1) ∧ Q(C2)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 13 / 34
85. Lógica de Primeira Ordem – Resolução
Skolemização
Então
∃x P(x) → P(C1)
∃x, y R(x, y) → R(C1, C2) (2 variáveis)
∃x P(x) ∧ Q(x) → P(C1) ∧ Q(C1)
Cada ocorrência da variável é mapeada ao mesmo nome
∃x P(x) ∧ ∃x Q(x) → P(C1) ∧ Q(C2)
Diferentes quantificadores exigem nomes diferentes
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 13 / 34
86. Lógica de Primeira Ordem – Resolução
Skolemização
Então
∃x P(x) → P(C1)
∃x, y R(x, y) → R(C1, C2) (2 variáveis)
∃x P(x) ∧ Q(x) → P(C1) ∧ Q(C1)
Cada ocorrência da variável é mapeada ao mesmo nome
∃x P(x) ∧ ∃x Q(x) → P(C1) ∧ Q(C2)
Diferentes quantificadores exigem nomes diferentes
Note que isso fica claro após a padronização:
∃x P(x) ∧ ∃x Q(x) ≡ ∃x P(x) ∧ ∃y Q(y) → P(C1) ∧ Q(C2)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 13 / 34
87. Lógica de Primeira Ordem – Resolução
Skolemização
∃y∀x Ama(x, y)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 14 / 34
88. Lógica de Primeira Ordem – Resolução
Skolemização
∃y∀x Ama(x, y)
(Existe um y que é amado por todos)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 14 / 34
89. Lógica de Primeira Ordem – Resolução
Skolemização
∃y∀x Ama(x, y)
(Existe um y que é amado por todos)
Skolemização padrão: ∃y∀x Ama(x, y) → ∀x Ama(x, C1)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 14 / 34
90. Lógica de Primeira Ordem – Resolução
Skolemização
∃y∀x Ama(x, y)
(Existe um y que é amado por todos)
Skolemização padrão: ∃y∀x Ama(x, y) → ∀x Ama(x, C1)
E quanto a “∀x∃y Ama(x, y)”?
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 14 / 34
91. Lógica de Primeira Ordem – Resolução
Skolemização
∃y∀x Ama(x, y)
(Existe um y que é amado por todos)
Skolemização padrão: ∃y∀x Ama(x, y) → ∀x Ama(x, C1)
E quanto a “∀x∃y Ama(x, y)”?
(Todo mundo ama alguém)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 14 / 34
92. Lógica de Primeira Ordem – Resolução
Skolemização
∃y∀x Ama(x, y)
(Existe um y que é amado por todos)
Skolemização padrão: ∃y∀x Ama(x, y) → ∀x Ama(x, C1)
E quanto a “∀x∃y Ama(x, y)”?
(Todo mundo ama alguém)
“∀x Ama(x, C1)”?
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 14 / 34
93. Lógica de Primeira Ordem – Resolução
Skolemização
∃y∀x Ama(x, y)
(Existe um y que é amado por todos)
Skolemização padrão: ∃y∀x Ama(x, y) → ∀x Ama(x, C1)
E quanto a “∀x∃y Ama(x, y)”?
(Todo mundo ama alguém)
“∀x Ama(x, C1)”?
Certamente não é “Todo mundo ama C1” que pretendı́amos
dizer...
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 14 / 34
94. Lógica de Primeira Ordem – Resolução
Skolemização
∃y∀x Ama(x, y)
(Existe um y que é amado por todos)
Skolemização padrão: ∃y∀x Ama(x, y) → ∀x Ama(x, C1)
E quanto a “∀x∃y Ama(x, y)”?
(Todo mundo ama alguém)
“∀x Ama(x, C1)”?
Certamente não é “Todo mundo ama C1” que pretendı́amos
dizer...
Simples substituição não funciona
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 14 / 34
95. Lógica de Primeira Ordem – Resolução
Skolemização
O que aconteceu?
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 15 / 34
96. Lógica de Primeira Ordem – Resolução
Skolemização
O que aconteceu?
Embora possamos sim dizer que “∀x∃y Ama(x, y)” se refere
a um alguém especı́fico, ele o faz para cada valor de x, ou
seja, potencialmente um alguém diferente para cada x
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 15 / 34
97. Lógica de Primeira Ordem – Resolução
Skolemização
O que aconteceu?
Embora possamos sim dizer que “∀x∃y Ama(x, y)” se refere
a um alguém especı́fico, ele o faz para cada valor de x, ou
seja, potencialmente um alguém diferente para cada x
“∀x Ama(x, C1)” força que todo x ame um único sujeito
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 15 / 34
98. Lógica de Primeira Ordem – Resolução
Skolemização
O que aconteceu?
Embora possamos sim dizer que “∀x∃y Ama(x, y)” se refere
a um alguém especı́fico, ele o faz para cada valor de x, ou
seja, potencialmente um alguém diferente para cada x
“∀x Ama(x, C1)” força que todo x ame um único sujeito
Que fazer então?
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 15 / 34
99. Lógica de Primeira Ordem – Resolução
Skolemização
O que aconteceu?
Embora possamos sim dizer que “∀x∃y Ama(x, y)” se refere
a um alguém especı́fico, ele o faz para cada valor de x, ou
seja, potencialmente um alguém diferente para cada x
“∀x Ama(x, C1)” força que todo x ame um único sujeito
Que fazer então?
Fazer com que a constante utilizada dependa de x
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 15 / 34
100. Lógica de Primeira Ordem – Resolução
Skolemização
O que aconteceu?
Embora possamos sim dizer que “∀x∃y Ama(x, y)” se refere
a um alguém especı́fico, ele o faz para cada valor de x, ou
seja, potencialmente um alguém diferente para cada x
“∀x Ama(x, C1)” força que todo x ame um único sujeito
Que fazer então?
Fazer com que a constante utilizada dependa de x
∀x∃y Ama(x, y) → ∀x Ama(x, AmadoPor(x))
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 15 / 34
101. Lógica de Primeira Ordem – Resolução
Skolemização
O que aconteceu?
Embora possamos sim dizer que “∀x∃y Ama(x, y)” se refere
a um alguém especı́fico, ele o faz para cada valor de x, ou
seja, potencialmente um alguém diferente para cada x
“∀x Ama(x, C1)” força que todo x ame um único sujeito
Que fazer então?
Fazer com que a constante utilizada dependa de x
∀x∃y Ama(x, y) → ∀x Ama(x, AmadoPor(x))
Em vez de substituirmos por uma constante, substituı́mos
por uma Função de Skolem
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 15 / 34
102. Lógica de Primeira Ordem – Resolução
Skolemização
Função de Skolem – Regra geral:
Os argumentos da função de Skolem são todas as variáveis
universalmente quantificadas em cujo escopo o quantificador
existencial aparecer
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 16 / 34
103. Lógica de Primeira Ordem – Resolução
Skolemização
Função de Skolem – Regra geral:
Os argumentos da função de Skolem são todas as variáveis
universalmente quantificadas em cujo escopo o quantificador
existencial aparecer
Ex:
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 16 / 34
104. Lógica de Primeira Ordem – Resolução
Skolemização
Função de Skolem – Regra geral:
Os argumentos da função de Skolem são todas as variáveis
universalmente quantificadas em cujo escopo o quantificador
existencial aparecer
Ex:
∀x∃y∀z∃w P(x, y, z) ∧ R(y, z, w)
→ ∀x∀z P(x, F(x), z) ∧ R(F(x), z, G(x, z))
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 16 / 34
105. Lógica de Primeira Ordem – Resolução
Skolemização
y = F(x) porque y está
apenas no escopo de ∀x
Função de Skolem – Regra geral:
Os argumentos da função de Skolem são todas as variáveis
universalmente quantificadas em cujo escopo o quantificador
existencial aparecer
Ex:
∀x∃y∀z∃w P(x, y, z) ∧ R(y, z, w)
→ ∀x∀z P(x, F(x), z) ∧ R(F(x), z, G(x, z))
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 16 / 34
106. Lógica de Primeira Ordem – Resolução
Skolemização
Já w = G(x, z) porque
há 2 quantificadores
universais (∀x e ∀z)
em cujo escopo está w
Função de Skolem – Regra geral:
Os argumentos da função de Skolem são todas as variáveis
universalmente quantificadas em cujo escopo o quantificador
existencial aparecer
Ex:
∀x∃y∀z∃w P(x, y, z) ∧ R(y, z, w)
→ ∀x∀z P(x, F(x), z) ∧ R(F(x), z, G(x, z))
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 16 / 34
107. Lógica de Primeira Ordem – Resolução
Skolemização
Já w = G(x, z) porque
há 2 quantificadores
universais (∀x e ∀z)
em cujo escopo está w
Função de Skolem – Regra geral:
Os argumentos da função de Skolem são todas as variáveis
universalmente quantificadas em cujo escopo o quantificador
existencial aparecer
Ex:
∀x∃y∀z∃w P(x, y, z) ∧ R(y, z, w)
→ ∀x∀z P(x, F(x), z) ∧ R(F(x), z, G(x, z))
A sentença Skolemizada é satisfatı́vel exatamente
quando a sentença original for satisfatı́vel
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 16 / 34
108. Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 17 / 34
109. Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
Todo mundo que ama todos os animais é amado
por alguém
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 17 / 34
110. Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
Todo mundo que ama todos os animais é amado
por alguém
∀x [∀y Animal(y) ⇒ Ama(x, y)] ⇒ [∃y Ama(y, x)]
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 17 / 34
111. Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
Todo mundo que ama todos os animais é amado
por alguém
∀x [∀y Animal(y) ⇒ Ama(x, y)] ⇒ [∃y Ama(y, x)]
Passos:
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 17 / 34
112. Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
Todo mundo que ama todos os animais é amado
por alguém
∀x [∀y Animal(y) ⇒ Ama(x, y)] ⇒ [∃y Ama(y, x)]
Passos:
1 Elimine implicações
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 17 / 34
113. Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
Todo mundo que ama todos os animais é amado
por alguém
∀x [∀y Animal(y) ⇒ Ama(x, y)] ⇒ [∃y Ama(y, x)]
Passos:
1 Elimine implicações
∀x [∀y ¬Animal(y) ∨ Ama(x, y)] ⇒ [∃y Ama(y, x)]
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 17 / 34
114. Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
Todo mundo que ama todos os animais é amado
por alguém
∀x [∀y Animal(y) ⇒ Ama(x, y)] ⇒ [∃y Ama(y, x)]
Passos:
1 Elimine implicações
∀x [∀y ¬Animal(y) ∨ Ama(x, y)] ⇒ [∃y Ama(y, x)]
∀x [¬∀y ¬Animal(y) ∨ Ama(x, y)] ∨ [∃y Ama(y, x)]
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 17 / 34
115. Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
Todo mundo que ama todos os animais é amado
por alguém
∀x [∀y Animal(y) ⇒ Ama(x, y)] ⇒ [∃y Ama(y, x)]
Passos:
1 Elimine implicações
∀x [∀y ¬Animal(y) ∨ Ama(x, y)] ⇒ [∃y Ama(y, x)]
∀x [¬∀y ¬Animal(y) ∨ Ama(x, y)] ∨ [∃y Ama(y, x)]
2 Mova a negação “para dentro”
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 17 / 34
116. Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
Todo mundo que ama todos os animais é amado
por alguém
∀x [∀y Animal(y) ⇒ Ama(x, y)] ⇒ [∃y Ama(y, x)]
Passos:
1 Elimine implicações
∀x [∀y ¬Animal(y) ∨ Ama(x, y)] ⇒ [∃y Ama(y, x)]
∀x [¬∀y ¬Animal(y) ∨ Ama(x, y)] ∨ [∃y Ama(y, x)]
2 Mova a negação “para dentro”
∀x [∃y ¬(¬Animal(y) ∨ Ama(x, y))] ∨ [∃y Ama(y, x)]
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 17 / 34
117. Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
Todo mundo que ama todos os animais é amado
por alguém
∀x [∀y Animal(y) ⇒ Ama(x, y)] ⇒ [∃y Ama(y, x)]
Passos:
1 Elimine implicações
∀x [∀y ¬Animal(y) ∨ Ama(x, y)] ⇒ [∃y Ama(y, x)]
∀x [¬∀y ¬Animal(y) ∨ Ama(x, y)] ∨ [∃y Ama(y, x)]
2 Mova a negação “para dentro”
∀x [∃y ¬(¬Animal(y) ∨ Ama(x, y))] ∨ [∃y Ama(y, x)]
∀x [∃y ¬¬Animal(y) ∧ ¬Ama(x, y)] ∨ [∃y Ama(y, x)]
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 17 / 34
118. Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
Todo mundo que ama todos os animais é amado
por alguém
∀x [∀y Animal(y) ⇒ Ama(x, y)] ⇒ [∃y Ama(y, x)]
Passos:
1 Elimine implicações
∀x [∀y ¬Animal(y) ∨ Ama(x, y)] ⇒ [∃y Ama(y, x)]
∀x [¬∀y ¬Animal(y) ∨ Ama(x, y)] ∨ [∃y Ama(y, x)]
2 Mova a negação “para dentro”
∀x [∃y ¬(¬Animal(y) ∨ Ama(x, y))] ∨ [∃y Ama(y, x)]
∀x [∃y ¬¬Animal(y) ∧ ¬Ama(x, y)] ∨ [∃y Ama(y, x)]
∀x [∃y Animal(y) ∧ ¬Ama(x, y)] ∨ [∃y Ama(y, x)]
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 17 / 34
119. Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
Passos (cont.):
∀x [∃y Animal(y) ∧ ¬Ama(x, y)] ∨ [∃y Ama(y, x)]
3 Padronize as variáveis
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 18 / 34
120. Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
Passos (cont.):
∀x [∃y Animal(y) ∧ ¬Ama(x, y)] ∨ [∃y Ama(y, x)]
3 Padronize as variáveis
∀x [∃y Animal(y) ∧ ¬Ama(x, y)] ∨ [∃z Ama(z, x)]
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 18 / 34
121. Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
Passos (cont.):
∀x [∃y Animal(y) ∧ ¬Ama(x, y)] ∨ [∃y Ama(y, x)]
3 Padronize as variáveis
∀x [∃y Animal(y) ∧ ¬Ama(x, y)] ∨ [∃z Ama(z, x)]
4 Skolemize
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 18 / 34
122. Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
Passos (cont.):
∀x [∃y Animal(y) ∧ ¬Ama(x, y)] ∨ [∃y Ama(y, x)]
3 Padronize as variáveis
∀x [∃y Animal(y) ∧ ¬Ama(x, y)] ∨ [∃z Ama(z, x)]
4 Skolemize
∀x [Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)]
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 18 / 34
123. Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
Passos (cont.):
∀x [∃y Animal(y) ∧ ¬Ama(x, y)] ∨ [∃y Ama(y, x)]
3 Padronize as variáveis
∀x [∃y Animal(y) ∧ ¬Ama(x, y)] ∨ [∃z Ama(z, x)]
4 Skolemize
∀x [Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)]
F(x): o animal potencialmente não amado por x
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 18 / 34
124. Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
Passos (cont.):
∀x [∃y Animal(y) ∧ ¬Ama(x, y)] ∨ [∃y Ama(y, x)]
3 Padronize as variáveis
∀x [∃y Animal(y) ∧ ¬Ama(x, y)] ∨ [∃z Ama(z, x)]
4 Skolemize
∀x [Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)]
F(x): o animal potencialmente não amado por x
G(x): alguém que poderia amar x
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 18 / 34
125. Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
Passos (cont.):
∀x [Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)]
5 Remova quantificadores universais
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 19 / 34
126. Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
Passos (cont.):
∀x [Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)]
5 Remova quantificadores universais
[Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)]
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 19 / 34
127. Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
Passos (cont.):
∀x [Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)]
5 Remova quantificadores universais
[Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)]
De fato, não foram removidos, apenas tornados implı́citos
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 19 / 34
128. Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
Passos (cont.):
∀x [Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)]
5 Remova quantificadores universais
[Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)]
De fato, não foram removidos, apenas tornados implı́citos
6 Distribua ∨ sobre ∧
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 19 / 34
129. Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
Passos (cont.):
∀x [Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)]
5 Remova quantificadores universais
[Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)]
De fato, não foram removidos, apenas tornados implı́citos
6 Distribua ∨ sobre ∧
[Animal(F(x)) ∨ Ama(G(x), x)] ∧ [¬Ama(x, F(x)) ∨ Ama(G(x), x)]
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 19 / 34
130. Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
cláusula cláusula
Passos (cont.):
∀x [Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)]
5 Remova quantificadores universais
[Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)]
De fato, não foram removidos, apenas tornados implı́citos
6 Distribua ∨ sobre ∧
[Animal(F(x)) ∨ Ama(G(x), x)] ∧ [¬Ama(x, F(x)) ∨ Ama(G(x), x)]
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 19 / 34
131. Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
cláusula cláusula
Passos (cont.):
∀x [Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)]
5 Remova quantificadores universais
[Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)]
De fato, não foram removidos, apenas tornados implı́citos
6 Distribua ∨ sobre ∧
[Animal(F(x)) ∨ Ama(G(x), x)] ∧ [¬Ama(x, F(x)) ∨ Ama(G(x), x)]
(Conjunção de disjunções de literais)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 19 / 34
132. Lógica de Primeira Ordem – Resolução
Passos
∀x∃y P(x) ⇒ R(x, y)
¬P(x) ∨ R(x, F(x))
1 Converter de LPO para forma clausal
Generalização da Forma Normal
Conjuntiva para LPO
Uma conjunção de disjunções
Sem quantificadores
2 Determinar que variáveis substituir por quais quando
da resolução
Processo chamado Unificação
3 Executar a resolução
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 20 / 34
133. Lógica de Primeira Ordem – Resolução
Passos
∀x∃y P(x) ⇒ R(x, y)
¬P(x) ∨ R(x, F(x))
1 Converter de LPO para forma clausal 4
Generalização da Forma Normal
Conjuntiva para LPO
Uma conjunção de disjunções
Sem quantificadores
2 Determinar que variáveis substituir por quais quando
da resolução
Processo chamado Unificação
3 Executar a resolução
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 20 / 34
134. Lógica de Primeira Ordem – Resolução
Passos
∀x∃y P(x) ⇒ R(x, y)
¬P(x) ∨ R(x, F(x))
1 Converter de LPO para forma clausal 4
Generalização da Forma Normal
Conjuntiva para LPO
Uma conjunção de disjunções
Sem quantificadores
2 Determinar que variáveis substituir por quais quando
da resolução +
Processo chamado Unificação
3 Executar a resolução
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 20 / 34
135. Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Para entender unificação, precisamos antes do
concento de substituição
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 21 / 34
136. Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Para entender unificação, precisamos antes do
concento de substituição
Considere a sentença atômica P(v1, v2, . . . , vn)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 21 / 34
137. Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Para entender unificação, precisamos antes do
concento de substituição
Considere a sentença atômica P(v1, v2, . . . , vn)
Uma substituição é um mapeamento finito de variáveis a
termos
{v1/t1, v2/t2, . . . , vn/tn}
em que
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 21 / 34
138. Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Para entender unificação, precisamos antes do
concento de substituição
Considere a sentença atômica P(v1, v2, . . . , vn)
Uma substituição é um mapeamento finito de variáveis a
termos
{v1/t1, v2/t2, . . . , vn/tn}
em que
Toda e qualquer variável vi é substituı́da pelo termo ti (que pode ser
uma constante, outra variável, ou função)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 21 / 34
139. Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Para entender unificação, precisamos antes do
concento de substituição
Considere a sentença atômica P(v1, v2, . . . , vn)
Uma substituição é um mapeamento finito de variáveis a
termos
{v1/t1, v2/t2, . . . , vn/tn}
em que
Toda e qualquer variável vi é substituı́da pelo termo ti (que pode ser
uma constante, outra variável, ou função)
Não pode haver mais de uma substituição para cada variável
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 21 / 34
140. Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Ex: P(x, f (y), B)
Substituição Resultado Obs
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
141. Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Ex: P(x, f (y), B)
Substituição Resultado Obs
{x/z, y/w}
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
142. Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Ex: P(x, f (y), B)
Substituição Resultado Obs
{x/z, y/w} P(z, f (w), B)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
143. Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Ex: P(x, f (y), B)
Substituição Resultado Obs
{x/z, y/w} P(z, f (w), B) Variação alfabética
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
144. Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Ex: P(x, f (y), B)
Substituição Resultado Obs
{x/z, y/w} P(z, f (w), B) Variação alfabética
{y/A}
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
145. Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Ex: P(x, f (y), B)
Substituição Resultado Obs
{x/z, y/w} P(z, f (w), B) Variação alfabética
{y/A} P(x, f (A), B)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
146. Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Ex: P(x, f (y), B)
Substituição Resultado Obs
{x/z, y/w} P(z, f (w), B) Variação alfabética
{y/A} P(x, f (A), B)
{x/g(z), y/A}
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
147. Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Ex: P(x, f (y), B)
Substituição Resultado Obs
{x/z, y/w} P(z, f (w), B) Variação alfabética
{y/A} P(x, f (A), B)
{x/g(z), y/A} P(g(z), f (A), B)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
148. Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Ex: P(x, f (y), B)
Substituição Resultado Obs
{x/z, y/w} P(z, f (w), B) Variação alfabética
{y/A} P(x, f (A), B)
{x/g(z), y/A} P(g(z), f (A), B)
{x/C, y/A}
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
149. Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Ex: P(x, f (y), B)
Substituição Resultado Obs
{x/z, y/w} P(z, f (w), B) Variação alfabética
{y/A} P(x, f (A), B)
{x/g(z), y/A} P(g(z), f (A), B)
{x/C, y/A} P(C, f (A), B)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
150. Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Ex: P(x, f (y), B)
Substituição Resultado Obs
{x/z, y/w} P(z, f (w), B) Variação alfabética
{y/A} P(x, f (A), B)
{x/g(z), y/A} P(g(z), f (A), B)
{x/C, y/A} P(C, f (A), B) Sentença constante
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
151. Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Ex: P(x, f (y), B)
Substituição Resultado Obs
{x/z, y/w} P(z, f (w), B) Variação alfabética
{y/A} P(x, f (A), B)
{x/g(z), y/A} P(g(z), f (A), B)
{x/C, y/A} P(C, f (A), B) Sentença constante
{y/A, x/y}
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
152. Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Ex: P(x, f (y), B)
Substituição Resultado Obs
{x/z, y/w} P(z, f (w), B) Variação alfabética
{y/A} P(x, f (A), B)
{x/g(z), y/A} P(g(z), f (A), B)
{x/C, y/A} P(C, f (A), B) Sentença constante
{y/A, x/y} P(A, f (A), B)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
153. Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Ex: P(x, f (y), B)
Substituição Resultado Obs
{x/z, y/w} P(z, f (w), B) Variação alfabética
{y/A} P(x, f (A), B)
{x/g(z), y/A} P(g(z), f (A), B)
{x/C, y/A} P(C, f (A), B) Sentença constante
{y/A, x/y} P(A, f (A), B) Sentença constante
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
154. Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Ex: P(x, f (y), B)
Substituição Resultado Obs
{x/z, y/w} P(z, f (w), B) Variação alfabética
{y/A} P(x, f (A), B)
{x/g(z), y/A} P(g(z), f (A), B)
{x/C, y/A} P(C, f (A), B) Sentença constante
{y/A, x/y} P(A, f (A), B) Sentença constante
Variação alfabética: Quando apenas substituı́mos por
variáveis diferentes
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
155. Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Ex: P(x, f (y), B)
Substituição Resultado Obs
{x/z, y/w} P(z, f (w), B) Variação alfabética
{y/A} P(x, f (A), B)
{x/g(z), y/A} P(g(z), f (A), B)
{x/C, y/A} P(C, f (A), B) Sentença constante
{y/A, x/y} P(A, f (A), B) Sentença constante
Variação alfabética: Quando apenas substituı́mos por
variáveis diferentes
Sentença constante (Ground instance): Sentença atômica
sem variáveis
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
156. Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Sentenças com substituições são mais especı́ficas
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 23 / 34
157. Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Sentenças com substituições são mais especı́ficas
Possuem menos interpretações sob as quais são verdadeiras
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 23 / 34
158. Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Sentenças com substituições são mais especı́ficas
Possuem menos interpretações sob as quais são verdadeiras
Ex: P(g(z), f (A), B) é mais especı́fica que P(x, f (y), B)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 23 / 34
159. Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Sentenças com substituições são mais especı́ficas
Possuem menos interpretações sob as quais são verdadeiras
Ex: P(g(z), f (A), B) é mais especı́fica que P(x, f (y), B)
Não é permitido substituir constantes ou termos
compostos (funções etc)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 23 / 34
160. Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Sentenças com substituições são mais especı́ficas
Possuem menos interpretações sob as quais são verdadeiras
Ex: P(g(z), f (A), B) é mais especı́fica que P(x, f (y), B)
Não é permitido substituir constantes ou termos
compostos (funções etc)
Podemos apenas substituir as variáveis, mesmo que estas
estejam dentro de um termo composto (como o y em f (y))
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 23 / 34
161. Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Não confunda com interpretação semântica:
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 24 / 34
162. Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Não confunda com interpretação semântica:
A substituição troca uma variável por um termo (sintaxe) de
modo a produzir uma nova sentença
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 24 / 34
163. Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Não confunda com interpretação semântica:
A substituição troca uma variável por um termo (sintaxe) de
modo a produzir uma nova sentença
A interpretação mapeia a variável a um objeto no domı́nio
(semântica)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 24 / 34
164. Lógica de Primeira Ordem – Resolução
Unificação
Trata-se de encontrar uma substituição que faça
com que duas expressões se igualem
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 25 / 34
165. Lógica de Primeira Ordem – Resolução
Unificação
Trata-se de encontrar uma substituição que faça
com que duas expressões se igualem
Estamos interessados em modos de fazer expressões se
equivalerem, em toda interpretação de seus sı́mbolos
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 25 / 34
166. Lógica de Primeira Ordem – Resolução
Unificação
Trata-se de encontrar uma substituição que faça
com que duas expressões se igualem
Estamos interessados em modos de fazer expressões se
equivalerem, em toda interpretação de seus sı́mbolos
Expressões unificáveis:
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 25 / 34
167. Lógica de Primeira Ordem – Resolução
Unificação
Trata-se de encontrar uma substituição que faça
com que duas expressões se igualem
Estamos interessados em modos de fazer expressões se
equivalerem, em toda interpretação de seus sı́mbolos
Expressões unificáveis:
ω1 e ω2 são unificáveis sse existir uma substituição s tal que
ω1 s = ω2 s
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 25 / 34
168. Lógica de Primeira Ordem – Resolução
Unificação
Trata-se de encontrar uma substituição que faça
com que duas expressões se igualem
Estamos interessados em modos de fazer expressões se
equivalerem, em toda interpretação de seus sı́mbolos
Expressões unificáveis:
ω1 e ω2 são unificáveis sse existir uma substituição s tal que
ω1 s = ω2 s
Se existir uma substituição s que, quando aplicada a ω1 e ω2, nos
leva à mesma expressão
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 25 / 34
169. Lógica de Primeira Ordem – Resolução
Unificação
Trata-se de encontrar uma substituição que faça
com que duas expressões se igualem
Estamos interessados em modos de fazer expressões se
equivalerem, em toda interpretação de seus sı́mbolos
Expressões unificáveis:
ω1 e ω2 são unificáveis sse existir uma substituição s tal que
ω1 s = ω2 s
Se existir uma substituição s que, quando aplicada a ω1 e ω2, nos
leva à mesma expressão
s é então um unificador de ω1 e ω2
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 25 / 34
170. Lógica de Primeira Ordem – Resolução
Unificação
Ex: ω1 = x e ω2 = y
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
171. Lógica de Primeira Ordem – Resolução
Unificação
Ex: ω1 = x e ω2 = y
Unificadores:
s ω1 s ω2 s
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
172. Lógica de Primeira Ordem – Resolução
Unificação
Ex: ω1 = x e ω2 = y
Unificadores:
s ω1 s ω2 s
{y/x}
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
173. Lógica de Primeira Ordem – Resolução
Unificação
Ex: ω1 = x e ω2 = y
Unificadores:
s ω1 s ω2 s
{y/x} x
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
174. Lógica de Primeira Ordem – Resolução
Unificação
Ex: ω1 = x e ω2 = y
Unificadores:
s ω1 s ω2 s
{y/x} x x
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
175. Lógica de Primeira Ordem – Resolução
Unificação
Ex: ω1 = x e ω2 = y
Unificadores:
s ω1 s ω2 s
{y/x} x x
{x/y}
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
176. Lógica de Primeira Ordem – Resolução
Unificação
Ex: ω1 = x e ω2 = y
Unificadores:
s ω1 s ω2 s
{y/x} x x
{x/y} y
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
177. Lógica de Primeira Ordem – Resolução
Unificação
Ex: ω1 = x e ω2 = y
Unificadores:
s ω1 s ω2 s
{y/x} x x
{x/y} y y
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
178. Lógica de Primeira Ordem – Resolução
Unificação
Ex: ω1 = x e ω2 = y
Unificadores:
s ω1 s ω2 s
{y/x} x x
{x/y} y y
{x/f (f (A)), y/f (f (A))}
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
179. Lógica de Primeira Ordem – Resolução
Unificação
Ex: ω1 = x e ω2 = y
Unificadores:
s ω1 s ω2 s
{y/x} x x
{x/y} y y
{x/f (f (A)), y/f (f (A))} f (f (A))
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
180. Lógica de Primeira Ordem – Resolução
Unificação
Ex: ω1 = x e ω2 = y
Unificadores:
s ω1 s ω2 s
{y/x} x x
{x/y} y y
{x/f (f (A)), y/f (f (A))} f (f (A)) f (f (A))
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
181. Lógica de Primeira Ordem – Resolução
Unificação
Ex: ω1 = x e ω2 = y
Unificadores:
s ω1 s ω2 s
{y/x} x x
{x/y} y y
{x/f (f (A)), y/f (f (A))} f (f (A)) f (f (A))
{x/A, y/A}
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
182. Lógica de Primeira Ordem – Resolução
Unificação
Ex: ω1 = x e ω2 = y
Unificadores:
s ω1 s ω2 s
{y/x} x x
{x/y} y y
{x/f (f (A)), y/f (f (A))} f (f (A)) f (f (A))
{x/A, y/A} A
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
183. Lógica de Primeira Ordem – Resolução
Unificação
Ex: ω1 = x e ω2 = y
Unificadores:
s ω1 s ω2 s
{y/x} x x
{x/y} y y
{x/f (f (A)), y/f (f (A))} f (f (A)) f (f (A))
{x/A, y/A} A A
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
184. Lógica de Primeira Ordem – Resolução
Unificação
Ex: ω1 = x e ω2 = y
Unificadores:
s ω1 s ω2 s
{y/x} x x
{x/y} y y
{x/f (f (A)), y/f (f (A))} f (f (A)) f (f (A))
{x/A, y/A} A A
Pode haver vários unificadores para o mesmo par de
expressões, alguns mais gerais que outros
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
185. Lógica de Primeira Ordem – Resolução
Unificação
Ex: ω1 = x e ω2 = y
Unificadores:
s ω1 s ω2 s
{y/x} x x
{x/y} y y
{x/f (f (A)), y/f (f (A))} f (f (A)) f (f (A))
{x/A, y/A} A A
Pode haver vários unificadores para o mesmo par de
expressões, alguns mais gerais que outros
Ex: {y/x} é mais geral que {x/A, y/A}, por impor menos
restrições aos valores das variáveis
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
186. Lógica de Primeira Ordem – Resolução
Unificação
Para um algoritmo computacional, seria desejável
possuir uma única substituição – um único
unificador
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 27 / 34
187. Lógica de Primeira Ordem – Resolução
Unificação
Para um algoritmo computacional, seria desejável
possuir uma única substituição – um único
unificador
Ocorre que, para todo par de expressões unificáveis,
há um único unificador mais geral
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 27 / 34
188. Lógica de Primeira Ordem – Resolução
Unificação
Para um algoritmo computacional, seria desejável
possuir uma única substituição – um único
unificador
Ocorre que, para todo par de expressões unificáveis,
há um único unificador mais geral
Este é único até o ponto de renomeação de variáveis
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 27 / 34
189. Lógica de Primeira Ordem – Resolução
Unificação
Para um algoritmo computacional, seria desejável
possuir uma única substituição – um único
unificador
Ocorre que, para todo par de expressões unificáveis,
há um único unificador mais geral
Este é único até o ponto de renomeação de variáveis
Ex: {x/Pedro} e {y/Pedro} são consideradas equivalentes
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 27 / 34
190. Lógica de Primeira Ordem – Resolução
Unificação
Para um algoritmo computacional, seria desejável
possuir uma única substituição – um único
unificador
Ocorre que, para todo par de expressões unificáveis,
há um único unificador mais geral
Este é único até o ponto de renomeação de variáveis
Ex: {x/Pedro} e {y/Pedro} são consideradas equivalentes
Só diferem pelo nome das variáveis
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 27 / 34
191. Lógica de Primeira Ordem – Resolução
Unificação
Para um algoritmo computacional, seria desejável
possuir uma única substituição – um único
unificador
Ocorre que, para todo par de expressões unificáveis,
há um único unificador mais geral
Este é único até o ponto de renomeação de variáveis
Ex: {x/Pedro} e {y/Pedro} são consideradas equivalentes
Só diferem pelo nome das variáveis
Assim como {x/Pedro, y/x} e {y/Pedro, x/z}
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 27 / 34
192. Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG)
g é um unificador mais geral de ω1 e ω2 sse, para
todo unificador s, houver um s0
tal que
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 28 / 34
193. Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG)
g é um unificador mais geral de ω1 e ω2 sse, para
todo unificador s, houver um s0
tal que
ω1 s = (ω1 g) s0
, e
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 28 / 34
194. Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG)
g é um unificador mais geral de ω1 e ω2 sse, para
todo unificador s, houver um s0
tal que
ω1 s = (ω1 g) s0
, e
ω2 s = (ω2 g) s0
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 28 / 34
195. Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG)
g é um unificador mais geral de ω1 e ω2 sse, para
todo unificador s, houver um s0
tal que
ω1 s = (ω1 g) s0
, e
ω2 s = (ω2 g) s0
Ou seja, um unificador g é o mais geral se todo
outro unificador s puder ser expressado como uma
substituição extra s0
adicionada ao mais geral
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 28 / 34
196. Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG)
g é um unificador mais geral de ω1 e ω2 sse, para
todo unificador s, houver um s0
tal que
ω1 s = (ω1 g) s0
, e
ω2 s = (ω2 g) s0
Ou seja, um unificador g é o mais geral se todo
outro unificador s puder ser expressado como uma
substituição extra s0
adicionada ao mais geral
É então a substituição mais geral capaz de tornar as duas
expressões iguais
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 28 / 34
197. Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Exemplo
ω1 ω2 UMG(σ) ω0
1 e ω0
2
P(x) P(A) {x/A}
P(f (x), y, g(x)) P(f (x), x, g(x)) {y/x} (ou {x/y})
P(f (x), y, g(y)) P(f (x), z, g(x)) {y/x, z/x}
P(x, B, B) P(A, y, z) {x/A, y/B, z/B}
P(g(f (v)), g(u)) P(x, x) {x/g(f (v)), u/f (v)}
P(x, f (x)) P(x, x)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 29 / 34
198. Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Exemplo
ω1 ω2 UMG(σ) ω0
1 e ω0
2
P(x) P(A) {x/A} P(A)
P(f (x), y, g(x)) P(f (x), x, g(x)) {y/x} (ou {x/y})
P(f (x), y, g(y)) P(f (x), z, g(x)) {y/x, z/x}
P(x, B, B) P(A, y, z) {x/A, y/B, z/B}
P(g(f (v)), g(u)) P(x, x) {x/g(f (v)), u/f (v)}
P(x, f (x)) P(x, x)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 29 / 34
199. Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Exemplo
ω1 ω2 UMG(σ) ω0
1 e ω0
2
P(x) P(A) {x/A} P(A)
P(f (x), y, g(x)) P(f (x), x, g(x)) {y/x} (ou {x/y}) P(f (x), x, g(x))
P(f (x), y, g(y)) P(f (x), z, g(x)) {y/x, z/x}
P(x, B, B) P(A, y, z) {x/A, y/B, z/B}
P(g(f (v)), g(u)) P(x, x) {x/g(f (v)), u/f (v)}
P(x, f (x)) P(x, x)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 29 / 34
200. Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Exemplo
ω1 ω2 UMG(σ) ω0
1 e ω0
2
P(x) P(A) {x/A} P(A)
P(f (x), y, g(x)) P(f (x), x, g(x)) {y/x} (ou {x/y}) P(f (x), x, g(x))
P(f (x), y, g(y)) P(f (x), z, g(x)) {y/x, z/x} P(f (x), x, g(x))
P(x, B, B) P(A, y, z) {x/A, y/B, z/B}
P(g(f (v)), g(u)) P(x, x) {x/g(f (v)), u/f (v)}
P(x, f (x)) P(x, x)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 29 / 34
201. Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Exemplo
ω1 ω2 UMG(σ) ω0
1 e ω0
2
P(x) P(A) {x/A} P(A)
P(f (x), y, g(x)) P(f (x), x, g(x)) {y/x} (ou {x/y}) P(f (x), x, g(x))
P(f (x), y, g(y)) P(f (x), z, g(x)) {y/x, z/x} P(f (x), x, g(x))
P(x, B, B) P(A, y, z) {x/A, y/B, z/B} P(A, B, B)
P(g(f (v)), g(u)) P(x, x) {x/g(f (v)), u/f (v)}
P(x, f (x)) P(x, x)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 29 / 34
202. Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Exemplo
ω1 ω2 UMG(σ) ω0
1 e ω0
2
P(x) P(A) {x/A} P(A)
P(f (x), y, g(x)) P(f (x), x, g(x)) {y/x} (ou {x/y}) P(f (x), x, g(x))
P(f (x), y, g(y)) P(f (x), z, g(x)) {y/x, z/x} P(f (x), x, g(x))
P(x, B, B) P(A, y, z) {x/A, y/B, z/B} P(A, B, B)
P(g(f (v)), g(u)) P(x, x) {x/g(f (v)), u/f (v)} P(g(f (v)), g(f (v)))
P(x, f (x)) P(x, x)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 29 / 34
203. Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Exemplo
ω1 ω2 UMG(σ) ω0
1 e ω0
2
P(x) P(A) {x/A} P(A)
P(f (x), y, g(x)) P(f (x), x, g(x)) {y/x} (ou {x/y}) P(f (x), x, g(x))
P(f (x), y, g(y)) P(f (x), z, g(x)) {y/x, z/x} P(f (x), x, g(x))
P(x, B, B) P(A, y, z) {x/A, y/B, z/B} P(A, B, B)
P(g(f (v)), g(u)) P(x, x) {x/g(f (v)), u/f (v)} P(g(f (v)), g(f (v)))
P(x, f (x)) P(x, x) Não há
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 29 / 34
204. Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Funcionamento
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 30 / 34
205. Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Funcionamento
O algoritmo recursivamente compara a estrutura de
duas expressões, x e y, elemento por elemento
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 30 / 34
206. Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Funcionamento
O algoritmo recursivamente compara a estrutura de
duas expressões, x e y, elemento por elemento
Ao longo do caminho, constrói um unificador s para as
expressões
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 30 / 34
207. Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Funcionamento
O algoritmo recursivamente compara a estrutura de
duas expressões, x e y, elemento por elemento
Ao longo do caminho, constrói um unificador s para as
expressões
Falha se dois pontos correspondentes nas estruturas não
baterem
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 30 / 34
208. Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Funcionamento
O algoritmo recursivamente compara a estrutura de
duas expressões, x e y, elemento por elemento
Ao longo do caminho, constrói um unificador s para as
expressões
Falha se dois pontos correspondentes nas estruturas não
baterem
Usa assim s para garantir que comparações futuras sejam
consistentes com ligações estabelecidas anteriormente
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 30 / 34
209. Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Funcionamento
Ao comparar uma variável com um termo complexo,
o algoritmo faz a checagem de ocorrência:
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 31 / 34
210. Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Funcionamento
Ao comparar uma variável com um termo complexo,
o algoritmo faz a checagem de ocorrência:
Verifica se essa variável já não ocorre dentro desse termo
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 31 / 34
211. Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Funcionamento
Ao comparar uma variável com um termo complexo,
o algoritmo faz a checagem de ocorrência:
Verifica se essa variável já não ocorre dentro desse termo
Se sim, falha, pois nenhum unificador consistente pode ser
construı́do
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 31 / 34
212. Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Funcionamento
Ao comparar uma variável com um termo complexo,
o algoritmo faz a checagem de ocorrência:
Verifica se essa variável já não ocorre dentro desse termo
Se sim, falha, pois nenhum unificador consistente pode ser
construı́do
Ex: S(x) não pode ser unificado a S(S(x))
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 31 / 34
213. Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
Função Unifica(x,y,s): substituição
se s = falha então retorna falha
se x = y então retorna s
se x for uma variável então
retorna UnificaVar(x,y,s)
se y for uma variável então
retorna UnificaVar(y,x,s)
se x e y forem expressões compostas então
retorna Unifica(args(x), args(y), Unifica(op(x),op(y),s))
se x e y forem listas então
retorna Unifica(resto(x), resto(y), Unifica(primeiro(x),
primeiro(y), s))
retorna falha
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 32 / 34
214. Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
Variável, constante, lista
ou expressão composta
Função Unifica(x,y,s): substituição
se s = falha então retorna falha
se x = y então retorna s
se x for uma variável então
retorna UnificaVar(x,y,s)
se y for uma variável então
retorna UnificaVar(y,x,s)
se x e y forem expressões compostas então
retorna Unifica(args(x), args(y), Unifica(op(x),op(y),s))
se x e y forem listas então
retorna Unifica(resto(x), resto(y), Unifica(primeiro(x),
primeiro(y), s))
retorna falha
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 32 / 34
215. Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
A substituição construı́da
até então (no inı́cio, vazia)
Função Unifica(x,y,s): substituição
se s = falha então retorna falha
se x = y então retorna s
se x for uma variável então
retorna UnificaVar(x,y,s)
se y for uma variável então
retorna UnificaVar(y,x,s)
se x e y forem expressões compostas então
retorna Unifica(args(x), args(y), Unifica(op(x),op(y),s))
se x e y forem listas então
retorna Unifica(resto(x), resto(y), Unifica(primeiro(x),
primeiro(y), s))
retorna falha
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 32 / 34
216. Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
Retorna uma substituição, se x e
y forem unificáveis no contexto
de s. Do contrário, falha
Função Unifica(x,y,s): substituição
se s = falha então retorna falha
se x = y então retorna s
se x for uma variável então
retorna UnificaVar(x,y,s)
se y for uma variável então
retorna UnificaVar(y,x,s)
se x e y forem expressões compostas então
retorna Unifica(args(x), args(y), Unifica(op(x),op(y),s))
se x e y forem listas então
retorna Unifica(resto(x), resto(y), Unifica(primeiro(x),
primeiro(y), s))
retorna falha
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 32 / 34
217. Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
x e y contém valores ou ex-
pressões idênticos (esses
podem ter sido atribuı́dos
a elas em UnificaVar)
Função Unifica(x,y,s): substituição
se s = falha então retorna falha
se x = y então retorna s
se x for uma variável então
retorna UnificaVar(x,y,s)
se y for uma variável então
retorna UnificaVar(y,x,s)
se x e y forem expressões compostas então
retorna Unifica(args(x), args(y), Unifica(op(x),op(y),s))
se x e y forem listas então
retorna Unifica(resto(x), resto(y), Unifica(primeiro(x),
primeiro(y), s))
retorna falha
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 32 / 34
218. Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
Se x ou y forem variáveis, tenta
unificá-las à outra expressão
Função Unifica(x,y,s): substituição
se s = falha então retorna falha
se x = y então retorna s
se x for uma variável então
retorna UnificaVar(x,y,s)
se y for uma variável então
retorna UnificaVar(y,x,s)
se x e y forem expressões compostas então
retorna Unifica(args(x), args(y), Unifica(op(x),op(y),s))
se x e y forem listas então
retorna Unifica(resto(x), resto(y), Unifica(primeiro(x),
primeiro(y), s))
retorna falha
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 32 / 34
219. Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
UnificaVar tenta unificar a
variável do primeiro argu-
mento com a expressão do
segundo, no contexto de s
Função Unifica(x,y,s): substituição
se s = falha então retorna falha
se x = y então retorna s
se x for uma variável então
retorna UnificaVar(x,y,s)
se y for uma variável então
retorna UnificaVar(y,x,s)
se x e y forem expressões compostas então
retorna Unifica(args(x), args(y), Unifica(op(x),op(y),s))
se x e y forem listas então
retorna Unifica(resto(x), resto(y), Unifica(primeiro(x),
primeiro(y), s))
retorna falha
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 32 / 34
220. Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
Em uma expressão composta,
como F(A, B), op() captura
o sı́mbolo de função F, en-
quanto que args() captura a
lista de argumentos (A, B)
Função Unifica(x,y,s): substituição
se s = falha então retorna falha
se x = y então retorna s
se x for uma variável então
retorna UnificaVar(x,y,s)
se y for uma variável então
retorna UnificaVar(y,x,s)
se x e y forem expressões compostas então
retorna Unifica(args(x), args(y), Unifica(op(x),op(y),s))
se x e y forem listas então
retorna Unifica(resto(x), resto(y), Unifica(primeiro(x),
primeiro(y), s))
retorna falha
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 32 / 34
221. Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
Unificamos antes os operadores.
E estes precisam ser idênticos
Função Unifica(x,y,s): substituição
se s = falha então retorna falha
se x = y então retorna s
se x for uma variável então
retorna UnificaVar(x,y,s)
se y for uma variável então
retorna UnificaVar(y,x,s)
se x e y forem expressões compostas então
retorna Unifica(args(x), args(y), Unifica(op(x),op(y),s))
se x e y forem listas então
retorna Unifica(resto(x), resto(y), Unifica(primeiro(x),
primeiro(y), s))
retorna falha
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 32 / 34
222. Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
Unificamos então a lista de argu-
mentos de x e y no contexto de s
Função Unifica(x,y,s): substituição
se s = falha então retorna falha
se x = y então retorna s
se x for uma variável então
retorna UnificaVar(x,y,s)
se y for uma variável então
retorna UnificaVar(y,x,s)
se x e y forem expressões compostas então
retorna Unifica(args(x), args(y), Unifica(op(x),op(y),s))
se x e y forem listas então
retorna Unifica(resto(x), resto(y), Unifica(primeiro(x),
primeiro(y), s))
retorna falha
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 32 / 34
223. Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
No caso de listas, tenta-
mos unificar o primeiro
elemento, para então recur-
sivamente unificar os demais
Função Unifica(x,y,s): substituição
se s = falha então retorna falha
se x = y então retorna s
se x for uma variável então
retorna UnificaVar(x,y,s)
se y for uma variável então
retorna UnificaVar(y,x,s)
se x e y forem expressões compostas então
retorna Unifica(args(x), args(y), Unifica(op(x),op(y),s))
se x e y forem listas então
retorna Unifica(resto(x), resto(y), Unifica(primeiro(x),
primeiro(y), s))
retorna falha
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 32 / 34
224. Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
Nesse ponto, x e y são
constantes distintas
Função Unifica(x,y,s): substituição
se s = falha então retorna falha
se x = y então retorna s
se x for uma variável então
retorna UnificaVar(x,y,s)
se y for uma variável então
retorna UnificaVar(y,x,s)
se x e y forem expressões compostas então
retorna Unifica(args(x), args(y), Unifica(op(x),op(y),s))
se x e y forem listas então
retorna Unifica(resto(x), resto(y), Unifica(primeiro(x),
primeiro(y), s))
retorna falha
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 32 / 34
225. Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
Função UnificaVar(var,x,s): substituição
se {var/val} ∈ s então
retorna Unifica(val, x, s)
se {x/val} ∈ s então
retorna Unifica(var, val, s)
se var ocorre em x, com a substituição s aplicada a ele (x s)
então
retorna falha (teste de ocorrência)
Adicione {var/x} a s
retorna s
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 33 / 34
226. Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
Variável
Função UnificaVar(var,x,s): substituição
se {var/val} ∈ s então
retorna Unifica(val, x, s)
se {x/val} ∈ s então
retorna Unifica(var, val, s)
se var ocorre em x, com a substituição s aplicada a ele (x s)
então
retorna falha (teste de ocorrência)
Adicione {var/x} a s
retorna s
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 33 / 34
227. Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
Expressão
Função UnificaVar(var,x,s): substituição
se {var/val} ∈ s então
retorna Unifica(val, x, s)
se {x/val} ∈ s então
retorna Unifica(var, val, s)
se var ocorre em x, com a substituição s aplicada a ele (x s)
então
retorna falha (teste de ocorrência)
Adicione {var/x} a s
retorna s
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 33 / 34
228. Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
Substituição atual
Função UnificaVar(var,x,s): substituição
se {var/val} ∈ s então
retorna Unifica(val, x, s)
se {x/val} ∈ s então
retorna Unifica(var, val, s)
se var ocorre em x, com a substituição s aplicada a ele (x s)
então
retorna falha (teste de ocorrência)
Adicione {var/x} a s
retorna s
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 33 / 34
229. Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
Primeiro aplicamos as
substituições existen-
tes em s a var e x
Função UnificaVar(var,x,s): substituição
se {var/val} ∈ s então
retorna Unifica(val, x, s)
se {x/val} ∈ s então
retorna Unifica(var, val, s)
se var ocorre em x, com a substituição s aplicada a ele (x s)
então
retorna falha (teste de ocorrência)
Adicione {var/x} a s
retorna s
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 33 / 34
230. Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
val pode ser um va-
lor ou expressão
Função UnificaVar(var,x,s): substituição
se {var/val} ∈ s então
retorna Unifica(val, x, s)
se {x/val} ∈ s então
retorna Unifica(var, val, s)
se var ocorre em x, com a substituição s aplicada a ele (x s)
então
retorna falha (teste de ocorrência)
Adicione {var/x} a s
retorna s
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 33 / 34
231. Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
Unificamos então a subs-
tituição recém feita à
outra expressão (x ou var)
Função UnificaVar(var,x,s): substituição
se {var/val} ∈ s então
retorna Unifica(val, x, s)
se {x/val} ∈ s então
retorna Unifica(var, val, s)
se var ocorre em x, com a substituição s aplicada a ele (x s)
então
retorna falha (teste de ocorrência)
Adicione {var/x} a s
retorna s
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 33 / 34
232. Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
No inı́cio, s = ∅ →
P s = P, ∀P
Função UnificaVar(var,x,s): substituição
se {var/val} ∈ s então
retorna Unifica(val, x, s)
se {x/val} ∈ s então
retorna Unifica(var, val, s)
se var ocorre em x, com a substituição s aplicada a ele (x s)
então
retorna falha (teste de ocorrência)
Adicione {var/x} a s
retorna s
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 33 / 34
233. Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
Evita laços como {x/f (x)}
Função UnificaVar(var,x,s): substituição
se {var/val} ∈ s então
retorna Unifica(val, x, s)
se {x/val} ∈ s então
retorna Unifica(var, val, s)
se var ocorre em x, com a substituição s aplicada a ele (x s)
então
retorna falha (teste de ocorrência)
Adicione {var/x} a s
retorna s
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 33 / 34
234. Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
Se nem var nem x partici-
parem de s, e passarem no
teste de ocorrência, então
substituı́mos a variável
var pelo que estiver em
x, de modo a alinhá-las
Função UnificaVar(var,x,s): substituição
se {var/val} ∈ s então
retorna Unifica(val, x, s)
se {x/val} ∈ s então
retorna Unifica(var, val, s)
se var ocorre em x, com a substituição s aplicada a ele (x s)
então
retorna falha (teste de ocorrência)
Adicione {var/x} a s
retorna s
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 33 / 34
235. Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
Substituı́mos a variável
justamente por ser mais
flexı́vel → por aceitar
atribuições facilmente
Função UnificaVar(var,x,s): substituição
se {var/val} ∈ s então
retorna Unifica(val, x, s)
se {x/val} ∈ s então
retorna Unifica(var, val, s)
se var ocorre em x, com a substituição s aplicada a ele (x s)
então
retorna falha (teste de ocorrência)
Adicione {var/x} a s
retorna s
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 33 / 34
236. Referências
Russell, S.; Norvig P. (2010): Artificial Intelligence: A Modern Approach. Prentice
Hall. 3a ed.
Slides do livro: http://aima.eecs.berkeley.edu/slides-pdf/
Hiż, A. (1957): Inferential Equivalence and Natural Deduction. The Journal of
Symbolic Logic, 22(3). pp. 237-240.
http://ocw.mit.edu/OcwWeb/Electrical-Engineering-
and-Computer-Science/6-034Spring-2005/LectureNotes/index.htm
http://jmvidal.cse.sc.edu/talks/learningrules/first-orderlogicsdefs.xml
https:
//www.sciencedirect.com/topics/computer-science/unification-algorithm
http://logic.stanford.edu/intrologic/secondary/notes/chapter_12.html
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 34 / 34