Results 1 
8 of
8
Syntactic Type Abstraction
 ACM TOPLAS
, 2000
"... data types; F.3.2 [Logics and Meanings of Programs]: Semantics of Programming LanguagesOperational Semantics; F.3.3 [Logics and Meanings of Programs]: Studies of Program ConstructsType Structure General Terms: Languages, Security, Theory, Verification Additional Key Words and Phrases: Opera ..."
Abstract

Cited by 54 (1 self)
 Add to MetaCart
(Show Context)
data types; F.3.2 [Logics and Meanings of Programs]: Semantics of Programming LanguagesOperational Semantics; F.3.3 [Logics and Meanings of Programs]: Studies of Program ConstructsType Structure General Terms: Languages, Security, Theory, Verification Additional Key Words and Phrases: Operational semantics, parametricity, proof techniques, syntactic proofs, type abstraction 1.
Principals in Programming Languages: A Syntactic Proof Technique
 In Proc. ICFP, Paris
, 1999
"... Programs are often structured around the idea that different pieces of code comprise distinct principals, each with a view of its environment. Typical examples include the modules of a large program, a host and its clients, or a collection of interactive agents. In this paper, we formalize this not ..."
Abstract

Cited by 18 (1 self)
 Add to MetaCart
Programs are often structured around the idea that different pieces of code comprise distinct principals, each with a view of its environment. Typical examples include the modules of a large program, a host and its clients, or a collection of interactive agents. In this paper, we formalize this notion of principal in the programming language itself. The result is a language in which intuitive statements such as, "the client must call open to obtain a file handle," can be phrased and proven formally. We add principals to variants of the simplytyped  calculus and show how we can track the code corresponding to each principal throughout evaluation. This multiagent calculus yields syntactic proofs of some type abstraction properties that traditionally require semantic arguments. 1 Introduction Programmers often have a notion of principal in mind when designing the structure of a program. Examples of such principals include modules of a large system, a host and its clients, and, in th...
A Categorical Account of TwoLevel Languages
 In MFPS
, 1997
"... We give an account of twolevel languages in terms of indexed categories and universal properties wellknown in the context of categorical logic. This account provides three important insights: establishes precise analogies between twolevel languages and module languages, explains the twolevel lan ..."
Abstract

Cited by 18 (4 self)
 Add to MetaCart
