Lógica para Computação Prof. Celso Antônio Alves Kaestner, Dr. Eng. celsokaestner (at) utfpr (dot) edu (dot) br
A (ou lógica de 1ª ordem) é uma extensão da lógica proposicional que aumenta sua expressividade, permitindo que se façam afirmações sobre propriedades ou predicados inerentes a conjuntos de elementos individuais; Tipicamente as fórmulas envolvem os quantificadores para todo () e existe (); Uma fórmula típica é: x(homem(x) mortal(x)). Obs.: para representar o mesmo em Lógica Proposicional seria necessário utilizar uma fórmula para cada indivíduo, por exemplo: (homem_joão mortal_joão), (homem_josé mortal_josé), etc. 2
A linguagem (sintaxe) da L PRED é mais complexa que a da Lógica Proposicional; Para a definição de L PRED necessita-se de: 1. Um conjunto de predicados: R i = { r i 1, r i 2,... r i n,...} onde o sobrescrito i indica a aridade do predicado (o seu nº de argumentos); 2. Um conjunto de constantes: C = {c 1,c 2,...}; 3. Um conjunto de funções: F i = { f i 1, f i 2,... f i n,...} onde o sobrescrito i também indica a aridade da função; 4. Um conjunto de variáveis: V = {x 1,x 2,...}. 3
A assinatura de L PRED é a uma tupla do tipo = [R 1,R 2,...R M,C,F 1,F 2,...F N ] onde N e M são números naturais conhecidos. O conjunto dos termos de L PRED é T() definido recursivamente por: 1. Se xv então x T(); 2. Se cc então c T(); 3. Se ff j e se t 1,...t j T() então f(t 1,...t j ) T(). 4
O conjunto das fórmulas (fbf) de L PRED é Fbf() definido recursivamente como sendo o menor conjunto que atenda ao seguinte: 1. Se t 1,...t j T() e se r j R j então r j (t 1,...t j ) Fbf(); 2. Se t 1, t 2 T() então t 1 = t 2 Fbf(); Estas fbf são chamadas de fórmulas atômicas; 3. Se, Fbf() então,,, Fbf(); 4. Se Fbf() e se xv então x() e x() Fbf(). 5
O conjunto das variáveis livres V LIVRES () em uma fórmula é definido por: 1. Se = r j (t 1,...t j ) com r j R j e os t i T() então todas as variáveis em pertencem a V LIVRES (); 2. Se = (t 1 =t 2 ) com os t i T() então todas as variáveis em pertencem a V LIVRES (); 3. Se = então V LIVRES ()= V LIVRES (); 4. Se =,, ou então V LIVRES ()= V LIVRES () V LIVRES (); 5. Se = x() ou x() então V LIVRES ()= V LIVRES () {x}. Exemplo: Se = x (r(x) q(y) z (s(z,y))) então V LIVRES () = { y }. 6
Uma fórmula tal que V LIVRES () = (sem variáveis livres) é denominada uma sentença. Uma subfórmula de uma fórmula é uma subseqüência dos símbolos de que também pertence a Fbf(). Exemplo: se = x (r(x) q(y) z (s(z,y))) então r(x) q(y) z (s(z,y)), r(x) q(y), z (s(z,y)), r(x) e q(y) são subfórmulas de. 7
Exemplos: 8
A semântica da é definida sobre um par A()=[A, v A() ] denominado sistema algébrico da assinatura, tal que: 1. A é um conjunto denominado domínio (ou portador) do sistema algébrico; 2. v A() é uma interpretação, que mapeia os elementos dos conjuntos em em relações sobre A (para os predicados), em funções sobre A (para as funções) e em elementos de A (para as constantes). 9
Desta forma para uma interpretação v A() tem-se: 1. Se r j R j então v A() (r j ) A j = A A... A (j vezes); 2. Se ff j então existe uma função v A() (f j ): A j A; 3. Se c C então v A() (c) A; 4. Para um conjunto de variáveis X V existe ainda uma função : X A denominada interpretação das variáveis X em A. 10
O valor de um termo t T () em um sistema algébrico A() e para uma interpretação de variáveis é definido indutivamente por: 1. Se t = x X então t A() [] = (x); 2. Se t = c C então t A() [] = v A() (c); 3. Se ff j, t 1,..., t j são termos e t=f(t 1,..., t j ) então t A() []= v A() (f j )(t 1 A() [],..., t j A() []). 11
Finalmente é possível se definir quando uma fórmula é verdadeira para um sistema algébrico A() e uma interpretação de variáveis ; Denota-se por A() = []; 1. Se = r j (t 1,...t j ) Fbf() então A() = [] é equivalente a [t 1 A() [],..., t j A() []] v A() (r j ); 2. Se = (t 1 =t 2 ) com t 1, t 2 T() então A() = [] é equivalente a t 1 A() [] = t 2 A() []; 3. Se = e Fbf() então A() = [] se e somente se não for verdade que A() = []; 12
4. Se =, com, Fbf() então A() = [] se e somente se A() = [] e A() = []; 5. Se =, com, Fbf() então A() = [] se e somente se A() = [] ou A() = []; 6. Se =, com, Fbf() então A() = [] se e somente se quando A() = [] necessariamente também ocorre A() = []; 7. Se = x() com Fbf() então A() = [] se e somente se existir pelo menos uma interpretação de variáveis : X A que, restrita às variáveis de, seja tal que A() = []; 8. Se = x() com Fbf() então A() = [] se e somente se para todas as interpretações de variáveis : X A, quando restritas às variáveis de, sejam tais que A() = []. 13
Exemplos 14
Uma teoria em L PRED é um conjunto de sentenças; Um sistema algébrico A() é um modelo para uma teoria se A() = para toda ; Se tiver ao menos um modelo diz-se que é satisfazível; Se não tiver modelos é dita insatisfazível. 15
Substituição de variáveis: Seja uma fórmula, x V LIVRES () uma variável livre em e t T() um termo; Neste caso a variável x pode ser substituída pelo termo t em, gerando uma nova fórmula [x:=t]; Exemplo: se = x(r(x) s(x,y)), então yv LIVRES () e t=f(a,z) [y:=f(a,z)] = x(r(x) s(x,f(a,z))). 16
Intuitivamente uma substituição gera um caso particular de uma fórmula; As substituições só podem ser feitas sobre as variáveis livres de, e de forma a não introduzir restrições na fórmula gerada que já não estivessem presentes na fórmula original; Várias substituições podem ser feitas simultaneamente, desde que não introduzam restrições. Exemplo: Se então = x(r(x) s(x,y) r(z)) y, zv LIVRES () e t 1 =f(a,w), t 2 =b [y:=f(a,w), z:=b]=x(r(x) s(x,f(a,z))r(b))) 17
Sistemas Dedutivos em : 1. Método axiomático: ver item 4.5 pg. 128; 2. Dedução natural: ver item 4.4 pg. 122, e também a ferramenta JAPE; 3. Método dos tableaux analíticos: ver item 5.6 pg. 147. 18
Exemplo do método dos tableaux analíticos: 1. x(r(x) s(x)) - x r(x) x s(x) 2. T x(r(x) s(x)) de 1 3. F x r(x) x s(x) de 1 4. T x r(x) de 3 5. F x s(x) de 3 6. F s(a) de 5 7. T r(a) de 4 8. T r(a) s(a) de 2 9. F r(a) T s(a) de 8 X (7,9) X (6,9) 19
Método da Dedução Natural... 20