Results 1  10
of
18
On the Observable Properties of Higher Order Functions that Dynamically Create Local Names (preliminary report)
 IN MATHEMATICAL FOUNDATIONS OF COMPUTER SCIENCE, PROC. 18TH INT. SYMP
, 1993
"... The research reported in this paper is concerned with the problem of reasoning about properties of higher order functions involving state. It is motivated by the desire to identify what, if any, are the difficulties created purely by locality of state, independent of other properties such as sideef ..."
Abstract

Cited by 119 (13 self)
 Add to MetaCart
The research reported in this paper is concerned with the problem of reasoning about properties of higher order functions involving state. It is motivated by the desire to identify what, if any, are the difficulties created purely by locality of state, independent of other properties such as sideeffects, exceptional termination and nontermination due to recursion. We consider a simple language (equivalent to a fragment of Standard ML) of typed, higher order functions that can dynamically create fresh names. Names are created with local scope, can be tested for equality and can be passed around via function application, but that is all. we demonstrate
Equivalence in Functional Languages with Effects
, 1991
"... Traditionally the view has been that direct expression of control and store mechanisms and clear mathematical semantics are incompatible requirements. This paper shows that adding objects with memory to the callbyvalue lambda calculus results in a language with a rich equational theory, satisfying ..."
Abstract

Cited by 112 (13 self)
 Add to MetaCart
Traditionally the view has been that direct expression of control and store mechanisms and clear mathematical semantics are incompatible requirements. This paper shows that adding objects with memory to the callbyvalue lambda calculus results in a language with a rich equational theory, satisfying many of the usual laws. Combined with other recent work this provides evidence that expressive, mathematically clean programming languages are indeed possible. 1. Overview Real programs have effectscreating new structures, examining and modifying existing structures, altering flow of control, etc. Such facilities are important not only for optimization, but also for communication, clarity, and simplicity in programming. Thus it is important to be able to reason both informally and formally about programs with effects, and not to sweep effects either to the side or under the store parameter rug. Recent work of Talcott, Mason, Felleisen, and Moggi establishes a mathematical foundation for...
Inferring the Equivalence of Functional Programs that Mutate Data
 Theoretical Computer Science
, 1992
"... this paper we study the constrained equivalence of programs with effects. In particular, we present a formal system for deriving such equivalences. Constrained equivalence is defined via a model theoretic characterization of operational, or observational, equivalence called strong isomorphism. Opera ..."
Abstract

Cited by 26 (7 self)
 Add to MetaCart
