Results 1  10
of
989
A Syntactic Approach to Type Soundness
 Information and Computation
, 1992
"... We present a new approach to proving type soundness for Hindley/Milnerstyle polymorphic type systems. The keys to our approach are (1) an adaptation of subject reduction theorems from combinatory logic to programming languages, and (2) the use of rewriting techniques for the specification of the la ..."
Abstract

Cited by 539 (21 self)
 Add to MetaCart
We present a new approach to proving type soundness for Hindley/Milnerstyle polymorphic type systems. The keys to our approach are (1) an adaptation of subject reduction theorems from combinatory logic to programming languages, and (2) the use of rewriting techniques for the specification of the language semantics. The approach easily extends from polymorphic functional languages to imperative languages that provide references, exceptions, continuations, and similar features. We illustrate the technique with a type soundness theorem for the core of Standard ML, which includes the first type soundness proof for polymorphic exceptions and continuations. 1 Type Soundness Static type systems for programming languages attempt to prevent the occurrence of type errors during execution. A definition of type error depends on a specific language and type system, but always includes the use of a function on arguments for which it is not defined, and the attempted application of a nonfunction. ...
Program Analysis and Specialization for the C Programming Language
, 1994
"... Software engineers are faced with a dilemma. They want to write general and wellstructured programs that are flexible and easy to maintain. On the other hand, generality has a price: efficiency. A specialized program solving a particular problem is often significantly faster than a general program. ..."
Abstract

Cited by 526 (0 self)
 Add to MetaCart
Software engineers are faced with a dilemma. They want to write general and wellstructured programs that are flexible and easy to maintain. On the other hand, generality has a price: efficiency. A specialized program solving a particular problem is often significantly faster than a general program. However, the development of specialized software is timeconsuming, and is likely to exceed the production of today’s programmers. New techniques are required to solve this socalled software crisis. Partial evaluation is a program specialization technique that reconciles the benefits of generality with efficiency. This thesis presents an automatic partial evaluator for the Ansi C programming language. The content of this thesis is analysis and transformation of C programs. We develop several analyses that support the transformation of a program into its generating extension. A generating extension is a program that produces specialized programs when executed on parts of the input. The thesis contains the following main results.
Universal coalgebra: a theory of systems
, 2000
"... In the semantics of programming, nite data types such as finite lists, have traditionally been modelled by initial algebras. Later final coalgebras were used in order to deal with in finite data types. Coalgebras, which are the dual of algebras, turned out to be suited, moreover, as models for certa ..."
Abstract

Cited by 298 (31 self)
 Add to MetaCart
In the semantics of programming, nite data types such as finite lists, have traditionally been modelled by initial algebras. Later final coalgebras were used in order to deal with in finite data types. Coalgebras, which are the dual of algebras, turned out to be suited, moreover, as models for certain types of automata and more generally, for (transition and dynamical) systems. An important property of initial algebras is that they satisfy the familiar principle of induction. Such a principle was missing for coalgebras until the work of Aczel (NonWellFounded sets, CSLI Leethre Notes, Vol. 14, center for the study of Languages and information, Stanford, 1988) on a theory of nonwellfounded sets, in which he introduced a proof principle nowadays called coinduction. It was formulated in terms of bisimulation, a notion originally stemming from the world of concurrent programming languages. Using the notion of coalgebra homomorphism, the definition of bisimulation on coalgebras can be shown to be formally dual to that of congruence on algebras. Thus, the three basic notions of universal algebra: algebra, homomorphism of algebras, and congruence, turn out to correspond to coalgebra, homomorphism of coalgebras, and bisimulation, respectively. In this paper, the latter are taken
The Oz Programming Model
 COMPUTER SCIENCE TODAY, LECTURE NOTES IN COMPUTER SCIENCE
, 1995
"... The Oz Programming Model (OPM) is a concurrent programming model subsuming higherorder functional and objectoriented programming as facets of a general model. This is particularly interesting for concurrent objectoriented programming, for which no comprehensive formal model existed until now. ..."
Abstract

Cited by 293 (10 self)
 Add to MetaCart
The Oz Programming Model (OPM) is a concurrent programming model subsuming higherorder functional and objectoriented programming as facets of a general model. This is particularly interesting for concurrent objectoriented programming, for which no comprehensive formal model existed until now. The model
The slam calculus: programming with secrecy and integrity
 In POPL ’98: Proceedings of the 25th ACM SIGPLANSIGACT Symposium on Principles of Programming Languages
, 1998
"... The SLam calculus is a typed λcalculus that maintains security information as well as type information. The type system propagates security information for each object in four forms: the object’s creators and readers, and the object’s indirect creators and readers (i.e., those agents who, through f ..."
Abstract

Cited by 235 (1 self)
 Add to MetaCart
The SLam calculus is a typed λcalculus that maintains security information as well as type information. The type system propagates security information for each object in four forms: the object’s creators and readers, and the object’s indirect creators and readers (i.e., those agents who, through flowofcontrol or the actions of other agents, can influence or be influenced by the content of the object). We prove that the type system prevents security violations and give some examples of its power. 1
KLAIM: a Kernel Language for Agents Interaction and Mobility
 IEEE Transactions on Software Engineering
, 1997
"... We investigate the issue of designing a kernel programming language for Mobile Computing and describe Klaim, a language that supports a programming paradigm where processes, like data, can be moved from one computing environment to another. The language consists of a core Linda with multiple tuple s ..."
Abstract

Cited by 211 (52 self)
 Add to MetaCart
We investigate the issue of designing a kernel programming language for Mobile Computing and describe Klaim, a language that supports a programming paradigm where processes, like data, can be moved from one computing environment to another. The language consists of a core Linda with multiple tuple spaces and of a set of operators for building processes. Klaim naturally supports programming with explicit localities. Localities are firstclass data (they can be manipulated like any other data), but the language provides coordination mechanisms to control the interaction protocols among located processes. The formal operational semantics is useful for discussing the design of the language and provides guidelines for implementations. Klaim is equipped with a type system that statically checks access rights violations of mobile agents. Types are used to describe the intentions (read, write, execute, etc.) of processes in relation to the various localities. The type system is used...
ConGolog, a concurrent programming language based on the situation calculus: language and implementation
, 2000
"... ..."
Dynamic typing in a statically typed language
 ACM Trans. Program. Lang. Syst
, 1991
"... Abstract. Dynamic typing can be useful in statically typed languages. We extend the simply typed λcalculus with dynamic typing and elaborate additional features like polymorphism and subtyping. 1 ..."
Abstract

Cited by 154 (4 self)
 Add to MetaCart
Abstract. Dynamic typing can be useful in statically typed languages. We extend the simply typed λcalculus with dynamic typing and elaborate additional features like polymorphism and subtyping. 1
Logic and the Challenge of Computer Science
, 1988
"... Nowadays computer science is surpassing mathematics as the primary field of logic applications, but logic is not tuned properly to the new role. In particular, classical logic is preoccupied mostly with infinite static structures whereas many objects of interest in computer science are dynamic objec ..."
Abstract

Cited by 153 (16 self)
 Add to MetaCart
Nowadays computer science is surpassing mathematics as the primary field of logic applications, but logic is not tuned properly to the new role. In particular, classical logic is preoccupied mostly with infinite static structures whereas many objects of interest in computer science are dynamic objects with bounded resources. This chapter consists of two independent parts. The first part is devoted to finite model theory; it is mostly a survey of logics tailored for computational complexity. The second part is devoted to dynamic structures with bounded resources. In particular, we use dynamic structures with bounded resources to model Pascal.