Lógica de Predicados Teorema de Herbrand Biografia • Jacques Herbrand (Paris, 12 de Fevereiro de 1908 — Oisans, 27 de Julho de 1931) foi um matemático francês. • Trabalhou em lógica matemática e teoria dos corpos de classes. • Herbrand terminou seu doutorado na École Normale Supérieure em Paris no ano de 1929, com apenas 21 anos. Desejo antigo... • Encontrar um procedimento geral de decisão para verificar a validade (ou inconsistência) de uma fórmula – Leibniz (1700s) – Peano (1700s-1800s) – Hilbert na década de 20 Church e Turing[1936] -> impossível!! • Não existe um procedimento de decisão para verificar a validade de fórmulas da lógica de predicados • Mas existem métodos de prova que podem verificar se uma fórmula é válida se realmente ela for!! • Para fórmulas inválidas, esses procedimentos são indecidíveis Satisfatível X Insatisfatível • Na lógica matemática, satisfatibilidade e validade são conceitos elementares da semântica. Uma fórmula é satisfatível se é possível achar uma interpretação (modelo) que torne a fórmula verdadeira. Uma fórmula é válida se todas as interpretações tornam a fómula verdadeira. • Os opostos deste conceito são insatisfatibilidade e invalidade, isto é, uma fórmula é insatisfatível se nenhuma das interpretações tornam a fórmula verdadeira, e inválida se alguma dessas interpretações tornam a fórmula falsa. Herbrand • Uma fórmula válida é verdadeira sob todas as suas interpretações • Herbrand desenvolveu um algoritmo para encontrar uma interpretação que pode invalidar uma fórmula! • No entanto, se ela é válida, nenhuma dessas interpretações pode existir – O algoritmo termina após um número finito de tentativas! • O método de Herbrand é a base para muitos métodos modernos de prova automática Reduzindo o problema • Um conjunto S de cláusulas é insatisfatível sse for falso sob todas as interpretações sobre todos os domínios • Mas... é inconveniente e impossível considerar todas as interpretações sobre todos os domínios • Idéia: usar um domínio especial H, tal que S é insatisfatível se e somente se S é falso sob todas as interpretações sobre H – H é o universo de Herbrand de S Universo de Herbrand de um Conjunto de Cláusulas (H) • Se Ho é o conjunto de constantes que aparecem em S – Se nenhuma constante aparece em S • então Ho é formado por uma única constante, Ho={a} – Se f é um símbolo funcional n-ário ocorrendo em S, e • se t1, ...,tn são termos que pertencem a H, então o termo f(t1, ...,tn) também pertence a H Exemplos de universos de Herbrand • S = {P(x) Q(x), P(x)} • H0 = H = {a} • • • • • • S = {P(a), P(x) P(f(x))} H0 = {a} H1 = {a, f(a)} H2 = {a, f(a), f(f(a))} ... H = H = {a, f(a), f(f(a)), f(f(f(a))), ... } Base de Herbrand • Um termo-base é um elemento de H • Uma base de Herbrand para S é o conjunto B(S) de todas as fórmulas atômicas da forma P(t1, ...,tn) – P é um símbolo predicativo ocorrendo em S – t1, ...,tn termos-base • Exemplo: S = {P(x) Q(x), R(f(y))} • H = {a, f(a), f(f(a)), ... } • B(S) = {P(a), Q(a), R(a), P(f(a)), Q(f(a)), R(f(a)), ...} Interpretação de Herbrand • Uma interpretação I para S é uma interpretação de Herbrand para S sse – o domínio U de I é H – para cada constante a de S, aI = a – para cada função f de S, fI(t1, ...,tn) = f(t1, ...,tn), • para cada t1, ...,tn H(S) • Também chamada de H-interpretação Exemplos de H-interpretações • S = {P(x) Q(x), R(f(y))} • H = {a, f(a), f(f(a)), ... } • B(S) = {P(a), Q(a), R(a), P(f(a)), Q(f(a)), R(f(a)), ...} • Algumas H-interpretações para S: • I1 = {P(a), Q(a), R(a), P(f(a)), Q(f(a)), R(f(a)), ... } • I2 = {P(a), Q(a), R(a), P(f(a)), Q(f(a)), R(f(a)), ... } • I3 = {P(a), Q(a), R(a), P(f(a)),Q(f(a)), R(f(a)),...} H-interpretação correspondente • Dada uma interpretação I, uma H-interpretação I* correspondente a I é uma H-interpretação em que – – – – Sendo h1, ..., hn elementos de H (o universo Herbrand de S) Sendo cada hi mapeado para alguma variável di Se é atribuído a P(d1, ... , dn) V(F) por I, então para P(h1, ... , hn) também é atribuído V(F) em I* • Se uma interpretação I sobre algum domínio D satisfaz um conjunto de cláusulas S, então qualquer Hinterpretação I* correspondente a I também satisfaz S • Exs: I1 e I2 Árvores semânticas • Encontrar uma prova para um conjunto de cláusulas S é – gerar uma árvore semântica fechada! • Árvores semânticas completas – contém todas as possibilidades • Em LPO, as árvores são infinitas... • Mas, se S é insatisfatível, uma árvore semântica sobre H é fechada e finita! Árvore semântica • S = {P(x), Q(f(x))} • B = {P(a), Q(a), P(f(a)), Q(f(a)), P(f(f(a))),...}. Exemplos de árvores semânticas completas Nós de falha • S = {P, Q v R, P v Q, P v R} • B = {P, Q, R}. Árvore semântica fechada • S = {P(x), P(x) v Q(f(x)), Q(f(a))} • B = {P(a), Q(a), P(f(a)), Q(f(a)), ...} Teorema de Herbrand • Um conjunto de cláusulas é insatisfatível se há um conjunto finito insatisfatível de instâncias-base de cláusulas de S. • Reduz o problema da insatisfatibilidade de um conjunto de cláusulas ao problema de gerar um conjunto finito de instâncias básicas das cláusulas do conjunto que seja insatisfatível. • Tal conjunto sempre existirá se S for insatisfatível. – ...mas poderá não existir em caso contrário. Método de Herbrand • 1. Dado um conjunto S de cláusulas, gere todos os conjuntos finitos S0, S1, ..., Sn, ... de instâncias-base. • 2. Para cada conjunto Si gerado, teste se Si é insatisfatível. • 3. Pare com SIM, se Si é insatisfatível • 4. Pare com NÃO, se não houver novos conjuntos a gerar. Decidibilidade • Esse procedimento: – sempre para com SIM quando S for insatisfatível. – nunca para quando S for satisfatível e existir um conjunto infinito de instâncias básicas de cláusulas de S. – sempre para com NÃO quando S for satisfatível mas o conjunto de instâncias básicas de cláusulas de S é finito. • Procedimento de decisão parcial para o problema da insatisfatibilidade de conjunto de cláusulas. • Procedimento de decisão para o problema da insatisfatibilidade de conjunto de cláusulas cujo conjunto de instâncias básicas é finito. Teorema de Herbrand O teorema de Herbrand é muito importante na lógica simbólica; ele é a base para a maioria dos procedimentos atuais para prova automática de teoremas. Dessa forma, para testar se um conjunto S de cláusulas é insatisfatível, precisa-se considerar somente interpretações sobre o universo Herbrand de S. Se S é falso sob todas as interpretações do universo Herbrand de S, então pode-se concluir que S é insatisfatível. Teorema de Herbrand Uma vez que geralmente existem muitas, possivelmente um número infinito, dessas interpretações, há necessidade de organizá-las de alguma forma sistemática. Isto pode ser feito usando uma árvore semântica. Serão dadas duas versões do Teorema de Herbrand. Exemplo do Teorema de Herbrand Teorema Herbrand, versão I - Um conjunto S de cláusulas é insatisfatível se e somente se correspondendo a toda árvore semântica completa de S, há uma árvore semântica fechada finita. Prova: (IDASuponha S ser insatisfatível. Seja T uma árvore semântica completa para S. Para cada ramo B de T, seja IB um conjunto de todos os literais ligados a todos os nós do ramo B. Então IB é uma interpretação para S. Desde que S seja insatisfatória, IB precisa falsificar uma instância base C' de uma cláusula C em S. Contudo, desde que C' é finito, deve haver um nó falha NB (que está a um número finito de ligações do nó raiz) no ramo B. Uma vez que todo ramo de T tem um nó falha, há uma árvore semântica fechada T' para S. Além disso, uma vez que somente um número finito de ligações estão conectadas em cada nó de T', T' precisa ser finito (isto é, o número de nós em T' é finito), de outra maneira, pelo Lema de Konig, pode-se encontrar um ramo infinito contendo nenhum nó falha. Dessa forma, completa-se a primeira metade do teorema. Exemplo do Teorema de Herbrand (VOLTA) De modo inverso se, correspondendo a toda árvore semântica completa T para S, há uma árvore finita semântica fechada, então cada ramo de T contém um nó falha. Isto significa que toda interpretação falsifica S. Conseqüentemente S é insatisfatível. Isto completa a prova da segunda parte do teorema. Exemplo do Teorema de Herbrand Teorema de Herbrand, Versão II - Um conjunto de cláusulas é insatisfatível se e somente se há um conjunto finito insatisfatível S' de instâncias base de cláusulas de S. Prova: (IDA Suponha S ser insatisfatível. Seja T uma árvore semântica completa para S. Então, pelo teorema de Herbrand (Versão I), há uma árvore semântica fechada finita T' correspondendo a T. Seja S' um conjunto de todas as instâncias base das cláusulas que estão falsificadas em todos os nós falha de T'. S' é finito desde que haja um número finito de nós falhos em T'. Uma vez que S' é falso em toda interpretação de S', S' é insatisfatível. Exemplo do Teorema de Herbrand (VOLTA) Suponha que há um conjunto finito insatisfatível S' de instâncias base das cláusulas em S. Desde que cada interpretação I de S contém uma interpretação I' de S', se I' falsifica S', então I deve também falsificar S'. Entretanto, S' é falsificado por toda a interpretação I'. Conseqüentemente, S' é falsificado por toda interpretação I de S. Portanto, S é falsificado por toda interpretação de S. Então, S é insatisfatível.