A Lógica de Primeira Ordem

Documentos relacionados
Programação em Lógica. UCPEL/CPOLI/BCC Lógica para Ciência da Computação Luiz A M Palazzo Maio de 2010

Os Fundamentos: Lógica de Predicados

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA

Aula 12: Lógica de Predicados

1 Lógica de primeira ordem

Todos os pássaros têm pena. Nem todos os passáros voam. Todo inteiro primo maior que dois é ímpar

Lógica Computacional DCC/FCUP 2017/18

Fundamentos de Lógica Matemática

Fundamentos 1. Lógica de Predicados

Capítulo 3 Lógica de Primeira Ordem

Lógica para computação - Linguagem da Lógica de Predicados

A linguagem da Lógica de Predicados. (Capítulo 8) LÓGICA APLICADA A COMPUTAÇÃO. Professor: Rosalvo Ferreira de Oliveira Neto

Andamento da apresentação

Lógica Computacional

Quantificadores, Predicados e Validade

Lógica Computacional

Departamento de Matemática Universidade do Minho, Braga 2009 /2010. Cálculo de Predicados de Primeira-Ordem da Lógica Clássica p.

Lógica Computacional

Lógica de Predicados

Lógica de primeira ordem (Capítulo 8 - Russell) Inteligência Artificial

Lógica e prova de resolução Marco Henrique Terra

Matemática Discreta. Lógica de Predicados. Profa. Sheila Morais de Almeida. agosto DAINF-UTFPR-PG

Lógica de Predicados

Lógica para Computação

Capítulo 8 Lógica de primeira Ordem

Cálculo de Predicados. Matemática Discreta. Profa. Sheila Morais de Almeida DAINF-UTFPR-PG. março

Lógica de Predicados

Lógica de Predicados

Um alfabeto é um conjunto de símbolos indivisíveis de qualquer natureza. Um alfabeto é geralmente denotado pela letra grega Σ.

Faculdade de Informática PUCRS Lógica para Computação Lista de Exercícios Sintaxe e Semântica da Lógica de Predicados Prof.

Aula 2: Linguagem Proposicional

1 TEORIA DOS CONJUNTOS

INF1009.3WB: Lógica para computação

Lógica Computacional

01/09/2014. Capítulo 1. A linguagem da Lógica Proposicional

Lógica Formal. Matemática Discreta. Prof Marcelo Maraschin de Souza

SCC Capítulo 2 Lógica de Predicados

Disciplina: LINGUAGENS FORMAIS, AUTÔMATOS E COMPUTABILIDADE Prof. Jefferson Morais

NOÇÕES DE LÓGICA MATEMÁTICA. O CÁLCULO DE PREDICADOS DE 1 a ORDEM

PROGRAMAÇÃO EM LÓGICA

O sucessor de um inteiro par é ímpar (1) (2) 2 é um inteiro par Alguns mamíferos são ferozes

Cálculo de Predicados

Lógica de Predicados

Lógica de Predicados

Lógica. Professor Mauro Cesar Scheer

Lógica e Programação - Folha de trabalho n. 7

Lógica proposicional

Cálculo de Predicados

Lógica de Predicados

Argumentação em Matemática período Prof. Lenimar N. Andrade. 1 de setembro de 2009

2 Preliminares. (ii) α é uma subfórmula de α; (iii) Se γ β é uma subfórmula de α então também são γ, β para =,,.

Inteligência Artificial IA II. LÓGICA DE PREDICADOS PARA REPRESENTAÇÃO DO CONHECIMENTO

EXPRESSÕES RELACIONAIS

Conteúdo. Correção de Exercício Quantificadores Rosen (pg 33) Tradução Português Lógica Rosen (pg 42)

1. = F; Q = V; R = V.

A sintaxe do cálculo de predicados (I), cap. 6 de Introdução à Lógica (Mortari 2001) Luiz Arthur Pagani

Lógica predicados. Lógica predicados (continuação)

MD Lógica de Proposições Quantificadas Cálculo de Predicados 1

Lógica Computacional

Lógica dos Quantificadores: sintaxe e semântica intuitiva

Prof. Cesar Augusto Tacla

COMO LER NOTAÇÃO LÓGICA

Inteligência Artificial IA III. PROVA AUTOMÁTICA DE TEOREMAS

Lógica de primeira ordem First Order Logic (FOL)

Predicados e Quantificadores

printing problem: dado um programa e um valor arbitrários, o problema de determinar se sim ou não se vai obter como output do programa esse valor;

Prof. Cesar Augusto Tacla

