The Improved GP 2 Compiler 11th International Workshop on Graph - - PowerPoint PPT Presentation

the improved gp 2 compiler
SMART_READER_LITE
LIVE PREVIEW

The Improved GP 2 Compiler 11th International Workshop on Graph - - PowerPoint PPT Presentation

Introduction Data Structure Changes Timing Results The Improved GP 2 Compiler 11th International Workshop on Graph Computation Models Graham Campbell Jack Rom o Detlef Plump School of Mathematics, Mathematical Institute, Department of


slide-1
SLIDE 1

Introduction Data Structure Changes Timing Results

The Improved GP 2 Compiler

11th International Workshop on Graph Computation Models Graham Campbell

School of Mathematics, Statistics and Physics, Newcastle University, UK

Jack Rom¨

  • Mathematical Institute,

University of Oxford, UK yyyyyyyy

Detlef Plump

Department of Computer Science, University of York, yyyy UK yyyy

June 2020

Graham Campbell, Jack Rom¨

  • , and Detlef Plump

Newcastle University, UK; University of Oxford; University of York, UK The Improved GP 2 Compiler

slide-2
SLIDE 2

Introduction Data Structure Changes Timing Results

Graph Programming Language GP 2

An experimental DSL for graphs, based on attributed DPO graph-transformation rules.

Graham Campbell, Jack Rom¨

  • , and Detlef Plump

Newcastle University, UK; University of Oxford; University of York, UK The Improved GP 2 Compiler

slide-3
SLIDE 3

Introduction Data Structure Changes Timing Results

Graph Programming Language GP 2

An experimental DSL for graphs, based on attributed DPO graph-transformation rules. GP 2: abstracts from low-level data structures;

Graham Campbell, Jack Rom¨

  • , and Detlef Plump

Newcastle University, UK; University of Oxford; University of York, UK The Improved GP 2 Compiler

slide-4
SLIDE 4

Introduction Data Structure Changes Timing Results

Graph Programming Language GP 2

An experimental DSL for graphs, based on attributed DPO graph-transformation rules. GP 2: abstracts from low-level data structures; has a formal operational semantics (Plump 2012; Bak 2015);

Graham Campbell, Jack Rom¨

  • , and Detlef Plump

Newcastle University, UK; University of Oxford; University of York, UK The Improved GP 2 Compiler

slide-5
SLIDE 5

Introduction Data Structure Changes Timing Results

Graph Programming Language GP 2

An experimental DSL for graphs, based on attributed DPO graph-transformation rules. GP 2: abstracts from low-level data structures; has a formal operational semantics (Plump 2012; Bak 2015); aims to facilitate formal reasoning on programs (Poskitt and Plump 2012; Plump 2016; Wulandari and Plump 2020);

Graham Campbell, Jack Rom¨

  • , and Detlef Plump

Newcastle University, UK; University of Oxford; University of York, UK The Improved GP 2 Compiler

slide-6
SLIDE 6

Introduction Data Structure Changes Timing Results

Graph Programming Language GP 2

An experimental DSL for graphs, based on attributed DPO graph-transformation rules. GP 2: abstracts from low-level data structures; has a formal operational semantics (Plump 2012; Bak 2015); aims to facilitate formal reasoning on programs (Poskitt and Plump 2012; Plump 2016; Wulandari and Plump 2020); is computationally complete (Plump 2017).

Graham Campbell, Jack Rom¨

  • , and Detlef Plump

Newcastle University, UK; University of Oxford; University of York, UK The Improved GP 2 Compiler

slide-7
SLIDE 7

Introduction Data Structure Changes Timing Results

Graph Programming Language GP 2

An experimental DSL for graphs, based on attributed DPO graph-transformation rules. GP 2: abstracts from low-level data structures; has a formal operational semantics (Plump 2012; Bak 2015); aims to facilitate formal reasoning on programs (Poskitt and Plump 2012; Plump 2016; Wulandari and Plump 2020); is computationally complete (Plump 2017). GP 2 Program GP 2-to-C C Program GCC Binary Input Graph Execute Output Graph

Graham Campbell, Jack Rom¨

  • , and Detlef Plump

Newcastle University, UK; University of Oxford; University of York, UK The Improved GP 2 Compiler

slide-8
SLIDE 8

Introduction Data Structure Changes Timing Results

Making GP 2 Fast

Performance bottleneck: matching the left-hand graph L of a rule within a host graph G, requiring time polynomial in the size of L.

Graham Campbell, Jack Rom¨

  • , and Detlef Plump

