Component assembly and theorem proving in constraint handling rules - Mário Oliveira Rodrigues, Cleyton (2009)
Devido á grande demanda por softwares cada vez mais robustos, complexos e flexíveis, e, sobretudo, pelo curtíssimo tempo de entrega exigido, a engenharia de software tem procurado novos meios de desenvolvimento que supram satisfatoriamente essas demandas. Uma forma de galgar esses novos patamares de produtividade provém do uso de uma metodologia baseada em agentes que se comunicam e com isso, ao invés dos programas serem estritamente programados, o comportamento destes sistemas de software emerge da interação de agentes, robôs, ou subsistemas aut onomos, independentes, além de declarativamente especificados. Isto provê a habilidade para automaticamente configurá -los, otimizá-los, monitorá-los, adaptá-los, diagnosticá-los, repará-los e protegê-los dentro do ambiente. Contudo, um grande problema das linguagens declarativas é a falta de mecanismos que permitem a melhor estruturação de dados, facilitando portanto, o reuso. Portanto, esta dissertação explica o desenvolvimento de nova linguagem lógica declarativa para programar sistemas de raciocínio automático de uma forma modularizada: C2HR∨. A linguagem base escolhida para a extensão com componentes lógicos foi CHR. Os motivos para essa escolha são definidos ao longo da dissertação. Duas abordagens, portanto, são apresentadas: a primeira, conhecida como CHRat, foi desenvolvida numa parceria juntamente com o grupo de pesquisas CONTRAINTES do INRIA/Rocquencourt-Paris, onde o programador ´e o responsável direto por definir os componentes CHR, permitindo o seu reuso por outros componentes; a segunda aplicação, CHRtp, visa atender prioritariamente requisitos de completude e, por isso, se baseia em procedimentos lógicos de inferência como: o raciocínio para frente, o raciocínio para trás, e a resolução/factoring. A dissertação mostra também alguns exemplos práticos, onde uso de componentes facilita radicalmente sua implementação. As contribuições almejadas com essa dissertação são: a definição de uma família bem formalizada de provadores de teoremas automáticos, que podem trabalhar com sentenças especificadas em lógica horn ou em lógica de primeira ordem, a extensão de CHR como uma linguagem modular de propósito geral, a melhor estruturação de bases conhecimentos e até o uso em conjunto de bases heterogêneas, a definição de uma linguagem para a fácil e direta estruturação de dados por meio de componentes, dentre outras