this paper we study the constrained equivalence of programs with effects. In particular, we present a formal system for deriving such equivalences. Constrained equivalence is defined via a model theoretic characterization of operational, or observational, equivalence called strong isomorphism. Operational equivalence, as introduced by Morris [23] and Plotkin [27], treats programs as black boxes. Two expressions are operationally equivalent if they are indistinguishable in all program contexts. This equivalence is the basis for soundness results for program calculi and program transformation theories. Strong isomorphism, as introduced by Mason [14], also treats programs as black boxes. Two expressions are strongly isomorphic if in all memory states they return the same value, and have the same effect on memory (modulo the production of garbage). Strong isomorphism implies operational equivalence. The converse is true for firstorder languages; it is false for full higherorder languages. However, even in the higherorder case, it remains an useful tool for establishing equivalence. Since strong isomorphism is defined by quantifying over memory states, rather than program contexts, it is a simple matter to restrict this equivalence to those memory states which satisfy a set of constraints. It is for this reason that strong isomorphism is a useful relation, even in the higherorder case. The formal system we present defines a singleconclusion consequence relation \Sigma ` \Phi where \Sigma is a finite set of constraints and \Phi is an assertion. The semantics of the formal system is given by a semantic consequence relation, \Sigma j= \Phi, defined in terms of a class of memory models for assertions and constraints. The assertions we consider are of the following two forms...
Monadic State: Axiomatization and Type Safety
 In Proceedings of the 2nd ACM SIGPLAN International Conference on Functional Programming (ICFP’97
, 1997
"... Type safety of imperative programs is an area fraught with difficulty and requiring great care. The SML solution to the problem, originally involving imperative type variables, has been recently simplified to the syntacticvalue restriction. In Haskell, the problem is addressed in a rather different ..."
Abstract

Cited by 24 (5 self)
 Add to MetaCart
Type safety of imperative programs is an area fraught with difficulty and requiring great care. The SML solution to the problem, originally involving imperative type variables, has been recently simplified to the syntacticvalue restriction. In Haskell, the problem is addressed in a rather different way using explicit monadic state. We present an operational semantics for state in Haskell and the first full proof of type safety. We demonstrate that the semantic notion of value provided by the explicit monadic types is able to avoid any problems with generalization. 1 Introduction When Launchbury and Peyton Jones introduced encapsulated monadic state [11, 12], it came equipped with a denotational semantics and a modeltheoretic proof that different state threads did not interact with each other. The encapsulation operator runST had a type which statically guaranteed freedom of interaction, and the guarantee relied on a parametricity proof. What the paper failed to provide was any form...
A Complete Transformational Toolkit for Compilers
 ACM Transactions on Programming Languages and Systems
, 1996
"... . In an earlier paper, one of the present authors presented a preliminary account of an equational logic called PIM. PIM is intended to function as a "transformational toolkit" to be used by compilers and analysis tools for imperative languages, and has been applied to such problems as program sl ..."
Abstract

Cited by 23 (9 self)
 Add to MetaCart
. In an earlier paper, one of the present authors presented a preliminary account of an equational logic called PIM. PIM is intended to function as a "transformational toolkit" to be used by compilers and analysis tools for imperative languages, and has been applied to such problems as program slicing, symbolic evaluation, conditional constant propagation, and dependence analysis. PIM consists of the untyped lambda calculus extended with an algebraic rewriting system that characterizes the behavior of lazy stores and generalized conditionals. A major question left open in the earlier paper was whether there existed a complete equational axiomatization of PIM's semantics. In this paper, we answer this question in the affirmative for PIM's core algebraic component, PIM t , under the assumption of certain reasonable restrictions on term formation. We systematically derive the complete PIM logic as the culmination of a sequence of increasingly powerful equational systems starti...
Axiomatizing Operational Equivalence in the presence of Side Effects
 In Fourth Annual Symposium on Logic in Computer Science. IEEE
, 1989
"... this paper we present a formal system for deriving assertions about programs with side effects. The assertions we consider are of the following two forms: (i) e diverges (i.e. fails to reduce to a value), written " e; (ii) e 0 and e 1 are strongly isomorphic (i.e. reduce to the same value and have ..."
Abstract

Cited by 20 (9 self)
 Add to MetaCart
this paper we present a formal system for deriving assertions about programs with side effects. The assertions we consider are of the following two forms: (i) e diverges (i.e. fails to reduce to a value), written " e; (ii) e 0 and e 1 are strongly isomorphic (i.e. reduce to the same value and have the same effect on memory up to production of garbage), written
Sideeffect removal transformation
 In 9 th IEEE International Workshop on Program Comprehension (IWPC'01
, 2001
"... Abstract A side effect is any change in program state that occurs as a byproduct of the evaluation of an expression. Side effects are often thought to impede program comprehension and to lead to complex, poorly understood and occasionally undefined semantics. SideEffect Removal Transformation (SER ..."
Abstract

Cited by 17 (10 self)
 Add to MetaCart
Abstract A side effect is any change in program state that occurs as a byproduct of the evaluation of an expression. Side effects are often thought to impede program comprehension and to lead to complex, poorly understood and occasionally undefined semantics. SideEffect Removal Transformation (SERT) improves comprehension by rewriting a program p which may contain side effects into a semantically equivalent program p0 which is guaranteed to be sideeffect free. This paper introduces the SERT approach to the sideeffect problem, briefly reporting initial experience with an implementation of SERT for C programs called Linsert1. 1
The Formal Relationship Between Direct and ContinuationPassing Style Optimizing Compilers: A Synthesis of Two Paradigms
, 1994
"... Compilers for higherorder programming languages like Scheme, ML, and Lisp can be broadly characterized as either "direct compilers" or "continuationpassing style (CPS) compilers", depending on their main intermediate representation. Our central result is a precise correspondence between the two co ..."
Abstract

Cited by 15 (0 self)
 Add to MetaCart
Compilers for higherorder programming languages like Scheme, ML, and Lisp can be broadly characterized as either "direct compilers" or "continuationpassing style (CPS) compilers", depending on their main intermediate representation. Our central result is a precise correspondence between the two compilation strategies. Starting from
An abstract dynamic semantics for C
 Computer Laboratory, University of Cambridge
, 1997
"... This report is a presentation of a formal semantics for the C programming language. The semantics has been defined operationally in a structured semantics style and covers the bulk of the core of the language. ..."
Abstract

Cited by 15 (1 self)
 Add to MetaCart
This report is a presentation of a formal semantics for the C programming language. The semantics has been defined operationally in a structured semantics style and covers the bulk of the core of the language.
Reasoning about Explicit and Implicit Representations of State
 YALE UNIVERSITY
, 1993
"... The semantics of imperative languages are often expressed in terms of a storepassing translation and an algebra for reasoning about stores. We axiomatize the semantics of several typical imperative languages via equational axioms by "inverting" the storepassing translation as well as the algebra ..."
Abstract

Cited by 12 (4 self)
 Add to MetaCart
The semantics of imperative languages are often expressed in terms of a storepassing translation and an algebra for reasoning about stores. We axiomatize the semantics of several typical imperative languages via equational axioms by "inverting" the storepassing translation as well as the algebraic axioms for reasoning about the store. The inversion process is simple and systematic and results in theories that are similar to equational theories for imperative languages that have been derived in more complicated ways, and is likely to be applicable to languages other than those presented here.