Newcastle University, UK; University of Oxford; University of York, UK The Improved GP 2 Compiler

slide-9
SLIDE 9

Introduction Data Structure Changes Timing Results

Making GP 2 Fast

Performance bottleneck: matching the left-hand graph L of a rule within a host graph G, requiring time polynomial in the size of L. Linear-time graph algorithms in imperative languages may be slowed to polynomial time when they are recast as rule-based programs.

Graham Campbell, Jack Rom¨

  • , and Detlef Plump

Newcastle University, UK; University of Oxford; University of York, UK The Improved GP 2 Compiler

slide-10
SLIDE 10

Introduction Data Structure Changes Timing Results

Making GP 2 Fast

Performance bottleneck: matching the left-hand graph L of a rule within a host graph G, requiring time polynomial in the size of L. Linear-time graph algorithms in imperative languages may be slowed to polynomial time when they are recast as rule-based programs. To speed up matching, GP 2 supports rooted graph transformation where graphs in rules and host graphs are equipped with so-called root nodes (D¨

  • rr 1995; Bak and Plump 2012).

Graham Campbell, Jack Rom¨

  • , and Detlef Plump

Newcastle University, UK; University of Oxford; University of York, UK The Improved GP 2 Compiler

slide-11
SLIDE 11

Introduction Data Structure Changes Timing Results

Making GP 2 Fast

Performance bottleneck: matching the left-hand graph L of a rule within a host graph G, requiring time polynomial in the size of L. Linear-time graph algorithms in imperative languages may be slowed to polynomial time when they are recast as rule-based programs. To speed up matching, GP 2 supports rooted graph transformation where graphs in rules and host graphs are equipped with so-called root nodes (D¨

  • rr 1995; Bak and Plump 2012).

Roots in rules must match roots in the host graph so that matches are restricted to the neighbourhood of the host graph’s roots.

Graham Campbell, Jack Rom¨

  • , and Detlef Plump

Newcastle University, UK; University of Oxford; University of York, UK The Improved GP 2 Compiler

slide-12
SLIDE 12

Introduction Data Structure Changes Timing Results

Making GP 2 Fast

Performance bottleneck: matching the left-hand graph L of a rule within a host graph G, requiring time polynomial in the size of L. Linear-time graph algorithms in imperative languages may be slowed to polynomial time when they are recast as rule-based programs. To speed up matching, GP 2 supports rooted graph transformation where graphs in rules and host graphs are equipped with so-called root nodes (D¨

  • rr 1995; Bak and Plump 2012).

Roots in rules must match roots in the host graph so that matches are restricted to the neighbourhood of the host graph’s roots. Using rooted rules, some graph algorithms can be implemented to run in linear time on graphs of bounded degree: computing a 2-colouring (Bak and Plump 2016); topological sorting of acyclic graphs (Campbell, Courtehoute, and Plump 2019). MSTs can be computed in linearithmic time (Courtehoute and Plump 2020).

Graham Campbell, Jack Rom¨

  • , and Detlef Plump

Newcastle University, UK; University of Oxford; University of York, UK The Improved GP 2 Compiler

slide-13
SLIDE 13

Introduction Data Structure Changes Timing Results

Old Theoretical Issue

The theory of rooted graph transformation has some undesirable properties, because morphisms need not be root-reflecting.

Graham Campbell, Jack Rom¨

  • , and Detlef Plump

Newcastle University, UK; University of Oxford; University of York, UK The Improved GP 2 Compiler

slide-14
SLIDE 14

Introduction Data Structure Changes Timing Results

Old Theoretical Issue

The theory of rooted graph transformation has some undesirable properties, because morphisms need not be root-reflecting.

← → 

  • PB

PO 

  • PB ×

PO 

→ (a) Not invertible ← ∅ → 

  • PB

PO × 

  • PB

PO 

∅ → (b) Not DPO rewriting

Graham Campbell, Jack Rom¨

  • , and Detlef Plump

Newcastle University, UK; University of Oxford; University of York, UK The Improved GP 2 Compiler

slide-15
SLIDE 15

Introduction Data Structure Changes Timing Results

Old Theoretical Issue

The theory of rooted graph transformation has some undesirable properties, because morphisms need not be root-reflecting.

← → 

  • PB

PO 

  • PB ×

PO 

→ (a) Not invertible ← ∅ → 

  • PB

PO × 

  • PB

PO 

∅ → (b) Not DPO rewriting

