Introduction to algorithms
Retrieving library identifiers via equational matching of types
CADE-10 Proceedings of the tenth international conference on Automated deduction
ACM Transactions on Programming Languages and Systems (TOPLAS)
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Interface definition language conversions: recursive types
IDL '94 Proceedings of the workshop on Interface definition languages
A completeness theorem for Kleene algebras and the algebra of regular events
Papers presented at the IEEE symposium on Logic in computer science
Signature matching: a tool for using software libraries
ACM Transactions on Software Engineering and Methodology (TOSEM)
Automated support for seamless interoperability in polylingual software systems
SIGSOFT '96 Proceedings of the 4th ACM SIGSOFT symposium on Foundations of software engineering
Isomorphisms of Types: From Lambda-Calculus to Information Retrieval and Language Design
Isomorphisms of Types: From Lambda-Calculus to Information Retrieval and Language Design
Coinductive Axiomatization of Recursive Type Equality and Subtyping
TLCA '97 Proceedings of the Third International Conference on Typed Lambda Calculi and Applications
Concurrency and Automata on Infinite Sequences
Proceedings of the 5th GI-Conference on Theoretical Computer Science
A Deciding Algorithm for Linear Isomorphism of Types with Complexity O (n log2(n))
CTCS '97 Proceedings of the 7th International Conference on Category Theory and Computer Science
Mockingbird: Flexible Stub Compilation from Pairs of Declarations
ICDCS '99 Proceedings of the 19th IEEE International Conference on Distributed Computing Systems
Efficient algorithms for isomorphisms of simple types
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
FoSSaCS '02 Proceedings of the 5th International Conference on Foundations of Software Science and Computation Structures
Isomorphisms of generic recursive polynomial types
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
From Polyvariant flow information to intersection and union types
Journal of Functional Programming
A short survey of isomorphisms of types
Mathematical Structures in Computer Science
Interoperability in service-based communities
BPM'05 Proceedings of the Third international conference on Business Process Management
Hi-index | 0.00 |
Equality and subtyping of recursive types have been studied in the 1990s by Amadio and Cardelli; Kozen, Palsberg, and Schwartzbach; Brandt and Henglein; and others. Potential applications include automatic generation of bridge code for multi-language systems and type-based retrieval of software modules from libraries. Auerbach, Barton, and Raghavachari advocate a highly flexible combination of matching rules for which there, until now, are no efficient algorithmic techniques. In this paper, we present an efficient decision procedure for a notion of type equality that includes unfolding of recursive types, and associativity and commutativity of product types, as advocated by Auerbach et al. For two types of size at most n, our algorithm decides equality in O(n2) time. The algorithm iteratively prunes a set of type pairs, and eventually it produces a set of pairs of equal types. In each iteration, the algorithm exploits a so-called coherence property of the set of type pairs produced in the preceding iteration. The algorithm takes O(n) iterations each of which takes O(n) time, for a total of O(n2) time.