(Show Context)
We give an account of twolevel languages in terms of indexed categories and universal properties wellknown in the context of categorical logic. This account provides three important insights: establishes precise analogies between twolevel languages and module languages, explains the twolevel languages used in partial evaluation (see [7]) in terms of those used for code generation (see [16]), suggests extensions that should be valuable for typespecialization (see [9]) and shapeanalysis (see [1]).
Functor Categories and TwoLevel Languages
 In Foundations of Software Science and Computation Structures (FoSSaCS
, 1998
"... We propose a denotational semantics for the twolevel language of [GJ91, Gom92], and prove its correctness w.r.t. a standard denotational semantics. Other researchers (see [Gom91, GJ91, Gom92, JGS93, HM94]) have claimed correctness for lambdamix (or extensions of it) based on denotational models, b ..."
Abstract

Cited by 15 (4 self)
 Add to MetaCart
We propose a denotational semantics for the twolevel language of [GJ91, Gom92], and prove its correctness w.r.t. a standard denotational semantics. Other researchers (see [Gom91, GJ91, Gom92, JGS93, HM94]) have claimed correctness for lambdamix (or extensions of it) based on denotational models, but the proofs of such claims rely on imprecise definitions and are basically awed. At a technical level there are two important differences between our model and more naive models in Cpo: the domain for interpreting dynamic expressions is more abstract (we interpret code as terms modulo conversion), the semantics of newname is handled differently (we exploit functor categories). The key idea is to interpret a twolevel language in a suitable functor category Cpo D op rather than Cpo. The semantics of newname follows the ideas pioneered by Oles and Reynolds for modeling the stack discipline of Algollike languages. Indeed, we can think of the objects of D (i.e. the natural numbers) as ...
Towards Machinechecked Compiler Correctness for Higherorder Pure Functional Languages
 CSL '94, European Association for Computer Science Logic, Springer LNCS
, 1994
"... . In this paper we show that the critical part of a correctness proof for implementations of higherorder functional languages is amenable to machineassisted proof. An extended version of the lambdacalculus is considered, and the congruence between its direct and continuation semantics is proved. ..."
Abstract

Cited by 4 (1 self)
 Add to MetaCart
(Show Context)
. In this paper we show that the critical part of a correctness proof for implementations of higherorder functional languages is amenable to machineassisted proof. An extended version of the lambdacalculus is considered, and the congruence between its direct and continuation semantics is proved. The proof has been constructed with the help of a generic theorem prover  Isabelle. The major part of the problem lies in establishing the existence of predicates which describe the congruence. This has been solved using Milne's inclusive predicate strategy [5]. The most important intermediate results and the main theorem as derived by Isabelle are quoted in the paper. Keywords: Compiler Correctness, Theorem Prover, Congruence Proof, Denotational Semantics, Lambda Calculus 1 Introduction Much of the work done previously in compiler correctness concerns restricted subsets of imperative languages. Some studies involve machinechecked correctnesse.g. Cohn [1], [2]. A lot of research h...
Typed Intermediate Languages for ShapeAnalysis
 In Typed Lambda Calculi and Applications (TLCA'97), Lecture Notes in Computer Science 1210
, 1997
"... We introduce S2, a typed intermediate language for vectors, based on a 2level typetheory, which distinguishes between compiletime and runtime. The paper shows how S2 can be used to extract useful information from programs written in the Nested Sequence Calculus NSC, an idealized highlevel parall ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
We introduce S2, a typed intermediate language for vectors, based on a 2level typetheory, which distinguishes between compiletime and runtime. The paper shows how S2 can be used to extract useful information from programs written in the Nested Sequence Calculus NSC, an idealized highlevel parallel calculus for nested sequences. We study two translations from NSC to S2. The most interesting shows that shape analysis (in the sense of Jay) can be handled at compiletime. Introduction Good intermediate languages are an important prerequisite for program analysis and optimization, the main purpose of such languages is to make as explicit as possible the information that is only implicit in source programs (see [18]). A common features of such intermediate languages is an aggressive use of types to incorporate additional information, e.g.: binding times (see [18]), boxed/unboxed values (see [20]), effects (see [23]). In particular, among the ML community the use of types in intermediat...
Abstract Principals in Programming Languages: A Syntactic Proof Technique
"... Programs are often structured around the idea that different pieces of code comprise distinct principals, eachwithaview of its environment. Typical examples include the modules of a large program, a host and its clients, or a collection of interactive agents. In this paper, we formalize this notion ..."
Abstract
 Add to MetaCart
Programs are often structured around the idea that different pieces of code comprise distinct principals, eachwithaview of its environment. Typical examples include the modules of a large program, a host and its clients, or a collection of interactive agents. In this paper, we formalize this notion of principal in the programming language itself. The result is a language in which intuitive statements such as, “the client must call open to obtain a file handle, ” can be phrased and proven formally. We add principals to variants of the simplytyped λcalculus and show how we can track the code corresponding to each principal throughout evaluation. This multiagent calculus yields syntactic proofs of some type abstraction properties that traditionally require semantic arguments. 1
TwoLevel Languages for Program Optimization
"... . Twolevel languages incorporate binding time information inside types, that is, whether a piece of code is completely known at compiletime, or needs some more inputs and can be evaluated only at runtime. We consider the use of 2level languages in the framework of partial evaluation, and use a 2 ..."
Abstract
 Add to MetaCart
(Show Context)
. Twolevel languages incorporate binding time information inside types, that is, whether a piece of code is completely known at compiletime, or needs some more inputs and can be evaluated only at runtime. We consider the use of 2level languages in the framework of partial evaluation, and use a 2level version of the simply typed lambda calculus with recursion. We give an operational semantics, an equational theory and a denotational semantics, that give an account of the distinction between compilation and execution phases. An adequacy theorem is given to relate the two semantics, showing in particular how they agree on nontermination at compile time. We nally give a more rened model using functor categories. 1