The 2nd example is due to Plump and Wulandari (unpublished). These problems were fixed by Campbell (2019) by requiring root-reflecting morphisms for rooted graph transformation with relabelling.

Graham Campbell, Jack Rom¨

  • , and Detlef Plump

Newcastle University, UK; University of Oxford; University of York, UK The Improved GP 2 Compiler

slide-16
SLIDE 16

Introduction Data Structure Changes Timing Results

Old Implementation Issue

The internal representation of graphs adds a linear factor to the runtime

  • f some programs where one would not expect.

Graham Campbell, Jack Rom¨

  • , and Detlef Plump

Newcastle University, UK; University of Oxford; University of York, UK The Improved GP 2 Compiler

slide-17
SLIDE 17

Introduction Data Structure Changes Timing Results

Old Implementation Issue

The internal representation of graphs adds a linear factor to the runtime

  • f some programs where one would not expect.

Main = del!; if node then fail del(x:list) node(x:list) x ⇒ ∅ x ⇒ x

1 1 Graham Campbell, Jack Rom¨

  • , and Detlef Plump

Newcastle University, UK; University of Oxford; University of York, UK The Improved GP 2 Compiler

slide-18
SLIDE 18

Introduction Data Structure Changes Timing Results

Old Implementation Issue

The internal representation of graphs adds a linear factor to the runtime

  • f some programs where one would not expect.

Main = del!; if node then fail del(x:list) node(x:list) x ⇒ ∅ x ⇒ x

1 1

The above program evaluates to fail if and only if the input graph is discrete (has no edges). We would expect it to run in linear time, but it actually takes quadratic time on discrete graphs!

Graham Campbell, Jack Rom¨

  • , and Detlef Plump

Newcastle University, UK; University of Oxford; University of York, UK The Improved GP 2 Compiler

slide-19
SLIDE 19

Introduction Data Structure Changes Timing Results

Old Compiler: Graph Data Structure

The original compiler stored a graph as a dynamic array of nodes and another of edges.

Graham Campbell, Jack Rom¨

  • , and Detlef Plump

Newcastle University, UK; University of Oxford; University of York, UK The Improved GP 2 Compiler

slide-20
SLIDE 20

Introduction Data Structure Changes Timing Results

Old Compiler: Graph Data Structure

The original compiler stored a graph as a dynamic array of nodes and another of edges. Each of these contains two arrays, one of the actual elements and another of indices that are empty, or “holes”.

Graham Campbell, Jack Rom¨

  • , and Detlef Plump

Newcastle University, UK; University of Oxford; University of York, UK The Improved GP 2 Compiler

slide-21
SLIDE 21

Introduction Data Structure Changes Timing Results

Old Compiler: Graph Data Structure

The original compiler stored a graph as a dynamic array of nodes and another of edges. Each of these contains two arrays, one of the actual elements and another of indices that are empty, or “holes”. When iterating through nodes, each index has to be checked to ensure it is not a hole.

Graham Campbell, Jack Rom¨

  • , and Detlef Plump

Newcastle University, UK; University of Oxford; University of York, UK The Improved GP 2 Compiler

slide-22
SLIDE 22

Introduction Data Structure Changes Timing Results

Old Compiler: Graph Data Structure

The original compiler stored a graph as a dynamic array of nodes and another of edges. Each of these contains two arrays, one of the actual elements and another of indices that are empty, or “holes”. When iterating through nodes, each index has to be checked to ensure it is not a hole. Deleting a node requires tracking the new hole. Inserting a node can be done by filling a hole should one exist.

Graham Campbell, Jack Rom¨

  • , and Detlef Plump

Newcastle University, UK; University of Oxford; University of York, UK The Improved GP 2 Compiler

slide-23
SLIDE 23

Introduction Data Structure Changes Timing Results

Old Compiler: Graph Data Structure

The original compiler stored a graph as a dynamic array of nodes and another of edges. Each of these contains two arrays, one of the actual elements and another of indices that are empty, or “holes”. When iterating through nodes, each index has to be checked to ensure it is not a hole. Deleting a node requires tracking the new hole. Inserting a node can be done by filling a hole should one exist. Repeatedly deleting a large number of nodes is expensive.

Graham Campbell, Jack Rom¨

  • , and Detlef Plump

Newcastle University, UK; University of Oxford; University of York, UK The Improved GP 2 Compiler

slide-24
SLIDE 24

Introduction Data Structure Changes Timing Results

Old Compiler: Graph Data Structure