Podemos reescrevê-la da seguinte forma, com a utilização de um condicional: Para tudo, se é homem, então é mortal.

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO

Elementos de Lógica Matemática p. 1/2

Universidade Federal de Alfenas

Centro Universitário do Triângulo

Alexandre Nolasco de Carvalho Universidade de São Paulo São Carlos SP, Brazil. 11 de Março de 2014

assim são válidas devido à sua estrutura e ao significado dos quantificadores universal e existencial

Lógica de primeira ordem

Fórmulas Bem Formadas (wff) Prioridade dos Conectivos. Prioridade dos Conectivos. Semântica do CR. Semântica do CR

APÊNDICE B ESPECIFICAÇÃO ALGÉBRICA DEFINIÇÕES E NOTAÇÃO

Expandindo o Vocabulário. Tópicos Adicionais. Autor: Prof. Francisco Bruno Holanda Revisor: Prof. Antônio Caminha Muniz Neto. 12 de junho de 2019

Apresentação do curso

Introdução. Introdução. Motivação. Motivação. Solução INTELIGÊNCIA ARTIFICIAL CÁLCULO RELACIONAL (PARTE I)

Nelma Moreira. Aula 17

Lógica Proposicional

Apresentação do curso

Expressões e enunciados

Como primeira e indispensável parte da Lógica Matemática temos o Cálculo Proporcional ou Cálculo Sentencial ou ainda Cálculo das Sentenças.

anti-simétrica, com elemento mínimo e tal que, dados n, n, n N, se

Lógica e Programação - Folha de trabalho n. 3

Lógica de Primeira Ordem. Douglas O. Cardoso docardoso.github.io. Lógica de Primeira Ordem 1/18

Lógica. Cálculo Proposicional. Introdução

INTRODUÇÃO À LÓGICA MATEMÁTICA

Linguagem de Consulta/Interrogação

Lógica Computacional

Lógica Clássica Proposicional

A sintaxe do cálculo de predicados (II), cap. 7 de Introdução à Lógica (Mortari 2001) Luiz Arthur Pagani

Linguagens Livres de Contexto

LÓGICA TEMPORAL COM RAMIFICAÇÕES (Branching time temporal logics)

JOÃO NUNES de SOUZA. LÓGICA para CIÊNCIA da COMPUTAÇÃO. Uma introdução concisa

RETICULADOS: NOTAS DO SEMINÁRIO DE 7/03/03

Transcrição:

Capítulo 10 A Lógica de Primeira Ordem A Lógica de Primeira Ordem: A necessidade de uma linguagem mais expressiva O cálculo proposicional possui limitações com respeito a codificação de sentenças declarativas. De fato, o cálculo proposicional manipula de forma satisfatória componentes das sentenças como não, e, ou, se... então, mas certos aspectos lógicos que aparecem em linguagens naturais ou artificiais são muito mais ricos. Por exemplo, como expressar coisas do tipo: Existe... e Para todo... na lógica proposicional? Exemplo 7. Considere a seguinte sentença declarativa: Todo estudante é mais jovem do que algum instrutor. Na lógica proposicional podemos identificar esta sentença com uma variável proposicional p. No entanto, esta codificação não reflete os detalhes da estrutura lógica desta sentença. De que trata esta sentença? Ser um estudante. Ser um instrutor. Ser mais jovem do que alguém. Para expressar estas propriedades utilizaremos predicados. Por exemplo, podemos escrever estudante(ana) para denotar que Ana é uma estudante. Da mesma forma podemos escrever instrutor(marcos) para denotar que Marcos é um instrutor. Por fim, podemos escrever jovem(ana,marcos) para denotar que Ana é mais jovem do que Marcos. Nestes exemplos, estudante, instrutor e jovem são exemplos de predicados. Ainda precisamos codificar as noções de todo e algum. Para isto introduziremos o conceito de variável. Variáveis serão denotadas por letras latinas minúsculas do final do alfabeto: u, v, w, x, y, z (possivelmente acrescidas de sub-índices x 1,x 2,...). Variáveis devem ser pensadas como lugares vazios que podem ser preenchidos (ou instanciados) por elementos concretos, como joão, maria, etc. Utilizando variáveis podemos especificar o significado dos predicados estudante, instrutor e jovem de uma maneira mais formal: estudante(x): x é um estudante. instrutor(x): x é um instrutor. jovem(x,y): x é mais jovem do que y. 45

