Tutorial
Configuration
Environment managment
Graph managment
Rules managment
Execution managment

GPaR 1.0x
GPaR is a parallel graph rewriting software implemented in C++ with a graphical user
interface. This freeware tool has been developed by Grenoble University.
GPaR main goal is to rewrite a graph denoted g into a graph g' by using, simultaneously, rewriting rules.
GPaR deals with overlapping matches and thus can be used for a large variety of rewriting
problems including cellular automata or Lsystems.
To tackle this problem of overlapping matches, an extended definition of graph is used. Usually, a graph is defined by an order pair (V,E) where V is the set of vertices and E a set of edges. Here, two types of vertices are identified: V=N ∪ P where N is a set of attributed nodes and P the set of attributed ports.
Ports have a central role in ensuring the effective connection between the remaining parts of g in g' and the new parts.
The methods used in GPaR are based on the theoretical results of "Parallel graph rewriting with overlapping rules" of Rachid Echahed and Aude Maignan ( CoRR,
abs/1701.06790, 2017).
Formally, we define a general structure called pregraph :
A pregraph H is a tuple H= (N_{H}, P_{H}, PN_{H}, PP_{H},
Att_{H}, att_{H})
such that:
 N_{H} is a finite set of nodes and P_{H} is a finite set of ports,
 PN_{H} is a relation PN_{H} ⊆ P_{H} × N_{H},
 PP_{H} is a symmetric binary relation on ports, PP_{H}
⊆P_{H} × P_{H},
 Att_{H} is a structure of attributes,
 att_{H} is a function att_{H}: P_{H} ⊎ N_{H} →
2^{AttH}
such that ∀ x ∈ N_{H} ⊎ P_{H},
card(att_{H}(x)) is finite.
In this context,
a graph, g, corresponds to a pregraph g=(N, P, PN, PP, Att, att)
such that:
 PN is a relation ⊆ P × N which associates
at most one node to every port.
 PP is a symmetric binary relation which associates at most one port to another port.
For a system of rewriting rules R = {l_{i} → r_{i}, i = 1 . . . n}, the lefthand sides l_{i} and the righthand sides r_{i} must be graphs. GPaR rewrites the graph g into the graph g' by firing, simultaneously, the rules of R whose lefthand sides match subgraphs of
g. Two parallel rewrite relations have been implemented in GPaR:

full parallel rewrite relation: g is rewritten in g' using all the possible matches (including eventual permutations of the same set of nodes and ports).
 parallel rewrite relation up to automorphisms: If a set of matches is obtained from one rewrite rule on a same set of nodes and ports then only one match of this set is used during the rewriting process. Confluence results can be found in the paper cited above.
Once the initial graph g, the rules and the rewrite relation are defined, GPaR proceeds sequentially to the following tasks :

It selects all the subgraphs of g whose elements match one of the pattern l_{i},
 If the parallel rewrite relation "is up to automorphism" then it reduces the set of matches to the set of matches up to automorphism;
 It replaces all the matches of all the l_{i} by a variant of r_{i}.
The states of nodes and port are computed according to the rules. A pregraph has been created.

It merges ports and edges accordingly to the rewriting modulo approach.
GPaR is a standalone software whose graphical user interface is inherited from the Qt library. It is based on Boost Graph Library to match subgraphs thanks to the BGL
vf2 subgraph isomorphism algorithm routine
(see Herb Sutter and Andrei Alexandrescu Boost c++ libraries).
It also uses a mathematical expression library based on
Fast c++ math expression parser and evaluator
to manage the rewriting rule definitions and graph state definition.
GPar is composed of several windows which are