The original compiler stored a graph as a dynamic array of nodes and another of edges. Each of these contains two arrays, one of the actual elements and another of indices that are empty, or “holes”. When iterating through nodes, each index has to be checked to ensure it is not a hole. Deleting a node requires tracking the new hole. Inserting a node can be done by filling a hole should one exist. Repeatedly deleting a large number of nodes is expensive. Root nodes are tracked by a linked list, each entry holding a pointer to a root node. Iterating through or deleting root nodes takes constant time, if there is an upper bound on the number of root nodes.

Graham Campbell, Jack Rom¨

  • , and Detlef Plump

Newcastle University, UK; University of Oxford; University of York, UK The Improved GP 2 Compiler

slide-25
SLIDE 25

Introduction Data Structure Changes Timing Results

New Compiler: Graph Data Structure

To resolve the problems hole arrays pose, we switched to a linked list pointing to nodes.

Graham Campbell, Jack Rom¨

  • , and Detlef Plump

Newcastle University, UK; University of Oxford; University of York, UK The Improved GP 2 Compiler

slide-26
SLIDE 26

Introduction Data Structure Changes Timing Results

New Compiler: Graph Data Structure

To resolve the problems hole arrays pose, we switched to a linked list pointing to nodes. Now the recognition program for discrete graph runs in linear time, as holes are skipped that previously were traversed.

Graham Campbell, Jack Rom¨

  • , and Detlef Plump

Newcastle University, UK; University of Oxford; University of York, UK The Improved GP 2 Compiler

slide-27
SLIDE 27

Introduction Data Structure Changes Timing Results

New Compiler: Graph Data Structure

To resolve the problems hole arrays pose, we switched to a linked list pointing to nodes. Now the recognition program for discrete graph runs in linear time, as holes are skipped that previously were traversed. Other data structures have faster random access time, such as balanced binary trees, but our only use case is iterating through the entire list to match subgraphs or adding/deleting nodes and edges.

Graham Campbell, Jack Rom¨

  • , and Detlef Plump

Newcastle University, UK; University of Oxford; University of York, UK The Improved GP 2 Compiler

slide-28
SLIDE 28

Introduction Data Structure Changes Timing Results

New Compiler: Graph Data Structure

To resolve the problems hole arrays pose, we switched to a linked list pointing to nodes. Now the recognition program for discrete graph runs in linear time, as holes are skipped that previously were traversed. Other data structures have faster random access time, such as balanced binary trees, but our only use case is iterating through the entire list to match subgraphs or adding/deleting nodes and edges. There were lots of other internal changes to enable this, such as the replacement of integer IDs by pointers, and re-implementation of edge lists which leads to good performance of our next examples.

Graham Campbell, Jack Rom¨

  • , and Detlef Plump

Newcastle University, UK; University of Oxford; University of York, UK The Improved GP 2 Compiler

slide-29
SLIDE 29

Introduction Data Structure Changes Timing Results

Discrete Graph Testing Timing

0.2 0.4 0.6 0.8 1 ·106 200 400 600 800 1,000 Number of nodes in input graph Execution time (ms) New Impl. 0.2 0.4 0.6 0.8 1 ·105 5,000 10,000 15,000 Number of nodes in input graph Execution time (ms) Old Impl. New Impl.

Graham Campbell, Jack Rom¨

  • , and Detlef Plump

Newcastle University, UK; University of Oxford; University of York, UK The Improved GP 2 Compiler

slide-30
SLIDE 30

Introduction Data Structure Changes Timing Results

Binary DAG Testing Program

Main = (init; Reduce!; if flag then break)!; if flag then fail Reduce = up!; try Delete else set flag Delete = {del1, del1 d, del21, del21 d, del22, del22 d, del0} init(x:list) up(a,x,y:list) x ⇒ x

1 1

x y ⇒ x y

1 2 1 2

a a del1(a,x,y:list) del1 d(a,x,y:list) x y ⇒ x

1 1

a x y ⇒ x

1 1

a del21(a,b,x,y:list) del21 d(a,b,x,y:list) x y ⇒ x

1 1

a b x y ⇒ x

1 1

a b del22(a,b,x,y,z:list) del22 d(a,b,x,y,z:list) x y z ⇒ x y

1 2 1 2

a b x y z ⇒ x y

1 2 1 2

a b del0(x:list) set flag(x:list) flag(x:list) x ⇒ ∅ x ⇒ x

1 1

x ⇒ x

1 1

Graham Campbell, Jack Rom¨

  • , and Detlef Plump

Newcastle University, UK; University of Oxford; University of York, UK The Improved GP 2 Compiler

