Kleidson Êglicio Carvalho da Silva Oliveira
Programação Lógica
Paraconsistente em Lógicas Três e
Quatro Valoradas
CAMPINAS 2017Ficha catalográfica
Universidade Estadual de Campinas
Biblioteca do Instituto de Filosofia e Ciências Humanas Paulo Roberto de Oliveira - CRB 8/6272
Oliveira, Kleidson Êglicio Carvalho da Silva,
OL41p OliProgramação lógica paraconsistente em lógicas três e quatro valoradas / Kleidson Êglicio Carvalho da Silva Oliveira. – Campinas, SP : [s.n.], 2017.
OliOrientador: Marcelo Esteban Coniglio.
OliTese (doutorado) – Universidade Estadual de Campinas, Instituto de Filosofia e Ciências Humanas.
Oli1. Programação lógica. 2. Lógica paraconsistente. 3. Lógica a múltiplos valores. I. Coniglio, Marcelo Esteban,1963-. II. Universidade Estadual de Campinas. Instituto de Filosofia e Ciências Humanas. III. Título.
Informações para Biblioteca Digital
Título em outro idioma: Paraconsistent logic programming in three and four valued logics Palavras-chave em inglês:
Logic programming Paraconsistent logic Many-valued logics
Área de concentração: Filosofia Titulação: Doutor em Filosofia Banca examinadora:
Marcelo Esteban Coniglio [Orientador] José Carlos Magossi
Renata Wassermann
Luiz Henrique da Cruz Silvestrini Eduardo Fermé
Data de defesa: 30-03-2017
Programa de Pós-Graduação: Filosofia
A Comissão Julgadora dos trabalhos de Defesa de Tese de Doutorado, composta pelos Professores Doutores a seguir descritos, em sessão pública realizada em 30 de março de 2017, considerou o candidato Kleidson Êglicio Carvalho da Silva Oliveira aprovado.
Prof. Dr. Marcelo Esteban Coniglio Prof. Dr. Eduardo Fermé
Prof. Dr. Luiz Henrique da Cruz Silvestrini Profa. Dra. Renata Wassermann
Prof. Dr. José Carlos Magossi
A Ata de Defesa, assinada pelos membros da Comissão Examinadora, consta no processo de vida acadêmica do aluno.
Gostaria de fazer meus sinceros agradecimentos às pessoas que me apoiaram nesse trabalho e sem as quais eu não teria chegado até este ponto:
- Ao orientador e amigo, Marcelo Esteban Coniglio, pela orientação sem prece-dentes, pelas várias horas gastas na ajuda em teoremas e correções essenciais, pelo auxílio sobre quais artigos e textos deveriam ser lidos cuidadosamente, assim como os demais conselhos sobre como trilhar esse trabalho.
- Aos professores Walter A. Carnielli e Ítala M. L. D'Ottaviano, pelas discipli-nas que tanto me ajudaram a amadurecer para que este trabalho fosse elaborado.
- Aos professores Luiz H. da C. Silvestrini e Marcelo Finger, pelas correções e apontamentos realizados durante o Exame de Qualicação que me ajudaram a melhorar o trabalho.
- Aos professores Eduardo Fermé, Luiz H. da C. Silvestrini, Renata Wasser-mann e José C. Magossi, por aceitarem participar do Exame de Defesa e pelas correções e apontamentos realizados.
- Aos professores Hércules A. Feitosa, Marcelo Finger e Ítala M. L. D'Ottaviano que aceitaram serem suplentes do Exame de Defesa.
- Aos amigos Viviane, Herman, Ana Cláudia, Allan, Ângela e João, que me ouviram e aconselharam sempre que necessário, fosse sobre o texto ou outro assunto qual-quer.
- Aos demais colegas do Centro de Lógica, Epistemologia e História da Ciência (CLE), com quem convivi durante todos esses anos, aprendendo cada vez mais sobre os
- Aos funcionários do CLE, sem os quais a estrutura necessária para o apren-dizado não seria possível.
- Ao programa de Pós-graducação em Filosoa e Ciências Humanas (IFCH).
- À FAPESP, pela bolsa de estudos concedida no processo número 2013/04555-7.
- A Deus, por me dar força e vida para continuar esse projeto.
A partir da interação entre áreas como Ciência da Computação, Lógica e De-dução Automática nasce uma importante nova área denominada Programação Lógica. Esta vem sendo utilizada continuamente no estudo teórico e em aplicações concretas em diversos ramos da Inteligência Articial. Após o aumento do número de tipos de lógicas não-clássicas, e estando claras as limitações da lógica clássica de primeira ordem, surgiu a necessidade de fazer programação lógica com outros tipos de raciocínios além do clássico. Um dos tipos que vem sendo bastante estudado é o raciocínio paraconsistente, isto é, to-lerante a contradições. Porém, apesar de existirem diversas lógicas paraconsistentes com semânticas variadas, a sua aplicação a programação lógica é mais delicada do que pode parecer, sendo necessário um profundo estudo sobre o que pode ou não ser transferido diretamente da lógica clássica de primeira ordem para outros tipos de lógica. Com base nos estudos de Rodrigues [Rod10] sobre os fundamentos da Programação Lógica Paracon-sistente para algumas Lógicas da Inconsistência Formal LFIs, este trabalho tem o intuito de retomar a pesquisa de Rodrigues [Rod10] e situá-la no contexto mais especíco de LFIs com semântica três e quatro valoradas que resultam interessantes do ponto de vista computacional, como as apresentadas em Silvestrini [Sil11] e Coniglio e Figallo [CF12]. Este estudo visa denir, a partir de técnicas originais, sistemas de programação lógica paraconsistente bem fundados baseados em lógicas já conhecidas, contrastando com as abordagens ad hoc existentes na literatura para esta questão.
Palavras Chaves: Programação lógica, Lógica paraconsistente, Lógica a múltiplos va-lores.
From the interaction among areas such as Computer Science, Logic and Auto-mated Deduction arises an important new area called Logic Programming. This has been used continuously in the theoretical study and practical applications in various elds of Articial Intelligence. After increasing the number of types of non-classical logics, and understanding the limitations of classical rst-order logic, became necessary to consider logic programming with other types of reasonings than the classical. One type that has been studied extensively is the paraconsistent reasoning, that is, reasoning tolerant to contradictions. However, although there are many paraconsistent logics with varying se-mantics, its application to logic programming is more delicate than it appears at rst sight, requiring a thorough study of what can or can not be transferred directly from the classical rst-order logic for other types of logic. Based on studies of [Rod10] on the foundations of Paraconsistent Logic Programming for some Logics of Formal Incon-sistency (LFIs), this work is intended to resume the research of [Rod10] and place it in the specic context of LFIs with three and four valued semantics, which are interesting of the computational point of view, as presented in Silvestrini [Sil11] and Coniglio and Figallo [CF12]. This study aims to dene, from original techniques, well-founded systems of paraconsistent logic programming based on well-know logics, in contrast to the ad hoc approaches in the literature found to this question.
Introdução 12
1 Programação Lógica Clássica 20
1.1 Unicação . . . 20
1.2 Pontos Fixos . . . 24
1.3 Cláusulas e Interpretações de Herbrand . . . 27
1.4 Semântica Declarativa e Resolução-SLD . . . 34
2 Programação Lógica Disjuntiva 38 2.1 Programação Lógica Disjuntiva Clássica . . . 38
2.2 Resolução-SLI . . . 45
2.3 Correção e Completude da Resolução-SLI . . . 55
3 Uma Programação Lógica Paraconsistente 3-valorada 59 3.1 Lógicas da Inconsistência Formal . . . 59
3.2 A lógica 3-valorada MPT0 . . . 61
3.3 A lógica de predicados 3-valorada QMPT0 . . . 69
3.4 O Cálculo de Resolução RP T para QMPT0 . . . 88
3.5 Semântica Declarativa para RP T . . . 92
4 Uma Programação Lógica Paranormal 4-valorada 106 4.1 A lógica 4-valorada BD∼ . . . 106
4.2 A Lógica de predicados 4-valorada QBD∼ . . . 113
4.3 O Cálculo de Resolução RQBD para QBD∼. . . 122
4.4 Semântica Declarativa para RQBD . . . 125
Apêndice A - Demonstração dos Resultados Principais do Capítulo 1 143 Apêndice B - Demonstração dos Resultados Principais do Capítulo 2 147
Introdução
Com o advento dos computadores digitais, existia certa expectativa sobre o desenvolvimento da utilização do formalismo lógico como instrumento para fazer ma-temática, através de deduções automáticas de teoremas matemáticos, realizadas pelos computadores digitais. Neste contexto, a lógica clássica de primeira ordem inuenciou intensamente a área de automatização de demonstrações desde seu começo, e em seguida, a Programação Lógica. Um dos motivos que tornou a lógica de primeira ordem como principal alvo no desenvolvimento de deduções automáticas foi seu formalismo sintático universalmente reconhecido. Na parte semântica, era consenso a utilização da concepção tarskiana de verdade para linguagens formalizadas [Tar99]. Outro fator que contribuiu para a adoção da lógica de primeira ordem foi a possibilidade de reduzir todas as sentenças à forma conjuntiva. Essa característica foi profundamente utilizada por um importante método na área de dedução automática: o procedimento de resolução introduzido por Ro-binson em [Rob65], uma regra de inferência especialmente desenvolvida para utilização em computadores. Tal método, pertencente à classe dos métodos de refutação, tirava proveito das capacidades de cálculos dos computadores baseando-se no Teorema de Herbrand.
Antes de adentrarmos no Teorema de Herbrand, devemos trazer à luz a no-ção de Skolemizano-ção de uma fórmula. Em 1928, Skolem [Sko28] (traduzido como "On Mathematical Logic"em [Hei77]), reduziu o problema da satisfatibilidade de uma fórmula ao fragmento das fórmulas com apenas quanticadores universais. Assim, toda fórmula é satisfatível em um domínio se, e somente se, sua versão Skolemizada também o é. Usando essa técnica, Skolem conseguiu um procedimento de refutação que não dependia de um sis-tema dedutivo particular. O método consistia em substituir, ordenadamente, as variáveis universalmente quanticadas por todos os termos formados pelas constantes e símbolos funcionais da linguagem da fórmula em questão. O Teorema de Herbrand, por sua vez, diz que a fórmula é insatisfatível se, e somente se, alguma conjunção dessas substituições é falsa, no sentido do cálculo proposicional. Depois desses primeiros trabalhos, Herbrand apurou este resultado de modo que passou a funcionar com qualquer fórmula, e não apenas
com aquelas Skolemizadas. A demonstração de Herbrand se dá a partir da derivação de um sistema de primeira ordem, com o qual se constrói outra derivação, de uma disjunção de fórmulas livres de quanticadores e fechadas (ver Denição 1.3.7). Após a demons-tração dessa disjunção, pode-se obter a demonsdemons-tração da fórmula original. Deste modo, a versão que lida com provabilidade dá-se o nome de Teorema de Herbrand, enquanto a versão que lida com insatisfatibilidade é chamada Teorema de Skolem-Herbrand-Gödel.
Com a resolução de Robinson [Rob65] foi possível fundamentar um método de refutação que algumas vezes determina a satisfatibilidade de certas fórmulas de primeira ordem (não sempre, já que esse problema é indecidível),1 e que permite decidir a
insatis-fatibilidade de fórmulas de primeira ordem. O método de Robinson consiste em assumir como entrada um número nito de cláusulas na qual cada uma delas é interpretada como o fechamento universal da disjunção de seus literais e um conjunto de cl´ausulas2 como a
conjunção de seus elementos. Em termos gerais, podemos assumir assim como dito em Rodrigues:
A resolução é um método de refutação que computa contra-exemplos para um conjunto nito de cláusulas. Isto é, trata-se de um método para computar substitui-ções para as variáveis que falsiquem alguma das cláu-sulas de entrada. Os contra-exemplos computados estão restritos unicamente aos termos formados pelos símbo-los funcionais já presentes na entrada. Pelo teorema de Herbrand, o método todo tem sucesso exatamente quando a entrada é insatisfatível. ([Rod10], p.12)
Apesar de parecer estranho determinar a insatisfatibilidade através de contra-exemplos, o teorema de Herbrand possibilita reduzir o espaço de busca pela insatisfati-bilidade aos termos formados pelo material sintático já presente nas fórmulas. Posteri-ormente, a resolução sofreu uma restrição que torna o processo de seleção mais eciente. Esta nova resolução foi denominada resolução SLD3 e ela se restringe às Cláusulas de
Horn.4 Deste modo, os programas lógicos são conjuntos de cláusulas de Horn com no
máximo um literal positivo, as regras. Chamamos de consultas as cláusulas que não apre-sentam nenhum literal positivo. Assim, a resolução SLD recebe um programa lógico P
1Os trabalhos de Church [Chu36] e Turing [Tur37] demonstram por absurdo a inexistência de um
procedimento nitário para o problema da decisão (denido por Hilbert e Ackermann [HA28] como um processo "que permita decidir a validade de expressões lógicas em um número nito de operações"([HA28], p. 72-73)), citado em Soare ([Soa96], p. 6).
2Cada cláusula consiste de um conjunto nito de literais, que por sua vez são fórmulas atômicas
(literais positivos) ou negação de fórmulas atômicas (literais negativos)
3Abreviação de Selection-rule driven Linear resolution for Denite Clauses. 4Cláusulas que possuem no máximo um literal positivo.
e uma regra N como entrada para depois efetuar a resolução entre a consulta e alguma regra de P. A eciência maior deste processo deve-se ao fato de que para cada regra pode-se selecionar um único literal (o positivo) para a resolução com N.
Deste modo, o surgimento da programação lógica deve-se à aplicação da reso-lução SLD a uma área relacionada à Inteligência Articial: o processamento de linguagem natural. O método SLD introduzido em [Kow74] é completo e constitui a única regra de inferência do sistema chamado na época de PROLOG.5
O fragmento das cláusulas de Horn da lógica de primeira ordem é suciente para a denição de qualquer função computável, porém, temos que nenhum literal negado é consequência lógica de um programa lógico, assim, está fora do alcance da lógica clássica lidar com deduções de informações negativas a partir de programas lógicos.
Este é um grande problema quando queremos que os programas lógicos de-duzam consequências simples. Como exemplo, tome um conjunto de cláusulas (átomos) Clho com os seguintes fatos:
Clho = {{f ilho(P edro, M aria), {f ilho(M arcos, P edro)}}}
indicando que Pedro é lho de Maria e que Marcos é lho de Pedro. Esperaríamos que as seguintes deduções pudessem ser feitas:
Clho ` ¬f ilho(M aria, P edro)
Clho ` ¬f ilho(M arcos, M aria)
Contudo, isto é impossível do ponto de vista da lógica clássica baseada na linguagem dos programas lógicos. Portanto, precisamos de duas maneiras de deduzir negações: Uma implícita6 e uma explícita.7 A forma de dedução implícita recebe diversos
nomes na literatura, por exemplo:
É chamada de conversão para a representação de informação negativa por Nicolas e Gallaire,8 a
supo-sição de mundo fechado (CWA) por Reiter,9 e
inter-pretando a negação como Falha, como discutido no ca-pítulo de Clark.10([GMN78], p.23. Tradução nossa)
5Abreviação de PROgramation in LOGique, cf. [[CR96], p. 331]
6Para o tratamento de informação negativa em base de dados (sistemas usados em computação para
armazenar informações) e sistemas de representação de conhecimento.
7Comum aos sistemas lógicos. 8[NG78]
9[Rei78] 10[Cla78]
Deduzimos a negação de um fato, do ponto de vista implícito, a partir da falta de indícios de sua veracidade. Um exemplo interessante é dado a seguir:
Considere como primitivo o predicado monádico é inocente. Em regimes de exceção, não é incomum que as pessoas sejam tomadas por culpadas, isto é, não são inocentes, até que provem o contrário. Ou seja, na falta de informações mais detalhadas, caso não seja possível a demonstração de inocência, arma-se a não inocência. Logo, em ditaduras, os julgamentos de culpa (entendida formalmente como não inocência) são for-mulados através de uma interpretação implícita da ne-gação. ([Rod10], p.18)
Uma das primeiras propostas para lidar com a dedução de literais negativos foi introduzida em [Cla78] e é chamada de negação por falha, a qual possui um caráter não-monotônico, outra proposta sobre a implementação da negação em programas lógicos pode ser vista em [Le92]. O operador apresentado em [Cla78] (representado aqui por ) permite deduzir a negação de uma fórmula atômica A (representada por A), a partir de um programa lógico P apenas se todas as derivações SLD feitas a partir de P∪{← A}11
falham nitamente. A extensão da resolução SLD pela regra de negação por falha é denominada SLDNF, ela é usada com a função de deduzir o fechamento existencial de alguma consulta geral12 a partir de um programa lógico geral.13
Por estar intimamente ligada ao ramo da Inteligência Articial, a programação lógica necessita de métodos de dedução sobre vários tipos de raciocínios, pois a IA tem como um dos objetivos simular características que se assemelham à inteligência humana, como por exemplo, a habilidade de adquirir novas informações e corrigir sua atuação frente às novidades. Graças a resultados como o Teorema de Herbrand, que garantem que a expressividade da lógica de primeira ordem é de certa forma redutível a da máquina (computadores digitais), pode-se fazer programas lógicos que derivem certas consequên-cias. Porém, quando estamos lidando com literais negativos, vimos que necessitamos expandir o método para deduzirmos novidades.
Raciocínios não-monotônicos permitem lidar com informações incompletas de modo que se um programa receber um acréscimo de informações pode deixar de derivar algo anteriormente deduzido e passar a derivar novas consequências. Contudo, as infor-mações podem não ser apenas incompletas, mas também contraditórias, deste modo, a introdução de um tipo de negação denominada explícita (1) está relacionada ao evento
11Notação Clausal.
12Uma conjunção de literais de negação não-monotônica.
de que ao se admitir ocorrências explicitamente negadas, não se pode deixar de deduzi-las quando aparecem contradições. Informações introduzidas explicitamente não podem ser facilmente descartadas: logo, tal negação tem caráter monotônico, pois, uma vez deduzida, não se pode deixar de derivá-la. Dessa maneira surgiu a programação lógica estendida, admitindo dois tipos de negação nos corpos das regras dos programas e apenas a negação explícita na cabeça das regras (ver Denição 1.3.9).
No artigo de Damásio e Pereira, intitulado "A survey of paraconsistent se-mantics for logic programs"([DP98], p. 242) os autores armam que há três maneiras de lidar com informações contraditórias: a explosiva,14 a de revisão de crenças15e a
paracon-sistente. Após isto, citam vários autores que trabalham com raciocínio paraconsistente de maneiras diferentes, utilizando semânticas distintas, como Belnap [Bel77b], Rescher e Brandom [RB80], Almukdad e Nelson [AN84] e Priest, Routley e Norman [PRN88], assim, ao invés de analisar cada semântica de maneira separada, eles tentam entender o que elas possuem em comum, tentando ajustar cada semântica a semânticas bem-fundadas ou a modelos semânticos estáveis. Complementam o estudo dessas variadas semânticas com uma curta análise das teorias lógicas multivaloradas subjacentes a cada uma.
Nesta tese, apresentaremos uma nova abordagem paraconsistente de lidar com informações contraditórias em base de dados, que permite que se admitam contradições sem trivialização, levando isto em conta durante as deduções. Exemplos da necessidade de utilização da abordagem paraconsistente pode ser encontrado em [DP98] e em [Rod10]. Aceitando que uma abordagem paraconsistente se faça necessária, a maioria dos autores começa o desenvolvimento de programas lógicos admitindo que todas as variá-veis estão instanciadas por todos os possívariá-veis termos fechados da linguagem. O problema ao se fazer isto é que se assume implicitamente alguma forma de teorema de Herbrand para a lógica original, que é necessariamente paraconsistente. Deste modo, os autores assumem que os resultados válidos para a lógica clássica também o são para a lógica paraconsistente subjacente.
Um trabalho no viés do projeto apresentado nesta Tese pode ser encontrado em [Rod10]. Naquela Dissertação de Mestrado, Rodrigues apresentou uma versão do Teorema de Herbrand para algumas das lógicas pertencentes às LFIs.
As LFIs, Lógicas da Inconsistência Formal, foram introduzidas por Carnielli e Marcos em [CM02] a partir de uma generalização dos sistemas lógicos paraconsistentes de da Costa16 e aprofundadas depois em [CCM07] e [CC16]. Nas LFIs, noções como
14Abordagem clássica, na qual todas as fórmulas são dedutíveis a partir de uma contradição.
15Abordagem que permite que a base de dados seja revisada de forma a obter novamente a consistência. 16Ver [dC93].
consistência e inconsistência são internalizadas na linguagem objeto através de novos conectivos ◦ e •, sendo que a fórmula ◦α denota que a fórmula α é consistente e •α denota que a fórmula α é inconsistente. As propriedades básicas das LFIs são as seguintes:
1. α, ¬α 0 β em geral, porém, α, ¬α, ◦α ` β sempre; 2. α, ¬α ` •α sempre.
As propriedades em (1) instituem que uma LFI é paraconsistente, visto que a partir de uma contradição não podemos inferir, em geral, qualquer outra fórmula, mas, a partir da contradição e da informação de que a fórmula contraditória é consistente, inferimos qualquer outra fórmula. A propriedade (2) designa que de uma contradição implica que a fórmula é inconsistente.17
As LFIs, uma vez que são subsistemas da lógica clássica, nunca demonstram contradições. Deste modo, é impossível provar uma sentença A ∧ ¬A em uma LFI. Por outro lado, é possível derivar conclusões não triviais de uma contradição, diferentemente da lógica clássica.
Uma característica importante das LFIs é que, em geral, não podemos denir um conectivo através de outro, além de que muitas das propriedades da implicação ma-terial não são válidas. Por exemplo, α → β e ¬α ∨ β não são equivalentes, assim como as fórmulas α → β e ¬β → ¬α também não o são.
O trabalho de Rodrigues versou particularmente sobre duas LFIs, mbC e mCi, introduzidas em [Rod10], e suas versões de primeira ordem, respectivamente, QmbC e QmCi,18 introduzidas em [Pod08] e estudadas em detalhes em [CCPR48]. Após
apre-sentar as lógicas citadas, o autor fez um detalhado estudo até conseguir a prova de uma versão restrita19 do Teorema de Herbrand para QmbC mostrando que é possível o
tra-tamento da programação lógica paraconsistente de forma rigorosa e bem-fundada, com resultados que validem os programas feitos com alguma LFI como lógica subjacente.
Uma LFI importante para esta Tese é a lógica LPT1 apresentada na Tese de Doutorado de [Sil11] e estudada posteriormente em [CS14] e em [Con]. A base proposicio-nal dessa LFI, denominada LPT, é equivalente a lógica paraconsistente MPT0 apresentada em [CC16], assim como às lógicas J3 de D'Ottaviano e da Costa [DdC70] e LFI1 de Car-nielli, Marcos e de Amo [CMdA00]. MPT0 será a base proposicional deste trabalho, por
17O inverso vale apenas nas LFIs em que esta propriedade é estipulada explicitamente.
18As quatro LFIs (mbC, mCi, QmbC e QmCi) estão apresentadas com detalhes também em [Rod10]. 19Versão restrita no sentido de que trata apenas com fórmulas Π2 (fórmulas constituídas por uma
sequência de quanticadores universais seguidos por uma sequência de existenciais e, ao nal, uma fórmula livre de quanticadores). Isto acontece pois nas LFIs não é possível o tratar como conectivos primitivos apenas ¬ ∨ ∃ e também ∀ para fórmulas prenexas como feito por Herbrand em [Her30].
conta de sua semântica de matrizes tri-valorada que se resulta interessante do ponto de vista computacional. Um dos motivos da escolha de MPT0 para este trabalho é o fato de que, sendo ela uma LFI, a partir de uma contradição paraconsistente (ver Observação 3.2.2) não entramos em colapso dedutivo. Outra razão para esta escolha é a possibilidade de seu uso em Banco de Dados. Assim, quando deduzimos uma impossibilidade lógica, consideramos que temos uma contradição paraconsistente, uma contradição fraca, que não fará o sistema entrar em colapso, devendo apenas ser analisada para que outras conclusões sejam realizadas. Um terceiro motivo para a escolha dessa lógica é a transformação ob-tida para programas lógicos paraconsistentes, de modo a recuperarmos programas lógicos clássicos (ver Lema 3.5.14).
Após os estudos sobre MPT0 e sua extensão à primeira ordem (denominada QMPT0), realizaremos uma análise de uma expansão da lógica quatro valorada de Belnap-Dunn (ver [DP98]). Expandiremos a lógica de Belnap-Belnap-Dunn com uma negação clássica e com uma implicação clássica de modo que ela seja ao mesmo tempo, paraconsistente e paracompleta, denotando a base proposicional dessa expansão por BD∼. A importância
desta lógica surge do fato de ser uma extensão da lógica de N. Belnap [Bel77b] que, de acordo com [DP98], é a base de todas as abordagens à Programação Lógica Paraconsis-tente.
Desse modo, esta Tese cou organizada da seguinte maneira:
No primeiro Capítulo, introduzimos o arcabouço teórico necessário para o es-tudo da Programação Lógica Clássica seguindo o livro clássico de Lloyd [Llo87]. Necessi-tamos desses resultados básicos para que possamos estender e/ou adaptar seus conceitos para as lógicas paraconsistentes com as quais trabalharemos.
No segundo Capítulo, apresentamos um estudo acerca da Programação Lógica Disjuntiva, seguindo o livro de Lobo, Minker e Rajasekar [LMR92]. A Programação Lógica Disjuntiva será de suma importância neste trabalho, pois ela permite que existam disjunções na cabeça de cláusulas de programas lógicos (ver Denição 2.1.2), situação que ocorrerá na programação lógica paraconsistente 3-valorada devido à validade do princípio do terceiro excluído na lógica que será estudada no terceiro capítulo.
No terceiro Capítulo, após uma breve introdução sobre os aspectos essenciais das LFIs, apresentaremos uma LFI básica denominada mbC e começaremos a fundamen-tar o cerne deste trabalho através da lógica MPT0 e de resultados originais obtidos para sua extensão à primeira ordem denominada QMPT0, seus aspectos sintáticos e semânti-cos, incluindo uma prova original da completude de QMPT0. Em seguida, iniciaremos a construção de uma Programação Lógica Paraconsistente para QMPT0, tentando adequar
os teoremas e lemas das Programações Lógica Clássica e Disjuntiva a esta nova realidade. Dentre os resultados alcançados temos um cálculo de resolução correto e completo para QMPT0 e a denição de uma semântica do ponto xo (caracterização do mínimo modelo de Herbrand) para este sistema baseado em QMPT0.
No quarto Capítulo estudaremos uma extensão de primeira ordem da lógica 4-valorada de Belnap-Dunn, denominada QBD∼, desenvolvendo uma programação lógica
paraconsistente e paracompleta seguindo os passos do capítulo anterior e tendo por base os recentes estudos de Coniglio [Con]. De modo similar ao terceiro capítulo, mostrare-mos uma prova original da correção e completude de QBD∼, assim como um cálculo de
resolução correto e completo e a denição de uma semântica do ponto xo para QBD∼.
No último capítulo da Tese, elaboraremos os últimos apontamentos sobre o que foi desenvolvido ao longo do trabalho, assim como algumas perspectivas dos próximos passos a serem realizados para continuação deste estudo.
Capítulo 1
Programação Lógica Clássica
Neste capítulo apresentaremos os conceitos básicos necessários da programação lógica clássica, tais como denição e exemplo de unicação, pontos xos, cláusulas e in-terpretações de Herbrand e uma semântica declarativa para programação lógica clássica. Ressaltamos que todos os resultados aqui descritos podem ser encontrados em [Llo87]. Como se trata de um capítulo introdutório que pode facilmente ser encontrado na li-teratura colocamos a maioria das demonstrações deste capítulo no Apêndice A desta Tese, com o intuito de facilitar a conferência para aqueles não tão familiarizados com este conteúdo. Começaremos a seção seguinte tratando de Unicação.
1.1 Unicação
Descreveremos nesta seção um processo chamado de unicação, utilizado na programação lógica, discutiremos ainda sobre unicadores e sobre a existência de um algoritmo de unicação. Como unicar uma fórmula é um procedimento independente da linguagem de primeira ordem que se esteja usando, nesta Tese mostraremos apenas as denições mais importantes que serão utilizadas. Para que todas as propriedades de substituições e unicação sejam vistas, a referência [Llo87] pode ser consultada.
Denição 1.1.1. Uma substituição1 θ é um conjunto nito da forma {v
1/t1, . . . , vn/tn}
onde cada vi é uma variável distinta de cada termo ti e v1, . . . , vn são distintos entre si.
Cada elemento vi/ti é chamado de uma ligação2 para vi. Chamamos θ de substituição
básica3se todos os t
i são termos básicos, isto é, sem variáveis. Chamamos θ de substituição
1Em inglês: Substituition 2Em inglês: binding
de variáveis-puras4 se todos os t
i são variáveis.
Denição 1.1.2. Uma expressão5 é um termo, ou um literal, ou uma conjunção ou
disjunção de literais. Uma expressão simples6 ou é um termo, ou um átomo.
Denição 1.1.3. Seja θ = {v1/t1, . . . , vn/tn}uma substituição e E uma expressão. Então
Eθ(uma instância7 de E por θ) é a expressão obtida pela substituição simultânea de cada variável vi em E por um termo ti correspondente. Se Eθ é básico, então ele é chamado de
instância básica8 de E. É importante observar que se S = {E
1, . . . , En} é um conjunto
nito de expressões, então Sθ denota o conjunto {E1θ, . . . , Enθ}.
Temos o exemplo abaixo para ilustrar as denições acima.
Exemplo 1.1.4. Seja E = q(x, y, g(b)) e θ = {x/a, y/x}, então Eθ = q(a, x, g(b)). Denição 1.1.5. Sejam θ = {u1/s1, . . . , um/sm}e σ = {v1/t1, . . . , vn/tn}duas
substitui-ções. Temos que a composição9 θσ de θ e σ é a substituição obtida do conjunto
{u1/s1σ, . . . , um/smσ, v1/t1, . . . , vn/tn}
deletando qualquer ligação ui/siσ para qual ui = siσ e deletando qualquer ligação vj/tj
para qual vj ∈ {u1, . . . , um}.
Exemplo 1.1.6. Seja θ = {z/f(x), x/y} e σ = {z/a, x/b, y/x}.
Então, fazendo todas substituições e acréscimos, temos, θσ = {z/f(b), x/x, z/a, x/b, y/x}. Agora, deletando todo ui = siσ, temos:
θσ = {z/f (b), z/a, x/b, y/x}, nalmente, deletando todos vj ∈ {u1, . . . , um}, temos, por
m:
θσ = {z/f (b), y/x}
Denição 1.1.7. A substituição dada pelo conjunto vazio é chamada de substituição identidade10.
4Em inglês: variable-pure substituition 5Em inglês: expression
6Em inglês: simple expression 7Em inglês: instance
8Em inglês: ground instance 9Em inglês: composition
Denotamos a substituição identidade por ε. Observamos que para qualquer expressão E, Eε = E.
Denição 1.1.8. Seja E uma expressão e V um conjunto de variáveis que ocorrem em E. Um renomeamento de variáveis11 para E é uma substituição de variáveis-puras
{x1/y1, . . . , xn/yn} tal que {x1, . . . , xn} ⊆ V, os yi são distintos e (V \ {x1, . . . , xn}) ∩
{y1, . . . , yn} = ∅.
Denição 1.1.9. Sejam E e F expressões. Dizemos que E e F são variantes12se existem
θ e σ substituições tais que E = F θ e F = Eσ. Dizemos também que E é uma variante de F ou F é uma variante de E.
Estamos interessados nas unicações, ou seja, nas substituições que unicam um certo conjunto de expressões, fazendo com que cada expressão em um conjunto seja sintaticamente idêntica as outras. O conceito de unicação já era interessante para Her-brand [Her79] desde 1930, mas, foi Robinson [Rob65] em 1963 que a utilizou em sua regra de resolução. Conjuntos nitos de expressões simples, denidas em 1.1.2 são o enfoque deste trabalho.
Denição 1.1.10. Seja S um conjunto nito de expressões simples. Uma substituição θ é chamada de um unicador13 para S se Sθ é um conjunto unitário (a menos de
renome-amento de variáveis). Um unicador θ para S é chamado o unicador mais geral14 (mgu)
para S se para cada unicador σ de S, existe uma substituição γ tal que σ = θγ.
Exemplo 1.1.11. {p(f(x), a), p(y, f(w))} não é unicável, pois p(y, f(w)) não pode ser unicável.
{p(f (x), z), p(w, a)} é unicável, pois σ = {w/f(a), x/a, z/a} é um unicador. Um exemplo de unicador mais geral é θ = {w/f(x), z/a}. Note que σ = θ{x/a}.
{p(f (a), g(x)), p(y, y)} não é unicável uma vez que teremos de ter o mesmo unicador para p(Y, Y ).
{p(a, x, h(g(z))); p(z, h(y), h(y))} é unicável. Um exemplo de unicador mais geral é θ = {z/a, x/h(y), y/g(a)}.
Denição 1.1.12. Seja S um conjunto nito de expressões simples. O conjunto desa-cordo15 de S é denido da seguinte maneira:
11Em inglês: renaming substituition 12Em inglês: variants
13Em inglês: unier
14Em inglês: most general unier 15Em inglês: Disagreement set
Localize o símbolo que ocorre mais a esquerda ao qual nem todas expressões em S tem o mesmo símbolo e extraia de cada expressão em S a subexpressão começando naquele símbolo. O conjunto de todas as subexpressões é o conjunto desacordo.
Dadas essas denições, garantimos a existência de um algoritmo de unicação (dado um conjunto nito de expressões simples S), que toma como entrada (input) S e nos dá como saída (output) um mgu se o conjunto é unicável, caso contrário, reporta-nos o fato desse conjunto não ser unicável. Esse algoritmo pode ser visto em [Llo87].
ALGORITMO DE UNIFICAÇÃO 1. Sejam k = 0 e σ0 = ε.
2. Se Sσk é única, então pare; σk é um mgu de S. Caso contrário, ache o conjunto
desacordo Dk de Sσk.
3. Se existem v e t em Dk tal que v é uma variável que não ocorre em t, então coloque
σk+1 = σk{v/t}, incrementando k e indo para 2. Caso contrário, pare; S não é
unicável.
No passo 3 do algoritmo de unicação uma checagem é feita para ver se v ocorre ou não em t. Isto é chamado de checagem de ocorrência16.
Abaixo temos dois exemplos, um de quando não encontramos um mgu e outro de quando o encontramos usando o algoritmo de unicação.
Exemplo 1.1.13. Seja S = {p(f(a), g(x)), p(y, y)} e D = {D0, D1, . . . , Dn} a denotação
do conjunto desacordo. (a) σ0 = ε.
(b) D0 = {f (a), y}, σ1 = {y/f (a)} e Sσ1 = {p(f (a), g(x)), p(f (a), f (a))}.
(c) D1 = {g(x), f (a)}. Deste modo, S não é unicável.
Exemplo 1.1.14. Seja S = {p(a, x, h(g(z))), p(z, h(y), h(y))}. (a) σ0 = ε.
(b) D0 = {a, z}, σ1 = {z/a}e Sσ1 = {p(a, x, h(g(a))), p(a, h(y), h(y)))}.
(c) D1 = {x, h(y)}, σ2 = {z/a, x/h(y)} e Sσ2 = {p(a, h(y), h(g(a))), p(a, h(y), h(y))}.
(d) D2 = {y, g(a)}, σ3 = {z/a, x/h(g(a)), y/g(a)}e Sσ3 = {p(a, h(g(a)), h(g(a)))}.
Assim, S é unicável e σ3 é um mgu.
Teorema 1.1.15. (Teorema da Unicação)
Seja S um conjunto nito de expressões simples. Se S é unicável, então existe um algoritmo de unicação que termina e gera um mgu para S. Se S não é unicável, então o algoritmo de unicação termina e reporta esse fato.
Outros algoritmos de unicação podem ser vistos em [MM76] e [PW76]. Po-rém, este apresentado acima sem a checagem de ocorrência é o mais utilizado em sistemas PROLOG.
1.2 Pontos Fixos
Nesta seção apresentaremos as denições de ordem parcial, reticulado, reticu-lado completo, etc., necessárias para se atingir o conceito de ponto xo, que será extre-mamente útil nos sistemas PROLOG, pois cada programa denido está associado a uma função monotônica que interpreta um papel muito importante na teoria.
Denição 1.2.1. Seja S um conjunto. Uma relação binária R em S é um subconjunto de S×S.
Usualmente utilizamos a notação xRy para representar que (x,y) ∈ R.
Denição 1.2.2. Uma relação R em um conjunto S é uma ordem parcial sse satisfaz as seguintes condições:
(a) xRx, para todo x ∈ S.
(b) xRy e yRx então x=y, para todo x,y ∈ S. (c) xRy e yRz implica xRz, para todo x,y,z ∈ S.
O símbolo ≤ é utilizado para denotar uma ordem parcial para a relação R. Denição 1.2.3. Seja S um conjunto com uma ordem parcial ≤. Então a ∈ S é um limitante superior de um subconjunto X de S se x ≤ a, para todo x ∈ X. Analogamente, b ∈ S é um limitante inferior de um subconjunto X de S se b ≤ x, para todo x ∈ X.
Denição 1.2.4. Seja S um conjunto com uma ordem parcial ≤. Então a ∈ S é o supremo de um subconjunto X de S se a é um limitante superior de X e, para todo limitante superior a' de X, temos a ≤ a'. Analogamente, b ∈ S é o ínmo de um subconjunto X de S se b é um limitante inferior de X e, para todo limitante inferior b' de X, temos b' ≤ b.
Proposição 1.2.5. Se o supremo de um conjunto X existir, ele é único.
Demonstração. Suponha que temos dois supremos a e b de um conjunto X. Logo, pela Denição 1.2.4, como a é supremo e b é um limitante superior, a ≤ b, mas também temos que, como b é supremo e a é um limitante superior, b ≤ a. Logo, a=b.
Analogamente é demonstrado que se o ínmo de um conjunto X existir ele é único. Denotaremos o supremo de X por SUP(X) e o ínmo por INF(X).
Denição 1.2.6. Um conjunto parcialmente ordenado L é um reticulado completo se SUP(X) e INF(X) existem para todo subconjunto X de L.
Para um reticulado completo L, temos que > denota o SUP(L) e ⊥ denota o INF(L).
Denição 1.2.7. Seja L um reticulado completo e T: L→L uma função. Dizemos que T é uma função monotônica se T(x) ≤ T(y), para quaisquer x ≤ y.
Denição 1.2.8. Seja L um reticulado completo e X ⊆ L. Dizemos que X é dirigido17 se
todo subconjunto nito de X tem um limitante superior em X.
Denição 1.2.9. Seja L um reticulado completo e T: L→L uma função. Dizemos que T é contínua se T(SUP(X)) = SUP(T(X)), para todo subconjunto dirigido X de L. Ou seja, uma função é contínua se preserva supremos.
Agora, chegamos a denição de ponto xo de funções denidas sobre reticula-dos.
Denição 1.2.10. Seja T: L→L uma função e L um reticulado completo. Dizemos que a ∈ L é o mínimo ponto xo de T, se a é um ponto xo (ou seja, T(a) = a) e para todos os pontos xos b de T, temos a ≤ b. Analogamente, dizemos que c ∈ L é o máximo ponto xo de T se c é um ponto xo e para todos os pontos xos d de T, temos d ≤ c.
Dadas as denições acima obtemos um importante resultado, uma versão fraca de um teorema atribuído a Tarski, que generaliza um resultado anterior de Knaster-Tarski. Proposição 1.2.11. Seja T: L→L uma função monotônica e L um reticulado completo. Então T tem um mínimo ponto xo, MIP(T), e um máximo ponto xo, MAP(T). Mais ainda, MIP(T) = INF{x : T (x) = x} = INF{x : T (x) ≤ x} e MAP(T) = SUP{x : T (x) = x} = SUP{x : x ≤ T (x)}.
Proposição 1.2.12. Seja L um reticulado completo e T: L→L monotônica. Suponha que a ∈ L e a ≤ T(a). Então existe um ponto xo a' de T tal que a ≤ a'. Similarmente, temos que se b ∈ L e T(b) ≤ b, então existe um ponto xo b' de T tal que b' ≤ b. Demonstração. Pela Proposição 1.2.11, é suciente que a'= MAP(T) e b' = MIP(T).
Neste ponto do trabalho, deniremos potência de ordinais, para isso são neces-sários os conceitos de números ordinais e indução transnita que podem ser encontrados em manuais de Teoria de Conjuntos, por exemplo [Jec13].
Denição 1.2.13. Seja L um reticulado completo e T: L→L monotônica. Então deni-mos:
T↑0 = ⊥;
T↑α = T(T↑(α − 1)), se α é um ordinal sucessor; T↑α = SUP{T↑β : β < α}, se α é um ordinal limite; T↓0 = >;
T↓α = T(T↓(α − 1)), se α é um ordinal sucessor; T↓α = INF{T↓β : β < α}, se α é um ordinal limite.
A seguir, daremos uma caracterização de MIP(T) e MAP(T) em termos de potências de ordinais de T.
Proposição 1.2.14. Seja L um reticulado completo e T: L→L monotônica. Então, para qualquer ordinal α, T↑α ≤ MIP(T) e T↓α ≥ MAP(T). Além disso, existem ordinais β1
e β2 tais que γ1 ≥ β1 implica T↑γ1 = MIP(T) e γ2 ≥ β2 implica T↓γ2 = MAP(T).
O menor α tal que T↑α = MIP(T) é chamado ordinal fecho de T. Kleene mostrou o próximo resultado, demonstrando que sobre a forte suposição de que T é contínua, o ordinal fecho de T é ≤ ω.
Proposição 1.2.15. Seja L um reticulado completo e T: L→L contínua. Então MIP(T) = T↑ω.
Um resultado análogo da Proposição 1.2.15 para MAP(T) não vale, isto é MAP(T) pode não ser igual a T↓ω.
1.3 Cláusulas e Interpretações de Herbrand
Nesta seção, introduziremos os conceitos básicos para a introdução de cláusu-las, tais como o que é um Universo de Herbrand, Interpretação de Herbrand e Modelos de Herbrand.
Denição 1.3.1. O escopo de ∀x, (respectivamente, ∃x) em ∀x F, (respectivamente, ∃x F) é F. Uma variável x em uma fórmula possui ocorrência ligada se está no escopo de um quanticador ou se x é uma variável de um quanticador na fórmula. Qualquer outra ocorrência da variável é chamada livre.
Denição 1.3.2. Uma fórmula fechada é uma fórmula que não contém ocorrências livres de nenhuma variável.
Denição 1.3.3. Se F é uma fórmula, o fecho universal de F é denotado por ∀(F), que signica que para cada variável livre em F foi acrescentado um quanticador universal, tornando a variável ligada, e assim, a fórmula F fechada. De maneira similar, ∃(F) denota o fecho existencial de F, assim, para cada variável livre em F acrescenta-se um quanticador existencial, tornando F fechada.
Exemplo 1.3.4. Se F é p(x,y)∧q(y), então ∀(F) é ∀x∀y (p(x,y)∧q(y)).
Denição 1.3.5. Dada a Lógica Clássica de Primeira Ordem (denotada apenas por CL de agora em diante) e uma fórmula atômica A, dizemos que A é um literal positivo e que ∼A é um literal negativo.
Denição 1.3.6. A todos literais positivos chamamos simplesmente de átomos.
Agora, com o conceito de literais positivos e negativos, podemos denir o que é uma cláusula.
Denição 1.3.7. Introduzimos as seguintes noções para a Lógica Clássica de Primeira Ordem:
- Uma cláusula de CL é uma fórmula fechada da forma:
∀x1· · · ∀xn(L1∨ · · · ∨ Lk∨ ∼Lk +1∨ · · · ∨ ∼Lk +m)
tal que cada Li é um literal positivo em CL e x1, . . . , xn são todas as variáveis que
ocorrem em (L1∨ . . . ∨ Lk∨ ∼Lk +1∨ . . . ∨ ∼Lk +m). A maneira usual que usaremos
para cláusulas, equivalente à acima apresentada, é:
∀x1· · · ∀xn(L1∨ · · · ∨ Lk← Lk +1∧ · · · ∧ Lk +m)
ou simplesmente
L1, . . . , Lk← Lk +1, . . . , Lk +m
- Uma cláusula é chamada positiva (negativa) se contém apenas literais positivos (ne-gativos).
Denição 1.3.8. Uma subcláusula de uma cláusula C é uma cláusula formada pela eli-minação de um ou mais literais de C.
Denição 1.3.9. Uma cláusula de programa denida é uma cláusula da forma
L ← K1, . . . , Kn
que contém precisamente um átomo em seu consequente. L é chamado cabeça e K1, . . . , Kn
é chamado corpo da cláusula de programa.
O signicado semântico informal de L ← K1, . . . , Kn é "para cada atribuição
de cada variável, se K1, . . . , Knsão todos verdadeiros, então L é verdadeiro". Assim, uma
cláusula de programa é condicional. Porém, um fato L ← é incondicional. Seu signicado semântico informal é "para cada atribuição de cada variável, L é verdadeiro".
Denição 1.3.10. Um fato18 é uma cláusula da forma
L ←
que é, uma cláusula de programa denido com o corpo vazio.
Denição 1.3.11. Uma consulta denida19 é uma cláusula da forma
← K1, . . . , Kn
isto é, uma cláusula com um consequente vazio. Cada Ki (i= 1,. . . ,n) é chamado
subcon-sulta de uma consubcon-sulta.
Denição 1.3.12. Um programa denido ou programa lógico denido P é um conjunto nito de cláusulas de programas denidos.
Denição 1.3.13. Em um programa denido, o conjunto de todas as cláusulas de pro-grama com o mesmo símbolo de predicado p na cabeça é chamado denição de p.
Denição 1.3.14. A cláusula vazia, denotada por , é a cláusula cujo consequente e antecedente são vazios e pode ser interpretada como uma contradição em CL.
Denição 1.3.15. Uma cláusula de Horn é uma cláusula cuja parte positiva possui, no máximo, um literal.
Agora, podemos denir um processo pelo qual podemos inferir uma cláusula nova a partir de duas outras.
Denição 1.3.16. Dois literais de CL, L1 e L2, são ditos complementares se uma das
seguintes condições vale: 1. L1 é positivo e L2 é ∼L1.
2. L2 é positivo e L1 é ∼L2.
Denição 1.3.17. Seja um conjunto de cláusulas S, com K1, K2 ∈ S. Sejam K1 =
L1,1∨ . . . ∨ L1,n e K2 = L2,1∨ . . . ∨ L2,r duas cláusulas. Uma cláusula K é obtida de K1 e
K2 através de um passo básico de resolução se existem literais L1 e L2, com Li ocorrendo
em Ki (i = 1, 2), e uma substituição σ tal que σ(L1) e σ(L2)são literais complementares,
sendo σ unicador mais geral com essa propriedade. Nesse caso, a resolvente é K = σ(K0),
onde K0 é a disjunção dos literais que aparecem em K1 (a menos de todas as ocorrências
de L1 como literal em K1) ou em K2 (a menos de todas as ocorrências de L2 como literal
em K2). Dizemos que K é uma resolvente básica de K1 e K2.
De K1 e K2 obtemos K por um passo de resolução (geral) se existem
renome-amento de variáveis µ1 e µ2 tal que K pode ser obtido de µ1(K1)e µ2(K2) por um passo
básico de resolução.
Abaixo, vemos um exemplo da regra de resolução, uma vez que se aplicam os renomeamento de variáveis, em primeiro lugar, e a substituição unicadora dos termos complementares, em segundo lugar (aqui, n, m > 0):
L ∨Wn
i=1A K ∨
Wm
j=1∼A
L ∨ K
Para a continuidade do estudo sobre cláusulas, são necessárias as denições de interpretação e modelo.
Denição 1.3.18. Uma pré-interpretação J de uma linguagem de primeira ordem L consiste do seguinte:
(a) Um conjunto não-vazio D, chamado de domínio da pré-interpretação. (b) Para cada constante c em L, a atribuição de um elemento cJ em D.
(c) Para cada símbolo de função n-ária f em L, a atribuição de uma função fJ de Dn
para D.
Denição 1.3.19. Uma interpretação I de uma linguagem de primeira ordem L consiste de uma pré-interpretação J de L com domínio D acrescentado do seguinte:
Para cada símbolo de predicado n-ário p em L, a atribuição de uma função pI : Dn →
{1, 0} ou, equivalentemente, uma relação pI em Dn.
Dizemos que I é baseada em J.
Denição 1.3.20. Seja J uma pré-interpretação de uma linguagem de primeira ordem L. Uma atribuição de variável20 (com relação a J) é uma atribuição para cada variável em L de um elemento no domínio de J.
Denição 1.3.21. Dada uma linguagem de primeira ordem L, uma pré-interpretação J com domínio D nessa linguagem e uma atribuição V de valores em D para as variáveis. A interpretação de termos em L (com relação a J e V ) é denida da seguinte maneira: (a) Para cada variável x é dada sua atribuição de acordo com V .
(b) Para cada constante c é dada sua atribuição de acordo com J.
(c) se (t1)JV, . . . , (tn)JV são as interpretações dos termos t1, . . . , tnem L (com relação a J e
V), e fJ é a interpretação do símbolo de função n-ária f de L, então a interpretação
do termo f(t1, . . . , tn) em L (com relação a J e V ) é o elemento fJ((t1)JV, . . . , (tn)JV)
de D.
Denição 1.3.22. Dada uma linguagem de primeira ordem L, uma pré-interpretação J com domínio D nessa linguagem, uma atribuição de variável V com relação a J e um átomo A, suponha que A é p(t1, . . . , tn) e d1, . . . , dnno domínio de J são as atribuições de
termos de t1, . . . , tn com relação a J e V. Chamamos AJ,V = p(d1, . . . , dn) a J-instância
de A com relação a V. Seja [A]J = {AJ,V :V é uma atribuição de variável com relação
a J}. Chamamos cada elemento de [A]J uma J-instância de A e cada p(d1, . . . , dn) uma
J-instância.
Denição 1.3.23. Seja I uma interpretação com domínio D de uma linguagem de pri-meira ordem L e V uma atribuição de variáveis. Então para uma fórmula em L pode ser dado um valor de verdade, verdadeiro (1) ou falso (0), (com relação a I e V) como segue: (a) Se a fórmula é uma atômica p(t1, . . . , tn), então o valor de verdade é obtido
cal-culando o valor de pI((t
1)JV, . . . , (tn)JV) em que pI é a função atribuída a p por I
e (t1)JV, . . . , (tn)JV são as interpretações dos termos t1, . . . , tn com relação a J e V .
Assim, o valor de p(t1, . . . , tn)é 1 se ((t1)VJ, . . . , (tn)JV) ∈ pI, 0 caso contrário.
(b) Se as fórmulas são da forma ∼F , F ∧ G, F ∨ G, F → G, F ↔ G, então o valor de verdade da fórmula é dado pelas tabelas conhecidas de CL.
(c) Se uma fórmula tem a forma ∃xF ou ∀xF , então o valor de verdade da fórmula é calculado como em CL. Assim, o valor de ∃xF é 1 se para algum d ∈ D F (d) tem valor 1, 0 caso contrário. E o valor de ∀xF é 1 se para todo d ∈ D F (d) tem valor 1, 0 caso contrário.
Como o valor de verdade de uma fórmula fechada não depende da atribuição de variáveis podemos dizer que se o valor de verdade de uma fórmula fechada com relação a uma interpretação é verdadeiro ou distinguido (respectivamente, Falso) dizemos que a fórmula é distinguida (respectivamente, Falsa) com relação a uma interpretação.
Denição 1.3.24. Dada uma linguagem de primeira ordem L, uma interpretação I de L e um conjunto de fórmulas fechadas S. Dizemos que I é um modelo para S se I é um modelo para cada fórmula de S.
Denição 1.3.25. Dado um conjunto de fórmulas fechadas S e seja F uma fórmula fechada de uma linguagem de primeira ordem L dizemos que F é uma consequência lógica de S se, para toda interpretação I de L se I é um modelo para S então I é um modelo para F .
Proposição 1.3.26. Seja S um conjunto de fórmulas fechadas e uma fórmula fechada F de uma linguagem de primeira ordem L. Então F é uma consequência lógica de S se, se somente se, S ∪ {∼ F } é insatisfatível.
Denição 1.3.27. Um termo básico21 é um termo que não contém variáveis e um átomo
básico é um átomo que não contém variáveis.
Denição 1.3.28. Seja L uma linguagem de primeira ordem. O Universo de Herbrand UL para L é o conjunto de todos os termos básico que podem ser formados a partir das
constantes e símbolos de funções que aparecem em L.22
Denição 1.3.29. Seja L uma linguagem de primeira ordem. A base de Herbrand BL é
o conjunto de todos os átomos básicos que podem ser formados utilizando os símbolos de predicados de L com os termos básicos do Universo de Herbrand como parâmetros. Denição 1.3.30. Seja L uma linguagem de primeira ordem. A pré-interpretação de Herbrand para L é a pré-interpretação dada pelo seguinte:
(a) O domínio da pré-interpretação é o Universo de Herbrand UL.
(b) Constantes em L são atribuídas a elas mesmas em UL
21Em inglês: ground term
(c) Se f é um símbolo de função n-ária em L, então a função de (UL)n em UL denida
por (t1, . . . , tn) 7→ f (t1, . . . , tn)é atribuída a f.
Dizemos que uma interpretação de Herbrand para L é qualquer interpretação I baseada na pré-interpretação de Herbrand para L.
Uma tal interpretação é dada especicando um subconjunto I de BL. Desta
maneira, um átomo básico A é satisfeito nessa interpretação se e somente se A ∈ I. Assim, interpretações de Herbrand serão identicadas, daqui em diante, como subconjuntos I de BL.
Com um certo abuso de linguagem, considerando um conjunto de fórmulas S, podemos dizer que o Universo de Herbrand US e a base de Herbrand BS e também
a interpretação de Herbrand de S são subconjuntos da base de Herbrand de S. Em particular, o conjunto de fórmulas frequentemente será um programa P, então podemos referir ao Universo de Herbrand UP e a base de Herbrand BP de P.
Denição 1.3.31. Seja L uma linguagem de primeira ordem. Seja S um conjunto de fórmulas fechadas de L e seja P um programa lógico em L. Um modelo de Herbrand para S (respectivamente P), denotado por M (com ou sem subscritos), é uma interpretação de Herbrand para S (respectivamente P) que é um modelo para S (respectivamente P). Proposição 1.3.32. Seja S um conjunto de cláusulas e suponha que S tem um modelo. Então S tem um modelo de Herbrand.
Corolário 1.3.33. Seja S um conjunto de cláusulas e suponha que S um modelo de Herbrand. Então S tem modelo.
Proposição 1.3.34. Seja S um conjunto de cláusulas. Então S é insatisfatível sse não possui modelos de Herbrand.
Demonstração. De acordo com a Proposição 1.3.32 e com o Corolário 1.3.33, S é satisfa-tível se, e somente se, tem modelo de Herbrand.
Sempre podemos provar essas duas proposições se S for um conjunto de cláu-sulas, se por acaso S for um conjunto de fórmulas fechadas arbitrário então não é possível, geralmente, mostrar a insatisfatibilidade de S através da interpretação de Herbrand.
1.4 Semântica Declarativa e Resolução-SLD
Nesta seção introduziremos o mínimo modelo de Herbrand de um programa denido, que é de grande importância nesta teoria. Mostraremos que esse mínimo modelo de Herbrand será precisamente o conjunto de átomos básicos que são consequências lógicas do programa dado. Obteremos também uma caracterização de ponto xo para o mínimo modelo de Herbrand.
Proposição 1.4.1. Seja P um programa lógico denido e {Mi}i∈I um conjunto não vazio
de modelos de Herbrand para P. Então ∩i∈IMi é um modelo de Herbrand para P.
Temos que a Base de Herbrand BP é um modelo de Herbrand, portanto, o
conjunto de todos modelos de Herbrand para um programa denido P não é vazio. A intersecção de todos modelos, como mostrado acima, é um modelo também, chamado de Mínimo Modelo de Herbrand para P e denotado por MP.
Daqui, temos o seguinte e importante teorema. Teorema 1.4.2. Seja P um programa denido. Então,
MP = {A ∈ BP : A é consequência lógica de P}.
Denição 1.4.3. Seja S um conjunto de fórmulas fechadas de uma linguagem de primeira ordem L e P um programa lógico em L. Um modelo de Herbrand para S (respectivamente P) é minimal se nenhum subconjunto próprio do modelo é um modelo de Herbrand para S (respectivamente P). O conjunto de modelos minimais de Herbrand para S (respec-tivamente P) é denotado MM(S) (respec(respec-tivamente MM(P)). Quando existe apenas um modelo minimal de Herbrand, ele é chamado também de mínimo modelo de Herbrand. Denição 1.4.4. Seja P um programa denido. A função TP : 2BP → 2BP, denominada
operador de consequência, é denida como segue.
TP(I) = {A ∈ BP : ∃c ∈ cláusulas-básicas (P)(A =cabeça(c) e corpo (c) ⊆ I)}
Claramente TP é monotônica, basta apenas ver se ela também é contínua.
Proposição 1.4.6. Seja P um programa denido e I uma interpretação de Herbrand de P. Então I é um modelo para P se, e somente se, TP(I) ⊆ I.
Agora, apresentaremos um importante teorema desta teoria. Este teorema, que foi primeiramente demonstrado por Van Emden e Kowalski em [EK76], provê uma caracterização de ponto xo do modelo mínimo de Herbrand de um programa denido. Teorema 1.4.7 (Caracterização do ponto xo do Mínimo Modelo de Herbrand). Seja P um programa denido. Então MP = M IP (TP) = TP↑ω
Vamos agora denir formalmente o que seria uma resposta correta de um pro-grama P para uma consulta denida G. Este é um conceito central na propro-gramação lógica e fornece grande parte do foco para o desenvolvimento teórico.
Denição 1.4.8. Seja P um programa denido e G uma consulta denida. Uma resposta para P ∪ {G} é uma substituição de variáveis de G.
Pode-se notar que a resposta não necessariamente contém uma ligação para cada variável em G. Em particular, se G não tem variáveis a única possível resposta é a substituição identidade.
Denição 1.4.9. Seja P um programa denido, G uma consulta denida ←A1, . . . , Ak
e θ uma resposta para P ∪ {G}. Dizemos que θ é uma resposta correta para P ∪ {G} se ∀((A1∧ . . . ∧ Ak)θ) é uma consequência lógica de P.
Dada a validade da Proposição 1.3.26, temos que θ é uma resposta correta sse P ∪ {∼∀((A1 ∧ . . . ∧ Ak)θ)} é insatisfatível. A denição acima de resposta correta
consegue capturar essa noção intuitiva deste conceito. Isto também provê uma descrição declarativa da noção esperada de saída (output) de um programa denido.
O Teorema 1.4.2 e a denição de resposta correta sugerem que podemos forti-car o Teorema 1.4.2 mostrando que uma resposta θ é correta sse ∀((A1 ∧ . . . ∧ Ak)θ) é
verdadeiro com relação ao mínimo modelo de Herbrand do programa. Infelizmente, esse resultado geralmente não vale, como mostrado no exemplo seguinte.
Exemplo 1.4.10. Considere o programa P
Seja G a consulta ← p(x) e θ a substituição identidade. Então MP = {p(a)} e então
∀x p(x) é verdadeiro em MP. No entanto, θ não é uma resposta correta, desde que
∀x p(x)θ não é uma consequência lógica de P.
A razão para o problema é que ∼∀x p(x) não é uma cláusula e então não podemos restringir a atenção às interpretações de Herbrand quando tentamos estabelecer a insatisfatibilidade de {p(a) ←} ∪ {∼∀x p(x)}. No entanto, se zermos uma restrição em θ, obteremos um resultado que generaliza o Teorema 1.4.2.
Teorema 1.4.11. Seja P um programa denido e G uma consulta denida ←A1, . . . , Ak.
Suponha que θ é uma resposta para P ∪ {G} tal que (A1∧ . . . ∧ Ak)θ) é básico. Então os
seguintes são equivalentes: (a) θ é correto.
(b) (A1∧ . . . ∧ Ak)θ) é verdadeiro com relação a todos modelos de Herbrand de P.
(c) (A1∧ . . . ∧ Ak)θ) é verdadeiro com relação ao Mínimo modelo de Herbrand de P.
Agora, introduziremos as denições para uma Resolução-SLD (Selective Li-near Denite clause resolution) para a lógica clássica de primeira ordem.
Denição 1.4.12. Sejam G = ← A1, . . . , Am, . . . , Ak e C = A ← B1, . . . , Bq. Então G0
é derivado de G e C utilizando o mgu θ se valem as seguintes condições: (a) Am é um átomo em G, chamado de átomo selecionado.
(b) θ é um mgu de Am e A.
(c) G0 é a consulta ← (A
1, . . . , Am−1, B1, . . . , Bq, Am+1, . . . , Ak)θ. G0 é denominado
resol-vente de G e C.
Denição 1.4.13. Seja P um programa denido e G uma consulta denida. Uma derivação-SLD de P ∪ {G} consiste de uma sequência de consultas (nita ou innita) G0 = G, G1, . . ., uma sequência C1, C2, . . . de variantes de cláusulas de programa de P e
uma sequência θ1, θ2, . . . de mgu's tal que cada Gi+1 é derivado de Gi e Ci+ 1 utilizando
Cada Ci é uma variante adequada da cláusula de programa correspondente de
modo que Ci não tenha quaisquer variáveis que já aparecem na derivação até Gi−1. Isto
pode ser alcançado, por exemplo, pela subinscrição de variáveis em G por 0 e variáveis em Ci por i. Esse processo de renomeação de variáveis é chamado de padronização23 das
variáveis. Cada variante de cláusula de programa C1, C2, . . . é chamada uma cláusula de
entrada da derivação.
Denição 1.4.14. Uma refutação-SLD de P ∪ {G} é uma derivação-SLD nita de P ∪ {G} que tem a cláusula vazia como a última consulta na derivação. Se Gn = ,
então a derivação tem comprimento n.
Denição 1.4.15. Seja P um programa denido. O conjunto sucesso de P é o conjunto de todos A ∈ BP tal que P ∪ {← A} possui uma refutação-SLD
A correção e completude em detalhes da resolução-SLD pode ser vista no Capítulo 2 de [Llo87]. No próximo capítulo apresentaremos a Resolução-SLI (Selective Linear Indenite clause resolution), uma extensão da Resolução-SLD que funciona tanto para Programação Lógica Clássica Disjuntiva quanto para Programação Lógica Clássica. Portanto, o próximo capítulo será dedicado a Programação Lógica Disjuntiva, dado que esta será também de utilidade para a proposta a ser apresentada no Capítulo 3.
Capítulo 2
Programação Lógica Disjuntiva
Neste capítulo daremos especial atenção a um tipo diferente de Programação Lógica, a Programação Lógica Disjuntiva, que constitui uma extensão da Programação Lógica Clássica introduzida no capítulo anterior. Estudamos esse tipo de programação pois, como poderá ser visto no capítulo seguinte, necessitamos de que seja possível ter-mos um fato disjuntivo para que a programação lógica paraconsistente 3-valorada, a ser proposta, seja bem sucedida. A seguir serão apresentadas as principais denições que diferenciam a programação lógica da programação lógica disjuntiva. Para isso, utilizamos em grande parte o livro Foundations of Disjunctive Logic Programming, de Lobo, Minker e Rajasekar [LMR92]. Também foram utilizados como base dos estudo os artigos [Min89], [MS02], [Ian06], [EG93] e [Wan01]. As demonstrações dos lemas e teoremas deste capítulo podem ser encontradas em [LMR92] ou no Apêndice B desta Tese.
2.1 Programação Lógica Disjuntiva Clássica
O campo da programação lógica disjuntiva começou aproximadamente em 1982 com o artigo de Minker [Min82], no qual foi introduzida pela primeira vez uma teoria de negação para os bancos de dados dedutivos disjuntivos (DDDBs). Nesse artigo, Minker mostra que a resposta positiva a uma consulta em DDDBs depende que essa consulta seja satisfeita em todo modelo minimal (ver Denição 1.4.3). Minker também mostra que, se dado um átomo básico A, A ∨ α pode ser provado pelo banco de dados implica que α também pode ser provado (para α disjunção básica arbitrária de átomos), então podemos armar que A é falso. O operador de consequência que veremos neste capítulo
é atribuído a Minker/Rajasekar [MR90], e é uma extensão do operador de consequência apresentado anteriormente. Porém, esta extensão não é tão simples de ser realizada: primeiro necessitamos de uma denição nova e importante de modelo-estado, para então seguirmos o mesmo caminho apresentado para a programação lógica clássica.
É importante salientar que o operador de consequência apresentado aqui não é o único já proposto na literatura para a programação lógica disjuntiva. Podemos citar, por exemplo, o operador TIN T
P que pode ser visto em [FM91], [FM95] e [SMR97] que funciona
sobre conjuntos de interpretações de Herbrand. Não escolhemos o operador TIN T
P pelo
fato dele ser monotônico, porém não contínuo.
A maioria das denições já vistas são as mesmas quando tratamos de progra-mas lógicos disjuntivos, por isso não a repetiremos aqui. Por exemplo, as denições de cláusulas e cláusulas de programa, são exatamente as mesmas denidas anteriormente. Temos, como uma novidade porém, a denição de uma cláusula de programa lógico dis-juntivo, ou indenido:
Denição 2.1.1. Uma cláusula de programa lógico disjuntivo ou indenido é uma cláu-sula da forma:
L1∨ L2∨ . . . ∨ Lk← K1, . . . , Kn
Com k ≥ 1 e n ≥ 0, na qual L1, L2, . . . , Lk, K1, . . . , Kn são átomos. Quando n = 0 temos
um fato disjuntivo.
Lembrando da Denição 1.3.7, uma cláusula de programa disjuntivo é sim-plesmente uma cláusula não negativa, enquanto que um fato disjuntivo é uma cláusula positiva.
Denição 2.1.2. Um programa lógico disjuntivo é um conjunto nito de cláusulas de programa.
Deste modo, recordando a Denição 1.3.12 de programa lógico denido, um programa lógico disjuntivo pode conter tanto cláusulas de programa lógico denido quanto cláusulas de programa lógico disjuntivo, i.e., cláusulas não negativas.
Denição 2.1.3. Um programa lógico é um programa lógico denido ou um programa lógico disjuntivo.
Dadas essas denições e as introduzidas no capítulo anterior, podemos começar os estudos acerca da semântica de programas lógicos disjuntivos.
Denição 2.1.4. Seja L uma linguagem de primeira ordem e PL um programa lógico
disjuntivo em L. A Base disjuntiva de Herbrand de L (respectivamente PL), denotada por
DHBL (respectivamente DHBPL), é o conjunto de todas as cláusulas básicas disjuntivas positivas que podem ser formadas usando átomos básicos distintos da Base de Herbrand para L (respectivamente PL), tal que duas cláusulas logicamente equivalentes não estão
no conjunto.
Exemplo 2.1.5. Seja PL o programa lógico disjuntivo abaixo:
PL = {irpara(X, Y ) ∨ irpara(X, Z) ← caminho(X, Y, via(Z)), em(Y );
em(X) ← irpara(Y, X)
caminho(saopaulo, marilia, via(campinas)) ∨ em(marilia)} Para esse programa, temos:
DHBPL = {irpara(saopaulo, marilia), em(marilia) irpara(saopaulo, campinas), em(campinas)
caminho(saopaulo, campinas, via(marilia)), em(campinas) irpara(saopaulo, marilia) ∨ irpara(saopaulo, campinas) irpara(saopaulo, marilia) ∨ em(marilia)
caminho(saopaulo, marilia, via(campinas)) ∨ em(marilia) . . .}
Exigimos que duas cláusulas logicamente equivalentes não estejam em DHBPL para evitar variantes sintáticas da mesma cláusula em DHBPL. Dada uma cláusula básica positiva C, C está em DHBPL (C ∈ DHBPL) se C ou qualquer variante sintática de C for parte de DHBPL.
Denição 2.1.6. Seja S um conjunto de cláusulas básicas positivas. Então a forma canônica de S, denotada por can(S), é denida como segue:
can(S) = {C ∈ S : 6 ∃C0 ∈ S tal que C0 é uma subcláusula de C}
Exemplo 2.1.7. Seja S o conjunto:
S = {irpara(saopaulo, marilia) ∨ em(saopaulo), em(marilia) caminho(campinas, saopaulo) ∨ em(marilia)
irpara(campinas, saopaulo) ∨ em(saopaulo) em(saopaulo)}
Disso, temos que:
can(S) = {em(marilia), em(saopaulo)}
Denição 2.1.8. Seja PL um programa lógico disjuntivo de uma lógica de primeira
or-dem L e S um conjunto de cláusulas básicas positivas em L (respectivamente PL). A
expansão de S, denotada por exp(S), é denida da seguinte maneira:
exp(s)={C ∈ DBHL : C ∈ S ou ∃C0 ∈ S tal que C0 é uma subcláusula de C}
Exemplo 2.1.9. Seja PL o programa dado no exemplo 2.1.5 e
S = {em(marilia), irpara(saopaulo, marilia)}.
exp(S) = {em(marilia), irpara(saopaulo, marilia), em(marilia) ∨ em(saopaulo),
em(marilia) ∨ irpara(saopaulo, campinas), irpara(saopaulo, marilia)∨
∨caminho(saopaulo, marilia, via(campinas)), . . .} Denição 2.1.10. Seja PL um programa lógico disjuntivo de uma lógica de primeira
or-dem L. Um estado de Herbrand (ou simplesmente um estado) S para L (respectivamente PL) é um subconjunto da base disjuntiva de Herbrand de L (respectivamente PL).
Denição 2.1.11. Seja PL um programa lógico disjuntivo de uma lógica de primeira
ordem L. Um estado expandido de Herbrand (ou simplesmente um estado expandido) para L (respectivamente PL) é um estado S tal que S = exp(S), na qual exp(S) foi dado
na denição 2.1.8.
Denição 2.1.12. Seja L uma lógica de primeira ordem, S um conjunto de fórmulas fechadas de L e PL um programa lógico disjuntivo em L. Um modelo-estado para S
(respectivamente PL) é um estado expandido ST tal que:
1. Todo modelo de Herbrand de ST é um modelo de Herbrand de S (respectivamente PL).
2. Todo modelo Minimal de Herbrand de S (respectivamente PL) está contido em um
modelo minimal de ST.1
As consequências lógicas de um programa lógico denido P são caracteriza-das, como já visto, pelo mínimo modelo de Herbrand MP. Porém, para um programa
lógico disjuntivo, temos que suas consequências lógicas são caracterizadas pelo conjunto de modelos minimais, MMPL.
Teorema 2.1.13. Seja PL um programa lógico disjuntivo. Uma cláusula básica positiva
A é consequência lógica de PL se, e somente se, A é verdadeira em todo modelo minimal
de Herbrand de PL.
Agora, uma vez que o modelo-estado para um programa lógico disjuntivo con-tém todos os modelos minimais do programa e utilizando o símbolo N como referência ao conjunto dos números naturais, o seguinte teorema sobre a intersecção de modelos-estados é válido.
Teorema 2.1.14. (Propriedade da intersecção de Modelos-estados) Seja PL um programa
lógico disjuntivo e {MSi}i∈N um conjunto não vazio de modelos-estados de PL. Então
∩i∈NM Si é um modelo-estado de PL.
Dado um programa lógico disjuntivo PL, a base disjuntiva de Herbrand DHBPL para PL é um modelo-estado. Deste modo, o conjunto de modelos-estados não é vazio.
A intersecção de todos modelos-estados para um programa disjuntivo PL é um modelo
estado, chamado de mínimo modelo-estado e denotado por MSPL. Assim, o seguinte teorema é válido para MSPL.
Teorema 2.1.15. Seja PL um programa lógico disjuntivo, então:
M SPL = {A ∈ DHBPL : A é consequência lógica de PL}
É importante salientar que, apesar de modelos de Herbrand consistirem de átomos básicos enquanto os modelos-estados consistem de cláusulas disjuntivas básicas, existe uma conexão entre eles que pode ser vista pelos próximos teoremas.
Teorema 2.1.16. Seja PL um programa lógico disjuntivo e seja A ∈ DHBPL. Então C ∈ M SPL sse ∀M ∈ MM(PL), M |= A.2
1A denição de modelo minimal de ST é análoga à denição 1.4.3 2M é um modelo para A.