Um Editor de Provas para a Lógica Proposicional



Documentos relacionados
Lista de Exercícios 1: Soluções Fundamentos da Lógica Lógica Proposicional

Construção de tabelas verdades

Dadas a base e a altura de um triangulo, determinar sua área.

Orientação a Objetos

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP

Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA

Novidades no Q-flow 3.02

CENTRO UNIVERSITÁRIO CATÓLICA DE SANTA CATARINA PRÓ-REITORIA ACADÊMICA NÚCLEO DE EDUCAÇÃO EM AMBIENTES DIGITAIS NEAD

AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS

Lição 1 - Criação de campos calculados em consultas

Ajuda ao SciEn-Produção O Artigo Científico da Pesquisa Experimental

Sistema de Controle de Solicitação de Desenvolvimento

Sistema de Acompanhamento ao Desempenho do Aluno

Utilizando a ferramenta de criação de aulas

15 Computador, projeto e manufatura

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0

Engenharia de Software III

Estrutura do Trabalho: Fazer um resumo descrevendo o que será visto em cada capítulo do trabalho.

CONSIDERAÇÕES SOBRE USO DO SOFTWARE EDUCACIONAL FALANDO SOBRE... HISTÓRIA DO BRASIL EM AULA MINISTRADA EM LABORATÓRIO DE INFORMÁTICA

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.

ESTUDO COMPARATIVO ENTRE AS PLATAFORMAS ARDUINO E PIC

Algoritmos: Lógica para desenvolvimento de programação de computadores. Autor: José Augusto Manzano. Capítulo 1 Abordagem Contextual

Manual SAGe Versão 1.2 (a partir da versão )

Microsoft Access XP Módulo Um

Representação de Conhecimento. Lógica Proposicional

Ajuda On-line - Sistema de Portaria. Versão 4.8.J

Pesquisa e organização de informação

ISO/IEC 12207: Gerência de Configuração

Resolução de problemas e desenvolvimento de algoritmos

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

UM MÓDULO DE ATIVIDADES PARA O ENSINO-APRENDIZAGEM DAS FÓRMULAS DE ÁREA DOS PRINCIPAIS POLÍGONOS CONVEXOS

Introdução ao Aplicativo de Programação LEGO MINDSTORMS Education EV3

Feature-Driven Development

Aula 8 Circuitos Integrados

AGRUPAMENTO DE ESCOLAS DR. VIEIRA DE CARVALHO. Escola Básica e Secundária Dr. Vieira de Carvalho. Departamento de Ciências Experimentais

ROTEIRO PARA ELABORAÇÃO DE PROJETOS

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

Global T126 e GFS), executando para ambos os horários (00Z e 12Z), utilizando

GUIA INTEGRA SERVICES E STATUS MONITOR

Portal Sindical. Manual Operacional Empresas/Escritórios

ATIVIDADES PRÁTICAS SUPERVISIONADAS

1. Introdução pág.3 2. Apresentação do sistema Joomla! pág.4 3. Acessando a administração do site pág.4 4. Artigos 4.1. Criando um Artigo 4.2.

e-ouv Passo-a-passo Sistema de Ouvidorias do Poder Executivo Federal Junho, 2015 Controladoria-Geral da União

Sistema de Gestão de Recursos de Aprendizagem

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

Notas de Aula - Álgebra de Boole Parte 1

Manual de Utilização de Certificados Digitais. Microsoft Word 2010

ULA Sinais de Controle enviados pela UC

Pag: 1/20. SGI Manual. Controle de Padrões

02 - Usando o SiteMaster - Informações importantes

1. Apresentação Objetivos

Documento de Análise e Projeto VideoSystem

Conceitos Importantes:

Serviço Público Federal Universidade Federal do Pará - UFPA Centro de Tecnologia da Informação e Comunicação - CTIC S I E

QualiQuantiSoft Versão 1.3c

Grupo Projeção. Portal Acadêmico. - Ambiente do Aluno -

1. NÍVEL CONVENCIONAL DE MÁQUINA

Treinamento em BrOffice.org Calc

Instalação: permite baixar o pacote de instalação do agente de coleta do sistema.

MODELO DE APRESENTAÇÃO DE PROJETO DE PESQUISA

Bases Matemáticas. Aula 2 Métodos de Demonstração. Rodrigo Hausen. v /15

COMO ELABORAR UM ARTIGO CIENTÍFICO RESUMO. Palavras-chave: Artigo Científico. Normalização. NBR 6022/03.

T U T O R I A I S WEB OF SCIENCE TUTORIAL. Biblioteca da Escola de Engenharia da UFRGS. WEB OF SCIENCE - Tutorial

Engenharia de Requisitos Estudo de Caso

Manual de Utilização de Certificados Digitais. Microsoft Word 2003

MANUAL DE UTILIZAÇÃO SISTEMA DE CADASTRO INTRANET

2 Diagrama de Caso de Uso

Análise de Dados do Financeiro

Aula 4 Pseudocódigo Tipos de Dados, Expressões e Variáveis

ICC Introdução para JavaScript

1.1. Organização de um Sistema Computacional

