Improving the GP 2 Compiler
Graham Campbell, Jack Romo, Detlef Plump

TL;DR
This paper discusses enhancements to the GP 2 compiler that significantly improve the efficiency of graph matching and program execution, especially for destructive programs, through new features like node lists and optimized recognition algorithms.
Contribution
The paper introduces key improvements to the GP 2 compiler, including node lists and linear-time recognition, enhancing performance for graph transformation programs.
Findings
Node lists improve iteration performance for destructive programs.
Binary DAG recognition now operates in linear time.
Compiler enhancements reduce graph matching complexity.
Abstract
GP 2 is an experimental programming language based on graph transformation rules which aims to facilitate program analysis and verification. Writing efficient programs in such a language is hard because graph matching is expensive, however GP 2 addresses this problem by providing rooted rules which, under mild conditions, can be matched in constant time using the GP 2 to C compiler. In this report, we document various improvements made to the compiler; most notably the introduction of node lists to improve iteration performance for destructive programs, meaning that binary DAG recognition by reduction need only take linear time where the previous implementation required quadratic time.
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsModel-Driven Software Engineering Techniques · Formal Methods in Verification · Software Testing and Debugging Techniques
