This paper presents a technique for preserving the power of general program transformations in the presence of a rich collection of distinguishable error values. We describe an implementation of regular tree expressions and our experience with that implementation in the context of the FL type system. A combination of algorithms, optimizations, and fast heuristics for computationally difficult problems yields an implementation efficient enough for practical use. We present a type inference system for FL based on an operational, rather than a denotational, formulation of types. Solving Systems of Set Constraints with Edward L. Wimmers Abstract Systems of set constraints are a natural formalism for many problems in program analysis.
Set constraints are also a generalization of tree automata.
We present an algorithm for solving systems of set constraints built from free variables, constructors, and the set operations of intersection, union, and complement. Furthermore, we show that all solutions of such systems can be finitely represented. We present a general algorithm for solving systems of inclusion constraints over type expressions. The constraint language includes function types, constructor types, and liberal intersection and union types. We illustrate the application of our constraint solving algorithm with a type inference system for the lambda calculus with constants.