estudante(x): x é um estudante. Note que o nome das variáveis não é importante: é equivalente a Para estudante(y): y é um estudante. que possamos finalmente expressar em detalhes a sentença apresentada no exemplo precisamos codificar o significado de Todo e algum em Todo estudante é mais jovem do que algum instrutor. Os quantificadores 8 e 9 fazem este trabalho: 8: significa para todo; 9: significa existe. Os quantificadores 8 e 9 estão sempre ligados a alguma variável: 8 x : para todo x; 9 x :existeumx (ou existe algum x). Agora podemos finalmente codificar a sentença: da seguinte forma: Todo estudante é mais jovem do que algum instrutor. 8 x (estudante(x)! (9 y (instrutor(y) ^ jovem(x, y)))) Note que predicados diferentes podem ter um número distinto de argumentos: os predicados estudante e instrutor admitem apenas um argumento e por isto são chamados de predicados unários, enquanto que o predicado jovem admite dois argumentos, e portanto é um predicado binário. O número de argumentos de um predicado é chamado sua aridade. Assim, os predicados unários têm aridade 1, enquanto que os predicados binários têm aridade 2, etc. No cálculo de predicados são permitidos predicados com qualquer aridade finita. Exemplo 8. Considere a sentença: Nem todos os pássaros podem voar. Escolhemos os seguintes predicados para expressar esta sentença: passaro(x): x é um pássaro. voar(x): x pode voar. Esta sentença pode ser codificada da seguinte forma: (8 x (passaro(x)! voar(x))) Exemplo 9. Uma outra maneira de expressar a mesma idéia da sentença anterior é dizer que: Existem alguns pássaros que não podem voar. Esta última sentença pode ser codificada da seguinte maneira: 9 x (passaro(x) ^ voar(x)) Posteriormente veremos que as duas codificações dadas são semanticamente equivalentes. De fato, existem transformações que convertem uma na outra. 46

A lógica de primeira ordem: uma linguagem formal O vocabulário da lógica de primeira ordem consiste de três conjuntos: 1. Um conjunto P de símbolos de predicado; 2. Um conjunto F de símbolos de função; 3. Um conjunto C de constantes. onde cada símbolo de predicado e de função vem com sua aridade bem definida. Os predicados são casos especiais de função: enquanto as funções possuem contra-domínio qualquer, os predicados têm contra-domínio sempre igual a {V,F}. As constantes são funções de aridade 0. Definição 19. Termos são definidos da seguinte forma: 1. Qualquer variável é um termo; 2. Se c 2F é uma função de aridade 0 então c é um termo; 3. Se t 1,...,t n são termos e f 2F é uma função de aridade n>0 então f(t 1,...,t n ) é u m termo. 4. Nada mais é termo. Em BNF (Backus Naur form) temos: t ::= x c f(t,..., t) onde x percorre o conjunto de variáveis V, c percorre os símbolos de função de aridade 0 de F e f percorre os elementos de aridade maior do que 0 de F. Exemplo 10. Suponha que n, f e g são símbolos de função de aridade respetivamente igual a 0, 1e2. Entãog(f(n),n) e f(g(n, f(n))) são termos, mas g(n) e f(f(n),n) não são termos por violarem as aridades dos símbolos. A escolha dos conjuntos P e F para símbolos de predicado e de função é definida a partir do que se pretende descrever. Definição 20. Definimos o conjunto de fórmulas sobre o conjunto S =(F, P) indutivamente da seguinte forma: 1. Se p 2Pé u m s í m b o l o d e p r e d i c a d o d e a r i d a d e n>0, eset 1,...,t n são termos sobre F então p(t 1,...,t n ) é u m a f ó r m u l a. 2. Se é uma fórmula então ( ) é também uma fórmula. 3. Se e são fórmulas então ( ^ ), ( _ ), (! ) e ( $ ) são fórmulas. 4. Se é u m a f ó r m u l a e x é uma variável então (8 x ) e (9 x ) também são fórmulas. 5. Nada mais é fórmula. 47

