-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathGraph-GraphMorphism.html
15 lines (15 loc) · 36.7 KB
/
Graph-GraphMorphism.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Graph.GraphMorphism</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();setSynopsis("mini_Graph-GraphMorphism.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/Graph.GraphMorphism.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">verigraph-1.1.1: Software specification and verification tool based on graph rewriting.</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>Safe</td></tr><tr><th>Language</th><td>Haskell2010</td></tr></table><p class="caption">Graph.GraphMorphism</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#g:1">Types</a></li><li><a href="#g:2">Construction</a></li><li><a href="#g:3">Transformation</a></li><li><a href="#g:4">Query</a></li></ul></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><span class="keyword">data</span> <a href="#t:GraphMorphism">GraphMorphism</a> a b</li><li class="src short"><a href="#v:empty">empty</a> :: <a href="Graph-Graph.html#t:Graph">Graph</a> a b -> <a href="Graph-Graph.html#t:Graph">Graph</a> a b -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b</li><li class="src short"><a href="#v:buildGraphMorphism">buildGraphMorphism</a> :: <a href="Graph-Graph.html#t:Graph">Graph</a> a b -> <a href="Graph-Graph.html#t:Graph">Graph</a> a b -> [(<a href="../base-4.9.1.0/Data-Int.html#t:Int">Int</a>, <a href="../base-4.9.1.0/Data-Int.html#t:Int">Int</a>)] -> [(<a href="../base-4.9.1.0/Data-Int.html#t:Int">Int</a>, <a href="../base-4.9.1.0/Data-Int.html#t:Int">Int</a>)] -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b</li><li class="src short"><a href="#v:fromGraphsAndRelations">fromGraphsAndRelations</a> :: <a href="Graph-Graph.html#t:Graph">Graph</a> a b -> <a href="Graph-Graph.html#t:Graph">Graph</a> a b -> <a href="Abstract-Relation.html#t:Relation">Relation</a> <a href="Graph-Graph.html#t:NodeId">NodeId</a> -> <a href="Abstract-Relation.html#t:Relation">Relation</a> <a href="Graph-Graph.html#t:EdgeId">EdgeId</a> -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b</li><li class="src short"><a href="#v:invertGraphMorphism">invertGraphMorphism</a> :: <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b</li><li class="src short"><a href="#v:updateCodomain">updateCodomain</a> :: <a href="Graph-Graph.html#t:Graph">Graph</a> a b -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b</li><li class="src short"><a href="#v:updateDomain">updateDomain</a> :: <a href="Graph-Graph.html#t:Graph">Graph</a> a b -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b</li><li class="src short"><a href="#v:updateNodes">updateNodes</a> :: <a href="Graph-Graph.html#t:NodeId">NodeId</a> -> <a href="Graph-Graph.html#t:NodeId">NodeId</a> -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b</li><li class="src short"><a href="#v:updateNodeRelation">updateNodeRelation</a> :: <a href="Graph-Graph.html#t:NodeId">NodeId</a> -> <a href="Graph-Graph.html#t:NodeId">NodeId</a> -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> (<a href="../base-4.9.1.0/Data-Maybe.html#t:Maybe">Maybe</a> a) b -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> (<a href="../base-4.9.1.0/Data-Maybe.html#t:Maybe">Maybe</a> a) b</li><li class="src short"><a href="#v:updateEdgeRelation">updateEdgeRelation</a> :: <a href="Graph-Graph.html#t:EdgeId">EdgeId</a> -> <a href="Graph-Graph.html#t:EdgeId">EdgeId</a> -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b</li><li class="src short"><a href="#v:updateEdges">updateEdges</a> :: <a href="Graph-Graph.html#t:EdgeId">EdgeId</a> -> <a href="Graph-Graph.html#t:EdgeId">EdgeId</a> -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b</li><li class="src short"><a href="#v:removeEdgeFromDomain">removeEdgeFromDomain</a> :: <a href="Graph-Graph.html#t:EdgeId">EdgeId</a> -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b</li><li class="src short"><a href="#v:removeEdgeFromCodomain">removeEdgeFromCodomain</a> :: <a href="Graph-Graph.html#t:EdgeId">EdgeId</a> -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b</li><li class="src short"><a href="#v:removeNodeFromDomain">removeNodeFromDomain</a> :: <a href="Graph-Graph.html#t:NodeId">NodeId</a> -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b</li><li class="src short"><a href="#v:removeNodeFromDomainForced">removeNodeFromDomainForced</a> :: <a href="Graph-Graph.html#t:NodeId">NodeId</a> -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b</li><li class="src short"><a href="#v:removeNodeFromCodomain">removeNodeFromCodomain</a> :: <a href="Graph-Graph.html#t:NodeId">NodeId</a> -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b</li><li class="src short"><a href="#v:createEdgeOnDomain">createEdgeOnDomain</a> :: <a href="Graph-Graph.html#t:EdgeId">EdgeId</a> -> <a href="Graph-Graph.html#t:NodeId">NodeId</a> -> <a href="Graph-Graph.html#t:NodeId">NodeId</a> -> <a href="Graph-Graph.html#t:EdgeId">EdgeId</a> -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a (<a href="../base-4.9.1.0/Data-Maybe.html#t:Maybe">Maybe</a> b) -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a (<a href="../base-4.9.1.0/Data-Maybe.html#t:Maybe">Maybe</a> b)</li><li class="src short"><a href="#v:createEdgeOnCodomain">createEdgeOnCodomain</a> :: <a href="Graph-Graph.html#t:EdgeId">EdgeId</a> -> <a href="Graph-Graph.html#t:NodeId">NodeId</a> -> <a href="Graph-Graph.html#t:NodeId">NodeId</a> -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a (<a href="../base-4.9.1.0/Data-Maybe.html#t:Maybe">Maybe</a> b) -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a (<a href="../base-4.9.1.0/Data-Maybe.html#t:Maybe">Maybe</a> b)</li><li class="src short"><a href="#v:createNodeOnDomain">createNodeOnDomain</a> :: <a href="Graph-Graph.html#t:NodeId">NodeId</a> -> <a href="Graph-Graph.html#t:NodeId">NodeId</a> -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> (<a href="../base-4.9.1.0/Data-Maybe.html#t:Maybe">Maybe</a> a) b -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> (<a href="../base-4.9.1.0/Data-Maybe.html#t:Maybe">Maybe</a> a) b</li><li class="src short"><a href="#v:createNodeOnCodomain">createNodeOnCodomain</a> :: <a href="Graph-Graph.html#t:NodeId">NodeId</a> -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> (<a href="../base-4.9.1.0/Data-Maybe.html#t:Maybe">Maybe</a> a) b -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> (<a href="../base-4.9.1.0/Data-Maybe.html#t:Maybe">Maybe</a> a) b</li><li class="src short"><a href="#v:applyNode">applyNode</a> :: <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="Graph-Graph.html#t:NodeId">NodeId</a> -> <a href="../base-4.9.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Graph-Graph.html#t:NodeId">NodeId</a></li><li class="src short"><a href="#v:applyNodeUnsafe">applyNodeUnsafe</a> :: <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="Graph-Graph.html#t:NodeId">NodeId</a> -> <a href="Graph-Graph.html#t:NodeId">NodeId</a></li><li class="src short"><a href="#v:applyEdge">applyEdge</a> :: <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="Graph-Graph.html#t:EdgeId">EdgeId</a> -> <a href="../base-4.9.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Graph-Graph.html#t:EdgeId">EdgeId</a></li><li class="src short"><a href="#v:applyEdgeUnsafe">applyEdgeUnsafe</a> :: <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="Graph-Graph.html#t:EdgeId">EdgeId</a> -> <a href="Graph-Graph.html#t:EdgeId">EdgeId</a></li><li class="src short"><a href="#v:nodeRelation">nodeRelation</a> :: <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="Abstract-Relation.html#t:Relation">Relation</a> <a href="Graph-Graph.html#t:NodeId">NodeId</a></li><li class="src short"><a href="#v:edgeRelation">edgeRelation</a> :: <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="Abstract-Relation.html#t:Relation">Relation</a> <a href="Graph-Graph.html#t:EdgeId">EdgeId</a></li><li class="src short"><a href="#v:orphanNodeIds">orphanNodeIds</a> :: <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> [<a href="Graph-Graph.html#t:NodeId">NodeId</a>]</li><li class="src short"><a href="#v:orphanEdgeIds">orphanEdgeIds</a> :: <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> [<a href="Graph-Graph.html#t:EdgeId">EdgeId</a>]</li><li class="src short"><a href="#v:orphanEdges">orphanEdges</a> :: <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> [<a href="Graph-Graph.html#t:Edge">Edge</a> b]</li><li class="src short"><a href="#v:isPartialInjective">isPartialInjective</a> :: <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="../base-4.9.1.0/Data-Bool.html#t:Bool">Bool</a></li></ul></div><div id="interface"><h1 id="g:1">Types</h1><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:GraphMorphism" class="def">GraphMorphism</a> a b <a href="src/Graph.GraphMorphism.html#GraphMorphism" class="link">Source</a> <a href="#t:GraphMorphism" class="selflink">#</a></p><div class="subs instances"><p id="control.i:GraphMorphism" class="caption collapser" onclick="toggleSection('i:GraphMorphism')">Instances</p><div id="section.i:GraphMorphism" class="show"><table><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:id:GraphMorphism:Eq:1" class="instance expander" onclick="toggleSection('i:id:GraphMorphism:Eq:1')"></span> <a href="../base-4.9.1.0/Data-Eq.html#t:Eq">Eq</a> (<a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b)</span> <a href="src/Graph.GraphMorphism.html#line-55" class="link">Source</a> <a href="#t:GraphMorphism" class="selflink">#</a></td><td class="doc empty"> </td></tr><tr><td colspan="2"><div id="section.i:id:GraphMorphism:Eq:1" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:-61--61-">(==)</a> :: <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="../base-4.9.1.0/Data-Bool.html#t:Bool">Bool</a> <a href="#v:-61--61-" class="selflink">#</a></p><p class="src"><a href="#v:-47--61-">(/=)</a> :: <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="../base-4.9.1.0/Data-Bool.html#t:Bool">Bool</a> <a href="#v:-47--61-" class="selflink">#</a></p></div></div></td></tr><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:id:GraphMorphism:Show:2" class="instance expander" onclick="toggleSection('i:id:GraphMorphism:Show:2')"></span> <a href="../base-4.9.1.0/Text-Show.html#t:Show">Show</a> (<a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b)</span> <a href="src/Graph.GraphMorphism.html#line-61" class="link">Source</a> <a href="#t:GraphMorphism" class="selflink">#</a></td><td class="doc empty"> </td></tr><tr><td colspan="2"><div id="section.i:id:GraphMorphism:Show:2" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:showsPrec">showsPrec</a> :: <a href="../base-4.9.1.0/Data-Int.html#t:Int">Int</a> -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="../base-4.9.1.0/Text-Show.html#t:ShowS">ShowS</a> <a href="#v:showsPrec" class="selflink">#</a></p><p class="src"><a href="#v:show">show</a> :: <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="../base-4.9.1.0/Data-String.html#t:String">String</a> <a href="#v:show" class="selflink">#</a></p><p class="src"><a href="#v:showList">showList</a> :: [<a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b] -> <a href="../base-4.9.1.0/Text-Show.html#t:ShowS">ShowS</a> <a href="#v:showList" class="selflink">#</a></p></div></div></td></tr><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:id:GraphMorphism:Valid:3" class="instance expander" onclick="toggleSection('i:id:GraphMorphism:Valid:3')"></span> <a href="Abstract-Valid.html#t:Valid">Valid</a> (<a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b)</span> <a href="src/Graph.GraphMorphism.html#line-282" class="link">Source</a> <a href="#t:GraphMorphism" class="selflink">#</a></td><td class="doc empty"> </td></tr><tr><td colspan="2"><div id="section.i:id:GraphMorphism:Valid:3" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:isValid">isValid</a> :: <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="../base-4.9.1.0/Data-Bool.html#t:Bool">Bool</a> <a href="src/Abstract.Valid.html#isValid" class="link">Source</a> <a href="#v:isValid" class="selflink">#</a></p><p class="src"><a href="#v:validate">validate</a> :: <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="Abstract-Valid.html#t:ValidationResult">ValidationResult</a> <a href="src/Abstract.Valid.html#validate" class="link">Source</a> <a href="#v:validate" class="selflink">#</a></p></div></div></td></tr><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:id:GraphMorphism:Morphism:4" class="instance expander" onclick="toggleSection('i:id:GraphMorphism:Morphism:4')"></span> <a href="Abstract-Morphism.html#t:Morphism">Morphism</a> (<a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b)</span> <a href="src/Graph.GraphMorphism.html#line-260" class="link">Source</a> <a href="#t:GraphMorphism" class="selflink">#</a></td><td class="doc empty"> </td></tr><tr><td colspan="2"><div id="section.i:id:GraphMorphism:Morphism:4" class="inst-details hide"><div class="subs associated-types"><p class="caption">Associated Types</p><p class="src"><span class="keyword">type</span> <a href="Abstract-Morphism.html#t:Obj">Obj</a> (<a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b) :: <a href="../base-4.9.1.0/Data-Kind.html#t:-42-">*</a> <a href="src/Abstract.Morphism.html#Obj" class="link">Source</a> <a href="#t:Obj" class="selflink">#</a></p></div> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:compose">compose</a> :: <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b <a href="src/Abstract.Morphism.html#compose" class="link">Source</a> <a href="#v:compose" class="selflink">#</a></p><p class="src"><a href="#v:domain">domain</a> :: <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="Abstract-Morphism.html#t:Obj">Obj</a> (<a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b) <a href="src/Abstract.Morphism.html#domain" class="link">Source</a> <a href="#v:domain" class="selflink">#</a></p><p class="src"><a href="#v:codomain">codomain</a> :: <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="Abstract-Morphism.html#t:Obj">Obj</a> (<a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b) <a href="src/Abstract.Morphism.html#codomain" class="link">Source</a> <a href="#v:codomain" class="selflink">#</a></p><p class="src"><a href="#v:id">id</a> :: <a href="Abstract-Morphism.html#t:Obj">Obj</a> (<a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b) -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b <a href="src/Abstract.Morphism.html#id" class="link">Source</a> <a href="#v:id" class="selflink">#</a></p><p class="src"><a href="#v:isMonomorphism">isMonomorphism</a> :: <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="../base-4.9.1.0/Data-Bool.html#t:Bool">Bool</a> <a href="src/Abstract.Morphism.html#isMonomorphism" class="link">Source</a> <a href="#v:isMonomorphism" class="selflink">#</a></p><p class="src"><a href="#v:isEpimorphism">isEpimorphism</a> :: <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="../base-4.9.1.0/Data-Bool.html#t:Bool">Bool</a> <a href="src/Abstract.Morphism.html#isEpimorphism" class="link">Source</a> <a href="#v:isEpimorphism" class="selflink">#</a></p><p class="src"><a href="#v:isIsomorphism">isIsomorphism</a> :: <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="../base-4.9.1.0/Data-Bool.html#t:Bool">Bool</a> <a href="src/Abstract.Morphism.html#isIsomorphism" class="link">Source</a> <a href="#v:isIsomorphism" class="selflink">#</a></p></div></div></td></tr><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:id:GraphMorphism:Obj:5" class="instance expander" onclick="toggleSection('i:id:GraphMorphism:Obj:5')"></span> <span class="keyword">type</span> <a href="Abstract-Morphism.html#t:Obj">Obj</a> (<a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b)</span> <a href="src/Graph.GraphMorphism.html#line-261" class="link">Source</a> <a href="#t:GraphMorphism" class="selflink">#</a></td><td class="doc empty"> </td></tr><tr><td colspan="2"><div id="section.i:id:GraphMorphism:Obj:5" class="inst-details hide"><div class="src"><span class="keyword">type</span> <a href="Abstract-Morphism.html#t:Obj">Obj</a> (<a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b) = <a href="Graph-Graph.html#t:Graph">Graph</a> a b</div></div></td></tr></table></div></div></div><h1 id="g:2">Construction</h1><div class="top"><p class="src"><a id="v:empty" class="def">empty</a> :: <a href="Graph-Graph.html#t:Graph">Graph</a> a b -> <a href="Graph-Graph.html#t:Graph">Graph</a> a b -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b <a href="src/Graph.GraphMorphism.html#empty" class="link">Source</a> <a href="#v:empty" class="selflink">#</a></p><div class="doc"><p>An empty morphism between two graphs.</p></div></div><div class="top"><p class="src"><a id="v:buildGraphMorphism" class="def">buildGraphMorphism</a> :: <a href="Graph-Graph.html#t:Graph">Graph</a> a b -> <a href="Graph-Graph.html#t:Graph">Graph</a> a b -> [(<a href="../base-4.9.1.0/Data-Int.html#t:Int">Int</a>, <a href="../base-4.9.1.0/Data-Int.html#t:Int">Int</a>)] -> [(<a href="../base-4.9.1.0/Data-Int.html#t:Int">Int</a>, <a href="../base-4.9.1.0/Data-Int.html#t:Int">Int</a>)] -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b <a href="src/Graph.GraphMorphism.html#buildGraphMorphism" class="link">Source</a> <a href="#v:buildGraphMorphism" class="selflink">#</a></p><div class="doc"><p>Construct a graph morphism</p></div></div><div class="top"><p class="src"><a id="v:fromGraphsAndRelations" class="def">fromGraphsAndRelations</a> :: <a href="Graph-Graph.html#t:Graph">Graph</a> a b -> <a href="Graph-Graph.html#t:Graph">Graph</a> a b -> <a href="Abstract-Relation.html#t:Relation">Relation</a> <a href="Graph-Graph.html#t:NodeId">NodeId</a> -> <a href="Abstract-Relation.html#t:Relation">Relation</a> <a href="Graph-Graph.html#t:EdgeId">EdgeId</a> -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b <a href="src/Graph.GraphMorphism.html#fromGraphsAndRelations" class="link">Source</a> <a href="#v:fromGraphsAndRelations" class="selflink">#</a></p><div class="doc"><p>Constructs a <code>GraphMorphism</code> from two Graphs, a node relation and a edge relation.</p></div></div><h1 id="g:3">Transformation</h1><div class="top"><p class="src"><a id="v:invertGraphMorphism" class="def">invertGraphMorphism</a> :: <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b <a href="src/Graph.GraphMorphism.html#invertGraphMorphism" class="link">Source</a> <a href="#v:invertGraphMorphism" class="selflink">#</a></p><div class="doc"><p>The inverse graph morphism.</p></div></div><div class="top"><p class="src"><a id="v:updateCodomain" class="def">updateCodomain</a> :: <a href="Graph-Graph.html#t:Graph">Graph</a> a b -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b <a href="src/Graph.GraphMorphism.html#updateCodomain" class="link">Source</a> <a href="#v:updateCodomain" class="selflink">#</a></p><div class="doc"><p>Set a new codomain.</p></div></div><div class="top"><p class="src"><a id="v:updateDomain" class="def">updateDomain</a> :: <a href="Graph-Graph.html#t:Graph">Graph</a> a b -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b <a href="src/Graph.GraphMorphism.html#updateDomain" class="link">Source</a> <a href="#v:updateDomain" class="selflink">#</a></p><div class="doc"><p>Set a new domain.</p></div></div><div class="top"><p class="src"><a id="v:updateNodes" class="def">updateNodes</a> :: <a href="Graph-Graph.html#t:NodeId">NodeId</a> -> <a href="Graph-Graph.html#t:NodeId">NodeId</a> -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b <a href="src/Graph.GraphMorphism.html#updateNodes" class="link">Source</a> <a href="#v:updateNodes" class="selflink">#</a></p><div class="doc"><p>Add a mapping between both nodes into the morphism. If <code>ln</code> is already
mapped, or neither nodes are in their respective graphs, return the original
morphism.</p></div></div><div class="top"><p class="src"><a id="v:updateNodeRelation" class="def">updateNodeRelation</a> :: <a href="Graph-Graph.html#t:NodeId">NodeId</a> -> <a href="Graph-Graph.html#t:NodeId">NodeId</a> -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> (<a href="../base-4.9.1.0/Data-Maybe.html#t:Maybe">Maybe</a> a) b -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> (<a href="../base-4.9.1.0/Data-Maybe.html#t:Maybe">Maybe</a> a) b <a href="src/Graph.GraphMorphism.html#updateNodeRelation" class="link">Source</a> <a href="#v:updateNodeRelation" class="selflink">#</a></p><div class="doc"><p>Inserts nodes in a graph morphism, if the nodes do not exist, they are created</p></div></div><div class="top"><p class="src"><a id="v:updateEdgeRelation" class="def">updateEdgeRelation</a> :: <a href="Graph-Graph.html#t:EdgeId">EdgeId</a> -> <a href="Graph-Graph.html#t:EdgeId">EdgeId</a> -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b <a href="src/Graph.GraphMorphism.html#updateEdgeRelation" class="link">Source</a> <a href="#v:updateEdgeRelation" class="selflink">#</a></p><div class="doc"><p>Modifies a graph morphism, mapping edge e1 to edge e2. It assumes both edges already exist.</p></div></div><div class="top"><p class="src"><a id="v:updateEdges" class="def">updateEdges</a> :: <a href="Graph-Graph.html#t:EdgeId">EdgeId</a> -> <a href="Graph-Graph.html#t:EdgeId">EdgeId</a> -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b <a href="src/Graph.GraphMorphism.html#updateEdges" class="link">Source</a> <a href="#v:updateEdges" class="selflink">#</a></p><div class="doc"><p>Add a mapping between both edges into the morphism. If <code>le</code> is already
mapped, or neither edges are in their respective graphs, return the original
morphism.</p></div></div><div class="top"><p class="src"><a id="v:removeEdgeFromDomain" class="def">removeEdgeFromDomain</a> :: <a href="Graph-Graph.html#t:EdgeId">EdgeId</a> -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b <a href="src/Graph.GraphMorphism.html#removeEdgeFromDomain" class="link">Source</a> <a href="#v:removeEdgeFromDomain" class="selflink">#</a></p><div class="doc"><p>Remove an edge from the domain of the morphism</p></div></div><div class="top"><p class="src"><a id="v:removeEdgeFromCodomain" class="def">removeEdgeFromCodomain</a> :: <a href="Graph-Graph.html#t:EdgeId">EdgeId</a> -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b <a href="src/Graph.GraphMorphism.html#removeEdgeFromCodomain" class="link">Source</a> <a href="#v:removeEdgeFromCodomain" class="selflink">#</a></p><div class="doc"><p>Remove an edge from the codomain of the morphism</p></div></div><div class="top"><p class="src"><a id="v:removeNodeFromDomain" class="def">removeNodeFromDomain</a> :: <a href="Graph-Graph.html#t:NodeId">NodeId</a> -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b <a href="src/Graph.GraphMorphism.html#removeNodeFromDomain" class="link">Source</a> <a href="#v:removeNodeFromDomain" class="selflink">#</a></p><div class="doc"><p>Remove a node from the domain of the morphism.
Don't change the morphism if there were edges incident to the node.</p></div></div><div class="top"><p class="src"><a id="v:removeNodeFromDomainForced" class="def">removeNodeFromDomainForced</a> :: <a href="Graph-Graph.html#t:NodeId">NodeId</a> -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b <a href="src/Graph.GraphMorphism.html#removeNodeFromDomainForced" class="link">Source</a> <a href="#v:removeNodeFromDomainForced" class="selflink">#</a></p><div class="doc"><p>Remove a node from the domain of the morphism
It does not verify if the node has incident edges, thus it may generate invalid graph morphisms.</p></div></div><div class="top"><p class="src"><a id="v:removeNodeFromCodomain" class="def">removeNodeFromCodomain</a> :: <a href="Graph-Graph.html#t:NodeId">NodeId</a> -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b <a href="src/Graph.GraphMorphism.html#removeNodeFromCodomain" class="link">Source</a> <a href="#v:removeNodeFromCodomain" class="selflink">#</a></p><div class="doc"><p>Remove a node from the codomain of the morphism
Don't change the morphism if there were edges incident to the node.</p></div></div><div class="top"><p class="src"><a id="v:createEdgeOnDomain" class="def">createEdgeOnDomain</a> :: <a href="Graph-Graph.html#t:EdgeId">EdgeId</a> -> <a href="Graph-Graph.html#t:NodeId">NodeId</a> -> <a href="Graph-Graph.html#t:NodeId">NodeId</a> -> <a href="Graph-Graph.html#t:EdgeId">EdgeId</a> -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a (<a href="../base-4.9.1.0/Data-Maybe.html#t:Maybe">Maybe</a> b) -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a (<a href="../base-4.9.1.0/Data-Maybe.html#t:Maybe">Maybe</a> b) <a href="src/Graph.GraphMorphism.html#createEdgeOnDomain" class="link">Source</a> <a href="#v:createEdgeOnDomain" class="selflink">#</a></p><div class="doc"><p>This function adds an edge e1 (with source s1 and target t1) to the domain of the morphism, and associate it to e2
It assumes s1, t1, e2 already exist, and that e1 does not exist.</p></div></div><div class="top"><p class="src"><a id="v:createEdgeOnCodomain" class="def">createEdgeOnCodomain</a> :: <a href="Graph-Graph.html#t:EdgeId">EdgeId</a> -> <a href="Graph-Graph.html#t:NodeId">NodeId</a> -> <a href="Graph-Graph.html#t:NodeId">NodeId</a> -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a (<a href="../base-4.9.1.0/Data-Maybe.html#t:Maybe">Maybe</a> b) -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a (<a href="../base-4.9.1.0/Data-Maybe.html#t:Maybe">Maybe</a> b) <a href="src/Graph.GraphMorphism.html#createEdgeOnCodomain" class="link">Source</a> <a href="#v:createEdgeOnCodomain" class="selflink">#</a></p><div class="doc"><p>This function adds an edge e2 (with source s2 and target t2) to the codomain of the morphism.
It assumes that s2,t2 exist, and that e2 does not exist</p></div></div><div class="top"><p class="src"><a id="v:createNodeOnDomain" class="def">createNodeOnDomain</a> :: <a href="Graph-Graph.html#t:NodeId">NodeId</a> -> <a href="Graph-Graph.html#t:NodeId">NodeId</a> -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> (<a href="../base-4.9.1.0/Data-Maybe.html#t:Maybe">Maybe</a> a) b -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> (<a href="../base-4.9.1.0/Data-Maybe.html#t:Maybe">Maybe</a> a) b <a href="src/Graph.GraphMorphism.html#createNodeOnDomain" class="link">Source</a> <a href="#v:createNodeOnDomain" class="selflink">#</a></p><div class="doc"><p>This function adds an edge e1 (with source s1 and target t1) to the domain of the morphism, and associate it to e2
It assumes s1, t1, e2 already exist, and that e1 does not exist.</p></div></div><div class="top"><p class="src"><a id="v:createNodeOnCodomain" class="def">createNodeOnCodomain</a> :: <a href="Graph-Graph.html#t:NodeId">NodeId</a> -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> (<a href="../base-4.9.1.0/Data-Maybe.html#t:Maybe">Maybe</a> a) b -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> (<a href="../base-4.9.1.0/Data-Maybe.html#t:Maybe">Maybe</a> a) b <a href="src/Graph.GraphMorphism.html#createNodeOnCodomain" class="link">Source</a> <a href="#v:createNodeOnCodomain" class="selflink">#</a></p><div class="doc"><p>This function adds an edge e2 (with source s2 and target t2) to the codomain of the morphism.
It assumes that s2,t2 exist, and that e2 does not exist</p></div></div><h1 id="g:4">Query</h1><div class="top"><p class="src"><a id="v:applyNode" class="def">applyNode</a> :: <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="Graph-Graph.html#t:NodeId">NodeId</a> -> <a href="../base-4.9.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Graph-Graph.html#t:NodeId">NodeId</a> <a href="src/Graph.GraphMorphism.html#applyNode" class="link">Source</a> <a href="#v:applyNode" class="selflink">#</a></p><div class="doc"><p>Return the node to which <code>ln</code> gets mapped.</p></div></div><div class="top"><p class="src"><a id="v:applyNodeUnsafe" class="def">applyNodeUnsafe</a> :: <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="Graph-Graph.html#t:NodeId">NodeId</a> -> <a href="Graph-Graph.html#t:NodeId">NodeId</a> <a href="src/Graph.GraphMorphism.html#applyNodeUnsafe" class="link">Source</a> <a href="#v:applyNodeUnsafe" class="selflink">#</a></p><div class="doc"><p>Return the node to which <code>le</code> gets mapped or error in the case of undefined</p></div></div><div class="top"><p class="src"><a id="v:applyEdge" class="def">applyEdge</a> :: <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="Graph-Graph.html#t:EdgeId">EdgeId</a> -> <a href="../base-4.9.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Graph-Graph.html#t:EdgeId">EdgeId</a> <a href="src/Graph.GraphMorphism.html#applyEdge" class="link">Source</a> <a href="#v:applyEdge" class="selflink">#</a></p><div class="doc"><p>Return the edge to which <code>le</code> gets mapped.</p></div></div><div class="top"><p class="src"><a id="v:applyEdgeUnsafe" class="def">applyEdgeUnsafe</a> :: <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="Graph-Graph.html#t:EdgeId">EdgeId</a> -> <a href="Graph-Graph.html#t:EdgeId">EdgeId</a> <a href="src/Graph.GraphMorphism.html#applyEdgeUnsafe" class="link">Source</a> <a href="#v:applyEdgeUnsafe" class="selflink">#</a></p><div class="doc"><p>Return the edge to which <code>le</code> gets mapped or error in the case of undefined</p></div></div><div class="top"><p class="src"><a id="v:nodeRelation" class="def">nodeRelation</a> :: <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="Abstract-Relation.html#t:Relation">Relation</a> <a href="Graph-Graph.html#t:NodeId">NodeId</a> <a href="src/Graph.GraphMorphism.html#nodeRelation" class="link">Source</a> <a href="#v:nodeRelation" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:edgeRelation" class="def">edgeRelation</a> :: <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="Abstract-Relation.html#t:Relation">Relation</a> <a href="Graph-Graph.html#t:EdgeId">EdgeId</a> <a href="src/Graph.GraphMorphism.html#edgeRelation" class="link">Source</a> <a href="#v:edgeRelation" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:orphanNodeIds" class="def">orphanNodeIds</a> :: <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> [<a href="Graph-Graph.html#t:NodeId">NodeId</a>] <a href="src/Graph.GraphMorphism.html#orphanNodeIds" class="link">Source</a> <a href="#v:orphanNodeIds" class="selflink">#</a></p><div class="doc"><p>Return the orphan nodes ids in a graph morphism</p></div></div><div class="top"><p class="src"><a id="v:orphanEdgeIds" class="def">orphanEdgeIds</a> :: <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> [<a href="Graph-Graph.html#t:EdgeId">EdgeId</a>] <a href="src/Graph.GraphMorphism.html#orphanEdgeIds" class="link">Source</a> <a href="#v:orphanEdgeIds" class="selflink">#</a></p><div class="doc"><p>Return the orphan edgesIds in a graph morphism</p></div></div><div class="top"><p class="src"><a id="v:orphanEdges" class="def">orphanEdges</a> :: <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> [<a href="Graph-Graph.html#t:Edge">Edge</a> b] <a href="src/Graph.GraphMorphism.html#orphanEdges" class="link">Source</a> <a href="#v:orphanEdges" class="selflink">#</a></p><div class="doc"><p>Return the orphan edges in a graph morphism</p></div></div><div class="top"><p class="src"><a id="v:isPartialInjective" class="def">isPartialInjective</a> :: <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="Graph-GraphMorphism.html#t:GraphMorphism">GraphMorphism</a> a b -> <a href="../base-4.9.1.0/Data-Bool.html#t:Bool">Bool</a> <a href="src/Graph.GraphMorphism.html#isPartialInjective" class="link">Source</a> <a href="#v:isPartialInjective" class="selflink">#</a></p><div class="doc"><p>Test if a <code>nac</code> is partial injective (injective out of <code>q</code>)</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.3</p></div></body></html>