Results 1 -
6 of
6
A Core Calculus of Dependency
- IN PROC. 26TH ACM SYMP. ON PRINCIPLES OF PROGRAMMING LANGUAGES (POPL
, 1999
"... Notions of program dependency arise in many settings: security, partial evaluation, program slicing, and call-tracking. We argue that there is a central notion of dependency common to these settings that can be captured within a single calculus, the Dependency Core Calculus (DCC), a small extension ..."
Abstract
-
Cited by 201 (22 self)
- Add to MetaCart
Notions of program dependency arise in many settings: security, partial evaluation, program slicing, and call-tracking. We argue that there is a central notion of dependency common to these settings that can be captured within a single calculus, the Dependency Core Calculus (DCC), a small extension of Moggi's computational lambda calculus. To establish this thesis, we translate typed calculi for secure information flow, binding-time analysis, slicing, and call-tracking into DCC. The translations help clarify aspects of the source calculi. We also define a semantic model for DCC and use it to give simple proofs of noninterference results for each case.
A modular, polyvariant, and type-based closure analysis
- In ICFP ’97 [ICFP97
"... We observe that the principal typing property of a type system is the enabling technology for modularity and separate compilation [10]. We use this technology to formulate a modular and polyvariant closure analysis, based on the rank 2 intersection types annotated with control-flow information. Modu ..."
Abstract
-
Cited by 53 (1 self)
- Add to MetaCart
We observe that the principal typing property of a type system is the enabling technology for modularity and separate compilation [10]. We use this technology to formulate a modular and polyvariant closure analysis, based on the rank 2 intersection types annotated with control-flow information. Modularity manifests itself in a syntax-directed, annotated-type inference algorithm that can analyse program fragments containing free variables: a principal typing property is used to formalise it. Polyvariance manifests itself in the separation of different behaviours of the same function at its different uses: this is formalised via the rank 2 intersection types. As the rank 2 intersection type discipline types at least all (core) ML programs, our analysis can be used in the separate compilation of such programs. 1
Effect Systems with Subtyping
"... Effect systems extend classical type systems with effect information. Just as types describe the possible values of expressions, effects describe their possible evaluation behaviors. Effects, which appear in function types, introduce new constraints on the typability of expressions. To increase the ..."
Abstract
-
Cited by 8 (0 self)
- Add to MetaCart
Effect systems extend classical type systems with effect information. Just as types describe the possible values of expressions, effects describe their possible evaluation behaviors. Effects, which appear in function types, introduce new constraints on the typability of expressions. To increase the exibility and accuracy of e ect systems, we present a new effect system based on subtyping. The subtype relation is induced by a subsumption relation on effects. This subtyping effect system avoids merging effect information together, thus collecting more precise effect information. We introduce a reconstruction algorithm which for any expression already typed with classical types, reconstructs its type and effect based on the subtype relation. The reconstruction algorithm is sound and complete w.r.t. the static semantics.
Compiling with Polymorphic and Polyvariant Flow Types
- In ACM SIGPLAN Workshop on Types in Compilation
, 1997
"... Optimizing compilers for function-oriented and object-oriented languages exploit type and flow information for efficient implementation. Although type and flow information (both control and data flow) are inseparably intertwined, compilers usually compute and represent them separately. Partially, th ..."
Abstract
-
Cited by 5 (1 self)
- Add to MetaCart
Optimizing compilers for function-oriented and object-oriented languages exploit type and flow information for efficient implementation. Although type and flow information (both control and data flow) are inseparably intertwined, compilers usually compute and represent them separately. Partially, this has been a result of the usual polymorphic type systems using 8 and 9 quantifiers, which are difficult to use in combination with flow annotations. In the Church Project, we are experimenting with intermediate languages that integrate type and flow information into a single flow type framework. This integration facilitates the preservation of flow and type information through program transformations. In this paper we describe CIL, an intermediate language supporting polymorphic types and polyvariant flow information and describe its application in program optimiziation. We are experimenting with this intermediate language in a flow and typedirected compiler for a functional language. ...
The CLP(OIH) Language
, 1998
"... Reproduction of all or part of this work is permitted for educational or research use on condition that this copyright notice is included in any copy. See back inner page for a list of recent BRICS Dissertation Series publications. Copies may be obtained by contacting: BRICS ..."
Abstract
-
Cited by 4 (0 self)
- Add to MetaCart
Reproduction of all or part of this work is permitted for educational or research use on condition that this copyright notice is included in any copy. See back inner page for a list of recent BRICS Dissertation Series publications. Copies may be obtained by contacting: BRICS
ML Type Inference for Dead Code Analysis
, 1997
"... We propose to adapt ML type inference algorithm to find and erase dead-code in simply typed -terms. We prove the correctness of our optimization: the optimized program is observationally equivalent to the original one. This paper also sheds new lights on links between typing and static analyses, ..."
Abstract
-
Cited by 2 (2 self)
- Add to MetaCart
We propose to adapt ML type inference algorithm to find and erase dead-code in simply typed -terms. We prove the correctness of our optimization: the optimized program is observationally equivalent to the original one. This paper also sheds new lights on links between typing and static analyses, in the particular case of dead code analysis. Indeed, the same algorithm can be used both for typing and dead-code analysis. Moreover, it appears new to the author that ML type inference can be used to represent links as encountered in data flow analyses. Keywords: ML Type Inference, Dead-Code Analysis, Polymorphism, Extraction R'esum'e Nous proposons d'adapter l'algorithme d'inf'erence de type de ML pour trouver et effacer le code mort de -termes simplement typ'es. Nous prouvons la correction de notre optimisation: le programme optimis'e est observationnellement 'equivalent `a l'original. Ce papier 'eclaire d'une mani`ere nouvelle les liens entre le typage et l'analyse statique, d...

