Results 1  10
of
12
A visual environment for developing contextsensitive term rewriting systems
 In Proceedings of the International Conference on Rewriting Techniques and Applications (RTA
, 2004
"... Abstract. Over the past decade, researchers have found contextsensitive termrewriting semantics to be powerful and expressive tools for modeling programming languages, particularly in establishing type soundness proofs. Unfortunately, developing such semantics is an errorprone activity. To addres ..."
Abstract

Cited by 41 (13 self)
 Add to MetaCart
(Show Context)
Abstract. Over the past decade, researchers have found contextsensitive termrewriting semantics to be powerful and expressive tools for modeling programming languages, particularly in establishing type soundness proofs. Unfortunately, developing such semantics is an errorprone activity. To address that problem, we have designed PLT Redex, an embedded domainspecific language that helps users interactively create and debug contextsensitive termrewriting systems. We introduce the tool with a series of examples and discuss our experience using it in courses and developing an operational semantics for R 5 RS Scheme. 1
From reductionbased to reductionfree normalization
 Proceedings of the Fourth International Workshop on Reduction Strategies in Rewriting and Programming (WRS'04
, 2004
"... We document an operational method to construct reductionfree normalization functions. Starting from a reductionbased normalization function from a reduction semantics, i.e., the iteration of a onestep reduction function, we successively subject it to refocusing (i.e., deforestation of the inte ..."
Abstract

Cited by 28 (13 self)
 Add to MetaCart
(Show Context)
We document an operational method to construct reductionfree normalization functions. Starting from a reductionbased normalization function from a reduction semantics, i.e., the iteration of a onestep reduction function, we successively subject it to refocusing (i.e., deforestation of the intermediate successive terms in the reduction sequence), equational simplication, refunctionalization (i.e., the converse of defunctionalization), and directstyle transformation (i.e., the converse of the CPS transformation), ending with a reductionfree normalization function of the kind usually crafted by hand. We treat in detail four simple examples: calculating arithmetic expressions, recognizing Dyck words, normalizing lambdaterms with explicit substitutions and call/cc, and attening binary trees. The overall method builds on previous work by the author and his students on a syntactic correspondence between reduction semantics and abstract machines and on a functional correspondence between evaluators and abstract machines. The measure of success of these two correspondences is that each of the interderived semantic artifacts (i.e., manmade constructs) could plausibly have been written by hand, as is the actual case for several ones derived here.
Refocusing in Reduction Semantics
, 2004
"... The evaluation function of a reduction semantics (i.e., a smallstep operational semantics with an explicit representation of the reduction context) is canonically defined as the transitive closure of (1) decomposing a term into a reduction context and a redex, (2) contracting this redex, and (3) ..."
Abstract

Cited by 20 (5 self)
 Add to MetaCart
The evaluation function of a reduction semantics (i.e., a smallstep operational semantics with an explicit representation of the reduction context) is canonically defined as the transitive closure of (1) decomposing a term into a reduction context and a redex, (2) contracting this redex, and (3) plugging the contractum in the context. Directly implementing this evaluation function therefore yields an interpreter with a worstcase overhead, for each step, that is linear in the size of the input term. We present
Plan in Maude: Specifying an Active Network Programming Language
 Proc. 4th. Intl. Workshop on Rewriting Logic and its Applications. ENTCS, Elsevier
, 2002
"... PLAN is a language designed for programming active networks, and can more generally be regarded as a model of mobile computation. PLAN generalizes the paradigm of imperative functional programming in an elegant way that allows for recursive, remote function calls, and it provides a clear mechanism f ..."
Abstract

Cited by 16 (1 self)
 Add to MetaCart
(Show Context)
PLAN is a language designed for programming active networks, and can more generally be regarded as a model of mobile computation. PLAN generalizes the paradigm of imperative functional programming in an elegant way that allows for recursive, remote function calls, and it provides a clear mechanism for the interaction between host and mobile code. Techniques for specifying and reasoning about such languages are of growing importance. In this paper we describe our specification of PLAN in the rewriting logic language Maude. We show how techniques for specifying the operational semantics of imperative functional programs (syntaxbased semantics) and for formalizing variable binding constructs and mobile environments (CINNI calculus) are used in combination with the natural representation of concurrency and distribution provided by rewriting logic to develop a faithful description of the informal PLAN semantics. We also illustrate the widespectrum approach to formal modeling supported by Maude: executing PLAN programs; analyzing PLAN programs using search and modelchecking; proving properties of particular PLAN programs; and proving general properties of the PLAN language.
The Theory and Practice of Programming Languages with Delimited Continuations
, 2005
"... by ..."
(Show Context)
Building Interpreters with Rewriting Strategies
 Workshop on Language Descriptions, Tools and Applications (LDTA’02), volume 65/3 of Electronic Notes in Theoretical Computer Science
, 2002
"... Programming language semantics based on pure rewrite rules suers from the gap between the rewriting strategy implemented in rewriting engines and the intended evaluation strategy. This paper shows how programmable rewriting strategies can be used to implement interpreters for programming languages b ..."
Abstract

Cited by 11 (6 self)
 Add to MetaCart
(Show Context)
Programming language semantics based on pure rewrite rules suers from the gap between the rewriting strategy implemented in rewriting engines and the intended evaluation strategy. This paper shows how programmable rewriting strategies can be used to implement interpreters for programming languages based on rewrite rules. The advantage of this approach is that reduction rules are rst class entities that can be reused in dierent strategies, even in other kinds of program transformations such as optimizers. The approach is illustrated with several interpreters for the lambda calculus based on implicit and explicit (parallel) substitution, dierent strategies including normalization, eager evaluation, lazy evaluation, and lazy evaluation with updates. An extension with pattern matching and choice shows that such interpreters can easily be extended.
Type Theory with FirstOrder Data Types and SizeChange Termination
, 2004
"... We prove normalization for a dependently typed lambdacalculus extended with firstorder data types and computation schemata for firstorder sizechange terminating recursive functions. Sizechange termination, introduced by C.S. Lee, N.D. Jones and A.M. BenAmram, can be seen as a generalized form ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
(Show Context)
We prove normalization for a dependently typed lambdacalculus extended with firstorder data types and computation schemata for firstorder sizechange terminating recursive functions. Sizechange termination, introduced by C.S. Lee, N.D. Jones and A.M. BenAmram, can be seen as a generalized form of structural induction, which allows inductive computations and proofs to be defined in a straightforward manner. The language can be used as a proof system—an extension of MartinLöf’s Logical Framework.