UNIVERSIDADE FEDERAL DO RIO DE JANEIRO Instituto de Matemática Lógica Profa Sheila Regina Murgel Veloso EMENTA Conjuntos Indutivos e Teorema da Recursão Cálculo Proposicional - Sistema dedutivo (Dedução natural) - Satisfatibilidade - Teorema da Completude - Aplicações: circuitos quebra-cabeças Cálculo de predicados - Um sistema dedutivo: dedução natural - Semântica Outros sistemas dedutivos: resolução tableaux BIBLIOGRAFIA INDICADA Rubin, J. Mathematical Logic: Applications and Theory, Saunders College Publishing, 1990 Mota, M. Introdução a lógica Escola de Computação, 1994 Suppes, P., Introduction to Logic, D. Van Nostrand Co, 1957 Enderton, H., Mathematical Logic, Academic Press. N.Y. 1972 Casanova, M. A., Giorno, F. A. C., Furtado, A. L.- Programação em Lógica e a Linguagm PROLOG Ed. Blücher LTDA, 1987 Parte 1: Conceitos básicos INDUÇÃO Existe um tipo de construção muito usado em lógica e em outros ramos da matemática que é o seguinte: Pretendemos construir um subconjunto de um conjunto conhecido U, começando com um certo conjunto inicial e vamos construir o conjunto desejado pela aplicação repetida de certas operações sobre os elementos do conjunto inicial. O conjunto desejado é o menor subconjunto de U que contem o conjunto inicial e é fechado sob tais operações, isto é, os elementos do conjunto desejado são aqueles que podem ser construídos a partir do conjunto inicial pela aplicação de um número finito de vezes das operações. Por exemplo, dado U = R, desejamos construir os números naturais a partir do conjunto inicial {0} pela aplicação repetida da função f(x) = x + 1. N é o menor subconjunto dos reais que contém {0} e é fechado sob f. Em lógica esta construção pode ser usada para obtermos a linguagem da lógica: o conjunto construído é o conjunto das fórmulas bem formadas da lógica. Para simplificar, vamos considerar um conjunto inicial B U e um conjunto de funções F = {f, g}, com f binária ( f: U x U U ) e g unária (g: U U). Se, por exemplo, B contem os pontos a e b, então o conjunto a ser construído, C, vai conter os pontos: f(a, a), f(a, b), f(b, b), g(a), g(b), g(g(a)), g(f(a, a)), etc. Existem duas maneiras de construir o conjunto C: 1) De cima para baixo: Dizemos que um conjunto S U é fechado sob f e g se e só se: se x e y são elementos de S, então f(x, y) S e g(x) S. Dizemos que S é indutivo (com respeito a B e F) se e só se: B S e S é fechado sob f e g. Defina C como a interseção de todos os subconjuntos indutivos de U, i.e. C é subconjunto de qualquer subconjunto indutivo de U. (Ou seja, se x C, então x S para qualquer subconjunto indutivo S U.) C é o conjunto C procurado. É fácil ver que C é indutivo. 2) De baixo para cima: Vamos construir um conjunto C consistindo de todos os elementos de U que possam ser obtidos a partir de B pela aplicação de um número finito de vezes de f e/ou g. Primeiramente, defina uma seqüência de construção, como sendo uma seqüência finita <x0, ..., xn> de elementos de U, tal que para cada i < n: xi B ou xi = f(xj, xk) para algum j, k < i ou xi = g(sj) para algum j < i Defina, para cada n > 1, Cn = {x | existe uma seqüência de construção de tamanho = n cujo último elemento é x}. Assim, C1 = B e Ci Ci+1. Defina C = Cn. isto é, C é o conjunto de todos os pontos x de U, tais que existe uma seqüência de construção cujo último elemento é x. Exemplo 1 Se a e b B, então g(f(a, f(b, b))) C5, já que existe uma seqüência de comprimento 5 cujo último elemento é g(f(a, f(b, b))), a saber: <a, b, f(b, b), f(a, f(b, b)), g(f(a, f(b, b)))>. Outra forma de verificar isto é pela árvore abaixo: g(f(a, f(b, b))) f(a, f(b, b)) a . f(b, b) b b Exemplo 2 Sejam U = R, B ={0}, F = {S}, onde S é a operação S(x) = x + 1. Então, C= {0,1,2, ...} = N. Observe que cada elemento de C só pode ser obtido de uma única maneira, por exemplo, 2=SS(0) e não há outra forma de obter 2 pela aplicação sucessiva de S. Exemplo 3 Sejam U = R, B ={0}, F = {S, P}, onde S e P são as operações S(x) = x + 1 e P(x) = x – 1. Então, C = {..., -2, -1, 0, 1, 2 ...} = Z. Notar que existe mais de uma maneira de obtermos o número 2: S(S(0)) e S(P(S(S(0)))) NOTA: Pode-se verificar que C = C, o que é um bom exercício para o leitor. Exercício Sejam C e C os conjuntos obtidos pelas construções de cima para baixo e de baixo para cima, respectivamente. Mostre que C = C [ Dica mostre que: 1) C C, mostrando que C é indutivo 2) C C, tomando um elemento x C e uma seqüência <x0, ..., xn>, onde xn = x e mostrando, por indução em n, que x C ] Já que C = C, vamos denotar C e C por C e dizemos que C é o conjunto gerado de B pelas funções em F. Princípio da indução Seja C o conjunto gerado de B pelas funções de F. Se S é um subconjunto de C tal que B S e S é fechado sob as funções de F, estão S = C. Prova Por hipótese e pela definição de indutivo, S é indutivo, logo C S. Como S C, então, S = C. Um conjunto indutivo C é livremente gerado de B pelas funções em F sse C é gerado de B pelas funções de F e : B Im(f)= B Im(g)= Im(g) Im(f)= f e g são injetivas. Teorema da recursão Seja C o conjunto livremente gerado de B U por F (supor, por simplicidade que F = {f, g}, onde f é binário e g, unário). Dados h: B V; G: V V e F: V x V V, existe uma única função h’: C V estendendo h (h’(x) = h(x) para x B ) tal que: - h’(f (x, y)) = F(h’(x), h’(y)) - h’(g(x)) = G (h’(x)) (i.e. basta definir como a função h’ se comporta em B e dizer como ela se comporta em relação aos geradores f e g (através das funções F e G)) Exercícios Prove usando indução matemática (a) 1 + 2 + 4 + ... + 2n-1 = 2n -1 ; (b) 1 x 1 + 2 x 2 + 3 x 4 + 4 x 8 + ... + n x 2n-1 = ((n - 1) x 2n ) + 1 ; (c) Se n 10, então 2n > n3 . (d) a expressão de Nicomachus (100 D.C.) para calcular o cubo de um número : 13 = 1 ; 23 = 3 + 5 ; 33 = 7 + 9 + 11 ; 43 = 13 + 15 + 17 + 19; ... (e) a identidade : 13 + 23 + 33 + ... + n3 = (1 + 2 + ... + n)2 Nota: defina SC e use o principio da indução. RELAÇÕES E FUNÇÕES Seja C um conjunto não vazio. para n1, - R Cn é chamada uma propriedade ou uma relação n-ária em C (binária, se n=2) - uma relação R Cn é uma função (n-1)-ária, de Cn-1 em C, se (a1, a2, ..., an-1, a) R e (a1, a2, ..., an-1, b) R implica que a = b . Usamos a notação R: Cn-1 C e R(a1, a2, ..., an-1)= a, para (a1, a2, ..., an-1, b) R quando R Cn é uma função. C0 é um conjunto unitário. Vamos definir C0= {0}. Assim, um elemento de aC pode ser visto como uma função 0-ária F: {0} C tal que F(0)=a. Uma função F: Cn-1 A é injetiva se e só se: F(a1, a2, ..., an-1) = a e F(a1, a2, ..., an-1) = b implica que a=b. Uma função F: Cn-1 A é bijetiva se e só se: para todo aA, F(a1, a2, ..., an1)= a, para algum (a1, a2, ..., an-1)