Results 1 -
6 of
6
Logical Models of Argument
- ACM COMPUTING SURVEYS
, 2000
"... Logical models of argument formalize commonsense reasoning while taking process and computation seriously. This survey discusses the main ideas which characterize different logical models of argument. It presents the formal features of a few main approaches to the modeling of argumentation. We trace ..."
Abstract
-
Cited by 112 (31 self)
- Add to MetaCart
Logical models of argument formalize commonsense reasoning while taking process and computation seriously. This survey discusses the main ideas which characterize different logical models of argument. It presents the formal features of a few main approaches to the modeling of argumentation. We trace the
Building Program Optimizers with Rewriting Strategies
- Proceedings of the International Conference on Functional Programming (ICFP'98
, 1998
"... We describe a language for defining term rewriting strategies, and its application to the production of program optimizers. Valid transformations on program terms can be described by a set of rewrite rules; rewriting strategies are used to describe when and how the various rules should be applied in ..."
Abstract
-
Cited by 106 (33 self)
- Add to MetaCart
We describe a language for defining term rewriting strategies, and its application to the production of program optimizers. Valid transformations on program terms can be described by a set of rewrite rules; rewriting strategies are used to describe when and how the various rules should be applied in order to obtain the desired optimization effects. Separating rules from strategies in this fashion makes it easier to reason about the behavior of the optimizer as a whole, compared to traditional monolithic optimizer implementations. We illustrate the expressiveness of our language by using it to describe a simple optimizer for an ML-like intermediate representation. The basic strategy language uses operators such as sequential composition, choice, and recursion to build transformers from a set of labeled unconditional rewrite rules. We also define an extended language in which the side-conditions and contextual rules that arise in realistic optimizer specifications can themselves be expressed as strategy-driven rewrites. We show that the features of the basic and extended languages can be expressed by breaking down the rewrite rules into their primitive building blocks, namely matching and building terms in variable binding environments. This gives us a low-level core language which has a clear semantics, can be implemented straightforwardly and can itself be optimized. The current implementation generates C code from a strategy specification.
Verification of Compiler Correctness for the WAM
- Theorem Proving in Higher Order Logics (TPHOLs'96
, 1996
"... . Relying on a derivation of the Warren Abstract Machine (WAM) by stepwise refinement of Prolog models by Borger and Rosenzweig we present a formalization of an operational semantics for Prolog. Then we develop four refinement steps towards the Warren Abstract Machine (WAM). The correctness and ..."
Abstract
-
Cited by 15 (0 self)
- Add to MetaCart
. Relying on a derivation of the Warren Abstract Machine (WAM) by stepwise refinement of Prolog models by Borger and Rosenzweig we present a formalization of an operational semantics for Prolog. Then we develop four refinement steps towards the Warren Abstract Machine (WAM). The correctness and completeness proofs for each step have been elaborated with the theorem prover Isabelle using the logic HOL. 1 Introduction In the area of logic programming, Prolog ranks among the most prominent programming languages. The development of efficient compilation techniques allows the application of logic programming even in large-scale software development. One of the main contributions to this field is due to D. Warren, having developed a sophisticated compilation concept known as the Warren Abstract Machine (WAM), which serves as basis for a large number of prolog implementations. While Prolog benefits from a well-defined semantics derived from its logical roots, the development of the W...
Use of Prolog for developing a new programming language
, 1992
"... This paper describes how Prolog was used for the development of a new concurrent realtime symbolic programming language called Erlang. Erlang was developed by first building a prototype in Prolog - the prototype was used by a user group to test their reactions to the language. As time passed many fe ..."
Abstract
-
Cited by 7 (4 self)
- Add to MetaCart
This paper describes how Prolog was used for the development of a new concurrent realtime symbolic programming language called Erlang. Erlang was developed by first building a prototype in Prolog - the prototype was used by a user group to test their reactions to the language. As time passed many features were added (and removed) from the interpreter and eventually the language reached a level of maturity where it was decided to try it out on a significant problem. About 3 years and some 20,000 lines of Erlang later, performance became an issue - we wrote Prolog cross compilers from Erlang to various concurrent logic programing languages followed by a direct implementation of Erlang itself. The direct implementation of Erlang was loosely based on the WAM and made by writing a Prolog compiler from Erlang to a new abstract machine and an emulator for the abstract machine in 'C'. The instruction set for the abstract machine was first prototyped in Prolog - finally the compiler was re-writ...
-- A Unified Platform for Parsing and Generation
"... Contemporary linguistic theories (in particular, HPSG) are declarative in nature: they specify constraints on permissible structures, not how such structures are to be computed. Grammars designed under such theories are, therefore, suitable for both parsing and generation. However, practical i ..."
Abstract
- Add to MetaCart
Contemporary linguistic theories (in particular, HPSG) are declarative in nature: they specify constraints on permissible structures, not how such structures are to be computed. Grammars designed under such theories are, therefore, suitable for both parsing and generation. However, practical implementations of such theories don't usually support bidirectional processing of grammars. We present a grammar development system that includes a compiler of grammars (for parsing and generation) to abstract machine instructions, and an interpreter for the abstract machine language. The generation compiler inverts input grammars (designed for parsing) to a form more suitable for generation. The compiled grammars are then executed by the interpreter using one control strategy, regardless of whether the grammar is the original or the inverted version. Wethus obtain a unified, efficient platform for developing reversible grammars. 1
Towards Computer-Verified Proofs of Correctness of Logic-Programming Interpreters Using Derivations
, 1997
"... of the Dissertation Towards computer-verified proofs of correctness of logic-programming interpreters using derivations by Vernon Ralph Austel Doctor of Philosophy in Computer Science University of California, Los Angeles, 1997 Professor D. Stott Parker, Chair This thesis presents sixteen ..."
Abstract
- Add to MetaCart
of the Dissertation Towards computer-verified proofs of correctness of logic-programming interpreters using derivations by Vernon Ralph Austel Doctor of Philosophy in Computer Science University of California, Los Angeles, 1997 Professor D. Stott Parker, Chair This thesis presents sixteen increasingly refined kinds of derivations and proves that they are equivalent using the HOL proof checker; the first is close to the common one (such as given by Lloyd), while the last is expressed using abstract machine states modeled after the Warren Abstract Machine (WAM). The concept of derivation has never been refined like this in the verification literature. We use these versions of derivation in the first part of a proof of correctness by refinement stages for a simple version of the WAM. Much of the complexity of the WAM is due to details concerning the representation of data (terms and substitutions). We argue that it is simpler to refine data representation before control, and that backtracking should be refined last. Our refinement technique should be applicable to other logic-programming languages such as full Prolog. xii CHAPTER 1

