The Experts below are selected from a list of 297 Experts worldwide ranked by ideXlab platform
Geoffrey Smith - One of the best experts on this subject based on the ideXlab platform.
-
A sound Polymorphic Type system for a dialect of C
Science of Computer Programming, 1998Co-Authors: Geoffrey Smith, Dennis VolpanoAbstract:AbstractAdvanced Polymorphic Type systems have come to play an important role in the world of functional programming. But, so far, these Type systems have had little impact upon widely used imperative programming languages like C and C++. We show that ML-style polymorphism can be integrated smoothly into a dialect of C, which we call Polymorphic C. It has the same pointer operations as C, including the address-of operator &, the dereferencing operator ∗, and pointer arithmetic. We give a natural semantics for Polymorphic C, and prove a Type soundness theorem that gives a rigorous and useful characterization of what can go wrong when a well-Typed Polymorphic C program is executed. For example, a well-Typed Polymorphic C program may fail to terminate, or it may abort due to a dangling pointer error. Proving such a Type soundness theorem requires a notion of an attempted program execution; we show that a natural semantics gives rise quite naturally to a transition semantics, which we call a natural transition semantics, that models program execution in terms of transformations of partial derivation trees. This technique should be generally useful in proving Type soundness theorems for languages defined using natural semantics
-
A Sound Polymorphic Type System for a Dialect of C (PREPRINT)
1997Co-Authors: Geoffrey Smith, Dennis M. VolpanoAbstract:Abstract : Advanced Polymorphic Type systems have come to play an important role in the world of functional programming. But, so far, these Type systems have had little impact upon widely-used imperative programming languages like C and C++. We show that ML-style polymorphism can be integrated smoothly into a dialect of C, which we call Polymorphic C. It has the same pointer operations as C, including the address-of operator &, the dereferencing operator *, and pointer arithmetic. We give a natural semantics for Polymorphic C, and prove a Type soundness theorem that gives a rigorous and useful characterization of what can go wrong when a well-Typed Polymorphic C program is executed. For example, a well-Typed Polymorphic C program may fail to terminate, or it may abort due to a dangling pointer error. Proving such a Type soundness theorem requires a notion of an attempted program execution; we show that a natural semantics gives rise quite naturally to a transition semantics, which we call a natural transition semantics, that models program execution in terms of transformations of partial derivation trees. This technique should be generally useful in proving Type soundness theorems for languages defined using natural semantics.
-
ESOP - Towards an ML-Style Polymorphic Type System for C
Programming Languages and Systems — ESOP '96, 1996Co-Authors: Geoffrey Smith, Dennis VolpanoAbstract:Advanced Polymorphic Type systems have come to play an important role in the world of functional programming. But, curiously, these Type systems have so far had little impact upon widely-used imperative programming languages like C and C++. We show that ML-style polymorphism can be integrated smoothly into a dialect of C, which we call Polymorphic C. It has the same pointer operations as C, including the address-of operator &, the dereferencing operator*, and pointer arithmetic. Our Type system allows these operations in their full generality, so that programmers need not give up the flexibility of C to gain the benefits of ML-style polymorphism. We prove a Type soundness theorem that gives a rigorous and useful characterization of well-Typed Polymorphic C programs in terms of what can go wrong when they are evaluated.
-
Polymorphic typing of variables and references
ACM Transactions on Programming Languages and Systems, 1996Co-Authors: Geoffrey Smith, Dennis VolpanoAbstract:In this article we consider the Polymorphic Type checking of an imperative language. Our language contains variables , first-class references (pointers), and first-class functions. Variables, as in traditional imperative languages, are implicitly dereferenced, and their addresses ( L -values) are not first-class values. Variables are easier to Type check than references and, in many cases, lead to more general Polymorphic Types. We present a Polymorphic Type system for our language and prove that it is sound. Programs that use variables sometimes require weak Types, as in Tofte's Type system for Standard ML, but such weak Types arise far less frequently with variables than with references
-
A Type soundness proof for variables in LCF ML
Information Processing Letters, 1995Co-Authors: Dennis Volpano, Geoffrey SmithAbstract:We prove the soundness of a Polymorphic Type system for a language with variables, assignments, and first-class functions. As a corollary, this proves the soundness of the Edinburgh LCF ML rules for typing variables and assignments, thereby settling a long-standing open problem.
Herbert Kuchen - One of the best experts on this subject based on the ideXlab platform.
-
HPDC - Skil: an imperative language with algorithmic skeletons for efficient distributed programming
Proceedings of 5th IEEE International Symposium on High Performance Distributed Computing HPDC-96, 1996Co-Authors: G.h. Botorog, Herbert KuchenAbstract:We present Skil, an imperative language enhanced with higher order functions and currying, as well as with a Polymorphic Type system. The high level of Skil allows the integration of algorithmic skeletons, i.e. of higher order functions representing parallel computation patterns. At the same time, the language can be efficiently implemented. After describing a series of skeletons which work with distributed arrays, we give two examples of parallel programs implemented on the basis of skeletons, namely shortest paths in graphs and Gaussian elimination. Run time measurements show that we approach the efficiency of message passing C up to a factor between 1 and 2.5.
-
Skil: an imperative language with algorithmic skeletons for efficient distributed programming
Proceedings of 5th IEEE International Symposium on High Performance Distributed Computing, 1996Co-Authors: G.h. Botorog, Herbert KuchenAbstract:We present Skil, an imperative language enhanced with higher order functions and currying, as well as with a Polymorphic Type system. The high level of Skil allows the integration of algorithmic skeletons, i.e. of higher order functions representing parallel computation patterns. At the same time, the language can be efficiently implemented. After describing a series of skeletons which work with distributed arrays, we give two examples of parallel programs implemented on the basis of skeletons, namely shortest paths in graphs and Gaussian elimination. Run time measurements show that we approach the efficiency of message passing C up to a factor between 1 and 2.5.
Simona Ronchi Della Rocca - One of the best experts on this subject based on the ideXlab platform.
-
A Type inference algorithm for a stratified Polymorphic Type discipline
1994Co-Authors: Paola Giannini, Simona Ronchi Della RoccaAbstract:Fully Typed programming languages, where Types can be automatically inferred, such as ML, are particularly useful in the practice of programming. In fact, they ensure the security of static Type-checking, and at the same time relieve the programmer from the need to provide Types explicitly. So studying the Type inference problem for systems of Type derivation which properly extend the ML Type system can be useful in designing programming languages which are more powerful and expressive than ML, while maintaining its essential features. ML is based on the classical Curry functionality theory for the λ-calculus [6]. The Polymorphic Type discipline is a natural extension of the Curry theory, where Types can be universally quantified
-
TACS - Type Inference in Polymorphic Type Discipline
Lecture Notes in Computer Science, 1991Co-Authors: Paola Giannini, Simona Ronchi Della RoccaAbstract:A hierarchy of Type assignment systems is defined, which is a complete stratification of the Polymorphic Type assignment system. For each of such systems a Type inference algorithm is given.
Dennis Volpano - One of the best experts on this subject based on the ideXlab platform.
-
A sound Polymorphic Type system for a dialect of C
Science of Computer Programming, 1998Co-Authors: Geoffrey Smith, Dennis VolpanoAbstract:AbstractAdvanced Polymorphic Type systems have come to play an important role in the world of functional programming. But, so far, these Type systems have had little impact upon widely used imperative programming languages like C and C++. We show that ML-style polymorphism can be integrated smoothly into a dialect of C, which we call Polymorphic C. It has the same pointer operations as C, including the address-of operator &, the dereferencing operator ∗, and pointer arithmetic. We give a natural semantics for Polymorphic C, and prove a Type soundness theorem that gives a rigorous and useful characterization of what can go wrong when a well-Typed Polymorphic C program is executed. For example, a well-Typed Polymorphic C program may fail to terminate, or it may abort due to a dangling pointer error. Proving such a Type soundness theorem requires a notion of an attempted program execution; we show that a natural semantics gives rise quite naturally to a transition semantics, which we call a natural transition semantics, that models program execution in terms of transformations of partial derivation trees. This technique should be generally useful in proving Type soundness theorems for languages defined using natural semantics
-
ESOP - Towards an ML-Style Polymorphic Type System for C
Programming Languages and Systems — ESOP '96, 1996Co-Authors: Geoffrey Smith, Dennis VolpanoAbstract:Advanced Polymorphic Type systems have come to play an important role in the world of functional programming. But, curiously, these Type systems have so far had little impact upon widely-used imperative programming languages like C and C++. We show that ML-style polymorphism can be integrated smoothly into a dialect of C, which we call Polymorphic C. It has the same pointer operations as C, including the address-of operator &, the dereferencing operator*, and pointer arithmetic. Our Type system allows these operations in their full generality, so that programmers need not give up the flexibility of C to gain the benefits of ML-style polymorphism. We prove a Type soundness theorem that gives a rigorous and useful characterization of well-Typed Polymorphic C programs in terms of what can go wrong when they are evaluated.
-
Polymorphic typing of variables and references
ACM Transactions on Programming Languages and Systems, 1996Co-Authors: Geoffrey Smith, Dennis VolpanoAbstract:In this article we consider the Polymorphic Type checking of an imperative language. Our language contains variables , first-class references (pointers), and first-class functions. Variables, as in traditional imperative languages, are implicitly dereferenced, and their addresses ( L -values) are not first-class values. Variables are easier to Type check than references and, in many cases, lead to more general Polymorphic Types. We present a Polymorphic Type system for our language and prove that it is sound. Programs that use variables sometimes require weak Types, as in Tofte's Type system for Standard ML, but such weak Types arise far less frequently with variables than with references
-
A Type soundness proof for variables in LCF ML
Information Processing Letters, 1995Co-Authors: Dennis Volpano, Geoffrey SmithAbstract:We prove the soundness of a Polymorphic Type system for a language with variables, assignments, and first-class functions. As a corollary, this proves the soundness of the Edinburgh LCF ML rules for typing variables and assignments, thereby settling a long-standing open problem.
G.h. Botorog - One of the best experts on this subject based on the ideXlab platform.
-
HPDC - Skil: an imperative language with algorithmic skeletons for efficient distributed programming
Proceedings of 5th IEEE International Symposium on High Performance Distributed Computing HPDC-96, 1996Co-Authors: G.h. Botorog, Herbert KuchenAbstract:We present Skil, an imperative language enhanced with higher order functions and currying, as well as with a Polymorphic Type system. The high level of Skil allows the integration of algorithmic skeletons, i.e. of higher order functions representing parallel computation patterns. At the same time, the language can be efficiently implemented. After describing a series of skeletons which work with distributed arrays, we give two examples of parallel programs implemented on the basis of skeletons, namely shortest paths in graphs and Gaussian elimination. Run time measurements show that we approach the efficiency of message passing C up to a factor between 1 and 2.5.
-
Skil: an imperative language with algorithmic skeletons for efficient distributed programming
Proceedings of 5th IEEE International Symposium on High Performance Distributed Computing, 1996Co-Authors: G.h. Botorog, Herbert KuchenAbstract:We present Skil, an imperative language enhanced with higher order functions and currying, as well as with a Polymorphic Type system. The high level of Skil allows the integration of algorithmic skeletons, i.e. of higher order functions representing parallel computation patterns. At the same time, the language can be efficiently implemented. After describing a series of skeletons which work with distributed arrays, we give two examples of parallel programs implemented on the basis of skeletons, namely shortest paths in graphs and Gaussian elimination. Run time measurements show that we approach the efficiency of message passing C up to a factor between 1 and 2.5.