Lógica para Computação Primeiro Semestre, 2015 Aula 12: Lógica de Predicados DAINF-UTFPR Prof. Ricardo Dutra da Silva Vamos estender a lógica proposicional para torná-la mais expressiva. Na lógica proposicional, as fórmulas não dependiam da estrutura das proposições, apenas do modo como estas eram combinadas. Considere, por exemplo, a sentença declarativa: Todo estudante é mais novo do que algum professor.. Na lógica proposicional, a sentença seria um átomo. No entanto, a abordagem não captura estruturas mais finas da sentença, como ser estudante, ser professor ou ser mais jovem do que alguém. Para capturar essa maior expressividade usamos predicados. O predicado E(Carlos) pode ser usado para denotar que Carlos é um estudante; o predicado P (Ricardo) para denotar que Ricardo é um professor e o predicado J(Carlos, Ricardo) para denotar que Carlos é mais jovem que Ricardo. Os predicados acima estão modificando indivíduos específicos. Isso não ajuda muito na tarefa de descrever a frase que consideramos inicialmente, que fala de alunos e estudantes de uma forma mais geral. Os alunos e professores poderiam ser listados mas isso também não é prático. Então, usamos o conceito de variável que pode ser substituída por um indivíduo ou objeto qualquer. Usando as variáveis x e y, poderíamos escrever: E(x) : x é um estudante P (y) : y é um professor J(x, y) : x é mais jovem do que y. Ainda não temos uma formalização para os quantificadores todo e algum. Serão usados os símbolos, que lemos para todo ; e, que lemos existe ou para algum. Os quantificadores sempre modificam uma variável. Tendo os predicado, os quantificadores e os conectivos já conhecidos da lógica proposicional, a sentença inicial de exemplo poderia ser escrita como: x(e(x) ( y(p (y) J(x, y)))). Para avaliar se a fórmula é verdadeira é necessário definir os alunos e professores sobre os quais estamos falando. Considerando a UTFPR, possivelmente a sentença é verdadeira. 1
2 Aula 12: Lógica de Predicados No entanto, o resultado pode ser diferente em um curso de alfabetização para adultos. Na Lógica de Predicados também trabalhamos com o conceito de função. Considerando a sentença: Toda criança é mais jovem do que sua mãe, podemos formalizá-la como x y(c(x) M(y, x) J(x, y)), usando os predicados C(x) : x é uma criança M(y, x) : y é mãe de x J(x, y) : x é mais jovem do que y. As funções muitas vezes simplificam o que está sendo dito. Sabemos que uma criança possui apenas uma mãe, logo, poderíamos usar uma função m(x) que representa a mãe de x e evitaríamos escrever algo mais complicado como o predicado M(y, x). A fórmula seria simplificada como x(c(x) J(x, m(x))). Funções podem ser usadas quando o objeto sobre o qual falamos é definido unicamente. Não seria possível uma função b(x) que representa de forma não ambígua o irmão de x, pois um irmão pode não ser unicamente definido. Como fizemos com a lógica proposicional, vamos definir formalmente a sintaxe da Lógica de Predicados e em seguida a sua semântica. Definição 12.1. O alfabeto da lógica de predicados é formado por símbolos de pontuação ( e ). Um conjunto V = {x 1, x 2,...} de variáveis. Um conjunto C = {c 1, c 2,...} de constantes. Um conjunto P = {P 1, P 2,...} de predicados. Um conjunto F = {f 1, f 2,...} de funções. Conectivos,,,,,. Cada um dos predicados e funções contém uma aridade, ou seja, um número específico de argumentos.
Aula 12: Lógica de Predicados 3 Os símbolos para funções falam sobre objetos. As funções recebem objetos e retornam objetos. A função m(carlos) = Maria recebe o objeto Carlos e informa o objeto Maria. Os símbolos para predicados são usados para representar propriedades e relações entre objetos. Ao dizer Carlos é estudante, ser estudante é uma propriedade de Carlos. Podemos representar a propriedade pelo predicado E(x) que será verdadeira se x é estudante. No caso de x = Carlos o resultado é verdadeiro. A relação mais jovem dada pelo predicado J(x, y) é verdadeira somente se x for mais jovem que y. Predicados e funções podem ter aridade zero. Funções de aridade zero são constantes. Os predicados com aridade zero são as variáveis proposicionais ou átomos da Lógica Proposicional. A escolha dos conjuntos P e F depende do que pretendemos descrever. Caso queiramos representar relações entre familiares, poderíamos ter P = {H, F, S, D} para representar os predicados ser do sexo masculino, ser do sexo feminino, ser filho de e ser filha de, respectivamente. As funções F = {m, p} poderiam ser usadas para representar a mãe e o pai de alguém. Na linguagem de predicados teremos sentenças cuja valoração representará um objeto e sentenças cuja valoração representará um valor verdade. As primeiras sentenças são chamadas termos e as segundas são chamadas fórmulas. Definição 12.2. O conjunto de termos T é definido como: Base 1: se x i V, então x i T ; Base 2: se c i C, então c i T ; Passo recursivo: se t 1, t 2,..., t n são termos e f (F ) é uma função n-ária, n > 0, então f(t 1, t 2,..., t n ) T ; Os termos da linguagem são formados por variáveis, constantes e funções. Exemplo 12.1 Seja o alfabeto: ( e ) ; V = {x, y};
4 Aula 12: Lógica de Predicados C = {a, b}; P = {E, P, J}; F = {m};,,,,,. A seguir são formados alguns termos usando a Definição 12.6. x termo regra x (base 1) a termo regra a (base 2) m(x) termo regra x (base 1) m(x) (passo) Definição 12.3. Sejam t 1, t 2,..., t n termos e seja P um predicado n-ário, então P (t 1, t 2,..., t n ) é um átomo. Exemplo 12.2 Seja o alfabeto: ( e ) ; V = {x, y}; C = {a, b};
Aula 12: Lógica de Predicados 5 P = {E, P, J}; F = {m};,,,,,. Pela Definição 12.6, x e m(x) são termos. Pela Definição 12.3, J(x, m(x)) é um átomo formado pelo predicado J, de aridade dois. A Definição 12.3 indica que predicados n-ários assumem o papel dos átomos, como tínhamos na linguagem proposicional. Também, da mesma forma que a linguagem proposicional, a construção de fórmulas é feita pela concatenação de átomos e conectivos. Definição 12.4. O conjunto de fórmulas da Lógica de Predicados é definido como: Base: um átomo é uma fórmula. Passo recursivo 1: se A é uma fórmula então ( A) também é uma fórmula. Passo recursivo 2: se A e B são fórmulas então (A B), (A B) e (A B) são fórmulas. Passo recursivo 3: se A é uma fórmula e x é uma variável, então x(a) e x(a) são fórmulas. Exemplo 12.3 Considere a sentença Todo filho do meu pai é meu irmão. e os predicados F (x, y) : x é filho de y P (x, y) : x é pai de y I(x, y) : x é irmão de y. Se fizermos a contante e ser o objeto eu, a fórmula x y(p (x, e) F (y, x) I(y, e)) formaliza a sentença Todo filho do meu pai é meu irmão..
6 Aula 12: Lógica de Predicados Alternativamente, usando a função p(x) para pai de x, a mesma sentença pode ser formalizada como x(f (x, p(e)) I(x, e)). Exemplo 12.4 As fórmulas do Exemplo 12.3 são bem formadas conforme a Definição 12.4. A fórmula x y(p (x, e) F (y, x) I(y, e)) pode ser construída da seguinte maneira: fórmula regra P (x, e) (base) F (y, x) (base) I(y, e) (base) (P (x, e) F (y, x)) (passo 2) ((P (x, e) F (y, x)) I(y, e)) (passo 2) y(((p (x, e) F (y, x)) I(y, e))) (passo 3) x( y(((p (x, e) F (y, x)) I(y, e)))) (passo 3) Definição 12.5. A ordem de precedência na Lógica de Predicados é dada pela listagem dos conectivos na seguinte ordem, da maior precedência para a menor,,,,,,. Definição 12.6. O conjunto de subtermos de um termo E, Subt(E), é definido como: Base 1: se E = x V, então Subt(E) = Subt(x) = {x}; Base 2: se E = c C, então Subt(E) = Subt(c) = {c}; Passo recursivo: se E = f(t 1, t 2,..., t n ), então Subt(E) = Subt(f(t 1, t 2,..., t n )) = {f(t 1, t 2,..., t n )} Subt(t 1 ) Subt(t 2 )... Subt(t n ). Definição 12.7. O conjunto de subfórmulas de uma fórmula A, Subf(A), é definido como: Base: se A é um átomo, Subf(A) = {A}. Passo recursivo 1: se A = B, então Subf(A) = Subf( B) = { B} Subf(B);
Aula 12: Lógica de Predicados 7 Passo recursivo 2: se A = B C, então Subf(A) = Subf(B C) = {B C} Subf(B) Subf(C); Passo recursivo 3: se A = B C, então Subf(A) = Subf(B C) = {B C} Subf(B) Subf(C); Passo recursivo 4: se A = B C, então Subf(A) = Subf(B C) = {B C} Subf(B) Subf(C); Passo recursivo 5: se A = x(b), então Subf(A) = Subf( x(b)) = { x(b)} Subf(B); Passo recursivo 6: se A = x(b), então Subf(A) = Subf( x(b)) = { x(b)} Subf(B). Exercício 12.1. Definição 12.8. Compute as subfórmulas de H = x(p (x)) (P (x) y(r(y)). Seja E uma fórmula: se x(h) é uma subfórmula de E, então o escopo de x em E é H. se x(h) é uma subfórmula de E, então o escopo de x em E é H. Exercício 12.2. Quais as subfórmulas da fórmula E = x( y( zp (x, y, w, z) yq(z, y, x, f(z 1 )))) formam o escopo para os quantificadores presentes em E. Definição 12.9. Seja x uma variável e E uma fórmula, se x ocorre em E dentro do escopo de um quantificador, x ou x, então x é uma variável ligada; caso contrário, x é uma variável livre. Exercício 12.3. Classifique como ligada ou livre cada uma das variáveis da fórmula E = x( y( zp (x, y, w, z) yq(z, y, x, f(z 1 )))).