A construção de qualquer sistema de representação de conhecimento e raciocínio tem início com a definição de uma linguagem de representação não ambígua, que permita representar o conhecimento sobre certo domínio, através de um conjunto de sentenças desta linguagem. Este conjunto de sentenças é chamado base de conhecimento. Além disso, são necessárias formas bem definidas de manipular estas bases na fase de construção e utilização. Este trabalho tem como objetivo apresentar um ambiente integrado de desenvolvimento de sistemas de representação de conhecimento e raciocínio, chamado JPE (Java Prolog Environment), que pretende oferecer um conjunto pré-definido de linguagens de programação em lógica e um conjunto de ferramentas para serem utilizadas na construção e manipulação de bases de conhecimento. 1. INTRODUÇÃO A investigação de técnicas para representação e manipulação do conhecimento é uma das áreas de pesquisa mais importantes dentro da inteligência artificial. A execução de tarefas que parecem envolver inteligência, mesmo aquelas que para nós parecem bem simples, requer uma grande quantidade de conhecimento para serem realizadas. A construção de qualquer sistema de representação de conhecimento e raciocínio tem início com a definição de uma linguagem de representação não ambígua, que permita representar o conhecimento sobre certo domínio, através de um conjunto de sentenças desta linguagem. Este conjunto de sentenças é chamado base de conhecimento. Porém, somente a definição de uma linguagem de representação e a construção de uma base a partir desta, é insuficiente para a obtenção de sistemas que se comportem de maneira inteligente. É necessária também uma forma precisa e bem definida de manipular esta base, seja na fase de sua construção ou utilização. A área conhecida como programação em lógica [1] [2] [3], se desenvolveu procurando combinar a utilização da lógica como linguagem de representação e a teoria de dedução automática (processo pelo qual derivamos conhecimentos que se encontram implicitamente representados na base) como forma de manipulá-la. Um exemplo bem conhecido deste casamento é a linguagem Prolog [4]. A linguagem mais simples utilizada em programação em lógica, trata basicamente de problemas que envolvem conhecimento positivo e definido. Logo, se percebeu a necessidade de se estender esta linguagem, uma vez que nela não é possível representar certos tipos importantes de conhecimento como, por exemplo, conhecimento negativo (" Ana não está em Paris ") e disjuntivo (" Ana está ou em Paris ou em Londres "). Tal aumento no poder de expressão da linguagem acarreta na necessidade de expansão dos procedimentos de prova associados às linguagens mais simples. Além da dedução, outras formas de manipulação do conhecimento também se mostram importantes quando se pretende construir um sistema de representação e raciocínio. Por exemplo:-raciocínio por default [5]: quando estamos interessados em prever o comportamento de um sistema mesmo que nosso conhecimento a cerca do mundo seja incompleto.-raciocínio por abdução [6]: quando queremos usar o conhecimento expresso na base para explicar algum comportamento que está sendo observado;-aprendizagem (indução) [7]: o objetivo é generalizar certos conceitos presentes na base de conhecimento, permitindo que um conjunto de fatos possa ser representado de maneira mais compacta, por exemplo, através de um conjunto de regras.-processo de revisão de crenças ([8]): permitir que a base de conhecimento seja atualizada, não só através da inclusão de novas informações, mas também excluindo informações que não preservem a consistência da base. Todos esses processos se inter-relacionam [8], [9], [10], assim como se relacionam com as diversas linguagens de programação em lógica existentes [11], [12]. Assim, este trabalho tem como objetivo apresentar uma proposta para construção de um ambiente integrado de desenvolvimento de sistemas de representação de conhecimento e raciocínio, chamado JPE (Java Prolog Environment). O JPE pretende oferecer um conjunto pré-definido de linguagens de programação em lógica e um conjunto de ferramentas para serem utilizadas na construção e manipulação de bases de conhecimento. As ferramentas que serão disponibilizadas no JPE, além de serem utilizadas na construção de bases de conhecimento, poderão também ser incorporadas ao sistema em desenvolvimento, seja de forma individual ou pela composição, feita pelo JPE ou pelo usuário, de algumas delas. Por ser um desenvolvimento de código aberto, esperamos também incorporar ferramentas desenvolvidas por outras pessoas ou grupos.