Results 1  10
of
20
Expansion: the Crucial Mechanism for Type Inference with Intersection Types: Survey and Explanation
 In: (ITRS ’04
, 2005
"... The operation of expansion on typings was introduced at the end of the 1970s by Coppo, Dezani, and Venneri for reasoning about the possible typings of a term when using intersection types. Until recently, it has remained somewhat mysterious and unfamiliar, even though it is essential for carrying ..."
Abstract

Cited by 17 (7 self)
 Add to MetaCart
The operation of expansion on typings was introduced at the end of the 1970s by Coppo, Dezani, and Venneri for reasoning about the possible typings of a term when using intersection types. Until recently, it has remained somewhat mysterious and unfamiliar, even though it is essential for carrying out compositional type inference. The fundamental idea of expansion is to be able to calculate the effect on the final judgement of a typing derivation of inserting a use of the intersectionintroduction typing rule at some (possibly deeply nested) position, without actually needing to build the new derivation.
Type Inference with Expansion Variables and Intersection Types in System E and an Exact Correspondence with βReduction
 In Proc. 6th Int’l Conf. Principles & Practice Declarative Programming
"... System E is a recently designed type system for the # calculus with intersection types and expansion variables. During automatic type inference, expansion variables allow postponing decisions about which nonsyntaxdriven typing rules to use until the right information is available and allow imple ..."
Abstract

Cited by 11 (4 self)
 Add to MetaCart
System E is a recently designed type system for the # calculus with intersection types and expansion variables. During automatic type inference, expansion variables allow postponing decisions about which nonsyntaxdriven typing rules to use until the right information is available and allow implementing the choices via substitution.
Types, potency, and idempotency: why nonlinearity and amnesia make a type system work
 In ICFP ’04: Proceedings of the ninth ACM SIGPLAN international conference on Functional programming, 138–149, ACM
, 2004
"... Useful type inference must be faster than normalization. Otherwise, you could check safety conditions by running the program. We analyze the relationship between bounds on normalization and type inference. We show how the success of type inference is fundamentally related to the amnesia of the type ..."
Abstract

Cited by 8 (1 self)
 Add to MetaCart
Useful type inference must be faster than normalization. Otherwise, you could check safety conditions by running the program. We analyze the relationship between bounds on normalization and type inference. We show how the success of type inference is fundamentally related to the amnesia of the type system: the nonlinearity by which all instances of a variable are constrained to have the same type. Recent work on intersection types has advocated their usefulness for static analysis and modular compilation. We analyze SystemI (and some instances of its descendant, System E), an intersection type system with a type inference algorithm. Because SystemI lacks idempotency, each occurrence of a variable requires a distinct type. Consequently, type inference is equivalent to normalization in every single case, and time bounds on type inference and normalization are identical. Similar relationships hold for other intersection type systems without idempotency. The analysis is founded on an investigation of the relationship between linear logic and intersection types. We show a lockstep correspondence between normalization and type inference. The latter shows the promise of intersection types to facilitate static analyses of varied granularity, but also belies an immense challenge: to add amnesia to such analysis without losing all of its benefits.
J.B.: A complete realisability semantics for intersection types and infinite expansion variables (2008), http://www.macs.hw.ac.uk/ ∼ fairouz/papers/drafts/compsembig.pdf
"... Abstract. Expansion was introduced at the end of the 1970s for calculating principal typings for λterms in intersection type systems. Expansion variables (Evariables) were introduced at the end of the 1990s to simplify and help mechanise expansion. Recently, Evariables have been further simplifie ..."
Abstract

Cited by 6 (6 self)
 Add to MetaCart
Abstract. Expansion was introduced at the end of the 1970s for calculating principal typings for λterms in intersection type systems. Expansion variables (Evariables) were introduced at the end of the 1990s to simplify and help mechanise expansion. Recently, Evariables have been further simplified and generalised to also allow calculating other type operators than just intersection. There has been much work on semantics for intersection type systems, but only one such work on intersection type systems with Evariables. That work established that building a semantics for Evariables is very challenging. Because it is unclear how to devise a space of meanings for Evariables, that work developed instead a space of meanings for types that is hierarchical in the sense of having many degrees (denoted by indexes). However, although the indexed calculus helped identify the serious problems of giving a semantics for expansion variables, the sound realisability semantics was only complete when one single Evariable is used and furthermore, the universal type ω was not allowed. In this paper, we are able to overcome these challenges. We develop a realisability semantics where we allow an arbitrary (possibly infinite) number of expansion variables and where ω is present. We show the soundness and completeness of our proposed semantics. 1
A Practical Linear Time Algorithm for Trivial Automata Model Checking of HigherOrder Recursion Schemes
"... The model checking of higherorder recursion schemes has been actively studied and is now becoming a basis of higherorder program verification. We propose a new algorithm for trivial automata model checking of higherorder recursion schemes. To our knowledge, this is the first practical model che ..."
Abstract

Cited by 5 (2 self)
 Add to MetaCart
The model checking of higherorder recursion schemes has been actively studied and is now becoming a basis of higherorder program verification. We propose a new algorithm for trivial automata model checking of higherorder recursion schemes. To our knowledge, this is the first practical model checking algorithm for recursion schemes that runs in time linear in the size of the higherorder recursion scheme, under the assumption that the size of trivial automata and the largest order and arity of functions are fixed. The previous linear time algorithm was impractical due to a huge constant factor, and the only practical previous algorithm suffers from the hyperexponential worstcase time complexity, under the same assumption. The new algorithm is remarkably simple, consisting of just two fixedpoint computations. We have implemented the algorithm and confirmed that it outperforms Kobayashi’s previous algorithm in a certain case.
Inferring intersection typings that are equivalent to callbyname and callbyvalue evaluations
, 2005
"... Abstract. We present a procedure to infer a typing for an arbitrary λterm M in an intersectiontype system that translates into exactly the callbyname (resp., callbyvalue) evaluation of M. Our framework is the recently developed System E which augments intersection types with expansion variable ..."
Abstract

Cited by 4 (1 self)
 Add to MetaCart
Abstract. We present a procedure to infer a typing for an arbitrary λterm M in an intersectiontype system that translates into exactly the callbyname (resp., callbyvalue) evaluation of M. Our framework is the recently developed System E which augments intersection types with expansion variables. The inferred typing for M is obtained by setting up a unification problem involving both type variables and expansion variables, which we solve with a confluent rewrite system. The inference procedure is compositional in the sense that typings for different program components can be inferred in any order, and without knowledge of the definition of other program components. 3 Using expansion variables lets us achieve a compositional inference procedure easily. Termination of the procedure is generally undecidable. The procedure terminates and returns a typing iff the input M is normalizing according to callbyname (resp., callbyvalue). The inferred typing is exact in the sense that the exact callbyname (resp., callbyvalue) behaviour of M can be obtained by a (polynomial) transformation of the typing. The inferred typing is also principal in the sense that any other typing that translates the callbyname (resp., callbyvalue) evaluation of M can be obtained from the inferred typing for M using a substitutionbased transformation.
Rank2 Intersection and Polymorphic Recursion
 In TLCA’05, volume 2841 of LNCS
, 2005
"... Let # be a rank2 intersection type system. We say that a term is #simple (or just simple when the system # is clear from the context) if system # can prove that it has a simple type. In this paper we propose new typing rules and algorithms that are able to type recursive definitions that are n ..."
Abstract

Cited by 3 (0 self)
 Add to MetaCart
Let # be a rank2 intersection type system. We say that a term is #simple (or just simple when the system # is clear from the context) if system # can prove that it has a simple type. In this paper we propose new typing rules and algorithms that are able to type recursive definitions that are not simple. At the best of our knowledge, previous algorithms for typing recursive definitions in the presence of rank2 intersection types allow only simple recursive definitions to be typed. The proposed rules are also able to type interesting examples of polymorphic recursion (i.e., recursive definitions rec {x = e} where di#erent occurrences of x in e are used with di#erent types). Moreover, the underlying techniques do not depend on particulars of rank2 intersection, so they can be applied to other type systems.
Properties of a rewrite system for unification with expansion variables
, 2005
"... Abstract. A study of properties of a rewrite system for solving constraint sets that are instances of the unification with expansion variables problem. The terms in the constraints are built from the intersection type constructors plus type variables and applied expansion variables. We show that: • ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
Abstract. A study of properties of a rewrite system for solving constraint sets that are instances of the unification with expansion variables problem. The terms in the constraints are built from the intersection type constructors plus type variables and applied expansion variables. We show that: • Constraint set rewriting is confluent (modulo isomorphism). • There is a set of wellnamed constraint sets which is closed under reduction and normalisation of wellnamed sets always produces a unifier. • The rewrite system partitions naturally such that all reductions of wellnamed constraint sets are finite (terminating) with each part. • The subset of acyclic wellnamed constraint sets is preserved by reduction the occur check may be omitted for reduction of such sets. • The acyclic wellnamed constraint sets include those necessary for intersection typing inference, therefore the above properties hold for its application in the intersection type framework of System E. 1
Developing Realisability Semantics for Intersection Types and Expansion Variables
"... Abstract. Expansion was invented at the end of the 1970s for calculating principal typings for λterms in type systems with intersection types. Expansion variables (Evariables) were invented at the end of the 1990s to simplify and help mechanize expansion. Recently, Evariables have been further si ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
Abstract. Expansion was invented at the end of the 1970s for calculating principal typings for λterms in type systems with intersection types. Expansion variables (Evariables) were invented at the end of the 1990s to simplify and help mechanize expansion. Recently, Evariables have been further simplified and generalized to also allow calculating other type operators than just intersection. There has been much work on denotational semantics for type systems with intersection types, but none whatsoever before now on type systems with Evariables. Building a semantics for Evariables turns out to be challenging. To simplify the problem, we consider only Evariables, and not the corresponding operation of expansion. We develop a realizability semantics where each use of an Evariable in a type corresponds to an independent level at which evaluation occurs in the λterm that is assigned the type. In the λterm being evaluated, the only interaction possible between portions at different levels is that higher level portions can be passed around but never applied to lower level portions. We apply this semantics to two intersection type systems. We show these systems are sound, that completeness does not hold for the first system, and completeness holds for the second system when only one Evariable is allowed (although it can be used many times and nested). As far as we know, this is the first study of a denotational semantics of intersection type systems with Evariables (using realizability or any other approach) and of the difficulties involved. 1