Results 1  10
of
14
Alma0: An Imperative Language that Supports Declarative Programming
, 1998
"... Architecture The Alma Abstract Architecture (AAA) is the virtual architecture used during the intermediate code generation phase of the Alma0 compiler. The AAA combines the features of the abstract machines for imperative languages and for logic programming languages. The compiler compiles the Al ..."
Abstract

Cited by 55 (11 self)
 Add to MetaCart
Architecture The Alma Abstract Architecture (AAA) is the virtual architecture used during the intermediate code generation phase of the Alma0 compiler. The AAA combines the features of the abstract machines for imperative languages and for logic programming languages. The compiler compiles the Alma0 programs into AAA programs. In a second phase the AAA instructions are translated into C statements. As the Alma0 language itself, the AAA aims to combine the best of both worlds; elements were taken from virtual machines used to compile imperative languages (in particular the RISC architecture described in Wirth [1996, pp. 5559], and from the WAM machine used to compile a logical language (see AitKaci [1991]). Still, the AAA resembles most the virtual machines used in the compilation of imperative languages. The additions made to provide for the extensions of the Alma0 language are the failure handling instructions ONFAIL, FAIL, 40 \Delta Krzysztof R. Apt et al the log ...
Reasoning about abstract state machines: The WAM case study
 JOURNAL OF UNIVERSAL COMPUTER SCIENCE
, 1997
"... This paper describes the rst half of the formal verification of a Prolog compiler with the KIV ("Karlsruhe Interactive Verifier") system. Our work is based on [BR95], where an operational Prolog semantics is de ned using the formalism of Gurevich Abstract State Machines, and then refined i ..."
Abstract

Cited by 29 (7 self)
 Add to MetaCart
This paper describes the rst half of the formal verification of a Prolog compiler with the KIV ("Karlsruhe Interactive Verifier") system. Our work is based on [BR95], where an operational Prolog semantics is de ned using the formalism of Gurevich Abstract State Machines, and then refined in several steps to the Warren Abstract Machine (WAM). We define a general translation of sequential Abstract State Machines to Dynamic Logic, which formalizes correctness of such refinement steps as a deduction problem. A proof technique for verification is presented, which corresponds to the informal use of proof maps. 6 of the 12 given refinement steps were verified. We found that the proof sketches given in [BR95] hide a lot of implicit assumptions. We report on our experiences in uncovering these assumptions incrementally during formal verification, and the support KIV offers for such `evolutionary' correctness proofs.
An optimizing compiler for CLP(R)
 ACM Transactions on Programming Languages and Systems
, 1996
"... Constraint Logic Programming (CLP) languages extend logic programming by allowing the use of constraints from different domains such as real numbers or Boolean functions. They have proved to be ideal for expressing problems that require interactive mathematical modeling and complex combinatorial opt ..."
Abstract

Cited by 25 (12 self)
 Add to MetaCart
Constraint Logic Programming (CLP) languages extend logic programming by allowing the use of constraints from different domains such as real numbers or Boolean functions. They have proved to be ideal for expressing problems that require interactive mathematical modeling and complex combinatorial optimization problems. However, CLP languages have mainly been considered as research systems, useful for rapid prototyping, but not really competitive with more conventional programming languages where efficiency is a more important consideration. One promising approach to improving the performance of CLP systems is the use of powerful program optimizations to reduce the cost of constraint solving. We extend work in this area by describing a new optimizing compiler for the CLP language CLP(R). The compiler implements six powerful optimizations: reordering of constraints, bypass of the constraint solver, splitting and deadcode elimination, removal of redundant constraints, removal of redundant variables, and specialization of constraints which cannot fail. Each program optimization is designed to remove the overhead of constraint solving when possible and keep the number of constraints in the store as small as possible. We systematically evaluate the effectiveness of each optimization in isolation and in combination. Our empirical evaluation of the compiler verifies that optimizing compilation can be made efficient enough to allow compilation of realworld programs and that it is worth performing such compilation because it gives significant time and space performance improvements.
Functions as Passive Constraints in LIFE
 ACM Transactions on Programming Languages and Systems
, 1994
"... LIFE is an experimental programming language proposing to integrate logic programming, functional programming, and objectoriented programming. It replaces firstorder terms with ψterms, data structures which allow computing with partial information. These are approximation structures denoting se ..."
Abstract

Cited by 12 (4 self)
 Add to MetaCart
LIFE is an experimental programming language proposing to integrate logic programming, functional programming, and objectoriented programming. It replaces firstorder terms with ψterms, data structures which allow computing with partial information. These are approximation structures denoting sets of values. LIFE further enriches the expressiveness of ψterms with functional dependency constraints. We must explain the meaning and use of functions in LIFE declaratively as solving partial information constraints. These constraints do not attempt to generate their solutions but behave as demons filtering out anything else.
The Functional Logic Language BABEL and its Implementation on a Graph Machine
 NEW GENERATION COMPUTING
, 1996
"... The firstorder, untyped, functional logic language Babel is extended by polymophic types and higher order functions. A sophisticated incompatibility check which is used to guarantee nonambiguity of BABEL programs is presented. For the implementation of the language, unification and backtracking ..."
Abstract

Cited by 5 (3 self)
 Add to MetaCart
The firstorder, untyped, functional logic language Babel is extended by polymophic types and higher order functions. A sophisticated incompatibility check which is used to guarantee nonambiguity of BABEL programs is presented. For the implementation of the language, unification and backtracking are integrated in a programmed (functional) graph reduction machine. The implementation of this machine has been used for a comparison between Babel and PROLOG based on the runtimes of some example programs.
ABSTRACT METAPROLOG ENGINE
 J. LOGIC PROGRAMMING 1994:19, 20:1{679
, 1994
"... A compilerbased metalevel system for MetaProlog language is presented. Machine (WAM) is extended to get an e cient implementation of metalevel facilities and this extension is called the Abstract MetaProlog Engine (AMPE). Since theories and proofs are main metalevel objects in MetaProlog, we disc ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
A compilerbased metalevel system for MetaProlog language is presented. Machine (WAM) is extended to get an e cient implementation of metalevel facilities and this extension is called the Abstract MetaProlog Engine (AMPE). Since theories and proofs are main metalevel objects in MetaProlog, we discuss their representations and implementations in detail. First, we describe how to e ciently represent theories and derivability relation. At the same time, we present the core part of the AMPE which supports multiple theories and a fast context switching among theories in the MetaProlog system. Then, we describe how to compute proofs, how to shrink the search space of a goal using partially instantiated proofs, and how to represent other control knowledge in a WAMbased system. In addition to computing proofs which are just success branches of search trees, fail branches can also be computed and used in the reasoning process.
Towards a Mathematical Specification of a GraphNarrowing Machine
, 1994
"... The paper provides a mathematical model for the innermost version of the functional logic programming language BABEL [MR89, MR92] and refines it stepwise towards a mathematical specification of its implementation by a graphnarrowing machine [KLMR90]. Our description directly reflects the basic intu ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
The paper provides a mathematical model for the innermost version of the functional logic programming language BABEL [MR89, MR92] and refines it stepwise towards a mathematical specification of its implementation by a graphnarrowing machine [KLMR90]. Our description directly reflects the basic intuitions underlying the language and can thus be used as a primary mathematical definition of innermost BABEL. For each refinement step a mathematical correctness proof is given, thus paving the way for a correctness proof of the graphnarrowing machine implementation (a full correctness proof could be achieved by providing some further refinement steps, leading to the machine's abstraction level). The specification uses evolving algebras, thus allowing the descriptions to be procedural and nevertheless abstract, readable as `pseudocode over abstract data'.
Parallelism in logic programming
 International School on Advanced Algorithmic Techniques for Parallel Computation with Applications  CIMPA’99
, 1999
"... ..."
A Generative Methodology for the Design of Machines
, 2000
"... In this paper we demonstrate how to use a semanticsdirected generator to systematically design abstract machines. The main novelty of the generator is that it generates compilers and abstract machines. The generator is fully automated and its core transformations are proved correct. In this paper w ..."
Abstract
 Add to MetaCart
In this paper we demonstrate how to use a semanticsdirected generator to systematically design abstract machines. The main novelty of the generator is that it generates compilers and abstract machines. The generator is fully automated and its core transformations are proved correct. In this paper we propose a design methodology based on our generator and as an example we design a functional abstract machine which turns out to be very similar to the categorial abstract machine. c # 2000 Elsevier Science B.V. All rights reserved. Keywords: Abstract machines; Natural semantics; Compiler generation 1.
An Intelligent Backtracking Schema in A Logic Programming Environment
"... We present a new method to represent variable bindings in the Warren Abstract Machine (WAM), so that the ages of variable bindings can be easily found using this new representation in our intelligent backtracking schema. The age of a variable bound to a nonvariable term is the youngest choice point ..."
Abstract
 Add to MetaCart
We present a new method to represent variable bindings in the Warren Abstract Machine (WAM), so that the ages of variable bindings can be easily found using this new representation in our intelligent backtracking schema. The age of a variable bound to a nonvariable term is the youngest choice point such that backtracking to that choice point can make that variable an unbound variable again. The procedure backtracking point isthechoice point of the procedure currently being executed or the choice point of its rst ancestor having a choice point. Variable ages and procedure backtracking points are used in the process of guring out backtracking points in our intelligent backtracking schema. Our intelligent backtracking schema performs much better than the results of other intelligent backtracking methods in the literature for deterministic programs, and its performance for nondeterministic programs are comparable with their results. Keywords: