Results 1  10
of
13
A graphical presentation of MLF types with a lineartime unification algorithm
 In TLDI’07: Proceedings of the 2007 ACM SIGPLAN International Workshop on Types in Languages Design and Implementation
, 2007
"... apport de recherche ISSN 02496399 ISRN INRIA/RR????FR+ENG A graphical presentation of MLF types with a lineartime local unification algorithm. ..."
Abstract

Cited by 14 (7 self)
 Add to MetaCart
(Show Context)
apport de recherche ISSN 02496399 ISRN INRIA/RR????FR+ENG A graphical presentation of MLF types with a lineartime local unification algorithm.
Implementing nominal unification
 In 3rd Int. Workshop on Term Graph Rewriting (TERMGRAPH’06), Vienna, Electronic
"... Nominal matching and unification underly the dynamics of nominal rewriting. Urban, Pitts and Gabbay gave a nominal unification algorithm which finds the most general solution to a nominal matching or unification problem, if one exists. Later the algorithm was extended by Fernández and Gabbay to deal ..."
Abstract

Cited by 9 (2 self)
 Add to MetaCart
(Show Context)
Nominal matching and unification underly the dynamics of nominal rewriting. Urban, Pitts and Gabbay gave a nominal unification algorithm which finds the most general solution to a nominal matching or unification problem, if one exists. Later the algorithm was extended by Fernández and Gabbay to deal with name generation and locality. In this paper we describe first a direct implementation of the nominal unification algorithm, including the extensions, in Maude. This implementation is not efficient (it is exponential in time), but we will show that we can obtain a feasible implementation by using termgraphs.
On SubtypingRelation Completeness, with an Application to IsoRecursive Types
"... Wellknown techniques exist for proving the soundness of subtyping relations with respect to type safety. However, completeness has not been treated with widely applicable techniques, as far as we’re aware. This paper develops some techniques for stating and proving that a subtyping relation is comp ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
Wellknown techniques exist for proving the soundness of subtyping relations with respect to type safety. However, completeness has not been treated with widely applicable techniques, as far as we’re aware. This paper develops some techniques for stating and proving that a subtyping relation is complete with respect to type safety and applies the techniques to the study of isorecursive subtyping. The common subtyping rules for isorecursive types—the “Amber rules”—are shown to be incomplete with respect to type safety. That is, there exist isorecursive types τ1 and τ2 such that τ1 can safely be considered a subtype of τ2, but τ1≤τ2 is not derivable with the Amber rules. This paper defines new, algorithmic rules for subtyping isorecursive types and proves that the rules are sound and complete with respect to type safety. The fully implemented subtyping algorithm is optimized to run in O(mn) time, where m is the number of µterms in the types being considered and n is the size of the types being considered.
Rational Term Equality, Functionally
"... Abstract. This paper presents an elegant purely functional algorithm for deciding the equality of rational terms. The algorithm adapts Hopcroft and Karp’s classic algorithm for equality of finite state automata to structured graph representation of rational terms. 1 ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
(Show Context)
Abstract. This paper presents an elegant purely functional algorithm for deciding the equality of rational terms. The algorithm adapts Hopcroft and Karp’s classic algorithm for equality of finite state automata to structured graph representation of rational terms. 1
Backpack: Retrofitting Haskell with Interfaces
"... Module systems like that of Haskell permit only a weak form of modularity in which module implementations directly depend on other implementations and must be processed in dependency order. Module systems like that of ML, on the other hand, permit a stronger form of modularity in which explicit inte ..."
Abstract
 Add to MetaCart
(Show Context)
Module systems like that of Haskell permit only a weak form of modularity in which module implementations directly depend on other implementations and must be processed in dependency order. Module systems like that of ML, on the other hand, permit a stronger form of modularity in which explicit interfaces express assumptions about dependencies, and each module can be typechecked and reasoned about independently. In this paper, we present Backpack, a new language for building separatelytypecheckable packages on top of a weak module system like Haskell’s. The design of Backpack is inspired by the MixML module calculus of Rossberg and Dreyer, but differs significantly in detail. Like MixML, Backpack supports explicit interfaces and recursive linking. Unlike MixML, Backpack supports a more flexible applicative semantics of instantiation. Moreover, its design is motivated less by foundational concerns and more by the practical concern of integration into Haskell, which has led us to advocate simplicity—in both the syntax and semantics of Backpack—over raw expressive power. The semantics of Backpack packages is defined by elaboration to sets of Haskell modules and binary interface files, thus showing how Backpack maintains interoperability with Haskell while extending it with separate typechecking. Lastly, although Backpack is geared toward integration into Haskell, its design and semantics are largely agnostic with respect to the details of the underlying core language. 1.
Equational Theories with Recursive Types
, 2005
"... Studies of equivalence for recursive types often consider impoverished type systems, where the equational theory is generated only by the fold/unfold rule µX. T (X) ≡ T (µX. T (X)). Recursive types have been applied in much richer contexts, including systems with β and ηequivalence, but without an ..."
Abstract
 Add to MetaCart
(Show Context)
Studies of equivalence for recursive types often consider impoverished type systems, where the equational theory is generated only by the fold/unfold rule µX. T (X) ≡ T (µX. T (X)). Recursive types have been applied in much richer contexts, including systems with β and ηequivalence, but without any guarantee that the implementations are correct. Though there are plausible ways to adapt standard recursivetype algorithms to richer equational theories, Colazzo and Ghelli observed that two “obvious ” ways of extending the algorithm in a different direction (adding universallyquantified types) both fail. Extended systems may not even be formally specified; combining βηequivalence with coinductive equivalence of recursive types requires care to avoid inconsistency. In this paper we both define and analyze coinductive equivalence for recursive types combined with other common equational principles. We start by adding pairing and projection, allowing even pairs to be recursively defined. (This permits direct definitions for collections of mutuallyrecursive types.) We show that our definition yields a decidable theory with all the expected equational properties. We then extend the system with firstorder (nonrecursive) type operators and βequivalence, and show the same equational and decidability properties hold. Finally we add extensionality for both pairs and functions, obtaining a coinductivelydefined theory of recursive types with βηequivalence. 1
Subtyping FirstClass Polymorphic Components
, 2005
"... We present a statically typed, classbased object oriented language where classes are first class polymorphic values. A main contribution of this work is the design of a type system that combines first class polymorphic values with structural equirecursive types and admits a subtyping algorithm wh ..."
Abstract
 Add to MetaCart
We present a statically typed, classbased object oriented language where classes are first class polymorphic values. A main contribution of this work is the design of a type system that combines first class polymorphic values with structural equirecursive types and admits a subtyping algorithm which is arguably much simpler than existing alternatives. Our development is modular and can be easily instantiated for either a KernelFun or a F ⊤ ≤ style of subtyping discipline.