slide-31
SLIDE 31

Introduction Data Structure Changes Timing Results

Binary DAG Testing Timing

0.2 0.4 0.6 0.8 1 1.2 1.4 ·105 5,000 10,000 Number of nodes in binary tree Execution time (ms) Old Impl. New Impl. 0.2 0.4 0.6 0.8 1 ·106 1,000 2,000 3,000 Number of nodes in grid graph Execution time (ms) Old Impl. New Impl.

Graham Campbell, Jack Rom¨

  • , and Detlef Plump

Newcastle University, UK; University of Oxford; University of York, UK The Improved GP 2 Compiler

slide-32
SLIDE 32

Introduction Data Structure Changes Timing Results

Transitive Closure Program

Main = link! link(a,b,x,y,z:list) x y z ⇒ x y z

1 2 3 1 2 3

a b a b where not edge(1,3)

Graham Campbell, Jack Rom¨

  • , and Detlef Plump

Newcastle University, UK; University of Oxford; University of York, UK The Improved GP 2 Compiler

slide-33
SLIDE 33

Introduction Data Structure Changes Timing Results

Transitive Closure Program

Main = link! link(a,b,x,y,z:list) x y z ⇒ x y z

1 2 3 1 2 3

a b a b where not edge(1,3)

20 40 60 80 100 10,000 20,000 30,000 40,000 Number of nodes in linked list Execution time (ms) Old Impl. New Impl. 20 40 60 80 100 120 5,000 10,000 15,000 Number of nodes in grid graph Execution time (ms) Old Impl. New Impl.

Graham Campbell, Jack Rom¨

  • , and Detlef Plump

Newcastle University, UK; University of Oxford; University of York, UK The Improved GP 2 Compiler

slide-34
SLIDE 34

Introduction Data Structure Changes Timing Results

Future Work

Faster matching/detection of nodes with a specific mark.

Graham Campbell, Jack Rom¨

  • , and Detlef Plump

Newcastle University, UK; University of Oxford; University of York, UK The Improved GP 2 Compiler

slide-35
SLIDE 35

Introduction Data Structure Changes Timing Results

Future Work

Faster matching/detection of nodes with a specific mark. Overcoming the bounded degree restriction for constant time matching (partially answered, in progress).

Graham Campbell, Jack Rom¨

  • , and Detlef Plump

Newcastle University, UK; University of Oxford; University of York, UK The Improved GP 2 Compiler

slide-36
SLIDE 36

Introduction Data Structure Changes Timing Results

Future Work

Faster matching/detection of nodes with a specific mark. Overcoming the bounded degree restriction for constant time matching (partially answered, in progress). Which classes of graph algorithms have linear time rule-based implementations (in GP 2)? Can we recognise series-parallel graphs in linear time in a rule-based language?

Graham Campbell, Jack Rom¨

  • , and Detlef Plump

Newcastle University, UK; University of Oxford; University of York, UK The Improved GP 2 Compiler

slide-37
SLIDE 37

Introduction Data Structure Changes Timing Results

Future Work

Faster matching/detection of nodes with a specific mark. Overcoming the bounded degree restriction for constant time matching (partially answered, in progress). Which classes of graph algorithms have linear time rule-based implementations (in GP 2)? Can we recognise series-parallel graphs in linear time in a rule-based language? A formal model of complexity for GP 2. We don’t know of any rule based graph programming language which has one, actually!

Graham Campbell, Jack Rom¨

  • , and Detlef Plump

Newcastle University, UK; University of Oxford; University of York, UK The Improved GP 2 Compiler

slide-38
SLIDE 38

Introduction Data Structure Changes Timing Results

Future Work

Faster matching/detection of nodes with a specific mark. Overcoming the bounded degree restriction for constant time matching (partially answered, in progress). Which classes of graph algorithms have linear time rule-based implementations (in GP 2)? Can we recognise series-parallel graphs in linear time in a rule-based language? A formal model of complexity for GP 2. We don’t know of any rule based graph programming language which has one, actually! (Semi)automated refinement of GP 2 programs without root nodes, to fast programs with root nodes (hard!).

Graham Campbell, Jack Rom¨

  • , and Detlef Plump

Newcastle University, UK; University of Oxford; University of York, UK The Improved GP 2 Compiler

slide-39
SLIDE 39

Introduction Data Structure Changes Timing Results

Future Work