Em BNF temos: ::= p(t 1,..., t n ) ( ) ( ^ ) ( _ ) (! ) ( $ ) (8 x ) (9 x ) onde p é um símbolo de predicado de aridade n>0, t i são termos sobre F e x é uma variável. Convenção 1. Adotaremos a seguinte prioridade de operadores: 1., 8, 9; 2. ^, _; 3.!, $. Exemplo 11. Considere a seguinte sentença: Todo filho de meu pai é meu irmão. Podemos codificar esta fórmula de pelo menos duas formas distintas: 1. Representando a noção de pai como predicado: Neste caso escolhemos três predicados: filho, filho(x, y): x é fi l h o d e y pai e irmao com os seguintes significados e aridades: pai(x, y): x é p a i d e y irmao(x, y): x é i r m ã o d e y. Uma possível codificação para a sentença dada utilizando estes predicados é: 8 x 8 y (pai(x, joao) ^ filho(y, x)! irmao(y, joao)) dizendo que: para todo x etodoy, sex é o p a i d e j o a o e s e y é u m fi l h o d e x então y é u m i r m ã o de joao. Representando a noção de pai como função, que chamaremos de f: Neste caso, f(x) retorna opaidex. Note que isto funciona apenas porque o pai de uma dado x é único e está sempre definido, e portanto f é realmente uma função. Uma possível codificação para esta sentença é dada por: 8 x (filho(x, f(joao))! irmao(x, joao)) significando que para todo x, sex é um filho do pai de joao então x é u m i r m a o d e j o a o. Esta codificação é menos complexa que a anterior porque envolve apenas um quantificador. Especificações formais em geral exigem um domínio de conhecimento. Muitas vezes este conhecimento não está explicitado no domínio. Sendo assim, um especificador pode desconsiderar restrições importantes para um modelo ou implementação. Por exemplo, as codificações dadas no exemplo anterior podem parecer corretas, mas e se x for igual a joao? Se o domínio de relações de parentesco não é um conhecimento comum o especificador pode não notar que uma pessoa não pode ser irmão dela mesma. Definição 21. A abrangência de 8 x (respectivamente, 9 x ) em 8 x (respectivamente, 9 x )é. Uma ocorrência de uma variável ligada numa fórmula, é uma ocorrência de uma variável x, dentro do campo de abrangência de um quantificador 8 x ou 9 x. Uma ocorrência de uma variável livre é uma ocorrência de uma variável x não ligada. 48

Exemplo 12. Na fórmula 9 x (p(f(x),y)! q(x)), as duas ocorrências da variável x são ligadas, enquanto a ocorrência da variável y é livre. Na fórmula 9 x p(f(x),y)! q(x) a primeira ocorrência da variável x é ligada, no entanto a segunda é livre. Definição 22. Dada uma variável x, um termo t eumafórmula, definimos [x/t] como sendo a fórmula obtida após substituir cada ocorrência livre de x em por t. Exemplo 13. Considere novamente a fórmula 8 x ((p(x)! q(x)) ^ s(x, y)), que chamaremos simplesmente de. Temos que [x/f(x, y)] =. De fato, todas as ocorrências de x em são ligadas, e portanto a substituição [x/f(x, y)] não tem nenhum efeito sobre esta fórmula. Exemplo 14. Agora considere a fórmula (8 x (p(x) ^ q(x)))! ( p(x) _ q(y)) que chamaremos simplesmente de. Neste caso temos uma ocorrência livre de x e, portanto [x/f(x, y)] é igual a (8 x (p(x) ^ q(x)))! ( p(f(x, y)) _ q(y)) As substituições podem produzir efeitos colaterais indesejados: Considere o termo f(x, y) e a fórmula 8 y (p(x, y)). Então (8 y (p(x, y)))[x/f(x, y)] resulta na fórmula (8 y (p(f(x, y),y))) se fizermos uma substituição ingênua. Observe que o termo resultante possui uma semântica diferente da esperada porque a variável y do termo f(x, y) não corresponde a variável y quantificada universalmente na fórmula dada. Como resolver este problema? Definição 23. Dados um termo t, uma variável x eumafórmula, dizemos que t é livre para x em se nenhuma ocorrência livre de x em está no escopo de 8 y ou 9 y para qualquer variável y que ocorra em t. Exemplo 15. Considere a fórmula s(x) ^8 y (p(x)! q(y)), que possui duas ocorrências livres de x. A ocorrência de x mais a esquerda poderia, por exemplo, ser substituída pelo termo f(y, y), no entanto a outra ocorrência não poderia ser substituída por este termo porque tal substituição acarretaria captura da variável y. Quando precisamos realizar uma substituição de um termo t que não está livre para uma variável x em uma fórmula, o que fazemos é renomear as variáveis ligadas para evitar capturas: Exemplo 16. No caso do exemplo anterior, a substituição de x por f(y, y) em s(x) ^8 y (p(x)! q(y)) pode ser resolvida renomeando a variável ligada y da fórmula para algum nome novo, por exemplo w: s(x) ^8 w (p(x)! q(w)). Agora a substituição pode ser realizada sem provocar captura de variáveis. 49