4.1.10.4. rule/Rule

class mod.Rule

This class models a graph transformation rule in the Double Pushout formalism, as the span \(L \leftarrow K \rightarrow R\). The three graphs are referred to as respectively the “left”, “context”, and “right” graphs of the rule. See Graph, Rule, and Molecule Model for more details.

The class implements the protocols.Graph protocol, which gives access to a graph view of the rule which has the left, context, and right graphs combined into a single graph, called the core graph. In addition to the combined graph view that this claas offers, there are also three graph views representing the left, context See rule/GraphInterface for details of how to use these four graph interfaces.

id

(Read-only) The unique instance id among all Rule instances.

Type:

int

left

(Read-only) A proxy object representing the left graph of the rule.

Type:

LeftGraph

context

(Read-only) A proxy object representing the context graph of the rule.

Type:

ContextGraph

right

(Read-only) A proxy object representing the right graph of the rule.

Type:

RightGraph

makeInverse()
Returns:

a rule representing the inversion of this rule.

Return type:

Rule

Raises:

LogicError if inversion is not possible (due to matching constraints).

print(printCombined=False)
print(first, second=None, printCombined=False)

Print the rule, using either the default options or the options in first and second. If first and second are the same, only one depiction will be made.

Parameters:
  • first (GraphPrinter) – the printing options used for the first depiction.

  • second (GraphPrinter) – the printing options used for the second depiction. If it is None then it is set to first.

  • printCombined (bool) – whether a depiction of the rule as a single combined graph is printed.

Returns:

a pair of filename prefixes for the PDF-files that will be compiled in post-processing. The actual names can be obtained by appending _L.pdf, _K.pdf, and _R.pdf for respectively the left side, context, and right side graphs. If first and second are the same, the two file prefixes are equal.

Return type:

tuple[str, str]

printTermState()

Print the term state for the rule.

getGMLString(withCoords=False)
Returns:

the GML representation of the rule, optionally with generated 2D coordinates.

Return type:

str

Raises:

LogicError when coordinates are requested, but none can be generated.

printGML(withCoords=False)

Print the rule in GML format, optionally with generated 2D coordinates.

Returns:

the filename of the printed GML file.

Return type:

str

Raises:

LogicError when coordinates are requested, but none can be generated.

name

The name of the rule. The default name includes the unique instance id.

Type:

str

labelType

(Read-only) The intended label type for this rule, or None if no specific label type is intended.

Type:

LabelType

numLeftComponents

(Read-only) The number of connected components of the left graph.

Type:

std::size_t

numRightComponents

(Read-only) The number of connected components of the right graph.

Type:

std::size_t

isomorphism(other, maxNumMatches=1, labelSettings=LabelSettings(LabelType.String, LabelRelation.Isomorphism))
Parameters:
  • other (Rule) – the other Rule for comparison.

  • maxNumMatches (int) – the maximum number of isomorphisms to search for.

  • labelSettings (LabelSettings) – the label settings to use during the search.

Returns:

the number of isomorphisms found between other and this rule, but at most maxNumMatches.

Return type:

int

monomorphism(host, maxNumMatches=1, labelSettings=LabelSettings(LabelType.String, LabelRelation.Isomorphism))
Parameters:
  • host (Rule) – the host Rule to check for subgraphs.

  • maxNumMatches (int) – the maximum number of morphisms to search for.

  • labelSettings (LabelSettings) – the label settings to use during the search.

Returns:

the number of monomorphisms from this rule to subgraphs of host, though at most maxNumMatches.

Return type:

int

isomorphicLeftRight(other, labelSettings=LabelSettings(LabelType.String, LabelRelation.Isomorphism))
Parameters:
  • other (Rule) – the other Rule for comparison.

  • labelSettings (LabelSettings) – the label settings to use during the search.

Returns:

whether the left-hand sides are isomorphic and the right-hand sides are isomorphic.

Return type:

bool

getVertexFromExternalId(id)

If the rule was not loaded from an external data format, then this function always return a null descriptor.

Note

In general there is no correlation between external and internal ids.

Parameters:

id (int) – the external id to find the vertex descriptor for.

Returns:

the vertex descriptor for the given external id. The descriptor is null if the external id was not used.

Return type:

Vertex

minExternalId
maxExternalId

If the rule was not loaded from an external data format, then these attributes are always return 0. Otherwise, they are the minimum/maximum external id from which non-null vertices can be obtained from getVertexFromExternalId(). If no such minimum and maximum exists, then they are 0.

Type:

int

4.1.10.4.1. Loading Functions

static Rule.fromGMLString(s, invert=False, add=True, printStereoWarnings=True)
static Rule.fromGMLFile(f, invert=False, add=True, printStereoWarnings=True)

Load a rule from a GML string or file, and maybe store it in a global list. The name of the rule is the one specified in the GML string, though when invert=True the string “, inverse” is appended to the name.

Note

If the GML string/file specifies matching constraints it is currently not possible to invert the rule. There is however a configuration option to ignore matching constraints when inverting rules.

Parameters:
  • s (str) – the GML string to load a rule from.

  • f (str or CWDPath) – name of the GML file to be loaded.

  • invert (bool) – whether to invert the loaded rule.

  • add (bool) – whether to append the rule to inputRules or not.

  • printStereoWarnings (bool) – whether to print warnings due to unhandled stereo information.

Returns:

the rule in the GML string, possibly inverted.

Return type:

Rule

static Rule.fromDFS(s, invert=False, add=True)

Load a rule from a RuleDFS string.

Parameters:
  • s (str) – the RuleDFS string to parse.

  • invert (bool) – whether to invert the loaded rule.

  • name (str) – the name of the rule. If none is given the default name is used.

  • add (bool) – whether to append the rule to inputRules or not.

Returns:

the loaded rule.

Return type:

Rule

Raises:

InputError on bad input.

mod.ruleGMLString(...)

Alias of Rule.fromGMLString().

mod.ruleGML(...)

Alias of Rule.fromGMLFile().

mod.inputRules

A list of rules to which explicitly loaded rules as default are appended.

Type:

list[Rule]