Faster matching/detection of nodes with a specific mark. Overcoming the bounded degree restriction for constant time matching (partially answered, in progress). Which classes of graph algorithms have linear time rule-based implementations (in GP 2)? Can we recognise series-parallel graphs in linear time in a rule-based language? A formal model of complexity for GP 2. We don’t know of any rule based graph programming language which has one, actually! (Semi)automated refinement of GP 2 programs without root nodes, to fast programs with root nodes (hard!). https://github.com/UoYCS-plasma/GP2

Graham Campbell, Jack Rom¨

  • , and Detlef Plump

Newcastle University, UK; University of Oxford; University of York, UK The Improved GP 2 Compiler

slide-40
SLIDE 40

References

References I

Bak, Christopher (2015). “GP 2: Efficient Implementation of a Graph Programming Language”. PhD thesis. Department of Computer Science, University of York, UK. url: https://etheses.whiterose.ac.uk/12586/. Bak, Christopher and Detlef Plump (2012). “Rooted Graph Programs”. In: Proc. 7th International Workshop on Graph Based Tools (GraBaTs 2012). Ed. by Christian Krause and Bernhard Westfechtel. Vol. 54. Electronic Communications of the EASST. doi: 10.14279/tuj.eceasst.54.780. — (2016). “Compiling Graph Programs to C”. In: Proc. 9th International Conference on Graph Transformation (ICGT 2016). Ed. by Rachid Echahed and Mark Minas. Vol. 9761. Lecture Notes in Computer Science. Springer, pp. 102–117. doi: 10.1007/978-3-319-40530-8_7. Campbell, Graham (2019). “Efficient Graph Rewriting”. BSc Thesis. Department of Computer Science, University of York, UK. url: https://arxiv.org/abs/1906.05170. Campbell, Graham, Brian Courtehoute, and Detlef Plump (2019). “Linear-Time Graph Algorithms in GP 2”. In: Proc. 8th Conference on Algebra and Coalgebra in Computer Science (CALCO 2019). Ed. by Markus Roggenbach and Ana Sokolova. Vol. 139. Leibniz International Proceedings in Informatics (LIPIcs). Schloss Dagstuhl–Leibniz-Zentrum f¨ ur Informatik, 16:1–16:23. doi: 10.4230/LIPIcs.CALCO.2019.16. Courtehoute, Brian and Detlef Plump (2020). “A Fast Graph Program for Computing Minimum Spanning Trees”. In: Pre-Proc. 11th International Workshop on Graph Computation Models (GCM 2020). Ed. by Berthold Hoffmann and Mark Minas, pp. 165–183. D¨

  • rr, Heiko (1995). Efficient Graph Rewriting and its Implementation. Vol. 922. Lecture Notes in

Computer Science. Springer. doi: 10.1007/BFb0031909.

Graham Campbell, Jack Rom¨

  • , and Detlef Plump

Newcastle University, UK; University of Oxford; University of York, UK The Improved GP 2 Compiler

slide-41
SLIDE 41

References

References II

Plump, Detlef (2012). “The Design of GP 2”. In: Proc. 10th International Workshop on Reduction Strategies in Rewriting and Programming (WRS 2011). Ed. by Santiago Escobar. Vol. 82. Electronic Proceedings in Theoretical Computer Science. Open Publishing Association,

  • pp. 1–16. doi: 10.4204/EPTCS.82.1.

— (2016). “Reasoning about Graph Programs”. In: Proc. 9th International Workshop on Computing with Terms and Graphs (TERMGRAPH 2016). Ed. by Andrea Corradini and Hans Zantema. Vol. 225. Electronic Proceedings in Theoretical Computer Science. Open Publishing Association, pp. 35–44. doi: 10.4204/EPTCS.225.6. — (2017). “From Imperative to Rule-Based Graph Programs”. In: Journal of Logical and Algebraic Methods in Programming 88, pp. 154–173. doi: 10.1016/j.jlamp.2016.12.001. Poskitt, Christopher and Detlef Plump (2012). “Hoare-Style Verification of Graph Programs”. In: Fundamenta Informaticae 118.1–2, pp. 135–175. doi: 10.3233/FI-2012-708. Wulandari, Gia and Detlef Plump (2020). “Verifying Graph Programs with First-Order Logic”. In: Pre-Proc. 11th International Workshop on Graph Computation Models (GCM 2020). Ed. by Berthold Hoffmann and Mark Minas, pp. 184–205.

Graham Campbell, Jack Rom¨

  • , and Detlef Plump

Newcastle University, UK; University of Oxford; University of York, UK The Improved GP 2 Compiler