23,338 research outputs found
Towards modular extensions for a modular language
Modularity allows the construction of complex designs from simpler, independent units that most of the time can be developed separately. In this paper we are concerned with developing mechanisms for easily implementing modular extensions to modular (logic) languages. By (language) extensions we refer to different groups of syntactic definitions and translation rules that extend a language. Our application of the concept of modularity in this context is twofold. We would like these extensions to be modular, in the above sense, i.e., we should be able to develop different extensions mostly separately. At the same time, the sources and targets for the extensions are modular languages, i.e., such extensions may take as input separate pieces of code and also produce separate pieces of code. Dealing with this double requirement involves interesting challenges to ensure that modularity is not broken: first, combinations of extensions (as if they were a single extension) must be given a precise meaning. Also, the separate translation of multiple sources (as if they were a single source) must be feasible. We present a detailed description of a code expansion-based framework that proposes novel solutions for these problems. We argue that the approach, while implemented for Ciao, can be adapted for other languages and Prolog-based systems
A new module system for prolog
It is now widely accepted that separating programs into modules has proven very useful in program development and maintenance. While many Prolog implementations include useful module systems, we feel that these systems can be improved in a number of ways, such as, for example, being more amenable to effective global analysis and allowing sepĂĄrate compilation or sensible creation of standalone executables. We discuss a number of issues related to the design of such an improved module system for Prolog. Based on this, we present the choices made in the Ciao module system, which has been designed to meet a number of objectives: allowing sepĂĄrate compilation, extensibility in features and in syntax, amenability to modular global analysis, etc
Arithmetic and Modularity in Declarative Languages for Knowledge Representation
The past decade has witnessed the development of many important declarative languages for knowledge representation and reasoning such as answer set programming (ASP) languages and languages that extend first-order logic. Also, since these languages depend on background solvers, the recent advancements in the efficiency of solvers has positively affected the usability of such languages. This thesis studies extensions of knowledge representation (KR) languages with arithmetical operators and methods to combine different KR languages. With respect to arithmetic in declarative KR languages, we show that existing KR languages suffer from a huge disparity between their expressiveness and their computational power. Therefore, we develop an ideal KR language that captures the complexity class NP for arithmetical search problems and guarantees universality and efficiency for solving such problems. Moreover, we introduce a framework to language-independently combine modules from different KR languages. We study complexity and expressiveness of our framework and develop algorithms to solve modular systems. We define two semantics for modular systems based on (1) a model-theoretical view and (2) an operational view on modular systems. We prove that our two semantics coincide and also develop mechanisms to approximate answers to modular systems using the operational view. We augment our algorithm these approximation mechanisms to speed up the process of solving modular system. We further generalize our modular framework with supported model semantics that disallows self-justifying models. We show that supported model semantics generalizes our two previous model-theoretical and operational semantics. We compare and contrast the expressiveness of our framework under supported model semantics with another framework for interlinking knowledge bases, i.e., multi-context systems, and prove that supported model semantics generalizes and unifies different semantics of multi-context systems. Motivated by the wide expressiveness of supported models, we also define a new supported equilibrium semantics for multi-context systems and show that supported equilibrium semantics generalizes previous semantics for multi-context systems. Furthermore, we also define supported semantics for propositional programs and show that supported model semnatics generalizes the acclaimed stable model semantics and extends the two celebrated properties of rationality and minimality of intended models beyond the scope of logic programs
A Generic Module System forWeb Rule Languages: Divide and Rule
An essential feature in practically usable programming languages is
the ability to encapsulate functionality in reusable modules. Modules make large
scale projects tractable by humans. For Web and Semantic Web programming,
many rule-based languages, e.g. XSLT, CSS, Xcerpt, SWRL, SPARQL, and RIF
Core, have evolved or are currently evolving. Rules are easy to comprehend
and specify, even for non-technical users, e.g. business managers, hence easing
the contributions to the Web. Unfortunately, those contributions are arguably
doomed to exist in isolation as most rule languages are conceived without modularity,
hence without an easy mechanism for integration and reuse. In this paper
a generic module system applicable to many rule languages is presented. We
demonstrate and apply our generic module system to a Datalog-like rule language,
close in spirit to RIF Core. The language is gently introduced along the
EU-Rent use case. Using the Reuseware Composition Framework, the module
system for a concrete language can be achieved almost for free, if it adheres to
the formal notions introduced in this paper
Abstract State Machines 1988-1998: Commented ASM Bibliography
An annotated bibliography of papers which deal with or use Abstract State
Machines (ASMs), as of January 1998.Comment: Also maintained as a BibTeX file at http://www.eecs.umich.edu/gasm
An overview of the ciao multiparadigm language and program development environment and its design philosophy
We describe some of the novel aspects and motivations behind
the design and implementation of the Ciao multiparadigm programming system. An important aspect of Ciao is that it provides the programmer with a large number of useful features from different programming paradigms and styles, and that the use of each of these features can be turned on and off at will for each program module. Thus, a given module may be using e.g. higher order functions and constraints, while another module may be using objects, predicates, and concurrency. Furthermore, the language is designed to be extensible in a simple and modular way. Another important aspect of Ciao is its programming environment, which provides a powerful preprocessor (with an associated assertion language) capable of statically finding non-trivial bugs, verifying that programs comply with specifications, and performing many types of program optimizations. Such optimizations produce code that is highly competitive with other dynamic languages or, when the highest levéis of optimization are used, even that of static languages, all while retaining the interactive development environment of a dynamic language. The environment also includes a powerful auto-documenter. The paper provides an informal overview of the language and program development environment. It aims at illustrating the design philosophy rather than at being exhaustive, which would be impossible in the format of a paper, pointing instead to the existing literature on the system
- âŠ