UNIVERSIDADE ESTADUAL DE SANTA CRUZ DEPARTAMENTO DE CIÊNCIAS EXATAS E TECNOLÓGICAS LÓGICA DE PRIMEIRA ORDEM Trabalho apresentado pelos alunos do 3º semestre de Ciência da Computação, Vívian Maria, Jhone Sesto , Juciele Freitas e Márcio André, Fundamentos Computação, na disciplina Matemáticos entregue ao Rogério Vargas. Ilhéus/2012 1 de para professor LÓGICA DE PRIMEIRA ORDEM Lógica de primeira ordem é um sistema filosófico de raciocínio usando expressões como “se” e “então” como quantificadores ou predicados, ambas são funções finarias verdadeiras onde uma centena é logicamente equivalente a uma negativa. A lógica de primeira ordem (LPO), conhecida também como cálculo de predicados de primeira ordem (CPPO), é um sistema lógico que estende a lógica proposicional (lógica sentencial) e que é estendida pela lógica de segunda ordem. As sentenças atômicas da lógica de primeira ordem têm o formato P (t1,…, tn) (um predicado com um ou mais "argumentos") ao invés de serem símbolos sentenciais sem estruturas. O ingrediente novo da lógica de primeira ordem não encontrado na lógica proposicional é a quantificação: dada uma sentença φ qualquer, as novas construções e são introduzidas. - leia "para todo x, φ" e "para algum x, φ", respectivamente, significa que φ é verdadeiro para todo valor de x e significa que há pelo menos um x tal que φ é verdadeiro. Os valores das variáveis são tirados de um universo de discurso pré-determinado.Um refinamento da lógica de primeira ordem permite variáveis de diferentes tipos, para tratar de diferentes classes de objetos. A lógica de primeira ordem tem poder expressivo suficiente para formalizar praticamente toda a matemática. Uma teoria de primeira ordem consiste em um conjunto de axiomas (geralmente finitos ou recursivamente enumerável) e de sentenças dedutíveis a partir deles. A teoria dos conjuntos de Zermelo-Fraenkel é um exemplo de uma teoria de primeira ordem, e aceita-se geralmente que toda a matemática clássica possa ser formalizada nela. Um cálculo de predicados consiste em: regras de formação (definições recursivas para dar origem a fórmulas bem formadas ou FBFs). 2 regras de transformação (regras de inferência para derivar teoremas). axiomas. Os axiomas considerados aqui são os axiomas lógicos que fazem parte do cálculo de predicados. Além disso, os axiomas não lógicos são adicionados em teorias de primeira ordem específicas: estes não são considerados como verdades da lógica, mas como verdades da teoria particular sob consideração. Quando o conjunto dos axiomas é infinito, requer-se que haja um algoritmo que possa decidir para uma fórmula bem formada dada, se ela é um axioma ou não. Deve também haver um algoritmo que possa decidir se uma aplicação dada de uma regra de inferência está correta ou não. É importante notar que o cálculo de predicados pode ser formalizado de muitas maneiras equivalentes; não há nada canônico sobre os axiomas e as regras de inferência propostos aqui, mas toda a formalização dará origem aos mesmos teoremas da lógica (e deduzirá os mesmos teoremas a partir de um conjunto qualquer de axiomas nãológicos). O cálculo de predicado é uma extensão da lógica proposicional que define quais sentenças da lógica de primeira ordem são demonstráveis. É um sistema formal usado para descrever as teorias matemáticas. Se o cálculo proposicional for definido por um conjunto adequado de axiomas e a única regra de inferência modus ponens (isto pode ser feito de muitas maneiras diferentes, uma delas já ilustrada na seção anterior), então o cálculo de predicados pode ser definido adicionando-se alguns axiomas e uma regra de inferência "generalização universal". Mais precisamente, como axiomas para o cálculo de predicado, teremos: Os axiomas circunstanciais do cálculo proposicional (A1, A2 e A3 na seção anterior); Os axiomas dos quantificadores (A4 e A5); Os axiomas para a igualdade propostos em seção anterior, se a igualdade for considerada como um conceito lógico. Uma sentença será definida como demonstrável na lógica de primeira ordem se puder ser obtida começando com os axiomas do cálculo de predicados e aplicando-se repetidamente as regras de inferência "modus ponens" e "generalização universal". Se 3 nós tivermos uma teoria T (um conjunto de sentenças, às vezes chamadas axiomas) então uma sentença φ se define como demonstrável na teoria T se a ∧ b ∧ … → φ é demonstrável na lógica de primeira ordem (relação de consequência formal), para algum conjunto finito de axiomas a, b,… da teoria T. Um problema aparente com esta definição de "demonstrabilidade" é que ela parece um tanto ad hoc: nós tomamos uma coleção aparentemente aleatória de axiomas e de regras de inferência, e não é óbvio que não tenhamos acidentalmente deixado de fora algum axioma ou regra fundamental. O teorema da completude de Gödel nos assegura de que este não é realmente um problema: o teorema diz que toda sentença verdadeira em todos os modelos é demonstrável na lógica de primeira ordem. Em particular, toda definição razoável de "demonstrável" na lógica de primeira ordem deve ser equivalente à definição acima (embora seja possível que os comprimentos das derivações difira bastante para diferentes definições de demonstrabilidade). Há muitas maneiras diferentes (mas equivalentes) de definir probabilidade. A definição acima é um exemplo típico do cálculo no estilo de Hilbert, que tem muitos axiomas diferentes, mas poucas regras de inferência. As definições de demonstrabilidade para a lógica de primeira ordem nos estilos de Gentzen (dedução natural e cálculo de sequentes) são baseadas em poucos ou nenhum axiomas, mas muitas regras de inferência. A linguagem da lógica proposicional não é adequada para representar relações entre objetos. Por exemplo, se fôssemos usar uma linguagem proposicional para representar "João é pai de Maria e José é pai de João" usaríamos duas letras sentenciais diferentes para expressar ideias semelhantes (por exemplo, P para simbolizar "João é pai de Maria "e Q para simbolizar "José é pai de João" ) e não estaríamos captando com esta representação o fato de que as duas frases falam sobre a mesma relação de parentesco entre João e Maria e entre José e João. Outro exemplo do limite do poder de expressão da linguagem proposicional, é sua incapacidade de representar instâncias de um propriedade geral. Por exemplo, se quiséssemos representar em linguagem proposicional "Qualquer objeto é igual a si mesmo " e "3 é igual a 3", usaríamos letras sentenciais distintas para representar cada uma das frases, sem captar que a segunda frase é uma instância particular da primeira. Da mesma forma, se por algum processo de dedução chegássemos à conclusão que um indivíduo arbitrário de um universo tem uma certa propriedade, seria razoável querermos concluir que esta propriedade vale para qualquer indivíduo do universo. Porém, usando uma linguagem proposicional para 4 expressar "um indivíduo arbitrário de um universo tem uma certa propriedade " e "esta propriedade vale para qualquer indivíduo do universo" usaríamos dois símbolos proposicionais distintos e não teríamos como concluir o segundo do primeiro. A linguagem de primeira ordem vai captar relações entre indivíduos de um mesmo universo de discurso e a lógica de primeira ordem vai permitir concluir particularizações de uma propriedade geral dos indivíduos de um universo de discurso, assim como derivar generalizações a partir de fatos que valem para um indivíduo arbitrário do universo de discurso. Para ter tal poder de expressão, a linguagem de primeira ordem vai usar um arsenal de símbolos mais sofisticado do que o da linguagem proposicional. Considere a sentença "Todo objeto é igual a si mesmo ". Esta sentença fala de uma propriedade (a de ser igual a si mesmo) que vale para todos os indivíduos de um universo de discurso, sem identificar os objetos deste universo. Considere agora a sentença "Existem números naturais que são pares". Esta sentença fala de um propriedade (a de ser par) que vale para alguns (pelo menos um dos) indivíduos do universo dos números naturais, sem, no entanto, falar no número" 0" ou "2" ou "4",etc em particular. Para expressar propriedades gerais (que valem para todos os indivíduos) ou existenciais (que valem para alguns indivíduos) de um universo são utilizados os quantificadores (universal) e (existencial), respectivamente. Estes quantificadores virão sempre seguidos de um símbolo de variável, captando, desta forma, a ideia de estarem simbolizando as palavras "para qualquer" e "para algum". Considere as sentenças: - "Sócrates é homem" - "Todo aluno do departamento de Ciência da Computação estuda lógica" A primeira frase fala de uma propriedade (ser homem) de um indivíduo distinguido ("Sócrates") de um domínio de discurso. A segunda frase fala sobre objetos distinguidos "departamento de Ciência da Computação" e "lógica". Tais objetos poderão ser representados usando os símbolos , soc para "Sócrates", cc para "departamento de Ciência da Computação", lg para "lógica".Tais símbolos são chamados de símbolos de constantes. 5 As propriedades "ser aluno de ", "estuda" relacionam objetos do universo de discurso considerado, isto é, "ser aluno de " relaciona os indivíduos de uma universidade com os seus departamentos, "estuda" relaciona os indivíduos de uma universidade com as matérias. Para representar tais relações serão usados símbolos de predicados (ou relações). Nos exemplos citados podemos usar Estuda e Aluno que são símbolos de relação binária. As relações unárias expressam propriedades dos indivíduos do universo ( por exemplo "ser par","ser homem"). A relação "ser igual a" é tratada de forma especial, sendo representada pelo símbolo de igualdade . Desta forma podemos simbolizar as sentenças consideradas nos exemplos da seguinte forma: - "Todo mundo é igual a si mesmo " por x xx; - "Existem números naturais que são pares" por xPar(x); - "Sócrates é homem" por Homem(soc); - "Todo aluno do departamento de Ciência da Computação estuda lógica" porx(Aluno(x,cc) Estuda (x,lg)). Já foi abordado como representar objetos do domínio através de constantes.Uma outra maneira de representá-los é através do uso de símbolos de função. Por exemplo podemos representar os números naturais "1", "2", "3", etc através do uso de símbolo de função, digamos, suc, que vai gerar nomes para os números naturais "1", "2", "3", etc. a partir da constante 0, e. g., "1" vai ser denotado por suc(0), "3" vai ser denotado por suc(suc(suc(0))), etc. Seqüências de símbolos tais como suc(0) e suc(suc(suc(0))) são chamadas termos. Assim, a frase "Todo número natural diferente de zero é sucessor de um número natural" pode ser simbolizada por x(x0 ysuc(y)x). 6