Results 1  10
of
11
Design of the Programming Language Forsythe
, 1996
"... This is a description of the programming language Forsythe, which is a descendant of Algol 60 intended to be as uniform and general as possible, while retaining the basic character of its progenitor. This document supercedes Report CMUCS88159, "Preliminary Design of the Programming Language Fo ..."
Abstract

Cited by 111 (0 self)
 Add to MetaCart
This is a description of the programming language Forsythe, which is a descendant of Algol 60 intended to be as uniform and general as possible, while retaining the basic character of its progenitor. This document supercedes Report CMUCS88159, "Preliminary Design of the Programming Language Forsythe" [1]. c fl1996 John C. Reynolds Research suuported by National Science Foundation Grant CCR9409997. Keywords: Forsythe, Algollike languages, Algol 60, intersection types 1. Introduction In retrospect, it is clear that Algol 60 [2, 3] was an heroic and surprisingly successful attempt to design a programming language from first principles. Its creation gave a formidable impetus to the development and use of theory in language design and implementation, which has borne rich fruit in the intervening thirtysix years. Most of this work has led to languages that are quite different than Algol 60, but there has been a continuing thread of concern with languages that retain the essentia...
From Polyvariant Flow Information to Intersection and Union Types
 J. FUNCT. PROGRAMMING
, 1998
"... Many polyvariant program analyses have been studied in the 1990s, including kCFA, polymorphic splitting, and the cartesian product algorithm. The idea of polyvariance is to analyze functions more than once and thereby obtain better precision for each call site. In this paper we present an equivalen ..."
Abstract

Cited by 41 (7 self)
 Add to MetaCart
Many polyvariant program analyses have been studied in the 1990s, including kCFA, polymorphic splitting, and the cartesian product algorithm. The idea of polyvariance is to analyze functions more than once and thereby obtain better precision for each call site. In this paper we present an equivalence theorem which relates a coinductively defined family of polyvariant ow analyses and a standard type system. The proof embodies a way of understanding polyvariant flow information in terms of union and intersection types, and, conversely, a way of understanding union and intersection types in terms of polyvariant flow information. We use the theorem as basis for a new flowtype system in the spirit of the CIL calculus of Wells, Dimock, Muller, and Turbak, in which types are annotated with flow information. A flowtype system is useful as an interface between a owanalysis algorithm and a program optimizer. Derived systematically via our equivalence theorem, our flowtype system should be a g...
Subtyping with Union Types, Intersection Types and Recursive Types II
 Theoretical Aspects of Computer Software
, 1994
"... : This paper is a followup on previous work by the author on subtyping with (settheoretic) union, intersection and recursive types. Previously, it was shown how types may be encoded as regular tree expressions/set constraints. This gave rise to a sound and complete decision procedure for type incl ..."
Abstract

Cited by 27 (2 self)
 Add to MetaCart
: This paper is a followup on previous work by the author on subtyping with (settheoretic) union, intersection and recursive types. Previously, it was shown how types may be encoded as regular tree expressions/set constraints. This gave rise to a sound and complete decision procedure for type inclusion. The result was, however, limited to a rather specific type language. In the work reported on here, we generalize the result and develop a general technique for deriving subtyping algorithms for type languages with union, intersection and recursive types. We present separate requirements for obtaining a subtyping algorithm which is respectively sound and complete. In this way we obtain a generic strategy for implementing the subtype relation for a broad class of very expressive type languages. Keywords: Type theory, Regular tree expressions, Set constraints, Algorithms, Semantics, Ideal model, Intersection types, Union types, Recursive types (R'esum'e : tsvp) The author is partially...
A Typed Interrupt Calculus
 In FTRTFT: Formal Techniques in RealTime and Faulttolerant Systems, LNCS 2469
, 2002
"... Most realtime systems require responsive interrupt handling. ..."
Abstract

Cited by 17 (5 self)
 Add to MetaCart
Most realtime systems require responsive interrupt handling.
A Semantics for Static Type Inference
 Information and Computation
, 1993
"... Curry's system for Fdeducibility is the basis for static type inference algorithms for programming languages such as ML. If a natural "preservation of types by conversion" rule is added to Curry's system, it becomes undecidable, but complete relative to a variety of model classes. We show compl ..."
Abstract

Cited by 9 (0 self)
 Add to MetaCart