Módulo e-rede VirtueMart v1.0. Manual de. Instalação do Módulo. estamos todos ligados

Um produto para jogar um conteúdo matemático e estudar um jogo social

CLUBE DE PROGRAMAÇÃO NAS ESCOLAS: NOVAS ERSPECTIVAS PARA O ENSINO DA COMPUTAÇÃO. IF Farroupilha Campus Santo Augusto; joaowinck@hotmail.

Manual de utilização do sistema OTRS (Atendimento) Cliente Externo

INTRODUÇÃO AO DESENVOLVIMENTO DE SISTEMAS COM MICROCONTROLADORES

Manual Captura S_Line

2. Representação Numérica

Fundap. Programa de Estágio. Manual de Utilização do Sistema de Administração de Bolsas de Estágio. Plano de Estágio

FACULDADE DE ENGENHARIA DE COMPUTAÇÃO. PROJETO FINAL I e II PLANO DE TRABALHO <NOME DO TRABALHO> <Nome do Aluno> <Nome do Orientador>

Utilização de Planilhas Excel na Engenharia Civil

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

ROTEIRO PARA TREINAMENTO DO SAGRES DIÁRIO Guia do Docente

Aula 05 Raciocínio Lógico p/ INSS - Técnico do Seguro Social - Com Videoaulas

Organização e Arquitetura de Computadores I. de Computadores

MANUAL DO USUÁRIO SORE Sistema Online de Reservas de Equipamento. Toledo PR. Versão Atualização 26/01/2009 Depto de TI - FASUL Página 1

Lógica Computacional. Argumentos válidos e sólidos. Métodos de Demonstração. Demonstrações formais. Regras de Inferência Igualdade

Manual de digitação de contas Portal AFPERGS

Desafio Profissional PÓS-GRADUAÇÃO Gestão de Projetos - Módulo C Prof. Me. Valter Castelhano de Oliveira

SAV Sistema de Aluguel de Veículos I - DOCUMENTO DE REQUISITOS Versão 1.00

Cálculo utilizando variáveis do tipo DATA

Microsoft Office PowerPoint 2007

Manual de Utilização das Funções Básicas do Sistema ClinicWeb

Transcrição:

Um Editor de Provas para a Lógica Proposicional Gleifer V. Alves Universidade Católica de Pelotas, Escola de Informática Rua Felix da Cunha 412, Pelotas, Brasil, 96010-000 gva@atlas.ucpel.tche.br Graçaliz P. Dimuro Universidade Católica de Pelotas, Escola de Informática Rua Felix da Cunha 412, Pelotas, Brasil, 96010-000 liz@atlas.ucpel.tche.br e Antônio C. R. Costa Universidade Católica de Pelotas, Escola de Informática Rua Felix da Cunha 412, Pelotas, Brasil, 96010-000 rocha@atlas.ucpel.tche.br ABSTRACT This work presents the development of a Proof Editor for the Propositional Logic, which was implemented using the software Maple, with the intended usage in the teaching of logic. The Editor is accompanied by an interactive tutorial, also developed with the software Maple. The tutorial presents instructions for using the Editor, theoretical aspects, examples and practical exercises. The proof method used by the Editor is the one done step by step, with the student interaction. For the implementations of the Proof Editor, a Maple package, called PropLog, was developed. This package contains two classes of procedures procedures for the rules of propositional logic and auxiliary procedures for the manipulation of the Editor. Two data types were introduced Rule and Form. The first one is to verify the valid rules, and, the second, to verify the well formed formulas. The Editor works with equational logic. A short theoretical foundation is presented. Some comparisons to other systems are done. Keywords: Logic, Maple, Proof Editor, Teaching RESUMO Este trabalho apresenta o desenvolvimento de um Editor de Provas para a Lógica Proposicional, implementado utilizando-se o software matemático Maple, para utilização no apoio ao ensino de Lógica Proposicional. O Editor de Provas é acompanhado por um manual interativo, desenvolvido também com o software Maple, contendo não somente instruções para a sua utilização, mas também aspectos teóricos, exemplos e exercícios. O Editor utiliza o método de prova que é efetuado passo a passo com a interação do aluno. Para a implementação do Editor de Provas foi elaborado um pacote Maple, denominado PropLog, que apresenta duas classes de procedimentos - procedimentos para as regras da lógica proposicional e procedimentos auxiliares de utilização -, que facilitam a interação com o aluno. Foram definidos dois tipos de dados - Regra e Form. O primeiro verifica as regras válidas e, o segundo, se uma fórmula é bem formada. O Editor trabalha com a lógica equacional. Apresenta-se um resumo da fundamentação teórica e comparações com outros sistemas. Palavras-Chave: Lógica, Software Maple, Editor de Provas, Ensino

