Prévia do material em texto
LÓGICA COMPUTACIONAL OBJETIVOS DE APRENDIZAGEM > Reconhecer o papel da lógica dos predicados. > Descrever a linguagem da lógica dos predicados. > Identificar a semântica da lógica dos predicados. Introdução A computação se encontra cada dia mais presente em nossa vida. Por meio dela, é possível resolver questões de maneira ágil e eficaz. Para isso, utiliza-se, sobretudo, a lógica de computação, que consiste na aplicação do raciocínio lógico em forma de ferramentas automatizadas que são executadas em computadores. Há, de fato, alguns tipos de lógica, a exemplo da lógica dos predicados. Neste capítulo, vamos discutir a lógica de predicado. Para isso, falaremos do papel da lógica de predicados e de sua importância. De forma complementar, será descrita sua linguagem e identificada sua semântica. Lógica dos predicados A lógica de predicados é a parte lógica formal ou simbólica moderna que demonstra as relações lógicas entre as sentenças pela maneira como os predicados ou expressões nominais são distribuídos pelos intervalos de Linguagem e semântica da lógica dos predicados Juliane Adelia Soares sujeitos por meio de quantificadores como “todos” e “alguns”, deixando de lado os significados conceituais de predicados em particular. Esses predica- dos podem ter qualidades, relações e até funções, denominadas expressões de “estrutura” com uma ou mais variáveis que possuem valores de verdade atribuídos quando elas são trocadas por termos específicos. O cálculo de predicado não é igual ao cálculo proposicional, pois este lida com proposições inteiras não analisadas ligadas por conectivos. Pereira (2009) afirma que, na lógica de predicados, o objeto é utilizado em um sentido muito amplo. Eles podem ser concretos, como, por exemplo “esse livro”, abstratos, como “a paz”, ou fictícios, como “um unicórnio”. Objeto pode ser qualquer coisa sobre a qual precisa-se dizer algo. Uma parte considerável da expressividade dessa lógica se dá pelo uso dos conectivos lógicos, que são os responsáveis por permitir a formação de sentenças mais complexas, partindo de sentenças mais simples. Porém, o que a torna, de fato, mais ex- pressiva que a lógica proposicional é a noção de variáveis e quantificadores. Segundo Pereira (2009), pelo uso de variáveis, é possível estabelecer fatos a respeito de objetos em determinado contexto, sem que esses objetos tenham que ser nomeados de forma explícita. Já pelo uso do quantificador universal (∀), que se refere a “para todos”, é possível estabelecer fatos relativos a todos os objetos inseridos em um contexto, sem a necessidade de enumerar todos eles de maneira explícita. Por fim, utilizando o quantificador existencial (∃), que se refere a “existe” ou “para alguns”, estabelece-se a existência de um objeto sem que seja necessário identificá-lo explicitamente. A lógica proposicional é satisfatória quando lida com componentes de frases como “não”, “e”, “ou” e “se... então”; porém, aspectos lógicos das lin- guagens naturais e artificiais são mais ricos que isso, o que torna a lógica proposicional muito limitada, fazendo-se necessária a utilização da lógica de predicados. Huth e Ryan (2004) consideram a seguinte sentença declarativa: Todo aluno é mais jovem que algum instrutor. A afirmação se refere a ser um estudante, ser um instrutor e ser mais jovem que qualquer outra pessoa. Todas as afirmações são de algum tipo de propriedade, e os predicados são utilizados como mecanismos para expressar essas propriedades, junto com suas relações lógicas e dependências. Por exemplo, se João for um estudante e Paulo for seu instrutor, pode ser escrito da seguinte forma: S (João), I (Paulo) e Y (João, Paulo), podendo significar que João é mais jovem que Paulo. Dessa forma, S, I e Y são os chamados predica- Linguagem e semântica da lógica dos predicados2 dos, e é necessário que se especifique, de forma exata, a que os símbolos se referem. A sentença declarativa dada, obviamente, refere-se aos indivíduos de determinado ambiente, onde todos os alunos são mais novos que seus instrutores. Portanto, deve ser formalizada a parte que se refere a todos ou alguns (HUTH; RYAN, 2004). Nesse ponto, entram as variáveis. As variáveis servem para que não seja necessário citar todas as instâncias em cada predicado. Ou seja, na sentença declarativa dada, em vez de utilizar S (João), S (Pedro), etc., utiliza-se uma variável no lugar do nome dos indivíduos, de modo que não seja necessário citar um por um, o que se tornaria extremamente trabalhoso ao tentar codificar uma frase que seja relacionada com a execução de um programa. As variáveis são substitutas de valores concretos e são escritas como x, y, z, w e assim por diante. Assim, ainda utilizando a sentença declarativa dada, define-se que: � em S(x), x é um estudante; � em I(z), z é um instrutor; � em Y(x,z), x é mais novo que z. Agora, definidas as variáveis, deve-se inserir os quantificadores (os quais sempre são acompanhados de uma variável) para que se transmita a sen- tença declarativa dada da seguinte forma: cada aluno x é mais jovem que algum instrutor z. Para isso, primeiramente, Abe et al. (2002) determinam os seguintes símbolos: � ¬ para negação; �� ∧ para conjunção; �� ∨ para disjunção; � → para implicação; �� ↔ para bi-implicação. Dessa forma, a sentença será escrita, de forma simbólica, como: A retrotradução dessa codificação, de acordo com Huth e Ryan (2004), resulta em: Para cada x, se x é um aluno, há algum z que é um instrutor, de forma que x seja mais jovem que z. Linguagem e semântica da lógica dos predicados 3 Os autores, ainda, declaram que predicados diferentes podem possuir di- ferentes números de argumentos. Utilizando o mesmo exemplo, os predicados S e I possuem apenas um argumento, sendo chamados de predicados unários, enquanto Y possui dois argumentos, sendo chamado de predicado binário. Huth e Ryan (2004) ainda apresentam outro exemplo, utilizando a sentença: Nem todos os pássaros podem voar. Utilizando os predicados D e H, e tendo como argumento D(x): x é um pássaro e H(x): x pode voar, a sentença pode ser codificada da seguinte forma: Essa codificação afirma que: Não é o caso de que todas as coisas que são pássaros podem voar. De uma maneira alternativa, isso pode ser codificado como: O que significa que: Há algum x que é um pássaro e não pode voar. Por meio dessas explicações e exemplos, é possível compreender a importância da lógica de predicados e por que é necessário que se tenha uma linguagem mais ampla, mais representativa. Como citado anteriormente, a linguagem proposi- cional é efetiva, mas muito limitada. A utilização dos quantificadores, na lógica de predicados, permite tratar problemas de quantificação e, enquanto a lógica proposicional consegue lidar apenas com fatos para representar o ambiente onde o agente está inserido, a de predicado lida com fatos, objetos e relações, permitindo composição de atributos. Lógica de predicados: linguagem Na seção anterior, foi mostrado como a lógica de predicados é mais rica que a lógica proposicional. De fato, a lógica de predicados é uma extensão da proposicional, pois, além de conter os objetos desta, a lógica de predica- Linguagem e semântica da lógica dos predicados4 dos ainda contém os quantificadores, símbolos funcionais e de predicados. Portanto, nesta seção, será apresentada a linguagem utilizada pela lógica de predicados. No Quadro 1, é apresentado o conjunto de símbolos que define o alfabeto dessa linguagem. Quadro 1. Alfabeto da lógica de predicados Símbolos de pontuação ( , ) Símbolo de verdade false Conjunto enumerável de símbolos para variáveis (refere-se a objetos ou a conjunto de objetos) x, y, z, w, x1, y1, z1, w1, x2, ... Conjunto enumerável de símbolos para constantes (referem-se à instância específica de um objeto) a, b, c, a1, b1, c1, a2, ... Conjunto enumerável de símbolos para funções (referem-se a funções de um objeto) f, g, h, f1, g1,h1, f2, ... Conjunto enumerável de símbolos para predicados (referem-se à relação entre objetos) p, q, r, p1, q1, r1, p2, q2 ... Conectivos ¬, ∨, ∧, → Complementando o Quadro 1, Souza (2008) afirma que, para cada símbolo de função ou de predicado, é associado um número inteiro não negativo k, o qual é responsável por indicar a aridade, ou número de argumentos, da função ou predicado. Outro ponto que pode ser destacado é que o símbolo da verdade, true, é definido a partir de false, porque true = ¬false. As fórmulas na linguagem da lógica de predicados são definidas por meio de alguns elementos básicos. Huth e Ryan (2004) e Souza (2008) apresentam, definem e exemplificam esses elementos, que serão citados a seguir. Linguagem e semântica da lógica dos predicados 5 Termos Os termos dessa linguagem são compostos por variáveis, símbolos constantes e funções que se aplicam a eles. Silva (2018, p. 5) declara que termos são “[...] expressões lógicas que se referem a um objeto”. Abe et al. (2002) afirmam que: � variáveis individuais são termos; � constantes individuais são termos; � se t1, t2, ..., tn são termos e f é um símbolo para função n-ária, então f(t1, t2, ..., tn) é um termo; � uma expressão somente será confirmada como termo caso seja obtida a partir de uma das regras citadas acima. De forma complementar, Souza (2008, p. 166) comenta que “As variáveis são termos, pois os resultados de suas interpretações representam objetos. Da mesma forma, o resultado da aplicação de uma função a um conjunto de termos é um termo”. Segundo Souza (2008): � uma variável x é um termo; � uma constante a é um termo, porque é uma função zero-ária, sendo uma função aplicada a zero termo; � se f é uma função binária, então f(x,a) é um termo, considerando que x e a são termos e f é a aplicação de uma função binária em tais termos, sendo, também, um termo; � se g é uma função ternária, então g(y,f(x,a),c) é um termo, seus argumentos também são termos e a aplicação da função g a esses termos também é um termo; � sendo h uma função ternária, então h(x,y,z) é um termo. Linguagem e semântica da lógica dos predicados6 Átomos Átomos representam expressões em que a interpretação é um valor de ver- dade. Na linguagem de predicados, eles são construídos de acordo com as seguintes regras: � o símbolo de verdade, false, é um átomo; � t1, t2, ..., tn sendo termos e p um símbolo para predicado n-ário, então p( t1, t2, ..., tn) é um átomo. Fórmulas As fórmulas, na lógica de predicados, são construídas partindo da ligação entre átomos e conectivos; porém, nem todas as ligações entre os símbolos construirão uma fórmula. Para isso, as seguintes regras devem ser seguidas: � todo átomo será uma fórmula; � se H for uma fórmula, então (¬H) será uma fórmula; � se H e G forem fórmulas, então (H ∨ G) será uma fórmula; � se H for uma fórmula e x uma variável, então e serão fórmulas. Pela utilização dos conectivos (¬, ∨, ∧ e →), é possível obter fórmulas mais complexas. Considerando que o conjunto de conectivos {¬, ∨} é completo, pode-se obter fórmulas com os conectivos ∧, → e ↔. Uma expressão, nesse caso, é uma junção válida de símbolos do alfabeto, que podem ser termos ou fórmulas. As partes que compõem uma expressão possuem denominações especiais: subtermo, subfórmula e subexpressão. A seguir, serão citados os elementos que definem as partes de um termo ou uma fórmula E. � Se E = x, a variável x é um subtermo de E. � Se E = f(t1, t2, ..., tn), então ti e f(t1, t2, ..., tn) são subtermos de E. � Se t1 é subtermo de t2 e t2 é subtermo de E, então t1 é subtermo de E. � Se H é uma fórmula e E = (¬H), então H e (¬H) são subfórmulas de E. � Se H e G são fórmulas e E é uma das fórmulas (H ∨ G), (H ∧ G), (H → G) ou (H ↔ G), então H, G e E são subfórmulas de E. � Se H é uma fórmula, x é uma variável, Q é um quantificador ∀ ou ∃ e E = ((Qx)H), então H e ((Qx)H) são subfórmulas de E. Linguagem e semântica da lógica dos predicados 7 � Se H1 é subfórmula de H2 e H2 é subfórmula de E, H1 é subfórmula de E. � Todo subtermo ou toda subfórmula também é uma subexpressão. Souza (2008) apresenta o seguinte exemplo de subfórmula. Dadas duas fórmulas, H e G, e considerando que G é uma parte de H, então G é uma subfórmula de H. Então, considerando as fórmulas: e é possível observar que a subfórmula G ocorre duas vezes em H. Na lógica de predicados, de modo a possibilitar a simplificação das fór- mulas, existe uma ordem de precedência entre os conectivos, sendo: � ¬ maior precedência; �� ∀, ∃ precedência intermediária superior; � →, ↔ precedência intermediária inferior; �� ∨, ∧ precedência inferior. Essa ordem auxilia na simplificação da fórmula, pois, por meio dela, é possível a retirada dos símbolos de pontuação. Souza (2008) apresenta o seguinte exemplo sobre a ordem de pre- cedência. Levando em consideração a ordem de precedência dos conectivos, G é a concatenação de símbolos: que representa a fórmula: Linguagem e semântica da lógica dos predicados8 Variáveis As variáveis podem ser consideradas ligadas ou livres. As variáveis ligadas são aquelas que ocorrem no escopo de um quantificador. Caso a variável não seja ligada a um quantificador, ela é uma variável livre. Para melhor compreensão, observe as fórmulas a seguir. �� ∃x(q(x) → p(y)). Nessa fórmula, x é uma variável ligada e y é uma va- riável livre. � p(y) → ∃yq(y) ∧ zp(x). Nessa fórmula, y é livre em sua primeira ocorrência e ligada na segunda, enquanto x é uma variável livre. Lógica dos predicados: semântica Na lógica dos predicados, a semântica é responsável pela interconexão entre a linguagem e ao que ela se refere. Ou seja, a linguagem da lógica de predicados é composta por símbolos, os quais se referem a objetos ou estados das coisas. Portanto, é a semântica que fez a ligação entre ambas as partes (ABE et al., 2002). De acordo com Souza (2008), para obter o significado semântico das fór- mulas nesse tipo de lógica, primeiramente é necessário definir interpretações de termos e átomos para, após isso, considerar a interpretação das fórmulas da lógica de predicados. Para interpretar I sobre o domínio U, sendo U um conjunto não vazio, o autor apresenta estas considerações para a função: � domínio da função I é o conjunto dos símbolos de função, predicados e expressões; � se I[x] = x para toda variável x, então xI ∈ U; � se I[f] = fI, então fI é uma função n-ária em U (ou seja, fI:Un → U) para todo símbolo de função f, n-ário; � pI é um predicado n-ário em U (ou seja, pI: Un → {T,F}) para todo símbolo de predicado p, n-ário, caso I[p] = pI; � se E for uma expressão, então I[E] será definida por um conjunto de regras semânticas. O termo domínio, citado nas considerações anteriores, aparece com dois diferentes significados. Em U, domínio está representando as interpretações do mundo semântico; já na função I, ele representa o conjunto dos símbolos de função, predicado e expressão. Em uma interpretação de fórmulas, o Linguagem e semântica da lógica dos predicados 9 domínio é um conjunto não vazio, pois não é possível que ocorram valores nos resultados das interpretações em domínios vazios. Singh (2018) afirma que todas as constantes são interpretadas como elementos em um domínio, em que, para cada constante b, se I[b] = bI, então bI ∈ U. Todos os símbolos de funções são considerados funções parciais no domínio, levando em consideração que uma função zero-ária é interpretada da mesma forma como uma constante. Todos os predicados são interpretados como relações, e as variáveis, como elementos do domínio, se I[x] = x; dessa forma, xI ∈ U. Segundo Souza (2008), uma interpretação I é uma função definida em todos os símbolos de seu domínio, de modo que, se é estabelecido um símbolo para a função f, por exemplo, existe, obrigatoriamente fI, que é uma função em U e é representado em I[f] = fI. Dessa forma, pode-se afirmar que a interpretação I possui“opinião formada” referente à semântica de todos os símbolos de função, predicados e expressões. O autor ainda apresenta a diferença entre interpretações de funções e predicados. Considere f como um símbolo para função n-ário, I[f] = fI, onde: Assim, o contradomínio de fI é igual a U. Porém, se p é um símbolo para predicado n-ário, I[p] = pI, onde: Aqui, o contradomínio de pI é {T, F}. Dessa forma, é possível perceber a diferença entre os dois contradomínios citados acima, caracterizando funções e predicados. Existem algumas regras semânticas para a interpretação de fórmulas sem quantificadores e com quantificadores, que serão citadas a seguir, segundo o autor Souza (2008). Fórmulas sem quantificadores Nas regras semânticas para a interpretação de fórmulas sem quantificadores, inicialmente a definição de interpretação de expressões é realizada partindo da interpretação dos símbolos do alfabeto e, após isso, as regras semânticas estabelecem os procedimentos que definem a interpretação das fórmulas, levando em conta os elementos que as formam. Linguagem e semântica da lógica dos predicados10 Para definir as regras semânticas para a interpretação de fórmulas sem quantificadores no início, considere que E seja uma expressão e I seja uma interpretação sobre o domínio U. A interpretação de E conforme I, que é indicada por I[E], será definida por estas regras: � se E = false, então I[E] = I[false] = F; � se E = f(t1, ..., tn), sendo f(t1, ..., tn) um termo, então I[E] = I[f(t1, ..., tnI)]fI(t1I, ..., tnI), onde I[f] = fI e, para todo termo ti, I[ti] = tiI; � se E = p(t1, ..., tn), sendo p(t1, ..., tn) um átomo, então I[E] = I[p(t1, ..., tn)] pI(t1I, ..., tnI), onde I[p] = pI e, para todo termo ti, I[ti] = tiI; � se E = ¬H, sendo H uma fórmula, então I[E] = I[¬H] = T, se I[H] = F e I[E] = I[¬H] = F, se I[H] = T; � se E = H ∨ G, sendo H e G duas fórmulas, então I[E] = I[H ∨ G] = T, se I[E] = T e/ou I[G] = T, e I[E] = I[H ∨ G] = F , se I[H] = I[G] = F. O conjunto dos conectivos {¬, ∨} é completo, então, baseado neles, é pos- sível determinar os demais conectivos. Assim, seguindo as regras semânticas apresentadas, deduz-se as regras semânticas para os conectivos ∧, → e ↔. Para um melhor entendimento, considere as fórmulas: Sobre o domínio dos números inteiros ℤ, deve ser considerada a inter- pretação I: As interpretações dessas variáveis apresentam índice I, significando que: Linguagem e semântica da lógica dos predicados 11 ou seja, que x e x1 são diferentes. O objeto xI é o significado da variável x, enquanto x1 faz parte do domínio U, que é análogo ao conjunto dos números inteiros, de modo que x é o elemento do alfabeto da lógica de predicados. Por sua vez, p(x,y,z,w) é um átomo, que tem o valor de verdade da expressão semântica como resultado: Significando que: Porém, somente se a relação abaixo for verdade: Para obter o significado semântico de H e G, de acordo com I[H] e I[G], o Quadro 2 deve ser considerado. Quadro 2. Semântica e sintaxe para interpretação da semântica Semântica 3 2 0 1 T 4 0 F T T F Sintaxe x y a b p(x,y,a,b) f(x) g(y) q(x,y) r(y,a) H G Fonte: Adaptado de Souza (2008). Então, levando em consideração o Quadro 2, os termos f(x) e g(y) são números inteiros, o que os caracteriza como componentes do domínio I. Da mesma forma, analisando o Quadro 2, as fórmulas H e G e dos átomos são valores de verdade: Portanto, a partir disso, é possível perceber que existem diferenças na interpretação de termos e fórmulas. Linguagem e semântica da lógica dos predicados12 Interpretação estendida Antes de definir a interpretação de fórmulas com quantificadores, deve-se entender o conceito de interpretação estendida. Para isso, é importante considerar um paradigma. Uma interpretação relaciona objetos sintáticos e semânticos. Supondo que cada indivíduo seja associado à interpretação, considere que I seja uma interpretação que se encontra associada a um indivíduo com “opinião formada” referente aos elementos de seu mundo sintático. Ao definir variáveis x e y, sendo I[x] e I[y], possuindo os seguintes valores, por exemplo: o indivíduo interpreta que as variáveis tenham esses valores. Se o indivíduo for convencido de que a variável x deve ser interpretada como 9, não como 2, o valor semântico de x será associado à nova interpretação da seguinte forma: Portanto, apresenta-se a interpretação I mais a extensão , ficando: Caso o indivíduo mude, novamente, de opinião e interprete o valor de x como 5 e o valor de y como 6, a nova interpretação será a seguinte: onde: A partir disso, é possível afirmar que a extensão mais à esquerda sempre tem precedência sobre as outras e que, caso não exista uma extensão sobre alguma das variáveis, é considerado o valor semântico original. Então, se I for uma interpretação sobre domínio U, x uma variável da lógica de predicados e d um elemento de U, e considerando que uma extensão de I, conforme x e d, é uma interpretação sobre U, essa extensão é representada por I, e y é uma variável qualquer, onde: Linguagem e semântica da lógica dos predicados 13 sendo y uma variável da lógica de predicados quando y = x. Então: Porém, quando y ≠ x, então: Uma expressão ou um símbolo do alfabeto da lógica de predicados é atribuído à interpretação estendida I, já o valor de I[y] é original- mente atribuído por I, o que significa que I é igual a I, mas não para a variável x, que é interpretada como d. Então, a interpretação de I é igual a I mais a extensão . Fórmulas com quantificadores Para a definição das regras semânticas visando à interpretação de fórmulas com quantificadores, considere que H é uma fórmula, x uma variável e I é uma intepretação sobre domínio U. Desse modo, os valores semânticos de I[(∀x) H] e I[(∃x)H] são estipulados pelas seguintes regras: � � � � Os símbolos ∀ e “∀” apresentam diferentes significados nessas regras: ∀ é um conectivo, sendo um símbolo sintático, enquanto “∀” é símbolo semântico, que significa “para todo”, estando quantificado sobre objetos semânticos. Da mesma forma, ∃ também é um símbolo sintático e “∃” também é um sím- bolo semântico, que significa “existe”. Aqui, para simplificar, “∀” e “∃” serão indicados somente por ∀ e ∃, mas é necessário conhecer suas diferenças. Nas regras citadas acima, I[∀x)H] = T corresponde a: para qualquer inter- pretação da variável x em H, a fórmula H será interpretada como verdadeira, considerando a extensão da interpretação I. Dessa forma, se d assumir algum valor no domínio U, I interpretará x como algum valor em U. Levando essas afirmações em consideração, isso será expresso da seguinte forma: Linguagem e semântica da lógica dos predicados14 Do mesmo modo, I[∃x)H] = T é o equivalente à seguinte afirmação: para a interpretação de x em H, existe um valor, de maneira que a fórmula H seja interpretada como verdadeira. Isso é expresso como: Nesse caso, I[x] = d, a variável x está sendo interpretada como d. Nas regras de semântica para a intepretação de fórmulas com quantifi- cadores, I[∀x)H] = F corresponde a: é falso que, para qualquer interpretação de x em H, a fórmula será interpretada como verdadeira. Ou seja, existe, no mínimo, uma interpretação de x em H, interpretada por I como falsa, o que é expresso como: Portanto, H será interpretada como F quando x for interpretada por I como d. Por fim, I[∃x)H] = F é o mesmo que afirmar que: é falso que existe alguma interpretação para x em H em que H possa ser interpretada como verdadeira. Em outras palavras, para toda interpretação de x em H, H será interpretada como falsa, o que é apresentado como: Neste capítulo, a lógica de predicados foi projetada para suprir as defici- ências encontradas na lógica proposicional, que foi utilizada como base, mas com melhorias, como a utilização de variáveis para que não seja necessária a especificação dos objetos que estão sendoanalisados. Da mesma forma, a introdução dos quantificadores auxilia a determinar a quantificação e a existência dos elementos de determinado contexto, sem que seja necessário especificá-los de forma explícita, tornando a linguagem da lógica de predi- cados mais abrangente e eficiente. Referências ABE, J. M. et al. Introdução à lógica para a ciência da computação. São Paulo: Arte & Ciência, 2002. HUTH, M.; RYAN, M. Logic in computer science: modeling and reasoning about systems. Cambridge: Cambridge University Press, 2004. PEREIRA, S. do L. Lógica de predicados. 2009. Disponível em: https://www.ime.usp. br/~slago/IA-logicaDePredicados.pdf. Acesso em: 2 mar. 2021. Linguagem e semântica da lógica dos predicados 15 SILVA, F. C. D. da. Lógica de predicados. 2018. Disponível em: https://wwwp.uniriotec.br/ cristinabicharra/wp-content/uploads/sites/16/2018/11/Lo%CC%81gica-de-Predicados- -Unificac%CC%A7a%CC%83o-Skolemizac%CC%A7a%CC%83o-e-ProLog-1.pdf. Acesso em: 2 mar. 2021. SINGH, A. Logics for computer science. Delhi: PHI Learning, 2018. SOUℤA, J. N. de. Lógica para ciência da computação: fundamentos de linguagem, semântica e sistemas de dedução. Rio de Janeiro: Campus, 2008. Os links para sites da web fornecidos neste capítulo foram todos testados, e seu funcionamento foi comprovado no momento da publicação do material. No entanto, a rede é extremamente dinâmica; suas páginas estão constantemente mudando de local e conteúdo. Assim, os editores declaram não ter qualquer responsabilidade sobre qualidade, precisão ou integralidade das informações referidas em tais links. Linguagem e semântica da lógica dos predicados16