Results 1 
8 of
8
Correctness proof for the WAM with types
 Computer Science Logic, volume 626 of LNCS
, 1992
"... : We provide a mathematical specification of an extension of Warren's Abstract Machine for executing Prolog to typeconstraint logic programming and prove its correctness. In this paper, we keep the notion of types and dynamic type constraints rather abstract to allow applications to different const ..."
Abstract

Cited by 12 (5 self)
 Add to MetaCart
: We provide a mathematical specification of an extension of Warren's Abstract Machine for executing Prolog to typeconstraint logic programming and prove its correctness. In this paper, we keep the notion of types and dynamic type constraints rather abstract to allow applications to different constraint formalisms like Prolog III or CLP(R). This generality permits us to introduce modular extensions of Borger's and Rosenzweig 's formal derivation of the WAM. Starting from typeconstraint Prolog algebras that are derived from Borger's standard Prolog algebras, the specification of the typeconstraint WAM extension is given by a sequence of evolving algebras, each representing a refinement level. For each refinement step a correctness proof is given. Thus, we obtain the theorem that for every such abstract typeconstraint logic programming system L and for every compiler satisfying the specified conditions, the WAM extension with an abstract notion of types is correct w.r.t. L. This is a ...
Specification and correctness proof of a WAM extension with type constraints
, 1996
"... . We provide a mathematical specification of an extension of Warren's Abstract Machine for executing Prolog to typeconstraint logic programming and prove its correctness. Our aim is to provide a full specification and correctness proof of a concrete system, the PROTOS Abstract Machine (PAM), an ext ..."
Abstract

Cited by 9 (4 self)
 Add to MetaCart
. We provide a mathematical specification of an extension of Warren's Abstract Machine for executing Prolog to typeconstraint logic programming and prove its correctness. Our aim is to provide a full specification and correctness proof of a concrete system, the PROTOS Abstract Machine (PAM), an extension of the WAM by polymorphic ordersorted unification as required by the logic programming language PROTOSL. In this paper, while leaving the details of the PAM's type constraint representation and solving facilities to a sequel to this work, we keep the notion of types and dynamic type constraints abstract to allow applications to different constraint formalisms like Prolog III or CLP(R). This generality permits us to introduce modular extensions of Borger's and Rosenzweig's formal derivation of the WAM. Since the type constraint handling is orthogonal to the compilation of predicates and clauses, we start from typeconstraint Prolog algebras with compiled AND/OR structure that are der...
Specifying Algorithms Using Evolving Algebra. Implementation of Functional Programming Languages.
, 1995
"... ion Level : : : : : : : : : : : : : : : : : 9 1.3.1 Operations : : : : : : : : : : : : : : : : : : : : : : : : 9 1.3.2 Algorithm : : : : : : : : : : : : : : : : : : : : : : : : : 9 1.3.3 Computing Steps : : : : : : : : : : : : : : : : : : : : : 9 1.4 The Principle of Abstractions : : : : : : : : : : ..."
Abstract

Cited by 5 (0 self)
 Add to MetaCart
ion Level : : : : : : : : : : : : : : : : : 9 1.3.1 Operations : : : : : : : : : : : : : : : : : : : : : : : : 9 1.3.2 Algorithm : : : : : : : : : : : : : : : : : : : : : : : : : 9 1.3.3 Computing Steps : : : : : : : : : : : : : : : : : : : : : 9 1.4 The Principle of Abstractions : : : : : : : : : : : : : : : : : : 9 1.5 Using Resources : : : : : : : : : : : : : : : : : : : : : : : : : 10 1.6 Using the Evolving Algebra : : : : : : : : : : : : : : : : : : : 11 1.6.1 Computing Medium and the Operations : : : : : : : : 11 1.6.2 The Computing Steps and Transition Steps : : : : : : 11 1.6.3 Using resources when executing Evolving Algebra speci cations : : : : : : : : : : : : : : : : : : : : : : : : : 11 1.7 Understanding and Executing a Specication : : : : : : : : : 12 1.8 How to Maintain a Specication : : : : : : : : : : : : : : : : 12 1.8.1 The Need of Making Modules : : : : : : : : : : : : : : 13 1.8.2 The Need of Controlling and Understanding the Algorithm : : : : : : : : : : : : : : :...
Implementation of the Evolving Algebra System
, 1995
"... This report is Appendix B to the report: Specifying Algorithms Using Evolving Algebra. Implementation of Functional Programming Languages. Contents 1 Evolving Algebra 1 ..."
Abstract
 Add to MetaCart
This report is Appendix B to the report: Specifying Algorithms Using Evolving Algebra. Implementation of Functional Programming Languages. Contents 1 Evolving Algebra 1
Implementation of the Evolving Algebra System
"... This report is Appendix B to the report: Specifying Algorithms Using Evolving Algebra. Implementation of Functional Programming Languages. Contents 1 Evolving Algebra 1 ..."
Abstract
 Add to MetaCart
This report is Appendix B to the report: Specifying Algorithms Using Evolving Algebra. Implementation of Functional Programming Languages. Contents 1 Evolving Algebra 1
A πcalculus Specification of Prolog
, 1994
"... . A clear and modular specification of Prolog using the  calculus is presented in this paper. Prolog goals are represented as  calculus processes, and Prolog predicate definitions are translated into  calculus agent definitions. Prolog's depthfirst leftright control strategy as well as the c ..."
Abstract
 Add to MetaCart
. A clear and modular specification of Prolog using the  calculus is presented in this paper. Prolog goals are represented as  calculus processes, and Prolog predicate definitions are translated into  calculus agent definitions. Prolog's depthfirst leftright control strategy as well as the cut control operator are modeled by the synchronized communication among processes, which is similar in spirit to continuationpassing style implementation of Prolog. Prolog terms are represented by persistent processes, while logical variables are modeled by complex processes with channels that, at various times, can be written, read, and reset. Both unifications with and without backtracking are specified by calculus agent definitions. A smooth merging of the specification for control and the specification for unification gives a full specification for much of Prolog. Some related and further works are also discussed. 1 Introduction Prolog is a simple, powerful and efficient programming l...
Under consideration for publication in Theory and Practice of Logic Programming 1 Lightweight compilation of (C)LP to JavaScript ∗
, 2003
"... We present and evaluate a compiler from Prolog (and extensions) to JavaScript which makes it possible to use (constraint) logic programming to develop the client side of web applications while being compliant with current industry standards. Targeting JavaScript makes (C)LP programs executable in vi ..."
Abstract
 Add to MetaCart
We present and evaluate a compiler from Prolog (and extensions) to JavaScript which makes it possible to use (constraint) logic programming to develop the client side of web applications while being compliant with current industry standards. Targeting JavaScript makes (C)LP programs executable in virtually every modern computing device with no additional software requirements from the point of view of the user. In turn, the use of a very highlevel language facilitates the development of highquality, complex software. The compiler is a back end of the Ciao system and supports most of its features, including its module system and its rich language extension mechanism based on packages. We present an overview of the compilation process and a detailed description of the runtime system, including the support for modular compilation into separate JavaScript code. We demonstrate the maturity of the compiler by testing it with complex code such as a CLP(FD) library written in Prolog with attributed variables. Finally, we validate our proposal by measuring the performance of some LP and CLP(FD) benchmarks running on top of major JavaScript engines.