Type checking data structures more complex than trees
Authors:
** Sano,
Naoki Yamamoto,
Kazunori Ueda
Abstract:
Graphs are a generalized concept that encompasses more complex data structures than trees, such as difference lists, doubly-linked lists, skip lists, and leaf-linked trees. Normally, these structures are handled with destructive assignments to heaps, which is opposed to a purely functional programming style and makes verification difficult. We propose a new purely functional language, $λ_{GT}$, th…
▽ More
Graphs are a generalized concept that encompasses more complex data structures than trees, such as difference lists, doubly-linked lists, skip lists, and leaf-linked trees. Normally, these structures are handled with destructive assignments to heaps, which is opposed to a purely functional programming style and makes verification difficult. We propose a new purely functional language, $λ_{GT}$, that handles graphs as immutable, first-class data structures with a pattern matching mechanism based on Graph Transformation and developed a new type system, $F_{GT}$, for the language. Our approach is in contrast with the analysis of pointer manipulation programs using separation logic, shape analysis, etc. in that (i) we do not consider destructive operations but pattern matchings over graphs provided by the new higher-level language that abstract pointers and heaps away and that (ii) we pursue what properties can be established automatically using a rather simple ty** framework.
△ Less
Submitted 12 September, 2022;
originally announced September 2022.
Implementing G-Machine in HyperLMNtal
Authors:
** Sano
Abstract:
Since language processing systems generally allocate/discard memory with complex reference relationships, including circular and indirect references, their implementation is often not trivial. Here, the allocated memory and the references can be abstracted to the labeled vertices and edges of a graph. And there exists a graph rewriting language, a programming language or a calculation model that c…
▽ More
Since language processing systems generally allocate/discard memory with complex reference relationships, including circular and indirect references, their implementation is often not trivial. Here, the allocated memory and the references can be abstracted to the labeled vertices and edges of a graph. And there exists a graph rewriting language, a programming language or a calculation model that can handle graph intuitively, safely and efficiently. Therefore, the implementation of a language processing system can be highly expected as an application field of graph rewriting language. To show this, in this research, we implemented G-machine, the virtual machine for lazy evaluation, in hypergraph rewriting language, HyperLMNtal.
△ Less
Submitted 1 March, 2021;
originally announced March 2021.