Results 1 
6 of
6
Extensible Denotational Language Specifications
 SYMPOSIUM ON THEORETICAL ASPECTS OF COMPUTER SOFTWARE, NUMBER 789 IN LNCS
, 1994
"... Traditional denotational semantics assigns radically different meanings to one and the same phrase depending on the rest of the programming language. If the language is purely functional, the denotation of a numeral is a function from environments to integers. But, in a functional language with impe ..."
Abstract

Cited by 32 (5 self)
 Add to MetaCart
Traditional denotational semantics assigns radically different meanings to one and the same phrase depending on the rest of the programming language. If the language is purely functional, the denotation of a numeral is a function from environments to integers. But, in a functional language with imperative control operators, a numeral denotes a function from environments and continuations to integers. This paper introduces a new format for denotational language specifications, extended direct semantics, that accommodates orthogonal extensions of a language without changing the denotations of existing phrases. An extended direct semantics always maps a numeral to the same denotation: the injection of the corresponding number into the domain of values. In general, the denotation of a phrase in a functional language is always a projection of the denotation of the same phrase in the semantics of an extended languageno matter what the extension is. Based on extended direct semantics, i...
An investigation of contracts as projections
, 2004
"... Software contracts help programmers enforce program properties that the language’s type system cannot express. Unlike types, contracts are (usually) enforced at runtime. When a contract fails, the contract system signals an error. Beyond such errors, contracts should have no other observable (funct ..."
Abstract

Cited by 7 (4 self)
 Add to MetaCart
Software contracts help programmers enforce program properties that the language’s type system cannot express. Unlike types, contracts are (usually) enforced at runtime. When a contract fails, the contract system signals an error. Beyond such errors, contracts should have no other observable (functional) effect on the program’s results. In most implementations, however, the language of contracts is the fullfledged programming language, which means that programmers may (intentionally or unintentionally) introduce visible effects into their contracts. Here we present the results of investigating the nature of contracts from a denotational perspective. Specifically, we use SPCF and the category of observably sequential functions to show that contracts are best understood as projections. Thus far, the investigation has produced a significantly faster contract implementation and the insight that our contract language cannot express all projections, which in turn has produced a new contract combinator.
Symposium on Natural/Unconventional Computing at AISB/IACAP (British Society
"... The articles in the volume Computing Nature present a selection of works from the ..."
Abstract
 Add to MetaCart
The articles in the volume Computing Nature present a selection of works from the
Universal Domains For Sequential Computation
, 1995
"... Classical recursion theory asserts that all conventional programming languages are equally expressive because they can define all partial recursive functions over the natural numbers. However, most real programming languages support some form of higherorder data such as potentially infinite streams ..."
Abstract
 Add to MetaCart
Classical recursion theory asserts that all conventional programming languages are equally expressive because they can define all partial recursive functions over the natural numbers. However, most real programming languages support some form of higherorder data such as potentially infinite streams, lazy trees, and functions. Since these objects do not have finite canonical representations, computations over these objects cannot be accurately modeled as ordinary computations over the natural numbers. In my thesis, I develop a theory of higher order computability based on a new formulation of domain theory. This new formulation interprets elements of any data domain as lazy trees. Like classical domain theory, it provides a universal domain T and a universal language KL. A rich class of domains called observably sequential domains can be specified in T with functions definable in KL. Such an embedding of a data domain enables the operations on the domain to be defined in the universa...
IOS Press On the Expressiveness of Affine Programs with Nonlocal Control: The Elimination of Nesting in SPCF
"... Abstract. We use a denotational semantics to show that every term in SPCF (a typed functional language with simple nonlocal control operators) is contextually equivalent to one which is typable in an affine typing system. Nested function calls and recursive definitions are not affinely typable, and ..."
Abstract
 Add to MetaCart
Abstract. We use a denotational semantics to show that every term in SPCF (a typed functional language with simple nonlocal control operators) is contextually equivalent to one which is typable in an affine typing system. Nested function calls and recursive definitions are not affinely typable, and so our result entails that they can be eliminated from SPCF without losing expressiveness. Our proof is based on the observation of Longley that every type of SPCF is a retract of a firstorder type. We describe retractions of this kind in bistable biorder models of SPCF which are definable in the affine fragment. This allows us to transform an arbitrary SPCF term into an affine one by mapping it to a firstorder term, obtaining an (affine) “normal form”, and then projecting back to the original type. We show the flexibility of our approach by considering two variants of SPCF, a finitary, callbyname version and a callbyvalue version over the natural numbers. In the infinitary case, (in which we establish in addition that all instances of recursive definition may be replaced with iteration) our proof is based on an analysis of the relationship between SPCF definable functions and strategies for computing them sequentially. 1.
Computing Nature – A Network of Networks of Concurrent Information Processes
"... This is a draft of the article to be published in Springer book series SAPERE. The final publication will be available at ..."
Abstract
 Add to MetaCart
This is a draft of the article to be published in Springer book series SAPERE. The final publication will be available at