Curry's system for Fdeducibility is the basis for static type inference algorithms for programming languages such as ML. If a natural "preservation of types by conversion" rule is added to Curry's system, it becomes undecidable, but complete relative to a variety of model classes. We show completeness for Curry's system itself, relative to an extended notion of model that validates reduction but not conversion.
On Strong Normalization in the Intersection Type Discipline (Extended Abstract)
"... We give a proof for the strong normalization result in the intersection type discipline, which we obtain by putting together some wellknown results and proof techniques. Our proof uses a variant of Klop's extended calculus, for which it is shown that strong normalization is equivalent to weak ..."
Abstract

Cited by 9 (1 self)
 Add to MetaCart
We give a proof for the strong normalization result in the intersection type discipline, which we obtain by putting together some wellknown results and proof techniques. Our proof uses a variant of Klop's extended calculus, for which it is shown that strong normalization is equivalent to weak normalization. This is
Elaborating Intersection and Union Types
"... Designing and implementing typed programming languages is hard. Every new type system feature requires extending the metatheory and implementation, which are often complicated and fragile. To ease this process, we would like to provide general mechanisms that subsume many different features. In mode ..."
Abstract

Cited by 2 (1 self)
 Add to MetaCart
Designing and implementing typed programming languages is hard. Every new type system feature requires extending the metatheory and implementation, which are often complicated and fragile. To ease this process, we would like to provide general mechanisms that subsume many different features. In modern type systems, parametric polymorphism is fundamental, but intersection polymorphism has gained little traction in programming languages. Most practical intersection type systems have supported only refinement intersections, which increase the expressiveness of types (more precise properties can be checked) without altering the expressiveness of terms; refinement intersections can simply be erased during compilation. In contrast, unrestricted intersections increase the expressiveness of terms, and can be used to encode diverse language features, promising an economy of both theory and implementation. We describe a foundation for compiling unrestricted intersection and union types: an elaboration type system that generates ordinary λcalculus terms. The key feature is a Forsythelike merge construct. With this construct, not all reductions of the source program preserve types; however, we prove that ordinary callbyvalue evaluation of the elaborated program corresponds to a typepreserving evaluation of the source program. We also describe a prototype implementation and applications of unrestricted intersections and unions: records, operator overloading, and simulating dynamic typing. 1.
Intersection Type Systems and Logics Related to the Meyer–Routley System B +
, 2003
"... Abstract: Some, but not all, closed terms of the lambda calculus have types; these types are exactly the theorems of intuitionistic implicational logic. An extension of these simple (→) types to intersection (or →∧) types allows all closed lambda terms to have types. The corresponding → ∧ logic, rel ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
Abstract: Some, but not all, closed terms of the lambda calculus have types; these types are exactly the theorems of intuitionistic implicational logic. An extension of these simple (→) types to intersection (or →∧) types allows all closed lambda terms to have types. The corresponding → ∧ logic, related to the Meyer–Routley minimal logic B + (without ∨), is weaker than the → ∧ fragment of intuitionistic logic. In this paper we provide an introduction to the above work and also determine the →∧ logics that correspond to certain interesting subsystems of the full →∧ type theory. 1 Simple Typed Lambda Calculus In standard mathematical notation “f: α → β ” stands for “f is a function from α into β. ” If we interpret “: ” as “∈ ” we have the rule: f: α → β t: α f(t) : β This is one of the formation rules of typed lambda calculus, except that there we write ft instead of f(t). In λcalculus, λx.M represents the function f such that fx = M. This makes the following rule a natural one: [x: α] M: β λx.M: α → β We now set up the λterms and their types more formally.
Type and FlowDirected Compilation for Specialized Data Representations
, 2002
"... The combination of intersection and union types with ow types gives the compiler writer unprecedented exibility in choosing data representations in the context of a typed intermediate language. We present the design of such a language and the design of a framework for exploiting the type system to s ..."
Abstract
 Add to MetaCart
The combination of intersection and union types with ow types gives the compiler writer unprecedented exibility in choosing data representations in the context of a typed intermediate language. We present the design of such a language and the design of a framework for exploiting the type system to support multiple representations of the same data type in a single program. The framework can transform the input term, in a typesafe way, so that dierent data representations can be used in the transformed term  even if they share a use site in the pretransformed term. We have implemented a compiler using the typed intermediate language and instantiated the framework to allow specialized function representations. We test the compiler on a set of benchmarks and show that the compiletime performance is reasonable. We further show that the compiled code does indeed bene t from specialized function representations.