public class Morphism
extends java.lang.Object
if the edgeIt is not necessarily the case that all nodes and edges of the domain are mapped to a node or edge of the codomain. The methode1
is mapped to the edgee2
, thene1
ande2
have the same label, are incident to the same number of nodes, and the nodes which are incident toe1
are mapped, in order, to the nodes which are incident toe2
.
isTotal()
can be used to check if this is the case.
It is also not necessarily the case that the morphism is injective, that is,
that different nodes and edges of the domain are mapped to different nodes
and edges of the codomain. This fact can be checked by the
isInjective()
method.
Modifier and Type | Class and Description |
---|---|
static class |
Morphism.MorphismCollection
This class is a collection of morphisms.
|
static class |
Morphism.MorphismResult
This class is returned by methods that need to return a new morphism
and information about how the nodes and edges of the domain and codomain
of the new morphism correspond to the nodes and edges of the domain and
codomain of this morphism.
|
Constructor and Description |
---|
Morphism(Graph domain,
Graph codomain)
Creates a new empty Morphism.
|
Morphism(Morphism orig)
Creates a new Morphism which is a copy of another one.
|
Modifier and Type | Method and Description |
---|---|
boolean |
checkAndPut(Edge domEdge,
Edge codEdge)
Checks whether
domEdge can be mapped to codEdge and
maps domEdge to codEdge if possible. |
boolean |
checkAndPut(Node domNode,
Node codNode)
Checks whether
domNode can be mapped to codNode and
maps domNode to codNode if possible. |
Morphism |
compose(Morphism m)
Composes this morphism with another morphism.
|
static Morphism |
create(Graph domain,
Graph codomain)
Creates a new, empty morphism with given domain and codomain.
|
static Morphism |
create(Graph domain,
Graph codomain,
java.util.Map<Node,Node> nodeMap)
Creates a new morphism which only maps nodes.
|
static Morphism |
create(Graph domain,
Graph codomain,
java.util.Map<Node,Node> nodeMap,
java.util.Map<Edge,Edge> edgeMap)
Creates a new morphism from a node map and an edge map.
|
static Morphism |
createComposition(Morphism... fs)
Creates a new Morphism which is the composition of a number of
morphisms.
|
static Morphism |
createIdentity(Graph graph)
Creates a new identity morphism.
|
static Morphism |
createIsomorphism(Graph graph)
Creates a new graph which is isomorphic to a given graph and returns
an isomorphism between that graph and the new one.
|
boolean |
equals(java.lang.Object o)
Determines if this morphism is equal to a given object.
|
Edge |
get(Edge edge)
Returns the edge to which a given edge is mapped.
|
Node |
get(Node node)
Returns the node to which a given node is mapped.
|
Graph |
getCodomain()
Returns the codomain of this morphism.
|
Morphism.MorphismCollection |
getCompletions(Morphism large)
Returns all morphisms which, when composed to this morphism, result in a
given morphism.
|
Morphism.MorphismCollection |
getCompletions(Morphism large,
boolean injective)
Returns morphisms which, when composed to this morphism, results in a
given morphism.
|
Graph |
getDomain()
Returns the domain of this morphism.
|
java.util.Map<Edge,Edge> |
getEdgeMap()
Returns the edge map of this morphism.
|
Morphism.MorphismCollection |
getInjectiveCompletions(Morphism large)
Returns all injective morphisms which, when composed to this morphism,
result in a given morphism.
|
static Morphism |
getInjectiveMatch(Graph domain,
Graph codomain)
Returns an injective, total morphism from a given domain to a given
codomain which is an extension of a given morphism.
|
static Morphism |
getInjectiveMatch(Graph domain,
Graph codomain,
Morphism base)
Returns an injective morphism from a given domain to a given codomain.
|
static Morphism.MorphismCollection |
getInjectiveMatches(Graph domain,
Graph codomain)
Returns a collection of all injective morphisms from one graph to
another.
|
static Morphism.MorphismCollection |
getInjectiveMatches(Graph domain,
Graph codomain,
Morphism base)
Returns a collection of all injective, total morphisms from one graph
to another, which are an extension of a given (partial) morphism.
|
Morphism |
getInverse()
Returns a new Morphism which is the inverse of this morphism.
|
static Morphism |
getIsomorphism(Graph domain,
Graph codomain)
Returns an isomorphism from a given domain to a given codomain graph.
|
static Morphism |
getIsomorphism(Graph domain,
Graph codomain,
Morphism base)
Returns an isomorphism from a given domain to a given codomain graph
which is an extension of a given morphism.
|
static Morphism.MorphismCollection |
getIsomorphisms(Graph domain,
Graph codomain)
Returns a collection of all isomorphism between two graphs.
|
static Morphism.MorphismCollection |
getIsomorphisms(Graph domain,
Graph codomain,
Morphism base)
Returns a collection of all isomorphisms between two graphs which are
extension of a given injective morphism.
|
static Morphism |
getMatch(Graph domain,
Graph codomain)
Returns a total morphism from a given domain to a given codomain.
|
static Morphism |
getMatch(Graph domain,
Graph codomain,
boolean injective)
Returns a morphism from a given domain to a given codomain.
|
static Morphism |
getMatch(Graph domain,
Graph codomain,
boolean injective,
Morphism base)
Returns a morphism from a given domain to a given codomain which is
an extension of a given base morphism.
|
static Morphism |
getMatch(Graph domain,
Graph codomain,
Morphism base)
Returns a total morphism from a given domain to a given codomain which
is an extension of a given morphism.
|
static Morphism.MorphismCollection |
getMatches(Graph domain,
Graph codomain)
Returns a collection of all total morphisms from one graph to another.
|
static Morphism.MorphismCollection |
getMatches(Graph domain,
Graph codomain,
boolean injective)
Returns a collection of all total morphisms from one graph to another.
|
static Morphism.MorphismCollection |
getMatches(Graph domain,
Graph codomain,
boolean injective,
Morphism base)
Returns a collection of all the total morphisms from one graph to
another which are extensions of a given (partial) morphism.
|
static Morphism.MorphismCollection |
getMatches(Graph domain,
Graph codomain,
Morphism base)
Returns a collection of all the total morphisms from one graph to
another which are extensions of a given (partial) morphism.
|
java.util.Map<Node,Node> |
getNodeMap()
Returns the node map of this morphism.
|
static Morphism.MorphismCollection |
getPartialMorphisms(Graph domain,
Graph codomain,
boolean injective,
Morphism base)
Returns a MorphismCollection of partial morphisms from a domain to a
codomain which are extensions of a given base morphism.
|
static Morphism.MorphismCollection |
getPartialMorphisms(Graph domain,
Graph codomain,
Morphism base)
Returns a MorphismCollection of partial morphisms from a domain to a
codomain which are extension of a given base morphism.
|
Edge |
getPreimage(Edge value)
Returns an edge which is mapped to a given edge.
|
Node |
getPreimage(Node value)
Returns a node which is mapped to a given node.
|
java.util.Collection<Edge> |
getPreimageOfEdges(java.util.Collection<Edge> values)
Returns the pre-image of a collection of nodes.
|
java.util.Collection<Node> |
getPreimageOfNodes(java.util.Collection<Node> values)
Returns the pre-image of a collection of nodes.
|
de.uni_due.inf.ti.util.Pair<Morphism,Morphism> |
getSubMorphism(Morphism srcInc)
This method returns a pair of morphisms (
f ,g ) such that
srcInc ; this == f ; g . |
Morphism.MorphismResult |
getSurjectiveMorphism()
Creates a new morphism which is equal to this morphism, except that
the codomain is restricted to the range of this morphism.
|
Morphism.MorphismResult |
getTotalSurjectiveMorphism()
Creates a new morphism which is equal to this one, except that the
domain and codomain are restricted to be the definition domain and
range of this morphism.
|
int |
hashCode() |
boolean |
inRange(Edge edge)
Determines wheter an edge occurs in the range of this morphism.
|
boolean |
inRange(Node node)
Determines whether a node occurs in the range of this morphism.
|
boolean |
isExtensionOf(Morphism m)
Determines whether this morphism is an extension of another morphism.
|
boolean |
isInjective()
Determines whether this morphism is injective.
|
boolean |
isIsomorphism()
Determines whether this morphism is an isomorphism.
|
boolean |
isSurjective()
Determines if this morphism is surjective.
|
boolean |
isTotal()
Determines if this morphism is total.
|
protected void |
onModification()
This method is called after this morphism is modified with one of
the
mapNode , mapEdge , unmapNode or
unmapEdge methods. |
void |
put(Edge domEdge,
Edge codEdge)
Maps an edge of the domain to an edge of the codomain.
|
void |
put(Node domNode,
Node codNode)
Maps a node of the domain to a node of the codomain.
|
Edge |
remove(Edge domEdge)
Removes the mapping for an edge in the domain.
|
Node |
remove(Node domNode)
Removes the mapping for a node in the domain.
|
java.lang.String |
toString() |
java.lang.String |
toString(java.lang.String indent)
Returns a string representation of this morphism with a user-defined
indentation string.
|
public Morphism(Morphism orig)
orig
- the Morphism the new Morphism is a copy ofjava.lang.NullPointerException
- if orig
is null
public void put(Node domNode, Node codNode)
domNode
- node in the domain graphcodNode
- node in the codomain graphjava.lang.IllegalArgumentException
- if domNode
is not a node of the domain, codNode
is
not a node of the codomain or mapping domNode
to
codNode
would lead to an invariant violationpublic boolean checkAndPut(Node domNode, Node codNode)
domNode
can be mapped to codNode
and
maps domNode
to codNode
if possible.domNode
- node in the domain graphcodNode
- node in the codomain graphtrue
if domNode
could be mapped to codNode
,
false
otherwisejava.lang.IllegalArgumentException
- if domNode
is not a node of the domain or codNode
is not a node of the codomain.public void put(Edge domEdge, Edge codEdge)
domEdge
to the respective nodes of codEdge
.domEdge
- edge of the domain graphcodEdge
- edge of the codomain graphjava.lang.IllegalArgumentException
- if domEdge
is not an edge of the domain, codEdge
is
not an edge of the codomain or mapping domEdge
to
codEdge
would lead to an invariant violationpublic boolean checkAndPut(Edge domEdge, Edge codEdge)
domEdge
can be mapped to codEdge
and
maps domEdge
to codEdge
if possible.domEdge
- edge in the domain graphcodEdge
- edge in the codomain graphtrue
if domEdge
could be mapped to codEdge
,
false
otherwisejava.lang.IllegalArgumentException
- if domNode
is not an edge of the domain or codEdge
is not an edge of the codomain.public Node remove(Node domNode)
domNode
- the node which is to be removedjava.lang.IllegalArgumentException
- if the node does not belong to the domain graph or is connected to
an edge which is still mapped by this morphismpublic Node get(Node node)
node
- the node of the domain the image of which is to be returnednode
is mapped, or
null
if node
is not mapped to anything.public Node getPreimage(Node value)
value
- a node in the codomain graphvalue
, or
null
if no such node existspublic java.util.Collection<Node> getPreimageOfNodes(java.util.Collection<Node> values)
values
.values
- the collection of nodes the pre-image of which is to be determinedvalues
public Edge get(Edge edge)
edge
- the edge of the domain the image of which is to be returnededge
is mapped, or
null
if edge
is not mapped to anything.public Edge getPreimage(Edge value)
value
- a node in the codomain graphvalue
, or
null
if no such node existspublic java.util.Collection<Edge> getPreimageOfEdges(java.util.Collection<Edge> values)
values
.values
- the collection of nodes the pre-image of which is to be determinedvalues
public Edge remove(Edge domEdge)
domEdge
- the edge which is to be removedjava.lang.IllegalArgumentException
- if domEdge
doesn't belong to the domain of this morphismpublic boolean inRange(Node node)
public boolean inRange(Edge edge)
public Morphism getInverse()
If this morphism is total, then the inverse morphism is surjective; if this morphism is surjective, then the inverse morphism is total. The inverse morphism is always injective.
The returned morphism is only uniquely defined if this morphism is injective, but no injectivity checks are performed. If this morphism is not injective, then there exist more than one morphisms which satisfy the condition of the first paragraph; one of those is returned arbitrarily.
public boolean isTotal()
true
if this morphism is total, false
if notpublic boolean isSurjective()
true
if this morphism is surjective, false
if notpublic boolean isInjective()
true
if this morphism is injective, false
otherwisepublic boolean isIsomorphism()
true
if this morphism is an isomorphism, false
otherwisepublic java.util.Map<Node,Node> getNodeMap()
public java.util.Map<Edge,Edge> getEdgeMap()
public Graph getDomain()
The domain graph may be modified by the user. If nodes or edges are added to the domain graph, this Morphism will not map them to any nodes or edges of the codomain graph (that is, the morphism will not be total after the addition). If nodes or edges are removed from the domain graph, corresponding mappings will be removed from this Morphism.
public Graph getCodomain()
The codomain graph may be modified by the user. If nodes or edges are added to the codomain graph, this Morphism will not map to them (that is, the morphism will not be surjective after the addition). If nodes or edges are removed from the codomain graph, mappings to them will be removed from this Morphism.
public de.uni_due.inf.ti.util.Pair<Morphism,Morphism> getSubMorphism(Morphism srcInc)
f
,g
) such that
srcInc ; this == f ; g
. If srcInc
is injective, this
pair of morphisms is uniquely determined; otherwise, arbitrary morphisms
for which the mentioned condition holds will be returned.
The argument must be a total morphism; if not, an
IllegalArgumentException
is thrown.
srcInc
- morphism which identifies a subgraph of the domain of this morphismp
such that
srcInc ; this == p.getFirst() ; p.getSecond()
.java.lang.IllegalArgumentException
- if srcInc
's codomain is not the same graph as this
morphisms domainpublic java.lang.String toString(java.lang.String indent)
indent
- indentation string which is put at the start of each line of the
returned string representationpublic java.lang.String toString()
toString
in class java.lang.Object
public int hashCode()
hashCode
in class java.lang.Object
public boolean equals(java.lang.Object o)
equals
in class java.lang.Object
o
- the object of which is to be determined whether it is equal to this
morphismtrue
if o
is a morphism with the same domain and
codomain and equal node and edge mapsprotected void onModification()
mapNode
, mapEdge
, unmapNode
or
unmapEdge
methods.
Subclasses may override this method to perform post-processing, for example notifying other objects of the modification. The default implementation does nothing.
public Morphism compose(Morphism m)
The method call m1.compose(m2)
is equivalent to the method call
Morphism.createComposition(m1,m2)
.
m
- the morphism to compose to this morphism.m
composed to itpublic Morphism.MorphismCollection getCompletions(Morphism large, boolean injective)
large
- the result morphisminjective
- flag which controls if the returned morphisms must be injectivejava.lang.IllegalArgumentException
- if getDomain() != large.getDomain()
public Morphism.MorphismCollection getCompletions(Morphism large)
The call getCompletions(m)
is equivalent to
getCompletions(m, false)
.
large
- the result morphismjava.lang.IllegalArgumentException
- when getDomain() != large.getDomain()
public Morphism.MorphismCollection getInjectiveCompletions(Morphism large)
The call getInjectiveCompletions(m)
is equivalent to
getCompletions(m, true)
.
large
- the result morphismjava.lang.IllegalArgumentException
- when getDomain() != large.getDomain()
public boolean isExtensionOf(Morphism m)
m1
is an extension of a morphism m2
, if
all nodes and edges for which m2
is defined are mapped to the
same objects by m1
and m2
.m
- the morphism for which it is to be determined whether or not this
morphism is an extension of ittrue
if this morphism is an extension of m
,
false
otherwisepublic Morphism.MorphismResult getSurjectiveMorphism()
mr
, where mr.getResult()
equals f as above, mr.getCodomainCorrespondence()
equals c as above, and mr.getDomainCorrespondence()
is an identity morphism for the domain of this morphism.public Morphism.MorphismResult getTotalSurjectiveMorphism()
public static Morphism create(Graph domain, Graph codomain)
domain
- domain of the new morphismcodomain
- codomain of the new morphismdomain
to codomain
public static Morphism create(Graph domain, Graph codomain, java.util.Map<Node,Node> nodeMap)
nodeMap == null
, this constructor creates an empty
morphism from domain
to codomain
.domain
- domain graph of the morphismcodomain
- codomain graph of the morphismnodeMap
- map from nodes of the domain graph to nodes of the codomain graphjava.lang.IllegalArgumentException
- if nodeMap
contains a key which is not a node of
domain
, or a value which is not a node of codomain
public static Morphism create(Graph domain, Graph codomain, java.util.Map<Node,Node> nodeMap, java.util.Map<Edge,Edge> edgeMap)
domain
- domain of the new morphismcodomain
- codomain of the new morphismnodeMap
- map which maps nodes of the domain to nodes of the codomainedgeMap
- map which maps edges of the domain to edges of the codomainIllegalArgumentException
- if nodes or edges outside of the domain or codomain occur as key or
value in of the maps, or if the maps are inconsistent with each
otherpublic static Morphism createIdentity(Graph graph)
graph
- the domain and codomain of the new identity morphismgraph
public static Morphism createIsomorphism(Graph graph)
The newly created graph is the codomain of the returned morphism,
while createIsomorphism(graph).getDomain() == graph
.
public static Morphism createComposition(Morphism... fs)
If f1,...,fn are composable morphisms (mathematically, fn o ... o f1 is defined), then Morphism.createComposition(f1,...,fn) returns the composition of f1,...,fn.
fs
- the Morphisms which are to be composedjava.lang.IllegalArgumentException
- if fs
is empty or if the argument morphisms are not
composablepublic static Morphism.MorphismCollection getMatches(Graph domain, Graph codomain, Morphism base)
Typically, this method is used in code like:
for (Morphism m : Morphism.getMorphisms(g1, g2, base)) { ... }Note: see
Morphism.MorphismCollection
for performance
notes about the returned collection.domain
- the domain of the morphismscodomain
- the codomain of the morphismsbase
- the morphism of which all returned morphism are an extensiondomain
to
codomain
, which are an extension of base
java.lang.NullPointerException
- if domain
or codomain
is null
public static Morphism.MorphismCollection getMatches(Graph domain, Graph codomain)
for (Morphism m : Morphism.getMorphisms(g1, g2)) { ... }Note: see
Morphism.MorphismCollection
for performance
notes about the returned collection.domain
- the domain of the morphismscodomain
- the codomain of the morphismsdomain
to
codomain
java.lang.NullPointerException
- if domain
or codomain
is null
public static Morphism getMatch(Graph domain, Graph codomain)
domain
- domain of the morphismcodomain
- codomain of the morphismdomain
to codomain
, or null
if such a morphism does not existjava.lang.NullPointerException
- if domain
or codomain
is null
public static Morphism getMatch(Graph domain, Graph codomain, Morphism base)
domain
- domain of the morphismcodomain
- codomain of the morphismbase
- morphism of which the returned morphism is an extensiondomain
to codomain
which is an
extension of base), or {@code null} if such a morphism does
not existjava.lang.NullPointerException
- if domain
or codomain
is null
public static Morphism.MorphismCollection getInjectiveMatches(Graph domain, Graph codomain, Morphism base)
Typically, this method is used in code like:
for (Morphism m : Morphism.getInjectiveMorphisms(g1, g2, base)) { ... }Note: see
Morphism.MorphismCollection
for performance
notes about the returned collection.domain
- the domain of the morphismscodomain
- the codomain of the morphismsdomain
to codomain
which are an extension of base
java.lang.NullPointerException
- if domain
or codomain
is null
java.lang.IllegalArgumentException
- when base
is non-null and not an injective morphismpublic static Morphism.MorphismCollection getInjectiveMatches(Graph domain, Graph codomain)
for (Morphism m : Morphism.getInjectiveMorphisms(g1, g2)) { ... }
domain
- the domain of the morphismscodomain
- the codomain of the morphismsdomain
to codomain
java.lang.NullPointerException
- if domain
or codomain
is null
public static Morphism getInjectiveMatch(Graph domain, Graph codomain, Morphism base)
domain
- domain of the morphismcodomain
- codomain of the morphismbase
- morphism of which the returned morphism is an extensiondomain
to codomain
which is an
extension of base
, or null
if such a morphism
does not existjava.lang.NullPointerException
- if domain
or codomain
is null
java.lang.IllegalArgumentException
- if base
is non-null and not an injective morphism from
domain
to codomain
public static Morphism getInjectiveMatch(Graph domain, Graph codomain)
domain
- domain of the morphismcodomain
- codomain of the morphismbase
- morphism of which the returned morphism is an extensiondomain
to codomain
, or null
if such a morphism does not existjava.lang.NullPointerException
- if domain
or codomain
is null
java.lang.IllegalArgumentException
- if base
is not an injective morphism from domain
to
codomain
public static Morphism.MorphismCollection getIsomorphisms(Graph domain, Graph codomain, Morphism base)
for (Morphism m : Morphism.getIsomorphisms(g1, g2, base)) { ... }Note: see
Morphism.MorphismCollection
for performance
notes about the returned collection.domain
- the domain of the morphismscodomain
- the codomain of the morphismsdomain
and
codomain
java.lang.NullPointerException
- if domain
or codomain
is null
java.lang.IllegalArgumentException
- when base
is non-null and not an injective morphism from
domain
to domain
public static Morphism.MorphismCollection getIsomorphisms(Graph domain, Graph codomain)
for (Morphism m : Morphism.getIsomorphisms(g1, g2)) { ... }Note: see
Morphism.MorphismCollection
for performance
notes about the returned collection.domain
- the domain of the morphismscodomain
- the codomain of the morphismsdomain
and
codomain
java.lang.NullPointerException
- if domain
or codomain
is null
java.lang.IllegalArgumentException
- when base
is non-null and not an injective morphismpublic static Morphism getIsomorphism(Graph domain, Graph codomain, Morphism base)
domain
- domain of the morphismcodomain
- codomain of the morphismbase
- morphism of which the returned morphism must be an extensiondomain
to codomain
, or
null
if domain
and codomain
are not
isomorphicjava.lang.NullPointerException
- if domain
or codomain
is null
java.lang.IllegalArgumentException
- if base
is non-null and not an injective morphism from
domain
to codomain
public static Morphism getIsomorphism(Graph domain, Graph codomain)
domain
- domain of the morphismcodomain
- codomain of the morphismdomain
to codomain
, or
null
if domain
and codomain
are not
isomorphicjava.lang.NullPointerException
- if domain
or codomain
is null
public static Morphism.MorphismCollection getMatches(Graph domain, Graph codomain, boolean injective, Morphism base)
A morphism m is an extension of a morphism m', when it has the same domain and codomain, and each node and edge mapped by m' is mapped to the same node or edge by m.
Typically, this method is used in code like:
for (Morphism m : Morphism.getMorphisms(g1, g2, inj, base)) { ... }Note: see
Morphism.MorphismCollection
for performance
notes about the returned collection.domain
- the domain of the morphismscodomain
- the codomain of the morphismsinjective
- flag which controls whether only injective morphisms are to be
returnedbase
- the morphism of which all returned morphism are an extensionIterable
object which iterates through all morphisms
from domain
to codomain
java.lang.NullPointerException
- if domain
or codomain
is null
public static Morphism.MorphismCollection getMatches(Graph domain, Graph codomain, boolean injective)
for (Morphism m : Morphism.getMorphisms(g1, g2, inj)) { ... }
This method is equivalent to
getMatches
(domain,
codomain, injective, null)}.
Note: see Morphism.MorphismCollection
for performance
notes about the returned collection.
domain
- the domain of the morphismscodomain
- the codomain of the morphismsinjective
- flag which controls whether only injective morphisms are to be
returnedIterable
object which iterates through all morphisms
from domain
to codomain
java.lang.NullPointerException
- if domain
or codomain
is null
public static Morphism getMatch(Graph domain, Graph codomain, boolean injective, Morphism base)
domain
- the domain of the morphismcodomain
- the codomain of the morphisminjective
- whether or not the morphism must be injectivebase
- base morphismdomain
to codomain
which is an
extension of base
, or null
if such a morphism does
not existjava.lang.NullPointerException
- if domain
or codomain
is null
public static Morphism getMatch(Graph domain, Graph codomain, boolean injective)
domain
- the domain of the morphismcodomain
- the codomain of the morphisminjective
- flag which controls whether or not the morphism must be injectivedomain
to codomain
, or null
if such a morphism does not existjava.lang.NullPointerException
- if domain
or codomain
is null
public static Morphism.MorphismCollection getPartialMorphisms(Graph domain, Graph codomain, boolean injective, Morphism base)
Currently, the collection is not guaranteed to contain all
(injective) partial morphisms from domain
to codomain
,
but it is quaranteed to contain all total ones.
domain
- the domain of the morphismscodomain
- the codomain of the morphismsinjective
- flag which controls whether the returned collection should contain
only injective partial morphismsbase
- morphism of which all returned morphisms are an extensiondomain
to
codomain
public static Morphism.MorphismCollection getPartialMorphisms(Graph domain, Graph codomain, Morphism base)
Currently, the collection is not guaranteed to contain all
(injective) partial morphisms from domain
to codomain
,
but it is quaranteed to contain all total ones.
domain
- the domain of the morphismscodomain
- the codomain of the morphismsbase
- morphism of which all returned morphisms are an extensiondomain
to
codomain