Results 1  10
of
19
System E: Expansion variables for flexible typing with linear and nonlinear types and intersection types
 IN PROGRAMMING LANGUAGES & SYSTEMS, 13TH EUROPEAN SYMP. PROGRAMMING
, 2004
"... Types are often used to control and analyze computer programs. ..."
Abstract

Cited by 25 (15 self)
 Add to MetaCart
Types are often used to control and analyze computer programs.
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.
ModelChecking HigherOrder Functions
, 2009
"... We propose a novel typebased model checking algorithm for higherorder recursion schemes. As shown by Kobayashi, verification problems of higherorder functional programs can easily be translated into model checking problems of recursion schemes. Thus, the model checking algorithm serves as a basis ..."
Abstract

Cited by 11 (5 self)
 Add to MetaCart
We propose a novel typebased model checking algorithm for higherorder recursion schemes. As shown by Kobayashi, verification problems of higherorder functional programs can easily be translated into model checking problems of recursion schemes. Thus, the model checking algorithm serves as a basis for verification of higherorder functional programs. To our knowledge, this is the first practical algorithm for model checking recursion schemes: all the previous algorithms always suffer from the nEXPTIME bottleneck, not only in the worst case, and there was no implementation of the algorithms. We have implemented a model checker for recursion schemes based on the proposed algorithm, and applied it to verification of functional programs, including reachability, flow analysis and resource usage verification problems. According to our experiments, the model checker is surprisingly fast: it could automatically verify a number of small but tricky higherorder functional programs in less than a second.
Dependent Types from Counterexamples
, 2010
"... Motivated by recent research in abstract model checking, we present a new approach to inferring dependent types. Unlike many of the existing approaches, our approach does not rely on programmers to supply the candidate (or the correct) types for the recursive functions and instead does counterexampl ..."
Abstract

Cited by 10 (0 self)
 Add to MetaCart
Motivated by recent research in abstract model checking, we present a new approach to inferring dependent types. Unlike many of the existing approaches, our approach does not rely on programmers to supply the candidate (or the correct) types for the recursive functions and instead does counterexampleguided refinement to automatically generate the set of candidate dependent types. The main idea is to extend the classical fixedpoint type inference routine to return a counterexample if the program is found untypable with the current set of candidate types. Then, an interpolating theorem prover is used to validate the counterexample as a real type error or generate additional candidate dependent types to refute the spurious counterexample. The process is repeated until either a real type error is found or sufficient candidates are generated to prove the program typable. Our system makes nontrivial use of “linear” intersection types in the refinement phase. The paper presents the type inference system and reports on the experience with a prototype implementation that infers dependent types for a subset of the Ocaml language. The implementation infers dependent types containing predicates from the quantifierfree theory of linear arithmetic and equality with uninterpreted function symbols.
Implementing Compositional Analysis Using Intersection Types with Expansion Variables
, 2002
"... A program analysis is compositional when the analysis result for a particular program fragment is obtained solely from the results for its immediate subfragments via some composition operator. This means the subfragments can be analyzed independently in any order. Many commonly used program analysis ..."
Abstract

Cited by 8 (4 self)
 Add to MetaCart
A program analysis is compositional when the analysis result for a particular program fragment is obtained solely from the results for its immediate subfragments via some composition operator. This means the subfragments can be analyzed independently in any order. Many commonly used program analysis techniques (in particular, most abstract interpretations and most uses of the Hindley/Milner type system) are not compositional and require the entire text of a program for sound and complete analysis.
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.
Programming Examples Needing Polymorphic Recursion
 IN IN PROCEEDINGS 3RD INTERNATIONAL WORKSHOP INTERSECTION TYPES AND RELATED SYSTEMS (ITRS 2004
, 2004
"... Inferring types for polymorphic recursive function definitions (abbreviated to polymorphic recursion) is a recurring topic on the mailing lists of popular typed programming languages. This is despite the fact that type inference for polymorphic recursion using 8types has been proved undecidable. Th ..."
Abstract

Cited by 6 (0 self)
 Add to MetaCart
Inferring types for polymorphic recursive function definitions (abbreviated to polymorphic recursion) is a recurring topic on the mailing lists of popular typed programming languages. This is despite the fact that type inference for polymorphic recursion using 8types has been proved undecidable. This report presents several programming examples involving polymorphic recursion and determines their typability under various type systems, including the HindleyMilner system, an intersectiontype system, and extensions of these two. The goal of this report is to show that many of these examples are typable using a system of intersection types as an alternative form of polymorphism. By accomplishing this, we hope to lay the foundation for future research into a decidable intersectiontype inference algorithm. We do not
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.