2 1 INTRODUÇÃO Este trabalho apresenta o desenvolvimento de um Editor de Provas para a Lógica Proposicional, implementado utilizando-se o software matemático Maple [10,11], para utilização no apoio ao ensino de Lógica Proposicional. O Editor é parte de um material didático interativo, desenvolvido segundo a metodologia de ensino integrado, proposto pelo projeto ENSINET Ensino Integrado dos Fundamentos da Ciência da Computação via Internet [1,5] (veja outros resultados do Projeto ENSINET em http://gmc.ucpel.tche.br/ensinet). A idéia principal é prover uma ferramenta interativa que auxilie o desenvolvimento de provas complicadas, facilitando a manipulação de regras e teoremas, para possibilitar que novas práticas de interpretação e de aprendizagem autônoma possam ser experimentadas, auxiliando no desenvolvimento da capacidade do aluno raciocinar diante das diferentes situações e caminhos de uma prova. O Editor de Provas é acompanhado por uma manual interativo, desenvolvido também com o software Maple, contendo não somente instruções para a sua utilização, mas também aspectos teóricos, exemplos e exercícios. O artigo encontra-se organizado conforme descrito a seguir. Na seção 2, apresenta-se a fundamentação teórica em que baseia o desenvolvimento do Editor. Na seção 3, descrevem-se as características básicas de alguns sistemas relacionados com a área. Na seção 4, apresenta-se o desenvolvimento do Editor de Provas. Na seção 5, tem-se um estudo sobre um provador de teoremas. Na seção 6, encontram-se as conclusões e considerações finais. 2 FUNDAMENTAÇÃO TEÓRICA Os conceitos teóricos em que se baseia o Editor podem ser verificados em [2,19]. Com base nestes autores, foram delineados os principais aspectos que devem ser considerados para a construção de uma ferramenta de provas para a Lógica. Foram estudados e considerados os seguintes aspectos: elementos da lógica, método dedutivo, regras lógicas, características de uma prova, métodos de prova (teoria dedutiva), consistência e completeza, axiomas e teoremas. Conceitos Introdutórios Os conceitos básicos considerados da Lógica Proposicional foram o estudo de expressões, constantes, quantificadores, conetivos lógicos. Concentrou-se na definição de fórmula-bem-formada, ou seja, a forma e estrutura básica de uma sentença. Após, foram consideradas as regras da lógica proposicional (identidade, simplificação, silogismo hipotético, entre outras). Quanto à aplicação destas regras em inferência, constatou-se a importância das mesmas em mecanismos de raciocínio no domínio científico. Um conceito relevante, que deve ser salientado aqui, é a definição de prova completa: a partir de sentenças previamente aceitas como verdadeiras, cada membro subsequente é obtido através de precedentes (aplicando uma regra de inferência dedução pelo raciocínio) até o último elemento ser provado. A Teoria da Identidade traçou um importante paralelo com o estilo de lógica que veio a ser escolhido - o equacional (veja a seção 0) -, visto que o processo de prova é realizado através da equivalência. As regras básicas da identidade (reflexividade, simétrica, transitividade) foram então consideradas. Método Dedutivo O próximo passo consistiu no trabalho com o Método Dedutivo da Lógica. Inicialmente, trabalhou-se com alguns conceitos a respeito de expressões (não-definidas e definidas) e sentenças (axiomas e teoremas). Estes conceitos compõem características para a construção de uma teoria (lógica). As expressões não-definidas são empregadas sem explicar seu significado. De maneira contrária, as expressões onde o significado é determinado são as expressões definidas. Axiomas são sentenças ditas verdadeiras, sem ser estabelecida dentro do sistema a validade da mesma. Já Teoremas são as sentenças estabelecidas a partir dos axiomas, portanto, neste caso a validade da sentença deve ser verificada. Denomina-se de prova o processo de elaboração dos teoremas. A elaboração de uma sentença baseada em outra é o processo de dedução e o elemento deduzido é o conseqüente. Isto leva a outro ponto, relacionado com o método de prova que trata as premissas de uma prova, onde as mesmas devem ser todas verdadeiras e através de demonstrações passo a passo chega-se à conclusão (ou conseqüente) verdadeira [2]. Quando é construída uma certa teoria seguindo estritamente estas definições, tem-se o método dedutivo. Logo, as teorias elaboradas desta maneira são denominadas teorias dedutivas. A Teoria Dedutiva relaciona a definição de uma teoria através da definição de axiomas e teoremas, sendo que a partir dos axiomas é possível comprovar que certas sentenças pertencem a esta teoria.

3 Quando se têm sentenças que não podem ser deduzidas a partir dos axiomas, utiliza-se o método de prova por interpretação, que consiste em demonstrar que uma determinada sentença não é provada baseada nos axiomas de uma dada teoria, mas que apesar disso é verdadeira na Teoria. Todos os teoremas provados através de um determinado sistema axiomático permanecem válidos para qualquer interpretação de um sistema. Estas características do método dedutivo demonstram a possibilidade de "economizar" passos no raciocínio de um certo problema. A aplicação do método dedutivo proporciona os resultados esperados apenas se todas definições e provas preenchem completamente suas tarefas, ou seja, se as definições trazem um significado de todos os termos definidos e se as provas convencem da correção (validade) de todos teoremas provados. Observa-se a importância das regras da lógica serem aplicadas durante as provas, para assim, fornecer uma prova completa descrevendo todos os passos seguidos. Consistência e Completeza Em relação ao aspecto teórico, são importantes os conceitos de consistência e completeza (ou completude). Uma teoria dedutiva é denominada consistente (ou não-contraditória), se de duas sentenças contraditórias pelo menos uma não pode ser provada. Já uma teoria possui a propriedade de completeza, se dadas duas sentenças contraditórias pelo menos uma pode ser provada. Portanto, se uma mesma expressão não for provada e refutada, a teoria é denominada Consistente. Já se qualquer sentença pode ser provada ou refutada a teoria é denominada Completa. Tanto Consistência quanto Completeza são aplicadas não somente à teoria dedutiva, mas também ao sistema axiomático em que foi baseada a teoria. É demonstrada uma importante relação com as regras lógicas, da contradição e do terceiro excluído. De acordo com o mencionado acima as regras possuem ligação com as propriedades da Consistência e Completeza, respectivamente. Consequentemente, constata-se que uma teoria dedutiva deve ser consistente e completa. A fundamentação teórica é importante neste trabalho, pois determina importantes considerações, como conceitos básicos a respeito da lógica que ajudam a delinear a lógica a ser escolhida, assim como as regras; o que precisa ser feito, tipo de regras, domínio do problema; informações que são necessárias, entre outros aspectos. Outra questão relevante a considerar é o grau de correção de uma prova; as conclusões feitas de acordo com premissas dependem diretamente da validade das mesmas. Portanto, em provas realizadas através de máquinas há diversos passos a serem realizados, e se os mesmos possuírem algum erro tem-se uma probabilidade de propagação do mesmo (considerável). Por isso, a importância de uma definição concisa e eficaz das regras do sistema. 3 ANÁLISE DE OUTROS SISTEMAS DE PROVA Foram analisadas três classes de sistemas de prova. Tendo como referência [22] dividiu-se os sistemas da seguinte maneira: Provadores de Teoremas (ou Provadores Automáticos), Verificadores de Prova e Ferramentas de Especificação Algébrica. Os Provadores caracterizam-se pela prova de teoremas feita de forma automática - sendo que a mesma pode não ser completamente automática. Já a segunda classe tem a prova (basicamente) guiada por intervenção do usuário, os Verificadores ainda têm uma subdivisão em Provadores Interativos e Editores de Prova. A última classe apresenta sistemas, especificamente, relacionados com a programação algébrica. Provadores de Teoremas Os Provadores de Teoremas possuem uma grande diversidade de aplicações, tanto acadêmicas quanto comerciais. Algumas têm seu enfoque direcionado ao estudo de teoremas matemáticos ou simplesmente ao ensino de algum determinado tópico (geralmente elementos básicos da lógica). Já aplicações comerciais são direcionadas para verificação e especificação de programas e hardware. Exemplos podem ser consultados no endereço eletrônico da Prover Technology [17], uma empresa sueca que se originou na Chalmers University of Technology. A Prover possui variadas aplicações: uma delas direciona-se à resolução e análise de (possíveis) problemas em circuito de microprocessadores. Desse modo, é possível constatar se um determinado microprocessador irá funcionar corretamente. Voltados à área acadêmica ou simplesmente originados dessa área, existe uma gama de implementações. Com objetivos traçados para a verificação de programas, têm-se quatro provadores de teoremas de grande importância e amplamente utilizados: HOL, Isabelle, PVS e Jape. Provador de Teoremas: HOL HOL (Sistema de Prova de Teoremas) utiliza a lógica de alta-ordem, baseado no método de dedução natural. Além disso, utiliza a linguagem de programação funcional ML para definir as táticas e o conjunto de regras, assim como para programar as estratégias de prova. Esse sistema possibilita tanto provas com retrocesso - i.e., partindo da conclusão às

4 premissas iniciais - quanto provas no sentido natural - i.e., das premissas até a conclusão. O HOL caracteriza-se por ser um ambiente interativo para prova de teoremas assistida por máquina. Tem como aplicações verificação de hardware, software, verificação de provas matemáticas, entre outras [23]. Provador de Teoremas: Isabelle Isabelle é um provador de teoremas genérico, ou seja, não possui um único estilo de lógica pré-determinado, e, sim, é possível que os usuários venham a definir uma determinada lógica utilizando uma meta-linguagem, para que assim sirva para uma aplicação específica [14]. Provador de Teoremas: PVS O PVS (Prototype Verification System) é um sistema comercial para o desenvolvimento de especificações formais. Utiliza a lógica de alta-ordem e é baseado no cálculo de seqüentes. Nesse provador, o usuário constrói um script da prova que é a formulação de um teorema. O script é submetido ao PVS e modificado pelo usuário em caso de insucesso. O sistema salva suas provas em arquivos externos como expressões da linguagem LISP. Esse provador é de considerável complexidade [18]. Provador de Teoremas: Jape Por último, tem-se o Jape, que é uma ferramenta interativa de desenvolvimento, para auxiliar o aprendizado e utilizar o raciocínio formal. Esse sistema utiliza dedução natural, possuindo versões Unix (Sparc, Solaris e Linux) e Machintosh. Através do mesmo, é possível mostrar a estrutura da prova como uma árvore [4]. Editores de Prova (ou Provadores Interativos) Um Editor de Provas é um programa que pode ser utilizado para que de maneira interativa construam-se provas dentro de um sistema lógico. Foram analisados três Editores: SymLog, Tarski's World e Alfie. Estes três sistemas possuem em comum, o objetivo para o qual foram construídos - o ensino de lógica. Editor de Provas: Symlog O Symlog [15] é um sistema que disponibiliza dois tipos de lógica (Proposicional e Predicativa) através de variadas formas, como, por exemplo, tabelas-lógicas, árvores de prova, linguagem natural. Além disso, é possível realizar diversos tipos de exercícios, sendo que alguns exemplos são fornecidos previamente. O SymLog possui sua versão para DOS. Editor de Provas: Tarski's World O Tarski s World [2] demonstra através do mundo dos blocos uma interessante maneira de experimentar elementos básicos da lógica e de provas. O Tarski s World tem uma interface que apresenta janelas e elementos gráficos (para representação dos mundos dos blocos) com versões para Windows e Macintosh. Editor de Provas: Alfie O Alfie [20] é um editor para a lógica proposicional, que utiliza o método de dedução natural. Para utilizar o sistema, primeiro define-se o problema, com as premissas, conclusão e o nome do problema. Após, realiza-se a prova. Alfie é um sistema dirigido ao objetivo, devido ao usuário atacar a prova pela indicação da regra a ser utilizada. O sistema tem a estrutura de uma prova como uma árvore. Alfie foi escrito em Haskell - uma linguagem de programação funcional -, utilizando ferramentas para programação na Web que possibilitaram seu funcionamento através da Internet. Outra característica do Alfie é a disponibilização da prova que é realizada pelo usuário como um programa (na linguagem Haskell). Ferramenta de Especificação Algébrica: OBJ Outra classe de sistemas de prova está centrada na Família OBJ, que compreende diversos sistemas algébricos como OBJ2, OBJ3, CafeOBJ, entre outros. Essas ferramentas são direcionadas à especificação e programação algébrica, baseadas na lógica da reescrita de termos, na lógica equacional "escondida" ou na lógica de primeira-ordem [7,12]. O sistema OBJ3 [8] é utilizado no ensino de semântica de programas imperativos. Os autores denominam um "programa" OBJ, como sendo uma teoria equacional e toda computação OBJ resulta em uma prova de um teorema de alguma determinada teoria. Essa versão do OBJ é apresentada para verificação de diversos aspectos matemáticos, como composições, condições, correção de um programa, procedimentos, vetores, entre outros. 4 O EDITOR DE PROVAS PARA A LÓGICA PROPOSICIONAL Apesar do limite da lógica proposicional (a não utilização de quantificadores, não podendo operar sobre a composição de afirmações) a mesma serviu adequadamente para os propósitos delineados. O objetivo fundamental era desenvolver uma ferramenta simples e eficaz para praticar as regras básicas da lógica juntamente com as idéias básicas de prova.

5 O Editor utiliza o método de prova que é efetuado passo-a-passo com a interação do aluno. Este deve realizar suas próprias considerações e conclusões a respeito da prova efetuada, determinando os próximos passos a serem efetuados na prova. Classes de Procedimentos do Editor O Editor apresenta duas classes de procedimentos, que facilitam a interação com o aluno. Procedimentos para as Regras da Lógica Proposicional Uma classe de procedimentos é referente às regras da lógica proposicional. Tendo como base o estilo da lógica equacional [9] e a fundamentação teórica comentada na seção 2, foram delineadas as características teóricas do sistema proposto. Optou-se pela lógica equacional por sua simplicidade e a sua adequação ao ambiente de programação escolhido no Projeto ENSINET [1,5] o software Maple [10,11]. As regras da lógica equacional são baseadas na equivalência, sendo que a estratégia de prova consiste na substituição de fórmulas, ou seja, a partir de uma proposição é escolhida uma regra para ser aplicada e realizar substituição de fórmulas nesta proposição. Além disso, as provas equacionais geralmente apresentam-se curtas e simples. Na seqüência foram escolhidas as regras a serem utilizadas, dentro das regras básicas, como, por exemplo, comutatividade, De Morgan, distributividade, dupla negação, dentre outras. Estas regras são os axiomas do sistema, enquanto, toda resolução de uma prova vem a determinar um teorema. Procedimentos Auxiliares A outra classe é a dos procedimentos auxiliares (inicia, aplica, mostra, mostrapilha, empilha e desempilha). Estes procedimentos de fato agregam ao Editor de Provas suas principais e mais relevantes características. Cria-se a possibilidade do aluno realmente interagir com a ferramenta e principalmente retroceder em algum ponto da prova, no caso de executar algum passo errôneo. Além disso, disponibiliza-se ao aluno a história da prova, já que todas as regras aplicadas (corretamente) são memorizadas, pela sua inclusão em uma estrutura de dados denominada de pilha. Representação dos conetivos lógicos no Editor Apresenta-se nesta seção cada conetivo e sua correspondente representação no Editor: (i) Operador Unário: negação (~, ): nao (ii) Operadores Binários: conjunção ( ) : e disjunção ( ): ou disjunção exclusiva ( ) : xor condicional ( ): cond bicondicional ( ): bicond Observa-se que é necessário utilizar os conetivos na posição adequada, respeitando as definições encontradas na lógica. Logo, um operador unário é utilizado de maneira prefixada. Já um operador binário é utilizado de maneira infixa. Formato das Proposições Em termos das definições do Editor, faz-se necessário ressaltar que toda proposição inserida deve respeitar o formato de uma lista, segundo a definição: Definição 4.1: Fórmula-bem-formada do Editor Sejam p, q, r,... letras proposicionais. Uma fórmula-bem-formada aceita pelo Editor de Provas, ou simplesmente f.b.f, é definida indutivamente como: (i) [p], [q], [r],... são as fórmulas-bem-formadas básicas aceitas pelo Editor de Provas; (ii) Se P e Q são f.b.f, então [nao,p], [P,e,Q], [P,ou,Q], [P,xor,Q], [P,cond,Q], [P,bicond,Q], também são fórmulas bem formadas aceitas pelo Editor; (iii) Nada mais é f.b.f.

6 O Ambiente de programação - Software Maple O Editor de Provas foi elaborado no software Maple [10,11]. O Maple é um software matemático que apresenta algumas características interativas e uma linguagem de programação interpretada. Estas características mostraram-se adequadas para com as atividades propostas. Além disso, a escolha do Maple deve-se à criação de um Livro Eletrônico que aborda a Introdução à Lógica [1]. A experiência prévia, juntamente com a possibilidade de expansão do material elaborado, foram fatores decisivos para a estruturação do trabalho. O Maple, por outro lado, possui um mecanismo de construção e distribuição de pacotes de procedimentos e funções, que são utilizados em diversas áreas, como, Cálculo, Geometria Analítica e Álgebra Linear, o que possibilitou a construção de um pacote específico para a Lógica Proposicional. O Pacote PropLog Para a implementação do Editor de Provas foi elaborado um pacote Maple, denominado PropLog. Foram criados dois tipos de dados (Regra e Form) e duas classes de procedimentos (procedimentos para as regras da Lógica Proposicional e procedimentos auxiliares). O tipo de dados Regra verifica a sintaxe da regra utilizada, ou seja, se a regra está de acordo com o pacote PropLog. O tipo Form é responsável pela verificação se toda proposição inserida compõe uma fórmula-bem-formada aceita pelo Editor (Definição 4.1). Caso a proposição respeitar a forma de uma f.b.f o aluno pode prosseguir com o processo de prova, caso contrário uma mensagem de erro é informada e ele deve reformular a proposição. As classes de procedimentos comentadas anteriormente concluem o pacote PropLog. Estrutura de Utilização do Editor Para começar uma prova o aluno primeiramente utiliza o procedimento inicia, e informa a proposição (teorema) que deve ser demonstrado. Após, ele deve escolher uma regra a ser aplicada, sendo que para utilizá-la deve escolher o procedimento aplica, inserindo como parâmetros o nome da regra e a posição em que essa regra deve ser aplicada na proposição atual. É importante esclarecer que sempre que uma regra é aplicada com êxito o resultado é armazenado em uma pilha através do procedimento empilha, que se encontra intrínseco ao aplica. Ainda são disponibilizados ao aluno dois comandos, um para visualização da proposição atual (procedimento mostra), e o mostrapilha, que imprime na tela a evolução da prova desde a proposição inicial até os resultados das sucessivas aplicações das regras lógicas. Finalizando, tem-se o procedimento desempilha, que é utilizado através da informação do número n de regras que se deseja desaplicar. Este comando extrai da pilha as n regras requisitadas deixando a proposição anterior para o aluno recomeçar a prova. Salienta-se que os procedimentos auxiliares compõem a estrutura básica de utilização do Editor de Provas, que pode ser visualizada na Figura 4.1. Tutorial do Editor de Provas Foi elaborado um tutorial interativo contendo textos introdutórios e explicativos a respeito da utilização do Editor, seguidos de guias de ajuda específicos para os tópicos abordados. Para isso, aproveitaram-se as características do Maple que permitem reunir textos juntamente com os procedimentos. Na Figura 4.2 é possível verificar os tópicos principais do tutorial do Editor de Provas. Criou-se um guia de ajuda para as regras lógicas, contendo todas regras ordenadas pelo conetivo lógico. Elaborou-se também uma ajuda para ensinar a trabalhar com listas no Maple - devido ao fato de as proposições deverem respeitar o formato de uma lista -. Nessa ajuda, exercita-se o conceito de fórmula bem formada aceita pelo Editor (f.b.f). Há ainda uma descrição de como inserir proposições no Editor. A Figura 4.3 e a Figura 4.4 mostram dois exemplos ilustrando o que foi mencionado nos parágrafos anteriores. O primeiro exemplo mostra uma determinada prova em sua forma padrão, ou seja, a que normalmente é empregada na literatura (Figura 4.3). A Figura 4.4 mostra a mesma prova no formato do Editor.

7 Figura 4.1 Estrutura de utilização do Editor de Provas Figura 4.2 Conteúdos do Editor de Provas

8 Figura 4.3 Exemplo de prova na forma padrão Figura 4.4 Exemplo de prova realizada no Editor 5 ESTUDO DE UM PROVADOR DE TEOREMAS Ao finalizar a construção do Editor de Provas para a Lógica Proposicional, iniciou-se outro trabalho, que tem como objetivo um estudo detalhado do funcionamento de um provador de teoremas. Para essa atividade escolheu-se o

9 provador Folderol. Em [13] são descritos: a implementação desta ferramenta na linguagem de programação funcional ML bem como diversos conceitos e características relacionados com os provadores de teoremas. A idéia principal deste trabalho é implementar um provador, baseado no Folderol, utilizando uma linguagem diferente e incrementar suas estratégias de prova. A linguagem escolhida foi Haskell. Folderol O provador Folderol ilustra características fundamentais para a construção de um provador de teoremas, como, a necessidade de interação do usuário com a ferramenta, ou seja, os passos não serem totalmente automáticos, para com isso haver a possibilidade de explorar as regras do sistema, e conseqüentemente incrementar a ferramenta com novas regras e estratégias; outra característica destacada é a de disponibilizar um histórico das regras que são utilizadas ou um resumo de seu raciocínio. Em relação à aplicação de regras é destacada a importância da escolha das mesmas, visto que uma regra mal selecionada pode até levar ao resultado correto, contudo pode não ser o melhor caminho, resultando em um processamento ineficaz e em uma diferença exponencial no tamanho final da prova, especialmente, em provas que envolvam um grande número de regras. Levando em conta que se deseja automatizar o processo, tal deficiência seria extremamente prejudicial. O Folderol possui, como base para suas regras e desenvolvimento dos teoremas, o cálculo de seqüentes. Cálculo de Seqüentes O cálculo de seqüentes é utilizado em aplicações que combinam estruturas de controle, como dispositivos de programação e provas automáticas. Ademais, suporta provas com retrocesso, naturalmente. A idéias básica do cálculo de seqüentes é envolver dois lados de uma fórmula esquerdo e direito -, que na verdade constituem o elemento antecedente e o conseqüente ao símbolo. Antecedente Conseqüente A estrutura de uma prova envolve quatro quadrantes, respeitando o sentido horário na execução das regras. Portanto, ao lado esquerdo tem-se provas com retrocesso, enquanto ao lado direito tem-se provas em direção à conclusão. Um seqüente é uma expressão A B, onde A e B são seqüências de uma ou mais fórmulas. Outro aspecto é o seqüente básico, A A que deve sempre ter no topo de uma prova. Uma prova deve partir deste seqüente, para então ir sendo alterada através das regras até se chegar à conclusão [6]. Haskell Haskell é uma linguagem puramente funcional, baseada no cálculo lambda que possui como características código mais curto, claro e de fácil manutenção [15]. Algumas características interessantes e que são aspectos diferenciais da linguagem são: a avaliação lazy, as funções de alta-ordem, polimorfismo e as classes de tipos. A avaliação lazy permite avaliar somente a quantia do programa necessária para se obter a resposta. Para tal operação ela executa a avaliação em conjunto e, com isso, é possível escrever programas mais modulares. Dessa maneira, é possível construir estruturas infinitas. Estas estruturas iriam requerer uma quantidade de tempo infinita para fazer sua total avaliação, mas com a avaliação lazy, apenas as partes que, realmente, são necessárias a estruturas de dados são examinadas [3, 21]. Outra característica, é que um argumento só é avaliado uma vez, ou seja, a avaliação lazy garante que argumentos duplicados nunca serão avaliados mais de uma vez. Isto é garantido através da implementação, já que os cálculos são realizados por grafos, ao invés, de árvores. 6 CONCLUSÃO Estudaram-se importantes idéias a respeito da relevância de um formalismo teórico, para servir como um embasamento para as atividades de desenvolvimento e práticas, aprendendo novos tópicos bem como desenvolvendo outros já conhecidos. Em termos de avaliação é possível dizer, que através do estudo das diversas ferramentas criou-se um conhecimento a respeito do tema, que possibilitou uma melhor análise das implementações. Ressalta-se que a divisão feita na seção 3 é flexível, visto que há sistemas que possuem alguma característica de um Editor de Provas, mas estão classificados como um Provador de Teoremas. O estudo dos Editores de Provas (Symlog, Tarski s World e Alfie) auxiliou o trabalho em relação ao Editor de Provas para a Lógica Proposicional, visto que se pode constatar quais as características necessárias para a construção da ferramenta, por que todas, pelo menos, possuem o mesmo objetivo, o ensino de lógica. Já os Provadores de Teoremas foram importantes para estruturar e motivar o estudo do Folderol.

10 Outro aspecto, diz respeito a combinação das habilidades teóricas e práticas, que são fundamentais para a execução de um trabalho voltado a área. Pretende-se utilizar o Editor de Provas em aulas de laboratório para permitir a realização de testes mais concisos da ferramenta. Em termos do trabalho envolvendo o Folderol, visa-se obter resultados interessantes através da implementação com a linguagem Haskell, em virtude das suas características (mencionadas na seção anterior) e, consequentemente, estudar estratégias de provas mais elaboradas que possam solucionar os teoremas de uma forma mais eficiente. AGRADECIMENTOS Agradecemos as sugestões e revisões realizadas pelo Prof. Dr. Vanderlei Rodrigues. Agradecemos também ao CNPq e à FAPERGS pelo apoio em forma de financiamento e bolsa de iniciação científica. REFERÊNCIAS 1. Alves, G. V.; Miranda, R. M. ; Islabão, M. H. ; Dimuro, G. P. ; Costa, A. C. R. ; Duarte, G. D. Materiais Didáticos Interativos para o Ensino Integrado dos Fundamentos da Computação. In. CLEI 2000 - CONFERENCIA LATINOAMERICANA DE INFORMATICA, 2000, Atizapán de Zaragoza. Memorias, Ciudad de Mexico: TEC de Monterrey, 2000, v. 1, n. 26, p. 1-12 (disponível em http://gmc.ucpel.tche.br/ensinet) 2. Barwise, J. e Etchemendy, J. The Language of First-Order Logic (Tarski s World). Stanford: CSLI Lecture Notes, vol. 10, nº 313, 1993. 3. Bird, R. Introduction to Functional Programming using Haskell. London: Prentice Hall, vol. 2, nº 433, 1998. 4. Bornat, R. e Sufrin, B. Jape: A Framework for Building Interactive Proof Editors. Disponível por WWW em http://users.comlab.ox.ac.uk/bernard.sufrin/jape.html, 2000. (dez. 2000). 5. Dimuro, G. P., Costa, A. C. R., Rodrigues, F. P. M. Uma Experiência de Ensino Integrado dos Fundamentos Matemáticos da Ciência da Computação. Revista Brasileira de Informática na Educação, Florianópolis, n.7, p.1-12, 2000. (disponível em http://gmc.ucpel.tche.br/ensinet) 6. Girard, J. Y., Lafont, Y., Taylor, P. Proofs and Types. Melbourne: Cambridge University Press, nº 176, 1993. 7. Goguen, J. A. The OBJ Family. Disponível por WWW em http://www.cs.ucsd.edu/users/goguen/sys/obj.html, 2000. (dez. 2000). 8. Goguen, J. A.; Malcom, G. Algebraic Semantics of ImperativePrograms. Cambridge: The MIT Press, nº 225 1996. 9. Gries, D. e Schneider, F. B. A Logical Approach to Discrete Math. New York: Springer-Verlag, nº 497, 1993. 10. Heal, K. M. Maple V: Learning Guide. New York: Springer, nº 273, 1996. 11. Monogan, M. B.; Geddes, K. O. ; Heal, K. M. ; Labahn, G.; Vorkoetter, S. M. Maple Programmnig Guide. New York: Springer, nº 379, 1998. 12. Oxford University Computing Laboratory. The OBJ Archive. Disponível por WWW em http://archive.comlab.ox.ac.uk/obj.html, 1998. (dez. 2000). 13. Paulson, L. C. Designing a Theorem Prover. New York: Oxford University Press, 1992. (S. Abramsky, D. M. Gabbay, T. S. E. Maibaum, Handbook of Logic: Computational Structures, vol. 2, 571, ) 14. Paulson, L.C. e NIPKOW, T. Isabelle. Disponível por WWW em http://www.cl.cam.ac.uk/research/hvg/isabelle/index.html, 2000. (dez. 2000). 15. Peterson, J., Chitil, O. The Haskell Home Page. Disponível por WWW em www.haskell.org, 2001. (abril 2001). 16. Portoraro, F. D. e Tully, R. E. Logic with SymLog: Learning Symbolic Logic by Computer. Toronto: Prentice-Hall, nº 561, 1994. 17. Prover Technology. Prover Technology. Disponível por WWW em www.prover.com, 2001. (abril 2001). 18. SRI: Computer Science Laboratory. The PVS Specification and Verification System. Disponível por WWW em http://www.csl.sri.com/pvs.html, 2000. (dez. 2000). 19. Tarski, A. Introduction to Logic and to the Methodology of Deductive Sciences. New York: Oxford University Press, vol. 6, nº 239, 1954. 20. The Programming Logic Group in Göteborg. Alfie: a proof editor for propositional logic. Disponível por WWW em http://www.cs.chalmers.se/~sydow/alfie, 1999. (dez. 2000). 21. Thompson, S. Haskell: The Craft of Functional Programming. Harlow: Addison-Wesley, nº 500,1996. 22. Watson, G. T. Proof Representations in Theorems Provers. Disponível por WWW em http://www.it.uq.edu.au/personal/gwat/conf-doc/conf.htm, 1998. (dez. 2000). 23. Windley, P.J. Documentation for the HOL Theorem Proving System. Disponível por WWW em http://www.cl.cam.ac.uk/lal_holdoc/hol-documentation.html, 1993. (dez. 2000).