Results 1  10
of
11
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 54 (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
"... Abstract: This paper describes the rst half of the formal veri cation of a Prolog compiler with the KIV (\Karlsruhe Interactive Veri er") 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 re ned ..."
Abstract

Cited by 29 (7 self)
 Add to MetaCart
Abstract: This paper describes the rst half of the formal veri cation of a Prolog compiler with the KIV (\Karlsruhe Interactive Veri er") 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 re ned in several steps to the Warren Abstract Machine (WAM). We de ne a general translation of sequential Abstract State Machines to Dynamic Logic, which formalizes correctness of such re nement steps as a deduction problem. A proof technique for veri cation is presented, which corresponds to the informal use of proof maps. 6 of the 12 given re nement steps were veri ed. 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 veri cation, and the support KIV o ers 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.
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'. Keywords: functional logic languages, mathematical specification, evolving algebras. 1 Introduction Many investigations during the last ...
Parallelism in Logic Programming
 International School on Advanced Algorithmic Techniques for Parallel Computation with Applications  CIMPA’99
, 1999
"... This text summarises the main research work being carried out on the implementation of parallel logic programming systems. It concentrates on describing techniques for exploiting andparallelism and orparallelism while showing important aspects of some systems on sharedmemory, distributedmemory a ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
This text summarises the main research work being carried out on the implementation of parallel logic programming systems. It concentrates on describing techniques for exploiting andparallelism and orparallelism while showing important aspects of some systems on sharedmemory, distributedmemory and distributedshared memory architectures. It also presents some important pointers to journals, conferences and sites with related information. 1 Introduction Parallel processing is a very important alternative to obtain good performance from programs, be them applications or basic software. Parallelism can be exploited implicitly or explicitly. Most wellknown parallel systems are based on the imperative programming model and parallelism is exploited explicitly, making the programming task hard. Contrasting with imperative programming, declarative programming presents a higherlevel programming model where the programmer needs to worry on what to solve and not on how to solve a problem....
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:
Variable Ages In A WAM Based System
"... Machine (WAM), so that ages of variable bindings can be easily found using this new representation. The age of a variable bound to a ground term will be the youngest choice point suchthatbacktracking to that choice point can make that variable an unbound variable again. In other words, the age of a ..."
Abstract
 Add to MetaCart
Machine (WAM), so that ages of variable bindings can be easily found using this new representation. The age of a variable bound to a ground term will be the youngest choice point suchthatbacktracking to that choice point can make that variable an unbound variable again. In other words, the age of a variable bound to a ground term will be the age of the youngest one of bindings causing that variable to be bound to that ground term. Variable ages are used in the process of guring out backtracking points in an intelligent backtracking schema. We also introduce an algorithm to compute variable ages and justi cations why itworks. 1