Volume II: Parallel Languages on PARLE: Parallel Architectures and Languages Europe
Efficiently computing static single assignment form and the control dependence graph
ACM Transactions on Programming Languages and Systems (TOPLAS)
Equational term graph rewriting
Fundamenta Informaticae - Special issue on graph transformations
Two applications of analytic functors
Theoretical Computer Science - Special issue on theories of types and proofs
Semantic analysis of normalisation by evaluation for typed lambda calculus
Proceedings of the 4th ACM SIGPLAN international conference on Principles and practice of declarative programming
Proceedings of the 2nd Colloquium on Automata, Languages and Programming
Abstract Syntax and Variable Binding
LICS '99 Proceedings of the 14th Annual IEEE Symposium on Logic in Computer Science
Infinite trees and completely iterative theories: a coalgebraic view
Theoretical Computer Science
A framework for typed HOAS and semantics
Proceedings of the 5th ACM SIGPLAN international conference on Principles and practice of declaritive programming
Faking it Simulating dependent types in Haskell
Journal of Functional Programming
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Explicit substitutions and higher-order syntax
Higher-Order and Symbolic Computation
Simple unification-based type inference for GADTs
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
Foundations for structured programming with GADTs
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Second-Order and Dependently-Sorted Abstract Syntax
LICS '08 Proceedings of the 2008 23rd Annual IEEE Symposium on Logic in Computer Science
Initial algebra semantics is enough!
TLCA'07 Proceedings of the 8th international conference on Typed lambda calculi and applications
Cyclic proofs for first-order logic with inductive definitions
TABLEAUX'05 Proceedings of the 14th international conference on Automated Reasoning with Analytic Tableaux and Related Methods
Structural recursion for querying ordered graphs
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
A parameterized graph transformation calculus for finite graphs with monadic branches
Proceedings of the 15th Symposium on Principles and Practice of Declarative Programming
Hi-index | 0.01 |
Terms are a concise representation of tree structures. Since they can be naturally defined by an inductive type, they offer data structures in functional programming and mechanised reasoning with useful principles such as structural induction and structural recursion. In the case of graphs or "tree-like" structures --- trees involving cycles and sharing --- however, it is not clear what kind of inductive structures exists and how we can faithfully assign a term representation of them. In this paper we propose a simple term syntax for cyclic sharing structures that admits structural induction and recursion principles. We show that the obtained syntax is directly usable in the functional language Haskell, as well as ordinary data structures such as lists and trees. To achieve this goal, we use categorical approach to initial algebra semantics in a presheaf category. That approach follows the line of Fiore, Plotkin and Turi's models of abstract syntax with variable binding.