Tutorial worksheet

Tutorial worksheet

error: pathspec 'tutorial.clj' did not match any file(s) known to git

--- tutorial.clj
+++ tutorial.clj
@@ -0,0 +1,1728 @@
+;; gorilla-repl.fileformat = 1
+
+;; @@
+(use 'grape.core)
+;; @@
+;; =>
+;;; {"type":"html","content":"nil","value":"nil"}
+;; <=
+
+;; **
+;;; # Grape Language Tutorial
+;;;
+;;; Graph rewriting rules are defined using the ```rule``` form. Rules consist of three parts:
+;;; - the ```:read``` specifies the graph pattern to be matched in the host graph
+;;; - the ```:delete``` part specifies which graph elements from the matched host graph should be deleted
+;;; - the ```:create``` part specifies which graph elements should be created when the rule is applied
+;; **
+
+;; **
+;;; ## Read-only rules (Graph Queries)
+;;;
+;;; Below is a simple rule to find a node of type *Person*. The ```node``` form is used to specify the node to be searched for. Node types are determined by their "label".
+;; **
+
+;; @@
+(rule 'find-person
+  {:read
+   (pattern
+     (node 'n {:label "Person"}))})
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,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\" width=\"146\" height=\"99\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x36905ee0 \"BufferedImage@36905ee0: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@70ce29b5 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 146 height = 99 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; **
+;;; The visual representation of the above rule is given in the image below the rule definition. (The visual representation is automatically generated when using Gorilla repl. It can also be generated as file export - if you do not use Gorilla for documentation).
+;;;
+;;; Since `find-person` does not change the graph in any way, it is also called a **graph tests** or a graph _queries_.
+;;;
+;;; #### Applying a rule ####
+;;;
+;;; Rules (and graph tests) can be executed, simply by calling them. A call to `(find-person)` will return `false` if no Person node can be matched - or true otherwise. In case of an empty database, the call will return `false`.
+;; **
+
+;; @@
+(find-person)
+;; @@
+;; =>
+;;; {"type":"html","content":"false","value":"false"}
+;; <=
+
+;; **
+;;; ## Write-only rules
+;;; The following rule creates only one node (of type Person). It has an empty ```:read``` part, so it matches any host graph and deletes nothing.
+;; **
+
+;; **
+;;;
+;; **
+
+;; @@
+(rule 'create-jens!
+      {:create
+          (pattern
+            (node 'n {:label "Person" :asserts {:name "'Jens'"}}))})
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,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\" width=\"148\" height=\"107\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0xe26746 \"BufferedImage@e26746: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@7fb9e337 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 148 height = 107 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; **
+;;; The ```node``` form is used to specify the node to be created. Grape currently supports only one (optional) type label for nodes, but multiple (optional) property definitions (asserts). Properties are defined using maps. Note that the value of the maps is always a clojure String that wraps the actual expression that defines the Grape property. Thus, if you need a String value in grape, you need to use (single) quotes within the clojure value string, as exemplified above.
+;;;
+;;; The visual representation of the above rule is given in the image below. Here we use the popular "inline" notation of rewrite rules, where green coloured shapes mark those graph elements that are being created, i.e., graph elements that appear on the right hand side of the rule, but not on the left-hand side.
+;;;
+;;; As shown above, the rule can be applied by simply calling it:
+;; **
+
+;; @@
+(create-jens!)
+;; @@
+;; =>
+;;; {"type":"html","content":"true","value":"true"}
+;; <=
+
+;; @@
+(matches)
+;; @@
+;; =>
+;;; {"type":"list-like","open":"(","close":")","separator":" ","items":[],"value":"()"}
+;; <=
+
+;; **
+;;; Since the rule has an empty `:read` part, it will likely return `true`. Each time it is called, it creates a new node of type `Person` with an attribute `name` of value `Jens`.
+;;;
+;;; You can validate that nodes of type `Person` are indeed created by calling the graph query `find-person` defined above. It should now return `true` to indicate that there is at least one match.
+;;;
+;;;
+;; **
+
+;; @@
+(find-person)
+;; @@
+;; =>
+;;; {"type":"html","content":"true","value":"true"}
+;; <=
+
+;; **
+;;; ## Returning query results
+;;;
+;;; Graph tests can be used to return query results. For example, the above graph test `find-person` can be used to return a sequence of all _matches_ of the graph test. This is done by calling the `matches` function after calling a graph test or rule:
+;; **
+
+;; @@
+(find-person)
+(matches)
+;; @@
+;; =>
+;;; {"type":"list-like","open":"(","close":")","separator":" ","items":[{"type":"list-like","open":"{","close":"}","separator":", ","items":[{"type":"list-like","open":"","close":"","separator":" ","items":[{"type":"html","content":":nodes","value":":nodes"},{"type":"list-like","open":"(","close":")","separator":" ","items":[{"type":"list-like","open":"{","close":"}","separator":", ","items":[{"type":"list-like","open":"","close":"","separator":" ","items":[{"type":"html","content":":data","value":":data"},{"type":"list-like","open":"{","close":"}","separator":", ","items":[{"type":"list-like","open":"","close":"","separator":" ","items":[{"type":"html","content":":name","value":":name"},{"type":"html","content":""Jens"","value":"\"Jens\""}],"value":"[:name \"Jens\"]"}],"value":"{:name \"Jens\"}"}],"value":"[:data {:name \"Jens\"}]"},{"type":"list-like","open":"","close":"","separator":" ","items":[{"type":"html","content":":metadata","value":":metadata"},{"type":"list-like","open":"{","close":"}","separator":", ","items":[{"type":"list-like","open":"","close":"","separator":" ","items":[{"type":"html","content":":id","value":":id"},{"type":"html","content":"12","value":"12"}],"value":"[:id 12]"},{"type":"list-like","open":"","close":"","separator":" ","items":[{"type":"html","content":":label","value":":label"},{"type":"html","content":""Person"","value":"\"Person\""}],"value":"[:label \"Person\"]"}],"value":"{:id 12, :label \"Person\"}"}],"value":"[:metadata {:id 12, :label \"Person\"}]"}],"value":"{:data {:name \"Jens\"}, :metadata {:id 12, :label \"Person\"}}"}],"value":"({:data {:name \"Jens\"}, :metadata {:id 12, :label \"Person\"}})"}],"value":"[:nodes ({:data {:name \"Jens\"}, :metadata {:id 12, :label \"Person\"}})]"},{"type":"list-like","open":"","close":"","separator":" ","items":[{"type":"html","content":":edges","value":":edges"},{"type":"list-like","open":"(","close":")","separator":" ","items":[],"value":"()"}],"value":"[:edges ()]"}],"value":"{:nodes ({:data {:name \"Jens\"}, :metadata {:id 12, :label \"Person\"}}), :edges ()}"},{"type":"list-like","open":"{","close":"}","separator":", ","items":[{"type":"list-like","open":"","close":"","separator":" ","items":[{"type":"html","content":":nodes","value":":nodes"},{"type":"list-like","open":"(","close":")","separator":" ","items":[{"type":"list-like","open":"{","close":"}","separator":", ","items":[{"type":"list-like","open":"","close":"","separator":" ","items":[{"type":"html","content":":data","value":":data"},{"type":"list-like","open":"{","close":"}","separator":", ","items":[{"type":"list-like","open":"","close":"","separator":" ","items":[{"type":"html","content":":name","value":":name"},{"type":"html","content":""Jens"","value":"\"Jens\""}],"value":"[:name \"Jens\"]"}],"value":"{:name \"Jens\"}"}],"value":"[:data {:name \"Jens\"}]"},{"type":"list-like","open":"","close":"","separator":" ","items":[{"type":"html","content":":metadata","value":":metadata"},{"type":"list-like","open":"{","close":"}","separator":", ","items":[{"type":"list-like","open":"","close":"","separator":" ","items":[{"type":"html","content":":id","value":":id"},{"type":"html","content":"94","value":"94"}],"value":"[:id 94]"},{"type":"list-like","open":"","close":"","separator":" ","items":[{"type":"html","content":":label","value":":label"},{"type":"html","content":""Person"","value":"\"Person\""}],"value":"[:label \"Person\"]"}],"value":"{:id 94, :label \"Person\"}"}],"value":"[:metadata {:id 94, :label \"Person\"}]"}],"value":"{:data {:name \"Jens\"}, :metadata {:id 94, :label \"Person\"}}"}],"value":"({:data {:name \"Jens\"}, :metadata {:id 94, :label \"Person\"}})"}],"value":"[:nodes ({:data {:name \"Jens\"}, :metadata {:id 94, :label \"Person\"}})]"},{"type":"list-like","open":"","close":"","separator":" ","items":[{"type":"html","content":":edges","value":":edges"},{"type":"list-like","open":"(","close":")","separator":" ","items":[],"value":"()"}],"value":"[:edges ()]"}],"value":"{:nodes ({:data {:name \"Jens\"}, :metadata {:id 94, :label \"Person\"}}), :edges ()}"},{"type":"list-like","open":"{","close":"}","separator":", ","items":[{"type":"list-like","open":"","close":"","separator":" ","items":[{"type":"html","content":":nodes","value":":nodes"},{"type":"list-like","open":"(","close":")","separator":" ","items":[{"type":"list-like","open":"{","close":"}","separator":", ","items":[{"type":"list-like","open":"","close":"","separator":" ","items":[{"type":"html","content":":data","value":":data"},{"type":"list-like","open":"{","close":"}","separator":", ","items":[{"type":"list-like","open":"","close":"","separator":" ","items":[{"type":"html","content":":name","value":":name"},{"type":"html","content":""Jens"","value":"\"Jens\""}],"value":"[:name \"Jens\"]"}],"value":"{:name \"Jens\"}"}],"value":"[:data {:name \"Jens\"}]"},{"type":"list-like","open":"","close":"","separator":" ","items":[{"type":"html","content":":metadata","value":":metadata"},{"type":"list-like","open":"{","close":"}","separator":", ","items":[{"type":"list-like","open":"","close":"","separator":" ","items":[{"type":"html","content":":id","value":":id"},{"type":"html","content":"108","value":"108"}],"value":"[:id 108]"},{"type":"list-like","open":"","close":"","separator":" ","items":[{"type":"html","content":":label","value":":label"},{"type":"html","content":""Person"","value":"\"Person\""}],"value":"[:label \"Person\"]"}],"value":"{:id 108, :label \"Person\"}"}],"value":"[:metadata {:id 108, :label \"Person\"}]"}],"value":"{:data {:name \"Jens\"}, :metadata {:id 108, :label \"Person\"}}"}],"value":"({:data {:name \"Jens\"}, :metadata {:id 108, :label \"Person\"}})"}],"value":"[:nodes ({:data {:name \"Jens\"}, :metadata {:id 108, :label \"Person\"}})]"},{"type":"list-like","open":"","close":"","separator":" ","items":[{"type":"html","content":":edges","value":":edges"},{"type":"list-like","open":"(","close":")","separator":" ","items":[],"value":"()"}],"value":"[:edges ()]"}],"value":"{:nodes ({:data {:name \"Jens\"}, :metadata {:id 108, :label \"Person\"}}), :edges ()}"}],"value":"({:nodes ({:data {:name \"Jens\"}, :metadata {:id 12, :label \"Person\"}}), :edges ()} {:nodes ({:data {:name \"Jens\"}, :metadata {:id 94, :label \"Person\"}}), :edges ()} {:nodes ({:data {:name \"Jens\"}, :metadata {:id 108, :label \"Person\"}}), :edges ()})"}
+;; <=
+
+;; **
+;;; As you can see above, `(matches)` returns a Clojure data structure: as sequence of matches.
+;;;
+;;; Each item in the above sequence is a valid match of the graph test. (In the above example, the rule `create-jens!` was invoked three times - and thus created three nodes, leading to three possible matches for rule `find-person`.
+;;;
+;;; ### Visualizing query results
+;;;
+;;; Query results can be visualized in Gorilla REPL with the `view` function. For example:
+;; **
+
+;; @@
+(view (matches))
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,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\" width=\"91\" height=\"179\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x9be81ce \"BufferedImage@9be81ce: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@69a20ec2 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 91 height = 179 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; **
+;;; Note that the above visualization shows the union of *all* the (three) possible matches of `find-person`. Matches can also be visualized individually, for example `(view (first (matches)))` visualizes the first returned match, i.e., a single `Person` node with id 16.
+;;;
+;;; While a simple call to `matches` returns the matches for the most recently executed rule, `matches` also accepts a rule to be executed as a parameter. This allows using the Clojure threading macro for maximum readability, e.g., `(-> find-person matches first view)` displays the first match of rule `find-person`.
+;; **
+
+;; @@
+(-> find-person matches first view)
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,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\" width=\"91\" height=\"53\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x7bea82a8 \"BufferedImage@7bea82a8: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@69a20ec2 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 91 height = 53 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; **
+;;; ## Parameterized rules
+;;; Our first example rule was not very versatile, since it could not generate different _persons_. This can be improved by using _parameterized_ rules. The following rule is more generic, as it takes the name of the person to be created as a parameter (p).
+;; **
+
+;; @@
+(rule 'create-person! ['p]
+      {:create
+       (pattern
+        (node 'n {:label "Person" :asserts {:name "'&p'"}}))})
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKoAAABrCAYAAADnwhmTAAAOXUlEQVR42u2dCbRV0x/Hn6ki4hUtJRIW1SJEIqS8jGWoZ5ZpZR4yrIpVhBUZVkk0sYjMTZTpERLK2LIqKULGjEUZMtv/Pr+1fnede9+506vX/53X93vXWe/dc+/ZZ59zPvu3f3vf8/udkiBJCVCJToEkUCVJoEoCVZIEqiQJVEmgSpJAlSSBKglUSaqZoA4cOFCLltVeqhXU6667LpSUlNhfLVqquqy33npFw1o0qFVpDZK0uhwJVEmgSpJAlQTq/xvUH3/8McyfP19XdC3rhx9+WDdA/fzzz8ORRx5po7rGjRuHAw44IGy//fbh4IMPDu+++25B+xg1alTYZJNNwplnnily1qLef//9sMEGG4Tnn3/e3s+dO9eu4xlnnBGGDh2ac9uPP/44XH311aFNmzZh1113TYZF/eKLL2wKq1+/fvb+119/DR06dAj16tULP//8c0H7OeSQQ2o8qK+88kp4++23aw2or776ql23hx9+2N7PmTPH3v/yyy8Fl4GRad26dTJABUYO8Kqrrkqtu+2222xdRUVFQfvBKhcK6n///Vf0d/7999+0v/n0+++/p5Xx9ddfh2233Ta8+OKLVYLCy/rnn38Kqn+03pnf/+uvv6q078xjX7x4sV2j6dOnp4GKoYnbPm6/Y8aMSTaoPXv2DBtuuKGdDNS7d++w5ZZbhtdffz289dZboX379mkHmAnqgw8+GPbZZx9zI66//vrUSb7lllvCdtttZxc87qJS186dO4eOHTuGiy++OHz33XdhwIABBtntt98eNttsszB58uTw4Ycf2vdatGgRTjvttPDpp59aGV9++WU44YQTwuWXXx523HHHMGXKFFt/8skn2zHuu+++1gj/+OOPcN5559kx7LfffuGZZ56JPTcATj2aNWtmXWWjRo1Cw4YNU+VmK+eee+6xc8TxcA5OPfXU8MEHH4RTTjkllJeX27olS5bYdzEGHMsRRxwR2rVrF15++WVbP2LEiLDHHntYGdQb9+qOO+5IA3799dcPixYtigWVco466qjQtWtXWzbaaKOw1157ha+++irZoHbv3j2MHTs2HH/88aFu3boGlQsA+M6MGTNSwOHTxoEKzAcddJCV+84779h2L730kn02depUawRxVmnIkCFWB4D1kz5t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\" width=\"170\" height=\"107\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x10b52f22 \"BufferedImage@10b52f22: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@7648d7de transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 170 height = 107 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; **
+;;; Formal parameters _p_ must be actualized when the rule is applied. The rule application below creates a Person node with name "Flo". Note that the expression _&p_ is replaced with the value of the actual parameter _p_ at rule execution time.
+;; **
+
+;; @@
+(create-person! "Flo")
+;; @@
+;; =>
+;;; {"type":"html","content":"true","value":"true"}
+;; <=
+
+;; **
+;;; You can use `(-> find-person matches view)` in Gorilla REPL to validate that a new person with name "Flo" was indeed created.
+;; **
+
+;; @@
+(-> find-person matches view)
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFsAAADyCAYAAAAiJbm/AAAUjklEQVR42u2dB7AUxRPGMYs5o4IKJlTMCcxIUFRUFEUxglkxUybMYsJSMReGwiyCgAqomBMiijnnrEgy5zT/+s2/+mrevtnd2b27fe/e66/q6h0X9na/7enpme7+aGEUhaGFUqBkK9mKBiD7n3/+Mffff7856KCDzBprrGEWWmgh06JFCzPnnHOWHu6/5bnvb9xr8phjjjnqveb7XNpraecRPWd58Ps8ll12WbP99tuboUOHmunTp1ef7H///dfccccdpm3btmarrbYy1157rXnjjTfMr7/+2qQtEuP65ptvzPjx462BLbHEEubYY481M2bMqA7ZP/74o9lxxx3NRhttZJ5//vlm7Q5mzZpljj76aNOmTZtMXASRjeUyxA4++GBr3Yr/48knnzRLLrmkGT16dGXInj17tllxxRXNoEGDlF0PXn31VWuIkyZNKo/sv/76y/rmk08+OdWn/fHHH/Ve/++//zL7tVrEww8/bC0c4nOTff7555s+ffrEvg+ZI0aMMKuvvrp5/PHH67zHrI1PYybfdtttzeuvv25ff/PNN0szvPsYN25cveNfdNFFNtIhKujcubNZddVVTa9evcyoUaMaHeF33323WXvtta2BZiYbi+RuffHFF7Fffu6558xVV11lh5FLNpPGFltsYR577DFz5513mkUXXdT07dvXvnfiiSeawYMHm6eeeso8++yzZsKECWbuuec2P/30k/c3CLcIu+TmHn/88fb3xowZ0+gI79Gjhxk2bFh2ss855xwzYMCA1B8gJIqSfdZZZ5lvv/229O/+/fubRRZZxD6P+jZGBoS6o8XFXnvtZZZffvnSvz/99FP7e4RgIaFq9HhJlhc3euVYaXjhhRfs6MtMNouVV155JRfZUVxyySVmhx128L4HmcTrgo033tgcd9xxsWS/9NJL9vcYIcwThx9+uFlrrbXMZpttZh544AH7mZtuusl07NjR3nTWBPvuu6957733zD777GN69+5tX/v666/tZx966CHr5ji/TTbZxEYY4JprrjHrr7++PUanTp3MAgssYEdxGnAlU6ZMCScbApdeeumgOx9CNvH5zTffXO/1P//807oY11XhJiDLJbtVq1Z21Ybr2XDDDc0yyyxjyTrhhBOsX8f6TjnlFPv633//bRcfnBOE87vDhw83hx56qLn00kvtMc844wzz8ccfm7feesuSyHMZzfPPP7/9Nw/miq233tp88sknNuzl+Gk46aSTzIUXXhhONsR16dKlImTjl4lofMN34sSJZoMNNkg8PmTPO++8ZueddzbHHHOMue+++8wPP/xgh3XLli3NTjvtZC23e/fuZrnllrPzCORD1O233146zqmnnmoWX3xxO7kyH/322292FYj1CiCVa8GawYILLmiuu+46+5w5gve4mUm49dZbzQEHHBBO9tVXX21PrFyyZ86caSfKadOmeb97xBFHmLPPPjuVbNeNCL766iv7ux999JH3e0y699xzT50Jn5vOd3bZZRd7s/jrkg2wXiHLJZtoie+m+fwk7rxkYz2EWOWQzUntvvvu5u233y695roLrA8SX3755VxkQ9ZSSy1lrr/++tJr+HDx21Gyp06daq3yggsusFZ/1113mSOPPNLMNddc5pdffil9jt+SBVwespO4iyV7t912CyIb38ZJPPLII3VeJ9RjMcTF87jiiivqWDEzN3F4FEOGDKmz/O3atau9aBZOUey///42PGUyY0MMd8LN5bOQyJAW7L333nZ/R55zbs8884w997Fjx9rXv/zyS3sjWBNwM+ebbz5rqRJH81ncTxrZcdx5yb733nvNrrvumko0F4j1chLbbbed9c8SfUS3O3m8//77pe9iPVhWFCyQIEMWVUxgfHe//fazo8jFO++8Y1ZaaSX7fvv27c1tt91mR8xRRx1lX2M+kMiAxdk222xjbyb+Hzcki6/WrVvb2J+oRkaKXAOTLBGQuKAzzzwzkZMk7soiuxzgz30Lmd9//z3TZhfkJi28BLgQ3Aw7dr6NNiKTNKsNQWaySQyE+mxFOHdlT5CKMifIItxIU0VmN5IlGlEUFI0oKhSNsEvnC9/0kf5g710tW322+my17CItW+PsguLsWl9Bfvfdd8FVWnyWpXrIcj+kUiDzCrLW3QjnTlaGjA0bVGTv2ZTq2bOn6datWynrz04kG139+vVLPSaJazalqhL61TLZBx54oLnxxhvtc7ZICcdkR1JAGd33339vMzwhZFMFwM5mg0Yjkn3mbzSTDdjF871eTZDWevDBB+1zUmPRiiV2/0gAs+9NfjSEbOpdQj6XORoJmSDxdZQ6kEYiQcvQZF9YMjNsxLOHTFJ2lVVW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\" width=\"91\" height=\"242\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x46ced0ab \"BufferedImage@46ced0ab: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@69a20ec2 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 91 height = 242 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; **
+;;; Alternatively, we can define a parameterized graph test that looks for a person of a given name...
+;; **
+
+;; @@
+(rule 'find-person-by-name ['name]
+  {:read
+   (pattern
+     (node 'n {:label "Person" :asserts {:name "'&name'"}}))})
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOYAAABrCAYAAABjRP69AAARJ0lEQVR42u2dCbRV0x/HE5K5Ui0lQ5KQwiJDyZSKQsg8FCtjlIRSGSNhNQ8oQuZZWOZ5FiVSUaKUUqTBmHH/1+e3/r+7zrudO/aed+973+9aZ71777tnn73P2Z/9++3fuee3qwRJkgpOVXQKJElgSpIkMCVJYEqSJDAlSWBKkiQwJUlgSpIkMCVJEpiSVBnAvOqqq7Rp05bjVqZgXnPNNaFKlSr2V5s2bdlt66yzTs5w5gxmPvRLUmVWPtwITEkSmJIkMAWmJAnM0tPs2bPD0qVLS6Ws33//PXz22Wfhhx9+yLuMmTNnVogOwnmVKiGYzzzzTNhhhx0sCrXrrruGPfbYw96fddZZYdWqVRnL5zunnHKKRX6fffbZtT4hjz76aDj55JPDjTfeGDbZZJMwbNiwnPZfuHBhaNOmjbWnmPXFF1+E3XbbLWyzzTZF3Y5PP/3UrkXXrl3D0KFDy7Uu119/fTjxxBOtPrNmzSp8izlkyBAD66OPPrL306ZNCxtuuGE4+uijszrGypUrSw1MBodly5bZ6+nTp4c333wz5zIeeuihsN566xX9qM3gVOxgfvLJJ9Y3fv7554KoD14Y9cnkURUEmHfccYdVdurUqYnP9ttvv7D55ptndYxff/01azD//ffflP/76quvwkYbbZTV/v/880/s///666/w+OOPh2rVqmVVzt9//522TsniuMnf//PPP3O6gJna4MJbcDBzqWO+x/3tt9/KDMxffvml3OuCli9fXrxgMrrVrl07HHXUUfZ+/vz54cADDww77bSTvb/ttttC/fr1Q79+/WLBXL16dTj33HPDLrvsYoD755yMzTbbLLz++utr1AErzTHWXXfdcMYZZ5g7y/EOOOAA+/+YMWPC7rvvbm3Zd999DeBRo0Yl9n/hhRfCIYccYvtx3A022CC2rYsXLw4XXnhhaNCgQbjiiivCFltsEWrVqhUmTZqUtu6co3322ceOv91224VTTz3V3E3c+M6dO9tnixYtsu8+//zz4eCDDw6HH354aNGiRaK9mdoQB+ZWW20VLr30UqsnU4wPPvggLFmyxM7V9ttvH0aOHGnffeKJJ8LOO+9sICTr3XffDUceeaR5QExROC51YxBDTz31VDj99NPt3DGV4RxxTbHYO+64Y7j33nvtL8d/+eWXw9VXX231atq0afjmm28Sc2Ha3LBhQytr3rx5sWCWZ12KFsybbropDB8+3BrJSD158uQSnaROnTqJ93vttVe44IILYsG8+OKLw+DBg21U7Nu3b6hbt66deDoUFyWVf//www+HGjVqJN5z4Q466KCENa1ataqB+vXXX4du3bpZuT5wVK9e3eaXCLBSgYl1GzBggNX31ltvDe+//751gCZNmqStO3Nx9gHOu+66K9x5553h7LPPtmkAAnLqOGPGDOtsvPbzT914n64NqcDkmMBHh27UqFFo1aqV/Y9zzf/efvvtxMB25plnxpbDQMt5ZM7OIPH000/bvj5NqFevng22aM899wyjR4+288Rx+R4DMOeYtm+88cbhkUcesbkjgzPA8F0GMgJ2HKt58+bhvPPOiwWzPOtStGD26NHD5paMNMAW1dixY0uASQeJAxPXhDI6duxoVqVt27Z2sulYmZQM5kUXXWQjn4sLccstt9hr3FWOCTR9+vQJzZo1K1EOMKQSo250DnrfffdZWV9++WXKugMqULGv6/LLLw81a9a0zvH999+b+9WzZ0+zii4ApGy/BqnakApMroVr3LhxVgfmSdQHj4JgBurfv3949dVXU7YZaP1cco1o/wMPPJCA/LvvvgvvvPOODci9e/e2z4k5UL8FCxbY+4EDB4bGjRsnymSQ7d69u8G16aab2jljI2hFrCCVK1tedSlqV5aLz2s/IbmC+e2339rruXPn5uz/5wKmj7SMkEcccUQ47LDDEt+jwwOYw0MUzrcVK1asASauDmXdc889aevOPkSNXcDYunVr2we3n07G3yiYCKvYpUuXtG2IqydgRjufd/LXXnvN3lPO+uuvb+4erq3P17CsXk779u3XgAHhUdx///32Gg/m0EMPtWvMde3Vq1cJGNwTwe2O1ue4444zq4+XhdeR7RyzvOpS9HNMGsl75i1RMJl3ZmMx+R6Au5i3ZRMYyhdM5oxYLg8oRMHkdg6jrG98JxnMl156ycqaM2dO2rong0lnwdoNGjTILBmj/vnnn2/z5GhHxM3CoqVrQ1w9k8HEckc7J8fgfDEYXHLJJYnvYXG8HAaPdDDg7mGVHQxuNaWCAbcyDgYsNeVx3OhtElz3XMAs67oUHZjMLansK6+8Yu8ZrbfddluLyrr1YFLOCMxchlGNDnz88ceXaKwHUJhwE6wg2MEtD1wKTgTl4u/j3sXp7rvvtvkZkVKfKzKXcJeHE84F8VsiHBP3kbkKr93NpM2AgvVO5cq6S4hwPwkcpas7dQK4iRMnJso56aSTEvd6eY1L/dZbb5UY1OhIHIvOka4NqVxZgkou5rzJt7AAkjI+/vjjtNeYIJUH0hgIaAvnm3qxP+3lfGHd/R62DwQePOE+IEEzFwMC9ycpD/dx7733NjDoRwTEaG8cmOVVl6ICk1Gb6J4HNoj6IXx8Thh+/nPPPRf++OMPm1TzGVE03A0m8XREoqjsT+cGZMAFbD4jqIKL6AEKOikWLVmM7u4WMsGnXMpgrsgc7uabb07UccqUKYnvXnnllQYNriJlU18uikddU4HJvri/tIN5iI/EcXXHejF/4TPcJD9HJ5xwgrmQDGzMcXwgwJ0iUnjdddfZOXMLnK4NcSIwhVXo0KGDndtOnTqFH3/8scR36GBEY9OJcrbccksLuGD9/VHA/fff3yxqy5Yt7boyJcDqcM6B45hjjrHvMUASCCQoyHsCXvQJBjC8AVzr8ePH2y0qrgH9gyBYnCtbnnUpOouZ630gxM/mMt0z84l68j3PshIjK/XCAqW7R+iuLG5q1OXJVPe4e6aU4T+ISG4nHaI07scBY6pyHnzwQRsY1lZRi0ab8hHnnsh7Nvcxy6MuFRrMiiBudzCapoqGFoOYp06YMMFuWyVb0UKSg8ngwb3m8tSLL76Y+JWbwCwwcUuEwBUXh+BSIXfqdN4I7ituu8/rC1VY+g8//NC2TPPgshbBTa9LJo9PYP7HYj5K9M+3TD+LK2Q4i9niF7oEpiQJTEmSBKYkCUyBKUkCU5IEpsCUJIEpSQJTYEqSwJQkSWBKksCsJGDyTCe/ddVWOBuPYwnMSg4mz1CSdUAqDJGtjmwDAlNgCkyBKTAFpiQwBabAFJgCU2BKAlNgVlgwSQJF4i0yCXqSYZZBuOGGG8JPP/0kMAWmwCwveX5eX7aAtJokZCa1pcAUmAKzlJVuZaroKlyPPfaYgUnqTxfJskjVmEledvQYZbWKmMAUmEUNZqaVqcj8RkIsT1AdByY5e7feemt7TdpMct6SxPnaa681gMhRSwJk1iAhlyr5UXF9zznnHLtpz8pWvsgOeWupiy/DQNJjyshUT4EpMCsUmJlWpiI7/WmnnZawVA4mCYhJ28jSDbwn9+t7771nyaGBztP9kymcpeNYHIg8t2Rmv+yyyyzNo2egJzs5q48BIMmmfYVtPmefESNGZKynwBSYFc6VTbcyVbIcTLKKYwXJCO5rZrD0AgEhX4WKbOQsJITI6O5rkSLSPFIOSwKS/Bh4mbf6imQulqnzLOy51FNgCswKBSaKrkyVCsyoK+tiEVwsX5yAGDijYnkHIry4yiyQG10q0MWiTr54Ui71FJgCU2D+X8wXqXdUvvBQMpiff/65uae4uqyBwrod3I7xpQJdJKxmZWWBKTArHZipVqZCLHzEMuwuX1uU1aeT5fM+noxhtWPWd3QLyhJyBH5cWEc2xAJMBIvIHM5flkB3cZ+Upc4z1VNgCswKBWa6lalYwg93kyXfWECI5d4I4vB/5n501qhYLc1XrGJ5QwJDfMZKZkRiWTfTVwUDSiK5LF0OcL4mJ0EjViJjXyKwLIPIEgSZ6ikwBWaFs5jpRDQ2l1WsEEvNZVrxjNsclM1KZNH7pB7YYc65dOnSgrkeAlNgFhSYksAUmAJTYApMgSkJTIEpMAWmwBSYksAUmGUgnthQZrrC2rhFJDBlMWUxZTEFpsCUBKbAFJgCU2AKTElgCsxKD+by5ctjf5LHT+3IUFAs9RWYArNCgdmpU6cwZMiQEp+RdYAnQ3i+sl27dgVfX4EpMCscmF27dg233377Gp1/+PDh9ponQnhapJDrKzAF5lqB6U9m8Df5KQ3EM45xn5eluBbkBIqqXr16YcCAAWHRokWhTp06YdmyZWnbkyoLHo+A/Rf1FZgCMy8wmRfhFtatW9dyvTZo0MAyAcycOdP+v3DhQssYQE6dRo0ahUmTJtk8iucfyUpHNjv+kh2ATsfDyOzftGlTy7+DVq9ebVkJSPJM2hCeg8xG1IdEXcntqV+/vv1w4sknnwyjR48O/fv3t42kW5my4JEUjJxCPERNwq7Fixfbo2HUj31I8MUzn+3bt7eHtHkwu0aNGraPwz579mzLgNCwYUP7fN68eSnrKzAFZl5g0tmYF/GLlEGDBllCLDocDxijnj17JjoSMDK/46n/kSNH2j79+vUL8+fPt0x1PMDMw8wAAjx8HwE1GQg4Vt++fW0QAJQuXbrYPnFbnz59bNDgAWkXg0Tz5s3tuBMmTLDPeNaSfD+8p/xMWfCwuJ7ikl/gAPaSJUtCx44dQ/Xq1S3r3htvvGFAk/Zy1qxZliiMMjg3tJ0BBmg5FvUh04IPctH6CkyBuVauLO4XHc+f4CdvK9YDkVOHvDxEQTt37mwWFXlayQULFtj7gQMHhsaNGyfKxGp1797dXEmSYNHxyXjXtm1bgwPLRtkAE7d5xjzXtGnTzDJj8Ui6RQYE4GaO2aFDhxLfTZcFD2vNQ9W0iXJ69+5tnzMQkH7E1axZM7PCbvFpq4NOJgbP4OdLPGQrgSkw8wYT94wgi3dKEiqz0VGxhFEwsWKIvDxRMHEBu3XrZkDzvblz565VO7DIuKZo4sSJViZuMxZ8xowZKcFE0WRbWEDOydixY0OrVq1Cr169YsFs3bq1zWXdq+B4WFMCT7jA+UpgCsxSAROr56/Js5MKTFzCODCxWLVr107k6HHYsVwAxPwtbsNFdhHowV3lGA4K4HF8XO1kpQIT1xM33SEFkFRgAnwcmGTjozysrgvXPdnCC0yBudZgEkSh43lunGOPPdZcT9SkSRPr5AR8WPCnVq1aliEdV5R9PPDBEgTu5iKSMnP7wEEnoDJmzJgwffp0cwEJLmHpSMwVt82ZM6cEyDVr1jRwVqxYYZ8BDcfnczKsY5EzZcEDIPahHlhy5rpY4VWrVhmgLVq0SBwTF9XdXOaN7MdgQnm4sizfAKTUFRc/2zVQBKbAzArMlStX2nfoeD169LDABxDR4ZlTseYIczTmdyyTV61aNYPWs9gRzZw8ebJFYXlPIAkLTBlYV3K84j6SsY7/A3o032u2Gjp0qFlSgjrM/4ieAjnzO8oFFsBJlwWP5F4tW7Y0UEmBiUUn4EMGPywpAR+CV0CMVaTOzEUBlDL4QQPWm2AQ56Fq1aoW8U12pQWmwCwVi5lJ0ex23M/MR7iDHijKV1guLGny/VQyrjPA5NMerHE+4jwQzdUcU2CWG5hS6UlgCkyBKTAFpsCUBKbAFJgCU2AKTElgCsxSFb/jVGa6wtq4xSQwKzmYkiQwJUlgCkxJEpiSJAlMSRKYAlOSBKYkCcwcD8B9Jg6iTZu27DZnpszAdDi1adOW25arqsjRkKTCk8CUJIEpSZLAlCSBKUmSwJQkgSlJksCUJIEpSZLAlCRJYEpSMep/rQw+jJupaUUAAAAASUVORK5CYII=\" width=\"230\" height=\"107\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x6f0f099d \"BufferedImage@6f0f099d: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@337c5535 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 230 height = 107 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; **
+;;; and use that one to test for the existence of a person with a given name:
+;; **
+
+;; @@
+(find-person-by-name "Flo")
+;; @@
+;; =>
+;;; {"type":"html","content":"true","value":"true"}
+;; <=
+
+;; **
+;;; ## Rules that extend a matched subgraph
+;;;
+;;; The the next rule has a _read_ as well as a _create_ part. It matches two Person nodes with the names given as parameters and creates a _parent-of_ relationship between them.
+;; **
+
+;; @@
+(rule 'parent_of! ['p 'c]
+      { :read (pattern
+               (node 'f {:label "Person" :asserts {:name "'&c'"}})
+               (node 'j {:label "Person" :asserts {:name "'&p'"}}))
+        :create (pattern
+                 (edge 'e {:label "parent_of" :src 'j :tar 'f} )
+                 )})
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,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\" width=\"158\" height=\"202\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x3b26e68b \"BufferedImage@3b26e68b: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@568bd6b9 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 158 height = 202 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; @@
+The call to `(parent_of! "Jens" "Flo")` should return `true` if you have at least one Person node with name "Flo" and one Person node with name "Jens".
+;; @@
+
+;; @@
+(parent_of! "Jens" "Flo")
+;; @@
+;; =>
+;;; {"type":"html","content":"true","value":"true"}
+;; <=
+
+;; **
+;;; However, note that in the above example, we have _three_ Person nodes with name "Jens". Therefore, there are three possible matches. You can check this with `(count (matches))` after executing the above rule. (Yes, `matches` returns the matches not only for graph queries but also for any other Grape rule.)
+;; **
+
+;; @@
+(count (matches))
+;; @@
+;; =>
+;;; {"type":"html","content":"3","value":"3"}
+;; <=
+
+;; **
+;;; Of course, the number of matches depends on how often you executed the above `create-jens!` rule.
+;;;
+;;; The order of matches is non-deterministic and Grape uses the first one in the return list:
+;; **
+
+;; @@
+(-> (matches) first view)
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,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\" width=\"91\" height=\"116\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x84ee554 \"BufferedImage@84ee554: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@337c5535 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 91 height = 116 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; **
+;;; So, we can rightfully expect that the successful execution of rule `parent-of!` has created a relationship between the two nodes shown above. Here is a very minimal graph test to check:
+;; **
+
+;; @@
+(rule 'find-parent
+      {:read
+   		(pattern
+     	 (node 'p)
+         (node 'c)
+         (edge 'e {:label "parent_of" :src 'p :tar 'c}))})
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,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\" width=\"144\" height=\"186\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x50405433 \"BufferedImage@50405433: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@337c5535 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 144 height = 186 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; **
+;;; and here is the check:
+;; **
+
+;; @@
+(-> find-parent matches view)
+;; @@
+
+;; **
+;;; ### Automatic Edge Merging
+;;;
+;;; Grape makes the assumption that there will only ever need to be **one single edge** of a particular type from one specific src node to one particular specific node.
+;;;
+;;; This means that, for example, if a rule attempts to create another _parent_of_ edge between the two above nodes, the rule will succeed but there will only be _one_ parent_of_ edge, i.e., the newly created edge will automatically _merge_ with the existing _parent_of_ edge.
+;;;
+;;; So, what do we expect to happen if we call `(parent_of! "Jens" "Flo")` again?
+;;;
+;;; Well, for the above case, where there are three "Jens" Persons and one "Flo" person, there are three possible matches. The effect of the rule depends on which "Jens" node is contained in the first match (which is non-deterministic). If it is the same as above, the graph will not change, as the created edge will be _merged_ with the existing one. If it's a different "Jens" node, there will be two parents for the "Flo" node.
+;;;
+;;; We can experiment:
+;; **
+
+;; @@
+(parent_of! "Jens" "Flo")
+(-> find-parent matches view)
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,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\" width=\"259\" height=\"53\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x4f2cc0fc \"BufferedImage@4f2cc0fc: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@337c5535 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 259 height = 53 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; **
+;;; If we want to enforce that we match "new" parents only, we need to use a _Negative Application Condition_ (NAC)
+;;;
+;;; ## Negative Application Conditions
+;;;
+;;; Negative applications conditions (NACs) are conditions that, if met, inhibit a rule from being applied. In other words, NACs restrict possible matches.
+;;;
+;;; NACs are specified using 'NAC' forms, which essentially specifiy graph patterns that, if matched in the context of the _read_ part, will inhibit the application of the rule. Grape allows multiple NACs per rule. The visual representation of NAC's uses dashed borders, with different NACs rendered in different colours.
+;;;
+;;; Consider the modified `new_parent_of!` rule below.
+;; **
+
+;; @@
+(rule 'new_parent_of! ['p 'c]
+      { :read (pattern
+               (node 'f {:label "Person" :asserts {:name "'&c'"}})
+               (node 'j {:label "Person" :asserts {:name "'&p'"}})
+               (NAC 1
+                (edge 'l {:label "parent_of" :src 'j :tar 'f} )))
+        :create (pattern
+                 (edge 'e {:label "parent_of" :src 'j :tar 'f} )
+                 )})
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,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Iz2HyaDPthiBmR72JOsy4Y21cXlheIQmoc37zkwGfY708ssvS1JSkhROKia1k16Quklv6HrcLce6pYVb8v39x8J3ZtAnMPS1a9eW/v37m7uLUQMGDJDbb7/doDfoDXqD3qA36A16g96gN+hzHfTbt2+XsWPHyoYNGwx6gz73Qz9p0iS59tpr5dFHH5VjjjlGduz4M1lry5YtpWjRopIvXz6pVq2anHvuuQpNnz59DHqDPnGhv/nmm6VLly6yb98+GTx4cIa/16xZU0qWLKmv09LSpGHDhtr1l4hhlUFv0KvOPvts6dHjz6dyAHZQd999t5xyyimh9UWLFin0Dz/88EHLTk1NzVDenj1ZS+7k96csg96gzxH069evl7vuukuOOOIIueyyy/T1zp07pWLFivLcc89lCj3hENA3bpw+hqZbt25y+eWXy5lnniktWrRQODt16iSVKlXS74rt9913n8yePVvq1q0rd9xxh25bsSJ90Nnw4cM1vLrxxhv1OH7++Wfd3qZNGylfvryWccUVV0jhwoXl008/NegN+px7emDq2rVraJ3wBWiD0J900kmyZs0aGTlypFx66aVSokQJhfbXX3+VqlWrytatW2XixIlaGX788UcZMmSIvgb8zp07y5dffqlthg8//FDLfOWVV2TBggUyY8YM/Xxe++/36KOP1nUW2hJVqlSRhQsXyiOPPKKfa9Ab9Icc+nAB/VFHHSW33HKLPPPMM/LNN9/I5s3pg8YeeOABKVu2rHpyFmL/Zs2aaUgCsNwFvNh+3HHHaSN47dq1eld59tln1Zt7ATeVxX/HRYoUkXbt2ulrzpO/7d2716A36A8/9MHwJqgrr7xSe3giqUCBAtK3b9/QOqBfc801Cu6tt96qYRD/B6FHePMHH3wwA/Q0stk3q20Cg96gP6TQN2jQQK6//voMYEWCnvAHL/3OO+/oXaBnz57yxBNPSP78+fV3Ai8+q3nz5ga9QX94oE9JSVE427ZtG9r2/vvvS79+/ULr1atXV/jo0gyXB/Hxxx+X6dOna0MTz897gfmrr/58Kvc999wjW7ZsCb1+8cUXZdSoUbq/ryjLli3TCvHHH3/onaBgwYLSunVr/VuvXr30vYRFBr1Bn619t23bpp4akC6++GIZOnSobj/vvPMUSvT222/rnYD33H///bJy5coDyti9e7ceA38vVqyYPP3001qRnnzySd12ySWXyPjx4/W99A7R6KVS0T5Yvjz9kaAff/yxnHrqqfLWW29JmTJlpGPHjrr9gw8+CDWG6THyodGrr75q0Bv0h/ZHol27dmW5T5x4PfhLbiQR2lAh6CoNF/vSk5MTL27QG/Qmg96gNxn0Br1Bb9Ab9Aa9QW/QG/QGffxBf91118Vn9oM4XhjcZtCbpzdPb9Ab9Aa9QW/QG/QGvUFv0Bv0Bn2WxbAEhi+EiyEQflxOVsRgNYPeoI9rMS+XwWRBMVWQmVJPPfWU1KgR++N5GPjGtMclS5YY9AZ9/IpRneFg33bbbTrqElWuXFnGjYv9QWyMBvUzugx6gz6UUYD/w7MTIEZWRtp+OMX4+4ceeuiAbSeffLJmFWb+7YknnhhxRGYwDAqKCe0W3hj0snHjRg0VmILHZO/TTjtNx64nJyeH4mDGuTdq1EjOOeccnf+K+B8vzPnyf/HixfX1t99+q5kPTjjhBOnevbu+l+HCjMtnLDzTB4cNGxbTsTOZPDxtNrOwmDkFwAMHDtQJJMyiYmFiCVq9erXUqlVL6tSpo9kT/Dxc5u8a9Aa9em8yEPBLJNP0yDBw1lln6WQPxMRsZkah9957T+NpRKUgXAA+8ty89NJLWgb7LV26VD+3QoUK+l4qDLOl+KymTZtqBaORyjxXZlxFWpg1hVatWnVAQ/Siiy7Sz/niiy90GxkYiNVZ93cp0oF40Kk0ZGoIL8ugz+PhDd4ZkNatW6frzHn1F37WrFkyZswY7S0hHw13Ai9y07Rq1Upfk7OGMqZOnarrzKnF2xNiFCpUSLOkkQ3hhhtu0BCFvJiU/csvv0RcfMoPrylTpuiMrUGDBskZZ5whpUuX1opDTH/TTTeF3sexkpnBz6nlf/aNVQZ9HoWetB00GH1o8thjj+lCCBGcAB6EHi8ahL53796a95LKwvb58+fn6Dzoxalfv76+Zl4tZb7++ut652FGldfnn3+un5vdyeEGvUGvc1n9a+amZgY9cXQk6PH0eHw/r9VXJOL6evXqybHHHhtxIVzyotFKCOMngBPCMCiMzyP8CooJ6z6hVPAusWnTJoPeoP9TNAgBhfgY0QAkHEHnn3++AsYcVSaD02ClgYmoAEzORnPmzNEyfBcijVhic1+Jjj/+eE3DN23aNA1zaBPgoUeMGBFxmTt37gGVhCRQxOoeXv8sLbZ/8skneifB81P5yKJMgilCHY6DVIHm6Q36kOi3pkcEgOjdIC0fgAITPwSRmYAUIMTT7777rsbLlElKEPahITt58mQFi3Uqy++//x7KTPDmm2/KzJkzpVSpUrpOJYqWQyczcUfhDgDQ5cqVkyZNmmgFAm7K5a7ie4WoxBy/z7ZAQ9ugN+izpGCiJfrrsyNCEnp1ciJ+VeUOEP57wbx58zL86EReHX/nspjeoDcZ9Aa9yaA36A16g96gN+gNeoPeoDfo4xd6359tS+xL+CA3gz7BoDeZDHqTQW/Qmwx6g95k0Bv0JoPeoDcZ9Aa9Kc9D7x/ua4st8bAEHzZ9WKD34NtiSzwtWVWS3SBNeU0GvcmgN5kMepPJoDeZDHqTyaA3mQx6k8mgN5kMepPJoDeZDpf+HwK+nT2vV/qlAAAAAElFTkSuQmCC\" width=\"189\" height=\"202\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x380d2d8 \"BufferedImage@380d2d8: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@337c5535 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 189 height = 202 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; **
+;;; Let's try it out.
+;; **
+
+;; @@
+(new_parent_of! "Jens" "Flo")
+;; @@
+;; =>
+;;; {"type":"html","content":"true","value":"true"}
+;; <=
+
+;; @@
+(-> find-parent matches view)
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQMAAAB0CAYAAACBgVcGAAAczklEQVR42u3dBbh0VfUGcBS7C7FRFDCwA7sRsVsEuwvrw25FxZayULAVsUApu1vsBCxsRcDu8///ts+6nu9858w5M3fu/SbW+zzz3LkTZ86c2fvda71r7bW2qBKJRKKqTtsir0EikUgySCQSSQaJRGIVZPCnP/2pOuSQQ6o73elO1SUvecnqzGc+c7XFFltUpz/96Vdu8f+ov6c73enK3/r9eK55a3t80td2nU/zseb9+mPnPe95q+td73rVs5/97OrEE0/MIZRYLjL4y1/+Ur3gBS+oLnCBC1R3vOMdq7e+9a1lIvz1r39dqqv1n//8p/r9739ffexjH6s2bNhQXfCCF6zudre7VSeccEIOpcTik8GPfvSj6opXvGJ1hzvcIQd9A8hwn332qbbaaqvqbW97W16QxOKSASJgGu+///55qUbgBz/4QXWJS1yiesYznpEXI7F4ZPCtb32rOsMZzlAdeuiheZkG4Fe/+lV1vvOdr3rFK16RFyOxOGTw61//utpmm22qN7/5zVP5FH723/72t4W/mj//+c+rs53tbNU73/nOHFqJxSCDu971rtWTn/zkqRHBRS5ykerDH/5w6/OEyXOc4xxFrb/xjW9cXeYylyn6xLxOqG984xtFaP3lL3+Zwysx32Twuc99rlgF//jHP6byCfe///2L7tBFBrDLLrtUF7rQhcp9iv1jHvOY8p53v/vdc3lVn/jEJ1YPfehDc3gl5psMhA5f85rXTOXo73vf+6pnPetZm5CBCV/H3e9+92I9BEK4RCR9+Pe//73J8cYlsni/Y00Dp5xySnXuc5+7+t3vfpdDLDGfZPCHP/yhOte5zlX9+c9/XvWRTQQrvonZJINrXOMa1aMf/ehOMvjyl79c3vO4xz2uaA0PechDqstf/vLVda5znerII48sr3nd615X7bTTTkXBlwC1xx57VN/73veq3Xffvbrzne9cHuPDw9FHH13d5CY3qXbdddfqmte8ZskTgAMOOKC6ylWuUo5x7Wtfu/j7++2331Su7D3vec+pkWoise5kYKLtvPPOUznyve51r+qrX/1qud8kA26AyVwng6233roIlx//+Merq13taiWhx2R+7GMfW3QFqzfz2+P//Oc/q/e///3luAhBVuTBBx9cPehB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\" width=\"259\" height=\"116\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x495f35ec \"BufferedImage@495f35ec: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@337c5535 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 259 height = 116 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; @@
+(new_parent_of! "Jens" "Flo")
+(-> find-parent matches view)
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQMAAACzCAYAAACNbHkKAAApqUlEQVR42u3dB5QkVdkGYBRBUVEQEWUFBZEkCyiKAWRBsgoGwEwUVLKIKAIKkgQkmgOwBANIEBFRUZQsSjTrqkgwKwrmXL/P/c+dU1Nb1V3d07M73f295/SZng7V1dX3vvdL9/0WKQKBQKAo7l8krkEgEAgyCAQCQQaBQGAKZPDnP/+5mDt3bvHSl760eOITn1g8+MEPLhZZZJHigQ984MQt/9/p7wMe8ID0t3w/P1e91T3e72ubzqf6WPV++bGll1662GCDDYp3vvOdxU9+8pMYQoHxIoO//vWvxbve9a7i0Y9+dPGSl7yk+PjHP54mwt/+9rexulr//e9/i9///vfFV7/61eLAAw8sHvOYxxQve9nLih//+McxlAKjTwY//elPi9mzZxcvfvGLY9BXgAyPO+64Ytllly0+8YlPxAUJjC4ZIAKm8Xvf+964VB0wb968YsUVVyze8Y53xMUIjB4ZfOc73yke9KAHFeeff35cphb41a9+VTzqUY8qTj311LgYgdEhg1//+tfFE57whOLcc88dyKfws//+97+P/NX8+c9/Xjz0oQ8tPvWpT8XQCowGGeywww7F2972toERwfLLL198+ctfrn1eYPLhD394itZvvPHGxSqrrJLiE8M6ob71rW+lQOsvf/nLGF6B4SaDr33ta8kq+Oc//zmQT9htt91S3KGJDGDLLbcsHvvYx6b7IvZvfOMb03suuuiiobyqb33rW4s3vOENMbwCw00GUocf/vCHB3L0Sy65pDjiiCPmIwMTvoyXv/zlyXrIyIFLRNIN//nPf+Y7Xq9Elt/vWIPAH/7wh+KRj3xk8bvf/S6GWGA4yeCPf/xj8YhHPKL4y1/+MuUjmwhWfBOzSgZPf/rTi/3337+RDG6++eb0nje96U0p1vD617++WHPNNYtnP/vZxec+97n0mtNPP7145jOfmSL4CqBe/epXFz/4wQ+KV73qVcV2222XHuPDw+c///lik002KbbeeuviGc94RqoTgPe9733Fuuuum47xrGc9K/n773nPewZyZV/zmtcMjFQDgQVOBiba5ptvPpAj77jjjsVtt92W7lfJgBtgMpfJYLnllkuBy6uuuqp42tOelgp6TOYDDjggxRWs3sxvj//rX/8qPvvZz6bjIgRV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\" width=\"259\" height=\"179\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x1cd2eb84 \"BufferedImage@1cd2eb84: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@337c5535 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 259 height = 179 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; @@
+(new_parent_of! "Jens" "Flo")
+;; @@
+;; =>
+;;; {"type":"html","content":"false","value":"false"}
+;; <=
+
+;; **
+;;; The last call to the rule did not succeed, since there were only three Person nodes with name "Jens" (that weren't already connected to a "Flo" node throw a "parent_of" edge)
+;;;
+;;; Rules may have multiple NACs. Consider the example below, which has two NACs, which are visually distinguished by different colours. As before, the first NAC ensures that a _new_ edge is created. The second NAC models a (hypothetical) constraint that a parent_of relationship may only be created for a child who does not already have (at least) two parents.
+;; **
+
+;; @@
+(rule 'new_parent_of2! ['p 'c]
+      { :read (pattern
+               (node 'f {:label "Person" :asserts {:name "'&c'"}})
+               (node 'j {:label "Person" :asserts {:name "'&p'"}})
+               (NAC 1
+                (edge 'l {:label "parent_of" :src 'j :tar 'f} ))
+               (NAC 2
+                (node 'n1)
+                (node 'n2)
+                (edge 'x1 {:label "parent_of" :src 'n1 :tar 'f} )
+                (edge 'x2 {:label "parent_of" :src 'n2 :tar 'f} )))
+        :create (pattern
+                 (edge 'e {:label "parent_of" :src 'j :tar 'f} )
+                 )})
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,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\" width=\"343\" height=\"202\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x3141c3f2 \"BufferedImage@3141c3f2: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@337c5535 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 343 height = 202 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; **
+;;; As expected, the rule does not currently find a match:
+;; **
+
+;; @@
+(new_parent_of2! "Jens" "Flo")
+;; @@
+;; =>
+;;; {"type":"html","content":"false","value":"false"}
+;; <=
+
+;; **
+;;; ## Node Merging
+;;; Sometimes new nodes should be created only of there isn't already a node of the seame type and the same properties. Consider the following rule as an example:
+;; **
+
+;; @@
+(rule 'register-email! ['name 'email]
+      {:read
+        (pattern
+          (node 'p {:label "Person" :asserts {:name "'&name'"}}))
+       :create
+        (pattern
+          (node 'm {:label "Adress" :asserts {:address "'&email'"}})
+          (edge 'e {:label "has" :src 'p :tar 'm})
+         )})
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,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\" width=\"230\" height=\"202\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x5ef50900 \"BufferedImage@5ef50900: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@337c5535 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 230 height = 202 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; **
+;;; Each call if this rule will create a new "Address" node with the same properties:
+;; **
+
+;; @@
+(create-person! "Jane")
+(register-email! "Jane" "su@yahoo.com")
+(register-email! "Jane" "su@yahoo.com")
+(register-email! "Jane" "su@yahoo.com")
+;; @@
+;; =>
+;;; {"type":"html","content":"true","value":"true"}
+;; <=
+
+;; @@
+(rule 'find-addresses
+      {:read
+   		(pattern
+     	 (node 'p)
+         (node 'a)
+         (edge 'e {:label "has" :src 'p :tar 'a}))})
+
+(-> find-addresses matches view)
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAATEAAACzCAYAAADhaisPAAA0cklEQVR42u3dC9x15Zg/cDON42TQKMmhETWTkClSQjRFJnIYFZEUIlSjdDAhnV5mauSldNJMNA01M1KRihFJRKWkUIyQU445jLP1n+/9+V/PZ73rXWvtvZ+9n+d99n6v3+ezPs9+9tp77XW47999Xdd93b/rDlUikUhML75+h7wHiUQiSSyRSCSSxBKJRCJJLLFE8N3vfrd6y1veUm2//fbVfe5zn+oOd7hD2f74j/94pa3+frwe5W99G/a9xXi/axv18wt9rsN+tv7/oGfyR3/0R3P/11/H//X373rXu1Z/+Zd/Wb3gBS+o/vM//7P69a9/nSSWWHX43ve+V73yla+s7nWve1UveclLqg984APVd77znep3v/td3pxEK37xi19UN954Y3XaaadVf/M3f1Pd7373q0499dTqt7/9bZJYYnHxiU98olpvvfWqv//7v69+9KMf5Q1JzAuf+9znqic84Qll+8EPfpAkllgcfOhDHyquwcc//vG8GYmx8Yc//KE68sgjqw022KD69re/nSSWWFj813/9V4lxXHfddXkzEhPF8uXLy+DYY5EliSXGw1VXXVX9+Z//eXX11VfPxPWI6bECWnvL179e/eY3vxnpeD/84Q+H+tz3v//98tuJlbHXXntVf/3Xf11iZ0liiYnCLNJf/dVfFUts2nHllVdWj3nMY8qoz4V55zvfObdP0PlRj3pUteaaa1ZrrbVW9e53v3uoY37pS1+qNt1004GfO+yww4ol+x//8R/ZqDrw/Oc/vzr88MOTxBKTxdve9rbq6U9/+tRfx+9///vq0Y9+dPWOd7yj+uQnP1k99rGPrf7sz/6s+t///d+yf7/99qu++MUvVr/61a+qnXbaqdpwww2HOu6BBx5YSPHyyy/v/ZyZW+kG5557bjaqHouWxf+1r30tSSwxGXC51l9//eqaa66ZCSvs9NNPn/v/wgsvLORz0UUXVb/85S+rL3/5y3P73vrWt1Zbb731SveiCYTHBdLxdtttt87fjjQClth55523ArHW//ahy8Ud1fVd6viHf/iHMvOdJJaYCC677LJqs802m8lrM9rf8Y53XClN5Kc//Wm1+eabl1SSwD/+4z9WD3zgA1fKgzvrrLOqo446qnr1q19d3elOd1op3iUZ+G//9m+rF77whdWTn/zkQprnn39+9elPf7qQ3q677lo97WlPKyT4s5/9rDrzzDOrLbbYovqLv/iL6ogjjijkhjz33nvv6mUve1m10UYbVSeffPKcG+sYf/d3f1c+/61vfWsmnsv//M//VPe9732bg0aSWGJ+0JFe+9rXzuS1nXHGGdVTn/rUFd7j6sXKA8m8AdaTTPOmNfakJz2puvXWW0s8zXeWLVu2wv7HPe5x1fHHH19e//d///cciZk8EGf8kz/5k+q9731vddBBBxXS3GabbQqJfvazny2f9Z0Pf/jDJY4HZobf9KY3ldcvfelLq+OOO668ft3rXld99atfnZlnI7P/+uuvTxJLjA+BVtbGrEEc7JGPfGR1ww03rPC+SQyEtPPOOxfX7xvf+EbnMcTPdtxxx7n/uZ+stXANzegiIp8Ll1FM7IILLij/77LLLiX2Fth9992rhz3sYeWe29Zdd93q0EMPLa6847D2fv7znxcCBPusmDjnnHOq2267bS62NwtgXVqalCSWGBt/+qd/Wp1yyikzd10vetGLqve9732d+8WZzFK+/e1v7/wMUtlkk02qLbfcsmwmApBNxLzMbvqfmxhAjEFiXEFEFthqq63mrKwmWFoIEElyIwFxPf7xjy+/gQyHiatNCzbeeOMym5sklhgb4jXWRc4SJFYK3AfEktoIgEsThNNmydlfX/d3++23F9J/ylOeUv63qgHBXHLJJSuQWNzPJomJeW233XYr/A6iZckhQq6l9YbPetazyj4up98/5phjynH//d//fWaekZyxf/mXf0kSS4wPqRWzRGLvf//7S3zpgx/8YNl0/Gc+85mFDLhl4lEgqVfuV8z8meB4zWteM3ccwfV99tlnpeNzCVlM4jmIUXzN8b3muiI1KSsmCJ7znOeUQSIgVmb/y1/+8vJ9n2OZ/du//VvZQK6eID4897nPLcQZrw8++OCZIrF//dd/TRJLpCVWBxK5293utpIUzdFHH1395Cc/qe5973sXF5Jrxkqqr+Xjzt397ncv2eTcxXvc4x6F5OpLsMSu5KE55iMe8YjqK1/5SvWe97ynWGdiVyy0NdZYoxCOXDUzknV3XTyOleX7jv+qV72qvIfAHvCAB1RvfvOby3lFsiwrzkSAmVODjQmGtMQSiQYErrtcqlkDq8uyoDaYlRRUnw9YebEsqR4f64JY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\" width=\"305\" height=\"179\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x12ac0429 \"BufferedImage@12ac0429: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@337c5535 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 305 height = 179 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; **
+;;; Grape provides a way to allow merging creation of nodes. This means that a node is created only if such a node does not already exist in the graph. This is done with the `:merge true` flag in the node form. Consider the modified rule below:
+;; **
+
+;; @@
+(rule 'register-email! ['name 'email]
+      {:read
+        (pattern
+          (node 'p {:label "Person" :asserts {:name "'&name'"}}))
+       :create
+        (pattern
+          (node 'm {:label "Adress" :asserts {:address "'&email'"} :merge true})
+          (edge 'e {:label "has" :src 'p :tar 'm})
+         )})
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOYAAADKCAYAAACxBDz2AAAfx0lEQVR42u2dCbxO1frHRUklkVSkwS2phCYSqduA21zK0ESiSQj3lpC6+XQbScZbcesWcjNE4y2l1K1EAxkzFBFREg1kyPrv7/O33s8+u/2+5z3nOM7rvL/f+uzPed999rv32muv73qetfbezyrhJEnKOJVQEUiSwJQkSWBKksCUJElgSpLAlCRJYEqSwJQkSWBKkiQwJSkbwLz77ru1aNGSx6VQwfz73//uSpQoYX+1aNGS3rLbbrvlGc48g5kf+iUpm5UfbgSmJAlMSRKYAlOSBOaO09q1a92cOXMyolB/+uknt2DBgmJTSaLnE1fW33//fdbDFC2nLVu2uI8++mjXBPPrr792559/vo1CHXjgge700093RxxxhDv77LPdZ599ltYxhg4d6vbee2933XXXZcQF6tGjh6tUqVKxqXDh84kr67lz57pSpUq5N954w75//vnndj3btGnj+vXrlzVghstp6tSp7vjjj7eyQosXL3Z33XWXq127tq3fJSzmsmXL7JbKHXfcYd9/+eUX16BBA1emTBlrhdJR48aNMwbMVatWuQ8//DDX7fr27btLVLjo+UTL+r333rPrN2rUKPs+c+ZM+/7zzz9nlcWMltOTTz6ZADNsRI477rhdA0zg40LeeeediXWPPvqorfvvf/+b1nGwuumCuW3btqT/+/3333P8zU1bt25N6xjsL7zP8ePHu4oVK6Zdjvw2Vb53lDjOb7/9lvJ8omX91Vdf2bV6++23c4BJAxu3j2Rlu2HDhl0KxLj8hsvp3//+9x/AfPzxx3dtMK+55hq3++6720VHnTt3dgcccIC1SNOmTXOnnnpqjhOMVpYRI0a4evXqmVt87733JirDQw895A477LA/ALV69WrXq1cvd+ihh7rHHnvM7bvvvgYPfYazzjrLVatWzV177bVuyZIltv2PP/7ounbt6po3b+6OOeYY17JlS/fXv/7VrP/f/vY3d/jhhyf2/cwzz7h27dq5unXrumbNmtk27K906dLuwgsvdNOnTzcYbrrpJjun0047zb366qv22+HDh9u5Uoacy9VXXx1bhnHnO3HiRNekSRO7Bvzdf//97fNrr71m21KeI0eOTOwDj6Vjx46ufv367oYbbkh4M9HziZb15s2bXcmSJd3C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\" width=\"230\" height=\"202\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x310e75b4 \"BufferedImage@310e75b4: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@337c5535 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 230 height = 202 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; @@
+(create-person! "Judy")
+(register-email! "Judy" "judy@yahoo.com")
+(register-email! "Judy" "judy@yahoo.com")
+(register-email! "Judy" "judy@yahoo.com")
+;; @@
+;; =>
+;;; {"type":"html","content":"true","value":"true"}
+;; <=
+
+;; **
+;;; Indeed, only a single node was created for registering Judy's email address three times:
+;; **
+
+;; @@
+(-> find-addresses matches view)
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAT8AAADyCAYAAAA7p8J1AABIR0lEQVR42u3dB7gsVZUv8JlBDKCiBAHBRFCCKAMoSQRBggqCJAMg4UoWRBAEJEpQsoqICgioZBWQqKLABQT1KjkoyghcxAiCM2MYnXrvt337vLpFVXX36T6pz/p/X33ndFV3hV17//dKe61/KQKBQGD6Yfa/RBsEAoEgv0AgEAjyCwQCgSC/QGCg+OlPf1oceuihxRprrFG8+MUvLv7lX/6l+Ld/+7eRrelzeX95X/V49Vj1O5329br/X//1X2u/23aeQX1/UM/Qb5t18y7yX+1V97+/5c+2F7zgBcXrXve64oMf/GAxc+bMIL/A1CW9d73rXcXCCy9cfPSjHy1uvPHG4oknnij+93//NxonUIv//M//LH7yk58Un/zkJ4vll1+++Pd///fiO9/5TpBfYOrgzDPPLBZaaKHipJNOKv72t79FgwRGhcsvv7xYYoklip122qmffhTkFxgfHHTQQUmF+Y//+I9ojEDf+O///u+kQayzzjrFX/7ylyC/wOQlvsUXX7z4/e9/H40RGBiYSrbZZpviRS96UfE///M/QX6ByYVzzjknqSi/+93vhmKw/fa3v6099ve//71nqZb0YusG9957b3Smhney7LLLFu9///uD/AKTB8hgwQUXLH72s59N+Wc55ZRTkvTKE/mWt7yluPPOO0eOsWUuueSSxVxzzVUst9xyXZPg0UcfnbY2PProo8V6662XrhuoB7vfa1/72uLCCy8M8gtMDmy33XbFxz/+8Sn/HLfeemux5pprFtddd11x3nnnFfPNN1/x3ve+958jaPbsYp999imeeuqpRFTCMg4++OCO5/zHP/5RvPKVryxe9rKXJamxDQb1s571rOhQLbjllltSe/ag/gb5BcYGjz32WIrf+6//+q8p/yyHHXZY8etf/3rk84477li88IUvTP/ff//9xV//+teRY0jy05/+9BxqWR2uvvrqYsUVV0xOoEsvvbTx2gbz17/+9eLZz372M8iz2/CgOo+o39uGCRtssEGanIL8AhOKk08+udh1112H8tmOP/744m1ve9sz9t92222J0P74xz+O7FtllVWKD33oQ8/47mabbVbcd999xctf/vJi/fXXf8bxa6+9tlh33XWThEmVfs5znjOiYq+66qqJkEk6DP68ndra91ZfffXiqquuGiHeXXbZJR179atfXXz+859P+88999xixowZxRve8IZi8803H5r3cvHFFxcbb7xxkF9gYrHJJpsU3/jGN4by2d7+9rcXZ5999hz79tprr2Tzm3feeUfIB6jECKsqFQvRgCOPPDLZ88p20V/+8pfFc5/73KRGA/LK5HfFFVckaREBuocvfelLxYc//OHiE5/4RCI7geMveclLksQoENj3gI3Sd6jYCyywQPHII4+k74zCUTBpwfTw/Oc/v1uJNsgvMDYgaQyDo6OKm266qVhrrbWeoUoaeN/73veSNGbJXhvYQXnBAcFZyoXAMg444IBihRVWGPl80UUXJTLM0pzvf+UrXxlRX5/3vOcV73jHO5IUSIpcdNFFkw3MqghE6dxWSTz88MPpN5wzq622WvHAAw+M7BsWvOIVr0iTR5BfYMJg0A3bwBKuw6b3+OOPN37H6gPPXrYRloGslllmmaQOIyAbSUysWg57obpttNFGI79h80NwGZwfl1xyyT9H8OzZ6Xo///nPa693yCGHJMmSeo3sAEnzws8999zPkEqHod+ZoIL8AhMGa3d/85vfDM3zkPTYx8rxdlTHKqiXVN8mD+43v/nNZIcr44ILLkiDNhORBfycRdmh0UZ+yBSRfeELXxg5zgZI9eaM+dOf/lR897vfLRZbbLG0IsL3f/zjHyfVm92S4+YPf/jD0LwnEvPdd98d5BeYOCyyyCJDRX4cD9RRpGL71Kc+VRx++OHFQw89VHz7298eISqrWTgjMo477rjia1/72shnMXskrzKQFRISq4acrr/++kSGWbU94ogjkqpLykOqbIucFhlCikiPn/3sZ4u77rorqb9I+qtf/WraMoFSyZH4pptumvax+VGnf/SjHw3Ne5L9JcgvEJLfgMC7W5f+SYYapIKYrGKhqvpuWepj+3zPe94zItH53bbbbjuHzZD9j6HesR122CH9niPCeamrb3zjG1OA9cc+9rFijz32SN+T2YR3GXiN2brsf81rXlN8+ctfTvsRnzhC2VDe9773JWnRdeeZZ550HkS92267DVW/C8kvMOHgcWyyew0bqJYcHnX485//POp4Ouf0e7bATucgeVbVcJKd/WyU5ZhA+5988smhiMGsgvRM+g3yC4TaG5hWCLU3EGpvYFoi1N5AqL2BaYlQewOh9gZC7Q3yC4Tk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kKqx3nrrFZtuummS/gKBicRnP/vZJLi1SID15Peb3/ymeMUrXlF85StfGciNPPzww8Xf/va3adX4pB9S0HQpxr3LLrsU73jHO4L4OuAPf/hDV98zXh588MFosD6w8847p3q/DbbmevLbaqutioMOOqjvi993333FKquskrx8888/f/HlL3+59nsM4r7Di7POOusUSy21VLIxXnzxxVNaBVRZ/txzzx36TnbFFVcUSy655LRxgB122GHJk1ne9N9OxP/AAw+kwdgJHGeLLrpomjwD/WG77bYrDjnkkO7I79Zbb01S3yAkNYZv3hi2sHe+853JIdCEDTfcsFhkkUXS/6Ql4RHE1q9//etTtuF5OBdbbLGhJgUDfplllim+853vTIvB5HnZdC+44ILipptuSpu+St3vhP322y/16Ztvvrnjd7fYYovife97X7BXn3jiiSeKhRZaKEWndCQ/oSxf+MIX+r6oAf/Tn/505POnPvWp5IUpo6wSvvvd706u6ozsbNlpp5266pBV9bJX8s6/H7TatskmmxRf+tKXhrZzXXbZZYkMpguoUHfcccczxsxZZ51V268zCAA0gQUWWKCV1PQ/m/Gw7bbbzrG/2/6Zz1GnSk9HHH744cUHP/jBdvJ7+umnixe+8IUphm2QcN6VV145zZIZxx13XPHyl788qYd15Ddr1qxEfvvuu2/6zP74xje+MXlxjjzyyPRyxfesuuqqSQ2xX7Aj1ULnMnOWPT6zZ89OqjQJlD2OR8g5BOEiKMc4KuaZZ57ibW97W7exQh3xzW9+MzkCBgnPOFlANRP4Pl1hkn/BC15Q/PrXv06f77333jSGrr/++jm+Jzb2qKOOKj784Q8Xz372s5NdvTr5fvSjH01E+va3v714yUteksjP9z72sY+l0CEChGvRhggWb3nLW4pXvepVSbUjLAAzy4wZM1KMpcUI+dxssrvuumsKChYLN53w6KOPpvasTEpzkh9bg2DBQeLSSy8tFl544URke+6558j+yy+/PL3cfEPIz/e87BtuuKFYaaWV0g0jr+9///spfgeJ/uhHP0rn+u53v5tsTf5HgAYgCYuR88QTT0znpOsTd5GcWffkk09O+8UD8WTrTEIy2BnZbHRYZOWcgnQHNTie97znDWTW9RLZUInxkwHenXv51a9+NW3JT39ZbbXVRj4jQZMpe3cZiMoE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\" width=\"319\" height=\"242\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x63b08c32 \"BufferedImage@63b08c32: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@337c5535 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 319 height = 242 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; **
+;;; ## Rules that delete things
+;;;
+;;; Let's create a rule that deletes all `parent_of` edges. Deletions are specified in the `:delete` part of a rule.
+;; **
+
+;; @@
+(rule 'delete_parent_edges!
+      {:read (pattern
+              (node 'p)
+              (node 'c)
+              (edge 'e {:label "parent_of" :src 'p :tar 'c})
+              )
+       :delete ['e]})
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMoAAAC6CAYAAADvR9JpAAAQlElEQVR42u2deZAURRaHueVmQc7Y9WBBQWSRU1E8uJQAEQXlEESJVUDUYNfgdAER/kFQJES5FImQSwk5RlEE5BJEDkGQQxQVFERA7kNueMsvy2x62u6eGR0Gpuf7RWR0dVV2VmXW+zLfy6qOzGYIoRSVjSZACFAQAhSEAAUhQEEIUBACFIQABSEEKAgBCkKXEyjPP/88iZTp00UF5YUXXrBs2bK5TxIps6bs2bOnGZY0g/JnaEToctKfsWNAQYACKAgBCkJZG5T9+/fbhg0b0rXMU6dO2XfffZdivm+//dZ2796NNf0J7dmz56K1ncpOGFB++ukna9KkiZtVKFmypN1+++127bXXWv369e3LL79M1TlGjhxp+fPntw4dOqRbw3z00UdWpkwZa9WqVcw8hw4dsrZt27pZPeVHaVOfPn0sR44c9t5776V72Rs3brScOXPanDlz3PevvvrK2dhjjz1mQ4cOte+//9769u1rVapUscqVK2eOEWXbtm3O2Hr27Om+Hz161G677TbLmzevHT58OFXnufvuu9MVFOnBBx90IMTTwYMHUw3Kp59+aitXrsy0hp3e13/mzBlnvDNmzEj3a128eLG7L5MmTXLf165d674fOXLkD51spUqVMgcogkGV6N27d2jfK6+84vZ9/PHHqTqPRqXUgnLu3Lm4x8+ePetS69at7ZFHHomb97fffksVKL/88otdddVVNm/evL9sBP765RpGu/YTJ05E3R/+mZryw/Om5/VLp0+fdp8aUd5///0/AJQW+fsVri1btrj7smDBgmSgqBMO1+jRozM3KDLQXLlyuQpLXbt2teLFi9vnn39uK1assFtuuSVZBSNBmTBhgt18883OjRswYECoIQcPHmxXX3111JshA+nVq5c1b97clSdX0IMi4+vcubM756233hoCIxKUWPkefvhhl6927dquE4iVL57kMshVeOaZZ9zvcufObU8++WTouEZkHdM5Onbs6PYtX77cjYqCvmnTpnbllVe6XjVa+7z++utWtWpVd79UhtzZ4cOHR73+lBSr/Xft2uXa9tFHH7V77rnHlfnBBx+4YwcOHLBnn33WWrZsaRUrVnTX3K1bt1AcWK9ePStbtqy1b9/etm7d6va//fbb9vjjj1utWrWs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\" width=\"202\" height=\"186\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x1d9248f5 \"BufferedImage@1d9248f5: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@337c5535 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 202 height = 186 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; **
+;;; Each call to the above rule deletes one `parent_of` edge. In the above example, there should be three such edges:
+;; **
+
+;; @@
+(delete_parent_edges!)
+;; @@
+;; =>
+;;; {"type":"html","content":"true","value":"true"}
+;; <=
+
+;; @@
+(delete_parent_edges!)
+(delete_parent_edges!)
+;; @@
+;; =>
+;;; {"type":"html","content":"true","value":"true"}
+;; <=
+
+;; **
+;;; If we wanted to delete all `parent_of` edges, we could just use a `while` loop:
+;; **
+
+;; @@
+(while (delete_parent_edges!))
+;; @@
+;; =>
+;;; {"type":"html","content":"nil","value":"nil"}
+;; <=
+
+;; **
+;;; Now, let's call our `new_parent_of2!` rule. How often can it apply?
+;; **
+
+;; @@
+(new_parent_of2! "Jens" "Flo")
+;; @@
+;; =>
+;;; {"type":"html","content":"true","value":"true"}
+;; <=
+
+;; @@
+(new_parent_of2! "Jens" "Flo")
+;; @@
+;; =>
+;;; {"type":"html","content":"true","value":"true"}
+;; <=
+
+;; @@
+(new_parent_of2! "Jens" "Flo")
+;; @@
+;; =>
+;;; {"type":"html","content":"false","value":"false"}
+;; <=
+
+;; **
+;;; As expected, it can be applied twice only, if there are three "Jens" Persons and one "Flo".
+;; **
+
+;; @@
+(-> find-parent matches view)
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQMAAAB0CAYAAACBgVcGAAAczklEQVR42u3dBbh0VfUGcBS7C7FRFDCwA7sRsVsEuwvrw25FxZayULAVsUApu1vsBCxsRcDu8///ts+6nu9858w5M3fu/SbW+zzz3LkTZ86c2fvda71r7bW2qBKJRKKqTtsir0EikUgySCQSSQaJRGIVZPCnP/2pOuSQQ6o73elO1SUvecnqzGc+c7XFFltUpz/96Vdu8f+ov6c73enK3/r9eK55a3t80td2nU/zseb9+mPnPe95q+td73rVs5/97OrEE0/MIZRYLjL4y1/+Ur3gBS+oLnCBC1R3vOMdq7e+9a1lIvz1r39dqqv1n//8p/r9739ffexjH6s2bNhQXfCCF6zudre7VSeccEIOpcTik8GPfvSj6opXvGJ1hzvcIQd9A8hwn332qbbaaqvqbW97W16QxOKSASJgGu+///55qUbgBz/4QXWJS1yiesYznpEXI7F4ZPCtb32rOsMZzlAdeuiheZkG4Fe/+lV1vvOdr3rFK16RFyOxOGTw61//utpmm22qN7/5zVP5FH723/72t4W/mj//+c+rs53tbNU73/nOHFqJxSCDu971rtWTn/zkqRHBRS5ykerDH/5w6/OEyXOc4xxFrb/xjW9cXeYylyn6xLxOqG984xtFaP3lL3+Zwysx32Twuc99rlgF//jHP6byCfe///2L7tBFBrDLLrtUF7rQhcp9iv1jHvOY8p53v/vdc3lVn/jEJ1YPfehDc3gl5psMhA5f85rXTOXo73vf+6pnPetZm5CBCV/H3e9+92I9BEK4RCR9+Pe//73J8cYlsni/Y00Dp5xySnXuc5+7+t3vfpdDLDGfZPCHP/yhOte5zlX9+c9/XvWRTQQrvonZJINrXOMa1aMf/ehOMvjyl79c3vO4xz2uaA0PechDqstf/vLVda5znerII48sr3nd615X7bTTTkXBlwC1xx57VN/73veq3Xffvbrzne9cHuPDw9FHH13d5CY3qXbdddfqmte8ZskTgAMOOKC6ylWuUo5x7Wtfu/j7++2331Su7D3vec+pkWoise5kYKLtvPPOUznyve51r+qrX/1qud8kA26AyVwng6233roIlx//+Merq13taiWhx2R+7GMfW3QFqzfz2+P//Oc/q/e///3luAhBVuTBBx9cPehB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\" width=\"259\" height=\"116\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x24285971 \"BufferedImage@24285971: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@337c5535 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 259 height = 116 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; **
+;;; ## Isomorphic vs homomorphic matching
+;;; Consider the following rule to creae a `works_for` edge between two Person nodes.
+;; **
+
+;; @@
+(rule 'works_for! ['e 's]
+      { :read (pattern
+                (node 'f {:label "Person" :asserts {:name "'&s'"}})
+                (node 'j {:label "Person" :asserts {:name "'&e'"}}))
+        :create (pattern
+                 (edge 'e {:label "works_for" :src 'j :tar 'f} ))})
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,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\" width=\"160\" height=\"202\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x7e66bbff \"BufferedImage@7e66bbff: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@7648d7de transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 160 height = 202 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; **
+;;; It works fine when the _read_ part maps the two nodes in the pattern to two nodes in the host graph, for example:
+;; **
+
+;; @@
+(works_for! "Flo" "Jens")
+;; @@
+;; =>
+;;; {"type":"html","content":"false","value":"false"}
+;; <=
+
+;; **
+;;; However, let's assume we also want to model self-employment, e.g., by calling `(works_for! "Flo" "Flo")`
+;; **
+
+;; @@
+(works_for! "Flo" "Flo")
+;; @@
+;; =>
+;;; {"type":"html","content":"false","value":"false"}
+;; <=
+
+;; **
+;;; It does not work.
+;;;
+;;; (Note: We are assuming here that there is only one person with name "Flo". In that case the above rule application will not find a valid match (and return ```false```). This is because Grape's rule matching engine will search for _isomorphic_ matches of the _read_ pattern in the host graph. This means that the nodes / edges in the read pattern must match to _distinct_ nodes / edges in the host graph. This matching semantics can be changed to _homomorphic_ matches by adding the :homo keyword to the definition of the reader pattern:
+;; **
+
+;; @@
+(rule 'works_for! ['e 's]
+      { :read (pattern :homo
+                (node 'f {:label "Person" :asserts {:name "'&s'"}})
+                (node 'j {:label "Person" :asserts {:name "'&e'"}}))
+        :create (pattern
+                 (edge 'e {:label "works_for" :src 'j :tar 'f} ))})
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAADKCAYAAAAioEsRAAAYKklEQVR42u2dCdxM1f/H7cQjRAjZ8kIiS/aQLUuWiJC9EMlaf5KlEhI/S7K84iWh9LInS1Rk30WWZF+y7/u+nP95H840z7gzz4zneZh5nu/n+7qvuXPnzr137n3f7/meM+d7bhwlEj1GxZFTIBIARQKgSCQAigRAkUgAFAmAIpEAKBIARSIBUCQAWn3yyScyyeR1ilYAP/vsMxUnThzzKpNMnlPcuHEDhjBgAB+GclHs0MPwIQCKBECRACgAigRAq7Nnz6pt27YF5Um+ceOG2rdvX5Ru8/Lly2rlypXqzJkzD/X9U6dOCYDo4MGD6rXXXjO1obRp06pSpUqprFmzqvLly6uNGzf6tY9Ro0appEmTqubNmwcdfDNnzjS/q169elG2zQ0bNqhy5cqpVq1aqeTJk6srV64E9P2///5bxY8fX/3666/m/ebNm835b9asmRo8eHCkjm3Pnj2qZ8+e6sUXX1R58+YNDQ/477//mqaarl27uu7ukiVLqiRJkqiLFy/6tZ9XX301KAFEb7zxRpQCWK1aNTV+/Hh1+/ZtNXv27IC/v2zZMnO+J02aZN7/9ddf5v2lS5ei7BhxCnny5AkNAIGME9CtWzfXsiFDhphl8+fP92s/eFF/ALx79260A3fnzp1wrw0bNvQJIOvZdf1R9uzZXfA8zPEQDnBu//jjj3AAcuM/jG7evPnAsm+++Sa0AWzcuLFKkCCBK3bq0KGDSpMmjVq1apVau3atKlasWLgf6A7g9evXVevWrc3nJUqUUPPmzXOtV7hwYdWxY8cHjoF4KnXq1ObzAwcOqKpVq6oUKVKoLl26mM8HDhyocuXKZY4Vz9OjRw9VpUoV46nr1q2rjh8/rk6cOGGWP/vss+qrr74yxeOMGTPCAcjvoHj6+OOPzYWbMGGCatGihSpSpIjxlL50+vRpsx2KS9Zn/urVq+rw4cOqVq1aqmbNmqpAgQKqb9++BrY1a9aYfdevX19Vr17d/D68HPuNFy+e2rVrl1cAd+7caYr5bNmyqSZNmqj9+/c73szvvvuuOdc5c+Y00IU0gLVr11bjxo1Tb775pkqcOLEaMGCAa51Dhw6ZdZYsWWLe8xmxlROAnTt3Vv379zcn6KOPPjLr3bp1y3zWqVMnNXbsWMfjACSAsl6CC2098PTp09WXX35p5vv06WPAthWMggULqpdfftn8jnbt2pnj7NWrl/r000/V1q1bXQCyzYoVK7ouPCADBSEIx9e0aVO/zinx7sSJE11ejf1TYth4jhuXG4D4Onfu3Ob95MmTzc3EPhE3CfA6AQigwMOxAyw3TJs2bR44jt9//904ArtfznlIA0jFAw/E/NKlS8Otc/LkyXAADhs2zBFALsgTTzxh4qRGjRqZ2PCZZ54xHi4iARueAdg58WyHu9/CeezYMTPP9vr16+f6HmBybNTCp02bZubxwlYAyEUElCNHjoTb53PPPaeKFy+uduzYYYAJFMDly5eb/e3evdv1+UsvvaSef/55Mw/4eEanONLKE0DiSrw3548pf/78jhUKKol8jxue77off8gWwbh6ij7uXPeg2F8AKY5Yj9pYoMI7ZMyY0dzJI0aMUGXKlFFhYWHmmPDO1uOxfXcAuVlYNmfOHPXTTz+ZeXcBINvBo/7222/hPiMOI7RImDChV8/sC8AffvjhAQDff/99c/P4ij/x0N4AHDp0qLlZ/BE1Xn5X5syZzU0UI2LAKVOmmPecPE8AFy9eHKEH5IKOHj3a9RneyD0O9KXu3bubeIYilTa2J5980ngUmlOs2H6NGjXCxY8c26ZNm7wCCATEYunTpzfxoi0+//zzT+MViTnZlz/teu4AAjD7s+8RMW6OHDl8AkiM5w3ARYsWmRDIenxbxO7duzfcNv755x/jJFifG9fepCEHoK2VEcxaEZizjOq8hYgLxB134cIFU4Rwl1+7ds18XqFCBRewFJvEVnixLVu2mGKEti8bOxLPeROehP3aY6at7emnnw5X02vfvr166qmnzHHYGjtFFEBNnTrVfN/GV4iYliL83LlzJvYqW7as8aRs8/XXXzfrEAPS7LR+/Xqf54rzQEw3cuRI857fT7vpW2+95VqHIp3404YOVEDcRbth79691dGjR73GgBTBRYsWNXAtXLhQ1alT54GaOt6XCVHZ4jhCDkAC8MqVK5sTwIUePny46yRRDNNgaosLKhTEaMRNBPu8sj4Vl2TJkhnvQvyyfft2lSVLFrNNaq7u3gHv1qBBgwjbFKnRImrdxDjuAjw8YOnSpc0xvfDCCyZgpwiiEsN+adRlPS4MvytlypTq559/Vh9++KH5nIuLx8SbtW3b1tSKnQJ9d+FtuEn5PnHZ3LlzzXKg5fdyTqgNAzw3ADcDNyLnxr1EsMARr3qrBY8ZM0YlSpTInG+8s9O/TMDHDUUMzM1vtxdyHjAQ4UXsnR9Rex9we4rvRdTm5tke5q19jCKKoiwybYt4Pn6T/TeDV4pkp8lX8cxv4gawN05EoknHWxHsfq5suODt2PntnAfPcxBjAYzpwoNTRDtNnp44qmQBJDxZsGBBpLYF2Hhm4kEBUOSXKK7XrVtnJn//f/em8+fPu7blT+cQAVD0WCUAigRAkQAoAIoEQJEAKACKBECRACgAigRAkQAoAIoEQJEAGDQAkvTDH+cy+T9xzgTAKBK9LOhjJ/JP9OSmj6AAKAAKgAKgACgACoACYGwHkK7nZHQJgALgYwGQJBqSgTxzQ0j9ZHgM8lzTpUtnEoxIfCKxm27rAqAAGCUAkrfgOfKCFZlsNF0whgtiHD1GNSAXmDEIBUABMMpjQM+MLjyg+wBGJOv4M1KX5yhUdj6Qka/ssfAaFSN5CYBBBiDjvpCDS34wImGdhHc74oITgOT+AuDq1asdR43yNiqW08hX3kbWwrsypAajPTBER6ZMmcxoAzahXgCMIQCSW8voCsSAiItPkjnJ7O4AMuwYw7SR1M66AORt1CjmPUfFImZ0GvnK28haeMlBgwa5xp1hGAwgZ7sCYAwrghnc0QLoJDvYDhcOYBgdAYh8jRrlNCqW08hXvkbW+uWXX8y8Hb+ZsWQiC48AGKIAOg1i6WvUKKdBiTxHvopoZC1PACni7dgxAqAA6HPUKE8AvY185WtkLQEwFgLIuCzEcXYoYCoDQOA0WqmvUaM8R8XyNvKVr5G1LMR2fBfiTveBJAXAGAggnocRoNgmDdFAAwRA4l5UWjmNGuU0KhYAOo185W1kLYa0YPhetgGkDMRJJSZVqlThaugCYAwAkGHFGM7MKtDnbEQ0apSV58hX7oqKkbUEwBADkAez4OUY3DGyRVuoSAAMIgD5T5eGXhqSpTOCAPhYimCaQmKTBEDpDygACoACoAAYReJhNpLpFthEzCsAigcUDygACoACoAAoAAqAAqAAGAsB5K85/onxFB0ReMhioKJ3twAoAPotOkHY5+ta0dGAp3LSHb9SpUp+b4sGdbqNRfSIVwFQAHSJJwh5QkbvGzq6olKlSpm8E39Fbxt60QiAQQhgRNll9GiJ7p4onqLblX2quxVd9ElSouMqDzV0f4ZbROLh3lIEBxmAEWWXETfx/Fyeu0bOxqxZs8xyXvFOHC+v9Adknl7KdEClJ7N9NCl5Hzy1kgQlEoz8fRYxz0X2HCqNPoAZMmQwMNEhlad/8sxiJnpbI6dMPES/QQEwyADEq/nKLiPhnGcLIxKCiL8QgFKkAQIXmE6kbIPvkdnGfnlwNQJenqrOvuhUCuw2841HozpNXbt2Nd91787PzUBmHfv59ttvzTJ6QxPb8Z7te8vE89yWABhERbCv7DK6Ya1YscLUOulOj4e04oHLgwcPNvP0cmYbdkgO0jPxgtRYeVA2/QnJjOPZwhSj5HawbZKMnCbPp43TE5vcZJ4hTAYez0YGYmJAnv5u5SsTT5phQgRA9+Qeik9yfpko5ij+nADEu7gDOGXKFAMC4LJ8z549kfod1IZbtmxp5klgZ5vkE+OR3Z8y6SsTTwAMQQDJ0bDzPEXcG4B0uXcCEA+IJ3R/AjlQEwe+/fbb5snoThNFuhUVDopZ+3R4ilpiPPcxaax8ZeIJgEEKoK/ssly5cpmLTZ5GgwYNTGWDygECxoEDB7oCfzscB6ICQixngSZhaMSIEWrLli2maCSGxHORKec07dq1KxywJBuRtG6fAG/HvmY5w3vgYfGIvjLxBMAgBDCi7DIGGkqQIIGJv7744guT4cY2yRPhO1RCeGhzw4YNzXvAJb+XLDbef/7552YYD5KaeA/QxIeBCk+LZwwLC1P58uVTXbp0MTAT37FdoLO1a6dMPCmCQ7ghmgEq3dsDH0YUm9SOIyP+zcAzerZH7t69+4EGZn8z8QTAEAAwNkkAFAAFQAFQABQABUABUAAUAAXASCponxVX6P4kz4qL2QAG7YnU9omSp4IKgAKgACgAigRAAVAAjE0A9tYGhCIBUDygACgAigRAAVAAFABFAuAj0efaPtUmEgDFAwqAAqBIABQABUABUCQAPhLJPyECoHhAAVAAFAmAAqAAKACKBMAYUwm5q22Lthsq6h60eEvbam1/a2P7AqB4QEct1ZZBWxxtR7RFhc5oy6qtpDa2O1QNFQAFQO/qqy0qAWR7L2jD8/XRtkabABhLAXQq/lh2U9ttbcyP0BYRgFe0+avG2opo8/d4OBb3VwEwSAHMri25Ni7uj9pSaAvT9qW2w9qyaCutDY3T9py2JNpyaZusjQs8SFsebTW0pdVWRps7gHgsis982uZrW6mtkDbWTaNtgzZfKq8toTa2x/5Ha7us7V1tqbU9qa2itp3a9mlrry2ltmba+N5wNVwADFYAW2vjwnbUZj1NXG0n1b2nIxXTNkvbL9pYD+jwcq9pY71F2j7SFue+NdfGNi2A27UBMMuvqXvDylXW1kIb76toW6YtIr2qDWit3tb2tLbj2oDuKW3ZtO3Xxv7YN/EixzlNmwAYxEVwCW0Ztd3RxjIu3lfa/tHGcoB7XRtexep3bRa4Q9qYp1ZtZQF8RltL1TLcft/QlkAbnnGdttPqdEAAAm48bXhAK+bZ3zxtQ7Qxz/FLDBgCAH6rjQv2s7ZM2pgvqO0DbT21oeLaKJ5tvHVRGx6wrDa8pYXWE0DriWhCsdqsLbM2PqMoP6stEAD/1cZ38aJW32lj2Sht/sSfAmAQAUg8RRwIUMRv/9Nm4aF4Q9W08X6bujfULt/BC1Fk+wKwrTZe/0+bFTEczSp4Tz77WH0cEIDsm2N9XpvVBG32JhIAQ7AWbGPBudoAiuCdi241URufd9eGZmvj/RxtQMp8L21WA7SxbLc2KhHMj9GGCmv7TRvKr62BtojEes9qs6quDQg3akNNtKXThmemAsX+tmoTAINY7jkh67VRk7VFbF1tU7S5q4u2+NoodhNr47vntVFcc8FTafteGxAT+7GMohvIrUdtqo2KDdvhM77LPya+hKfE2/L9StrwgEe1vayNWrStUS/RRmWJygnr0m5IfCoAhkg7IMWiFWBR+fDUBW0E93iahxVNN1e1HVPHXO2BP/kw1vWmg9r4a87pWKPtvAmA0QPg49IBbWV9GJWOoDpvAmDMAjDkzpsAKAAKgAKgACgARk6SlCQAigcUAAVAkQAoAAqAsQNAGmxv3Dc6GvTQZt8/ysZcATCWAshfYPyHGs/DWMZn17WJBMBoE51B43gx/mcVCYDRqhna6HrlCR/LpmsTCYDRKopYcjo8AWSZ7TIvEgCjVfW0EfNZ+Jh/U5tIAHwkojOoezHM/K/aRALgIxHNLaReWgCZlyYYAfCRqpW2+PfNM2tNJABGu1ZpC7tvzIsEwEcuC6AohgO4c+fOx/LY+winfvenIDw2zpkAGEWaM2eOqlatmrgOP1W9enU1e/ZsAVAAFAAFQAFQABQABUABUOvy5ctq5cqV6syZMwKgAPhoAdywYYMqV66catWqlUqePLm6cuW/0UX79++vwsLCVLx48VTZsmVVjhw5VK1atdTUqVMFQAEwagDk++PHj1e3b992vDiVK1dW6dOnN/N3795VnTp1Ms0ZM2bMEAAFwMgDmD17djVp0iTXeyBzV/369VWGDBlc7/fv328AfOeddyLc9p07dx7Y3s2bgY2tbL/PtgTAGATg6dOnVb169VTcuHFVkSJFzPzVq1dV4cKFVceOHb0CSJENgB988IF5//3336uiRYuqrFmzqt69extQxo4dq4oVK2Z+K8sbNWqkduzYoRo2bKjq1Kljlh05cm+Mvfnz55sQoGrVquY4Fi9ebJaPGDFCFShQwGyjePHiKmnSpOrrr78WAGOaB+TCTpw40fWeIhaA3AFMly6dOnHihFqyZIkqVKiQSps2rQFo1apV6pVXXlEXL15U69evN2AuWrTIHBfzQPjdd9+pcePGmRhz0KBBZps9e/ZUe/fuVdu2bTP7Z96enyRJkpj3TMSeZcqUUfv27VMtWrQw+xUAYziAngLARIkSqRo1aqj27durWbNmqfPnz5vPmjRpovLmzWs8HBOxYrdu3UyxCTx4RyuWp0qVylRgTp48abxthw4djJezAjTAtecoWbJkatSoUWaemJPPbt26JQDGNgDdi2B3lShRwtSUnZQgQQI1bdp/o8gDXenSpQ1ENWvWNEU1r+4AIrxc06ZNHwAQcPhuoDGkABiDAWzdurWqWLFiuGUzZ850BJAiGu/Vr18/4x1//PFH9d5776n48eObdkgr9tW9e3cBMDYAeP36dQPKyJEjXcsGDBigpk//L4utQoUKBgSaaTxloWjTpo3aunWrqSTgEVkXsCZMmOBat0GDBurChQuu+a5du6ply5aZ71toDx06ZODcvHmz8ZCJEydWw4ffexjM5MmTzboU3QJgDADw0qVLxoNxUfPnz6/mzp1rlufMmdMAgvr27Ws8JOs0btxYHT16NNw2bty4oWrXrm0+T5EihWrXrp2Bum3btmZZwYIF1Zo19569Ri2bCguAE08ePnzYLB86dKjKmDGj6tOnj8qTJ48aPXq0WT5w4EBXRYaaty2+e/XqJQDGpCLYU9euXQu4zY34zv0fFCdR/AInzT+e4rvUiCPj3QTAGAJgTJYAKAAKgAKgACgACoACoAAoAAqAUQAgzR9BmRkXhBPnSgAUDygeUAAUAAVAAVAAFAAFQAEwFgNI5wMn8T9xIH8H8jcffwcKgAKg36IjA+kABw8edC2jgwS9b+jMQDd8etj4I3Ja6LQgAAqAAYmeNrZ3tQWpZMmSZn7YsGGuvJOIRE+eSpUqCYDBDKCv7DKW0VPlUYsEKHfRRZ/uYIhEJTqtepN7x1Q8ZfPmzQXAYAQwouwyOobSj4/PSBxCZLDRV5Ak9C5duqjUqVOb/GAudN26dVXKlClNPoiF2ikzzh+RY+Iu+gLSYEwiEp+RBEXvaCabX+KUXUdSVI8ePQTAYATQV3bZ8uXLzQU/e/asWY95st+OHz9utkuG2oIFCwwIgAvI27dvV2PGjDHr8h1vmXEkL9GT2mlihAV07Ngx13HSixro+H6VKlVcnrl8+fLmRrD9DZ2y6zy3JQAGWRHsLbuMi0pXdzqh8jnLV69e7fKMeEWrfPnyuXI1KK5Zlxxeb5lxp06dUkuXLnWc1q5dG+74qHzwOzp37mwqIFRO6AXNMbJfbggrp+w6aYYJIQA9k3tISCKAJw+E5QxS5AQgXeJtMUfRy7p4R1+Zcf4Kj5YmTRpzTMDGGDV4W7ZLWoC7nLLrBMAQBXDhwoXmYp87d84Uw74ApAh3AtBbZhz7IVZ0mnLnzh1u/VKlSpntW5EkxfYzZcr0QB6wU3adABjEAPrKLiOGIumcBmEuJMsZKoOimRESGCrDisQl2yxCGx7rzps3z2tmHLEkgDtNFnKrZs2amSy6jRs3mvfr1q1TCRMmNNtt2bKlyRcZMmSIOnDggGN2nQAYxAD6yi7btGmTKfropsRxUTnInDmz8WDZsmUzFQ9iLUbPAuIsWbKoFStWGBDZBkU3gxV5ZsYBaCDiuHLlymViPzLjqHFT2yVBHTDZtq0xe8uuEwBDtCEaWGw8yOvDjkLlT2ZcRNqzZ88DlQqy6IDcyld2nQAYggDGJgmAAqAAKAAKgAKgACgACoACoAAYSQXts+KCeJJnxcWCp2WKBECRACgAigRAkQAoAIoEQJEAKACKggBA+yAWmWTynNwf0hMtAFoIZZLJ2xSo4kjBIXqcEgBFAqBIABSJBECRACgSCYAiAVAkEgBFAqBIJACKYq7+H8rTtDyur+hzAAAAAElFTkSuQmCC\" width=\"160\" height=\"202\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x1a4fc2c8 \"BufferedImage@1a4fc2c8: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@337c5535 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 160 height = 202 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; @@
+(works_for! "Flo" "Flo")
+;; @@
+;; =>
+;;; {"type":"html","content":"true","value":"true"}
+;; <=
+
+;; **
+;;; The homomorphic rule did indeed work. Let's create a query to see the graph:
+;; **
+
+;; @@
+(rule 'find-works
+      {:read
+   		(pattern :homo
+     	 (node 'e)
+         (node 'm)
+         (edge 'x {:label "works_for" :src 'm :tar 'e}))})
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,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\" width=\"143\" height=\"186\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x7fa45004 \"BufferedImage@7fa45004: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@337c5535 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 143 height = 186 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; @@
+(-> find-works matches view)
+;; @@
+
+;; **
+;;; ## Dealing with _Dangling_ Edges
+;;;
+;;; When deleting nodes, there may be edges left dangling. Consider the rule below, which deletes nodes of type "Person":
+;; **
+
+;; @@
+(rule 'delete-person! ['p]
+      {:read
+       (pattern
+        (node 'n {:label "Person" :asserts {:name "'&p'"}}))
+       :delete ['n]})
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKoAAABrCAYAAADnwhmTAAAOIUlEQVR42u2dB6wVRRfHnw2wIaAQUVSKsUURVCyooGIHK/ZOsBdAo2hARVAQjYgg1mDBji0WEMUGimCLUcSuYAEFBbvYGb/fSc7N3v1299773kPZ9/7/ZPLe7p2d3bv725kzc+ecqQqSlANV6RZIAlWSBKokUCVJoEqSQJUEqiQJVEkSqJJAlaRlE9SLL75YSanGaamCeskll4Sqqir7q6RU3bTccstVDGvFoFbnbZCkmnIkUCWBKkkCVRKo/zWo3377bZg1a1atlvnHH3+Ejz76qGS+Dz74ICxYsKBeAvTNN9/UD1A/++yzsO+++1qvrkWLFmGnnXYKrVu3Drvttlt44403yjrH9ddfH1ZZZZVwwgkn1NqNmThxYmjZsmU47LDDUvP88MMP4aijjrJRDfLXN73zzjthhRVWCE899ZRtv/XWW/Ycjz/++DBixIjMYz/++ONw4YUXhvbt24fNN988HzXq559/bg+7f//+tv3zzz+Hzp07h0aNGoUff/yxrPPssccetQoq6tmzp4GYpe+//75sUKdOnRpeffXVOgPqCy+8YN/97rvvtu0333zTtn/66aeyy6CS2WyzzfIBKjDyBS+44ILCvquvvtr2TZo0qazzUCuXA+qSJUtK5vn7778tHX744eGYY47JzPvLL7+UBeqXX34Z1ltvvfDMM89UCwq/7r/++qus7xD9LvH8mDTVOTdlRTV79mz77s8991wRqFQ0SccnnffGG2/MN6gAsuKKK9rNQH369AlrrbVWmD59enjllVfCdtttV/QF46DeeeedYdtttzUzYvDgwYWbvM0224S+ffumPpDzzz8/HHTQQVYepoiD+ttvv4VTTjnFzrnDDjsUwIyDmpbvyCOPtHzbb7+9vYRp+ZIAP/PMM0OrVq2sqVxzzTVDs2bNwiOPPJJ5vrFjx9o94t5zD44++ujw/vvvWwtBS8G+efPmWV4qg1133TXss88+oVOnTuH555+3/WPGjAkdOnSwMrhuzKvRo0cXAb/88suHDz/8MBFUytlvv/1C9+7dLa200kph6623DnPnzs03qABy6623hkMPPTQ0bNgwXHHFFYU8X3zxheWZMmWKbfMZICWBCsxdu3a1cl977TU77tlnn7XP+vXrZw8xSaNGjQo77rijAfvnn39a+ccee6x9dvbZZ4fLL7+8ADOfkScOalq+r776yvLR/GflS+rQDRw40I694YYbwowZM0LHjh3DxhtvnFnO448/bscA62233Wb39aSTTgpXXXWVHQf0n3zyiXVAAZD//XlhcrFNAsQuXbpYhdG7d++ie45oJRYvXpwI6nfffWfXyovFcxg3blxYddVV7dy5BpUOFDVe9IG6vv766yJQgSoNVODCQKcWIa299tpFtXWa2rRpE4YMGVLYPuSQQ6wsauOVV17ZagXKwx6mo/XSSy8VgZqVLwpqVr4k0TrQurjuuusuK4sRibRyABfIONbFPWjatGm4//777X4CGC0VtWa8OfdnBljYkeihhx6yz6IvFOd2JTX9+++/v7UmrgMOOCBstdVW+W/658yZE9ZYY42wySabFBnllYBKE0gtU4l4aPRYqXlc2KjHHXecNVWcm55qlo2alc9BpQOSlY97wHV4olaKg8o94vg77rgjtRzEMQ888EDRPdx5553tGADiheFvFFTEfeV7x0F97LHH7NiorXnRRRdVBCotIWXWCRt1/Pjxth3tcTuobj9lgYrNtvvuuxed4+GHHy7Z6aA2OvHEE4tAZaiFz7CPb7rppsJn2IbAGa9R0/I5qC+++GJmPoa8GAXxRM0YB3Xy5MlWFrZhWjlJoNL8UhsOHTrUatt77rknnHbaaTbEFIVrnXXWCQMGDCgLVMaQKwEV8wNzIJegenMDYC7sIfb5TeIBNG7c2OwbHiZNDs3er7/+ap9369atALbf0FNPPTW8/fbb1gHwGpY3+sEHH0y8Dh4a8AMID4MbCvCcAxOAjgwdjJkzZ1pTyzgiPzRwLu/cpOXjmskHdHRq0vKlNf2A5YPrNNeYSVnnY3QAALELXUcccYRdh//PcKAPMfmLTF+AczEmygtFX+Haa6+1z+677z7L6zYpLykdVTp8WaDybDx/u3btzNbOHahAsddee9kXbN68eeGm8KVo/rnZ3rzQWeAm8mXpCfOX/DTXvPnYokD6+++/W8eMMjEjyMs+tNFGG9lDShKdh0033TQ0aNDAzk3CjHjiiSfCu+++GzbYYAMrk44MzS4PhFrc7Wua4KR8roMPPtgePPcjK18SqOTbe++97cXZcsstDSiUVA618Omnn277eNlefvlly8uPF3QyeVnpjXvve+TIkWHdddcNl156qUHj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\" width=\"170\" height=\"107\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x72047b6 \"BufferedImage@72047b6: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@337c5535 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 170 height = 107 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; **
+;;; The question is how to deal with such rules when the nodes to be deleted have edges that aren't explicitly considered in the rule. For example, what would happen to the `works_for` edge of "Flo" if we were calling `(delete-person! "Flo")`? It can't be left "dangling", as that would result in an invalid graph.
+;;;
+;;; Graph transformation systems may be based on different theoretical foundations. Algebraic theories for graph transformation systems may be based on different approaches, including the so-called double pushout (DPO) approach and the single pushout (SPO) approach. We won't dive into the theory here, but what is important at this point is that these approaches differ in their treatment of "dangling" edges during node deletion. DPO rules will disallow dangling edges while SPO rules resolve dangling edges by also deleting them from the host graph. The default rule semantics is SPO in Grape. However, a different rule semantics can be specified. The following rule is identical to the previous but specifies DPO semantics. Applying it to our host graph will not be allowed if the application would cause any dangling edges.
+;; **
+
+;; @@
+(rule 'delete-person! ['p]
+      {:theory 'dpo
+       :read
+       (pattern
+        (node 'n {:label "Person" :asserts {:name "'&p'"}}))
+       :delete ['n]})
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKoAAABrCAYAAADnwhmTAAAOIUlEQVR42u2dB6wVRRfHnw2wIaAQUVSKsUURVCyooGIHK/ZOsBdAo2hARVAQjYgg1mDBji0WEMUGimCLUcSuYAEFBbvYGb/fSc7N3v1299773kPZ9/7/ZPLe7p2d3bv725kzc+ecqQqSlANV6RZIAlWSBKokUCVJoEqSQJUEqiQJVEkSqJJAlaRlE9SLL75YSanGaamCeskll4Sqqir7q6RU3bTccstVDGvFoFbnbZCkmnIkUCWBKkkCVRKo/zWo3377bZg1a1atlvnHH3+Ejz76qGS+Dz74ICxYsKBeAvTNN9/UD1A/++yzsO+++1qvrkWLFmGnnXYKrVu3Drvttlt44403yjrH9ddfH1ZZZZVwwgkn1NqNmThxYmjZsmU47LDDUvP88MMP4aijjrJRDfLXN73zzjthhRVWCE899ZRtv/XWW/Ycjz/++DBixIjMYz/++ONw4YUXhvbt24fNN988HzXq559/bg+7f//+tv3zzz+Hzp07h0aNGoUff/yxrPPssccetQoq6tmzp4GYpe+//75sUKdOnRpeffXVOgPqCy+8YN/97rvvtu0333zTtn/66aeyy6CS2WyzzfIBKjDyBS+44ILCvquvvtr2TZo0qazzUCuXA+qSJUtK5vn7778tHX744eGYY47JzPvLL7+UBeqXX34Z1ltvvfDMM89UCwq/7r/++qus7xD9LvH8mDTVOTdlRTV79mz77s8991wRqFQ0SccnnffGG2/MN6gAsuKKK9rNQH369AlrrbVWmD59enjllVfCdtttV/QF46DeeeedYdtttzUzYvDgwYWbvM0224S+ffumPpDzzz8/HHTQQVYepoiD+ttvv4VTTjnFzrnDDjsUwIyDmpbvyCOPtHzbb7+9vYRp+ZIAP/PMM0OrVq2sqVxzzTVDs2bNwiOPPJJ5vrFjx9o94t5zD44++ujw/vvvWwtBS8G+efPmWV4qg1133TXss88+oVOnTuH555+3/WPGjAkdOnSwMrhuzKvRo0cXAb/88suHDz/8MBFUytlvv/1C9+7dLa200kph6623DnPnzs03qABy6623hkMPPTQ0bNgwXHHFFYU8X3zxheWZMmWKbfMZICWBCsxdu3a1cl977TU77tlnn7XP+vXrZw8xSaNGjQo77rijAfvnn39a+ccee6x9dvbZZ4fLL7+8ADOfkScOalq+r776yvLR/GflS+rQDRw40I694YYbwowZM0LHjh3DxhtvnFnO448/bscA62233Wb39aSTTgpXXXWVHQf0n3zyiXVAAZD//XlhcrFNAsQuXbpYhdG7d++ie45oJRYvXpwI6nfffWfXyovFcxg3blxYddVV7dy5BpUOFDVe9IG6vv766yJQgSoNVODCQKcWIa299tpFtXWa2rRpE4YMGVLYPuSQQ6wsauOVV17ZagXKwx6mo/XSSy8VgZqVLwpqVr4k0TrQurjuuusuK4sRibRyABfIONbFPWjatGm4//777X4CGC0VtWa8OfdnBljYkeihhx6yz6IvFOd2JTX9+++/v7UmrgMOOCBstdVW+W/658yZE9ZYY42wySabFBnllYBKE0gtU4l4aPRYqXlc2KjHHXecNVWcm55qlo2alc9BpQOSlY97wHV4olaKg8o94vg77rgjtRzEMQ888EDRPdx5553tGADiheFvFFTEfeV7x0F97LHH7NiorXnRRRdVBCotIWXWCRt1/Pjxth3tcTuobj9lgYrNtvvuuxed4+GHHy7Z6aA2OvHEE4tAZaiFz7CPb7rppsJn2IbAGa9R0/I5qC+++GJmPoa8GAXxRM0YB3Xy5MlWFrZhWjlJoNL8UhsOHTrUatt77rknnHbaaTbEFIVrnXXWCQMGDCgLVMaQKwEV8wNzIJegenMDYC7sIfb5TeIBNG7c2OwbHiZNDs3er7/+ap9369atALbf0FNPPTW8/fbb1gHwGpY3+sEHH0y8Dh4a8AMID4MbCvCcAxOAjgwdjJkzZ1pTyzgiPzRwLu/cpOXjmskHdHRq0vKlNf2A5YPrNNeYSVnnY3QAALELXUcccYRdh//PcKAPMfmLTF+AczEmygtFX+Haa6+1z+677z7L6zYpLykdVTp8WaDybDx/u3btzNbOHahAsddee9kXbN68eeGm8KVo/rnZ3rzQWeAm8mXpCfOX/DTXvPnYokD6+++/W8eMMjEjyMs+tNFGG9lDShKdh0033TQ0aNDAzk3CjHjiiSfCu+++GzbYYAMrk44MzS4PhFrc7Wua4KR8roMPPtgePPcjK18SqOTbe++97cXZcsstDSiUVA618Omnn277eNlefvlly8uPF3QyeVnpjXvve+TIkWHdddcNl156qUHj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\" width=\"170\" height=\"107\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x3c4bd463 \"BufferedImage@3c4bd463: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@69a20ec2 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 170 height = 107 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; **
+;;; An attempt to delete "Flo" should fail, because if the relationships that would be left "dangling":
+;; **
+
+;; @@
+(delete-person! "Flo")
+;; @@
+;; ->
+;;; .      [Failed]: Transaction failed and rolled back. Error: [{:code "Neo.ClientError.Schema.ConstraintValidationFailed", :message "org.neo4j.kernel.api.exceptions.ConstraintViolationTransactionFailureException: Cannot delete node<127>, because it still has relationships. To delete this node, you must first delete its relationships."}]
+;;;
+;; <-
+;; =>
+;;; {"type":"html","content":"false","value":"false"}
+;; <=
+
+;; **
+;;; Now let's use the SPO semantics (of automatically removing all dangling edges). It does indeed remove the node (and delete its edges).
+;; **
+
+;; @@
+(rule 'delete-person! ['p]
+      {:read
+       (pattern
+        (node 'n {:label "Person" :asserts {:name "'&p'"}}))
+       :delete ['n]})
+
+(delete-person! "Flo")
+;; @@
+;; =>
+;;; {"type":"html","content":"true","value":"true"}
+;; <=
+
+;; **
+;;; ## Schema
+;;; Some graph transformation tools require the definition of a graph schema or _type graph_ to constrain what nodes, edges etc are allowed.
+;;;
+;;; Grape is schema-light, i.e., it's not mandatory to define schema constraints. They can, however, be defined.
+;;;
+;;; ### Unique Key Constraints
+;;;
+;;; Node attributes can be declared as _unique_. For example, the following constraint states that the `number` attribute of `Account` nodes are unique:
+;; **
+
+;; @@
+(unique "Account" "number")
+;; @@
+;; =>
+;;; {"type":"html","content":"nil","value":"nil"}
+;; <=
+
+;; **
+;;; Let's try this out with the following rule:
+;; **
+
+;; @@
+(rule 'register-account! ['name 'num]
+      {:read
+        (pattern
+          (node 'p {:label "Person" :asserts {:name "'&name'"}}))
+       :create
+        (pattern
+          (node 'm {:label "Account" :asserts {:number "&num"}})
+          (edge 'e {:label "account" :src 'p :tar 'm})
+         )})
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOwAAADKCAYAAACmJqw/AAAenUlEQVR42u2dCbyN1frHRYUiZCjS4MpQGRoMURShT0RocJu4QoOZGy4q5eYaLkroKnVvim6TNNc/DZoTpYSbEJEhJBRFZf3X97nWvvtse+9zNudon3N+v+fzfvbe7373eqf1Xc9a693rWQWcJEm5RgV0CSRJwEqSJGAlScBKkiRgJUkSsJIkYCVJErCSJAlYSRKwkiTlPWBvu+02LVq0ZNOSo8DefvvtrkCBAvaqRYuWA1sOOeSQlKFNGdj9KRUkScoengSsJAlYSZIErCQJ2PQDdsuWLW7RokVpcVG3b9/uli5dqtyVRFu3bnW7d+/WhchtwH799deuZcuW1vtVrlw5d+6557qTTjrJNW3a1H3yySdZ2se9997rjjjiCPenP/0pLS7q4MGDXdmyZZW7kqhmzZquW7dukc/Vq1d3derUccOHD3erVq3KN9dh+fLl7pZbbnG1atVyNWrUyB0edvXq1fboZ+DAgfb5xx9/dA0bNnRFihQxb5UVNW/ePG2A3bBhg3v//fcz3W7s2LH5IlNyP6dMmZJh3bHHHuvatm0b+Vy1alX3z3/+M98WYDidU089NXcAC5QA+5e//CWybvz48bbu5ZdfztJ+8NJZAXbPnj1Jv//tt98yvGamX3/9NUv7Ib3oNGfOnOlKly6dpX1k9Zh++umnhOeX6LdZPc+sKOw7Ok3WXX311e6GG27IsO1ZZ53lbrzxxgzA/utf/4qbHq/xzivZ+Wan4p1XdosCLVcDe80117hDDz3UffXVV/a5d+/erkyZMua55s6d6+rXr5/hBGOBfeSRR1y9evWsen3HHXdELjbVrj59+uxzDB9++KG76qqrXIcOHdzFF19sMP3www8J0/n+++9dv3793OWXX27VOX735z//2WoLN998szvxxBMjaU+bNs116dLF1a1b17Vv3962qVSpkjv88MNtXx999JH7+eefLVNzTg0aNHAvvvii+/bbb93QoUPd8ccf7+6++25XvHhxAz1Wa9ascVdccYUdT+XKld0zzzwT+e61115zZ599trvkkkusmRHa1tQC2DfHw3Fxnuibb74xz9emTRt3+umnuzvvvNPOmeM57rjjrLrPdQHCcD/ee+8917p1a/td165drXly0UUXuV9++cXSLVq0qJ0D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\" width=\"236\" height=\"202\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x6a343f93 \"BufferedImage@6a343f93: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@337c5535 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 236 height = 202 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; @@
+(register-account! "Judy" 1234)
+;; @@
+;; =>
+;;; {"type":"html","content":"true","value":"true"}
+;; <=
+
+;; @@
+(register-account! "Judy" 5678)
+;; @@
+;; =>
+;;; {"type":"html","content":"true","value":"true"}
+;; <=
+
+;; @@
+(register-account! "Judy" 1234)
+;; @@
+;; =>
+;;; {"type":"html","content":"false","value":"false"}
+;; <=
+
+;; **
+;;; The third call to the rule `register-account!` did not work, since the uniqueness constraint would have been violated.
+;;;
+;;; (Note: If the Account node had been defined as a _merged_ node, the effect of these three calls on the graph would have been the same, but the third call would have succeeded, i.e., returned `true`).
+;;;
+;;; ### Indexes
+;;;
+;;; Indexes are defined to speed up search. An example is shown below, which indicates that Person's are searched by `name` and `surname`:
+;; **
+
+;; @@
+(index "Person" "name" "surname")
+;; @@
+;; =>
+;;; {"type":"html","content":"nil","value":"nil"}
+;; <=
+
+;; **
+;;; ### Edge type constraints
+;;;
+;;; Source and target node types can be constrained with respect to their **cardinality** and their **types**.
+;;;
+;;; #### Cardinality constraints
+;;;
+;;; Cardinality constraints can be declared using the `to-one` and `from-one` forms. For example, the following constraint requires that `works_for` edges must lead to a unique node (from a given source node).
+;; **
+
+;; @@
+(to-one "works_for")
+;; @@
+;; =>
+;;; {"type":"html","content":"true","value":"true"}
+;; <=
+
+;; **
+;;; Let's create a sitation that would violate that constraint.
+;; **
+
+;; @@
+(create-person! "Sue")
+(create-person! "Joe")
+(create-person! "Ed")
+;; @@
+;; =>
+;;; {"type":"html","content":"true","value":"true"}
+;; <=
+
+;; @@
+(works_for! "Ed" "Sue")
+;; @@
+;; =>
+;;; {"type":"html","content":"true","value":"true"}
+;; <=
+
+;; @@
+(works_for! "Ed" "Joe")
+;; @@
+;; ->
+;;; Grape schema constraint failed:  Target node of works_for edges should be unique
+;;;
+;; <-
+;; =>
+;;; {"type":"html","content":"false","value":"false"}
+;; <=
+
+;; **
+;;; #### Type constraints
+;;;
+;;; Edge type constraints can be used to require certain types of source or target nodes using the `src_types` and `tar_types` forms. For example, the following constraint requires that `works_for` edges can only originate from `Person` or `Animal` nodes:
+;; **
+
+;; @@
+(src-types "works_for" ["Person" "Animal"])
+;; @@
+;; =>
+;;; {"type":"html","content":"true","value":"true"}
+;; <=
+
+;; **
+;;; Let's put this to the test by attempting to violate that constraint:
+;; **
+
+;; @@
+(rule 'replace-person-by-machine
+      {:read
+       (pattern
+        (node 'w {:label "Person"})
+        (node 's)
+        (edge 'e {:label "works_for" :src 'w :tar 's}))
+       :delete ['w 'e]
+       :create
+       (pattern
+        (node 'm {:label "Machine"})
+        (edge 'x {:label "works_for" :src 'm :tar 's})
+        )}
+)
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOwAAAC6CAYAAACtBKH+AAAeaklEQVR42u2dCbyW0/bHTwgZIkKDlFCZb6WbKDIkV5IMSYbKUOoabq4xka6/v3QNGaKRoquSIn/TpTRcQzQpoa4uFYluMhRRtP77u5/26Tlv73vOeTvndN7z9vutz/N5h2fce6/fXmuv53n2yjFBEMoMclQFgiDCCoIgwgqCCCsIgggrCIIIKwgirCAIIqwgCCKsIIiwgiBkH2HvuOMOLVq0FNNSooS98847LScnx39q0aKlaEu5cuXSJm3ahN2SXkEQhOLhkwgrCCKsIAgirCCIsJlH2FWrVtn8+fMzolLXr19v06dPl3YlYOHChWXiOhcsWJD0/w0bNtgHH3xgv//++7ZL2CVLltgZZ5zho1/77ruvNW3a1GrVqmUnn3yyzZ49u1DneOyxx2yXXXaxTp06lXpjv/vuu3bEEUf46xE2EeDoo4+2Aw44IKOv84svvrBjjjnG9tlnn6Tr58yZ4+94TJkyZYvPMXfuXK/rHTt2tPvvv98WLVpkvXr1sqOOOsrrTZmwsEuXLvUVcdNNN/nfa9asseOOO8523nln+/HHHwt1nhYtWmQEYcHgwYNF2AT07ds34wkLBg4cmJKwv/32m7366qu2bt26LT4+FhpdX7169WZG57DDDisbhIWUFOKWW27J/e+BBx7w/1FBhQFWujCExa3JD8HdKYzbE46V2IDDhw9PStiff/4533NuKcJ1oFAFlS+/cvI93WsJ5ytoP9ozELaw11hc4Np++eWXQtX9E088kUvYVNcZ/7+w5U8kLEYpsaMo04S9+OKLbYcddrDPPvvM/7722mutcuXK9s4779h7771njRs3zlPARMI+/fTT9sc//tG713369MmtUFye6667brNr+Oabb+y2226zGjVqWP/+/W333Xe3cePG+XHXSSedZAceeKBdcskl9vnnn9vkyZOtdevW1qpVK7+UL1/eGjZsaF9++WVSwk6YMMHve+GFF1r9+vXtq6++8v9//fXXduaZZ9o555xjjRo18tcMUK6uXbv68jVp0sRefvnlpPXGca6++mrbf//9vVu1995721577WUvvPBCyuOkKueIESPs8ssv99fB9QTQYVL+P/3pT34dZQePPvqo/eEPf/Bte+yxx/ryPvzww/kStnr16nbDDTf46zz4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\" width=\"236\" height=\"186\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x3434f55a \"BufferedImage@3434f55a: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@7648d7de transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 236 height = 186 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; @@
+(replace-person-by-machine)
+;; @@
+;; ->
+;;; Grape schema constraint failed:  Source nodes of works_for edges should be typed on of ["Person" "Animal"]
+;;;
+;; <-
+;; =>
+;;; {"type":"html","content":"false","value":"false"}
+;; <=
+
+;; **
+;;; ### Adding user-defined graph constraints
+;;;
+;;; Grape users can define their own types of graph constraints. This is done using the `declare_violation` form, which takes two arguments:
+;;;
+;;; 1. an error message, and
+;;; 1. a Boolean function that evaluates to true if a violation is found.
+;;;
+;;; Graph tests can be used to detect violations. Indeed, the "built-in" `to-one` constraint described above is defined in the following graph test `to-many`:
+;; **
+
+;; @@
+(rule 'to-many- ['l]
+  {:read
+   (pattern
+     (node 's)
+     (node 't)
+     (edge 'e {:label "&l" :src 's :tar 't})
+     (node 'o)
+     (edge 'f {:label "&l" :src 's :tar 'o})
+     )})
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,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\" width=\"166\" height=\"186\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x4312e419 \"BufferedImage@4312e419: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@7648d7de transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 166 height = 186 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; **
+;;; The constraint is registered with the `declare_violation` form:
+;; **
+
+;; @@
+(declare-violation
+    (str "Source node of " e " edges should be unique")
+    (test 'from-many e))
+;; @@
+;; =>
+;;; {"type":"html","content":"true","value":"true"}
+;; <=
+
+;; **
+;;; Indeed, the `to-one` form, is simply a function that does this:
+;; **
+
+;; @@
+(defn to-one [e]
+  (declare-violation
+    (str "Target node of " e " edges should be unique")
+    (test 'to-many e)))
+;; @@
+;; =>
+;;; {"type":"html","content":"true","value":"true"}
+;; <=
+
+;; **
+;;; More complex constraints cannot be checked with a simple graph test. In that case, the query results of graph tests can be further processed in the host language (Clojure.) The above "built-in" contraint `src-types` is an example. It is internally based on a graph test `any-edge` as shown below:
+;; **
+
+;; **
+;;; Since the
+;; **
+
+;; @@
+(rule 'any-edge ['l]
+  {:read
+   (pattern
+     (node 's)
+     (node 't)
+     (edge 'e {:label "&l" :src 's :tar 't})
+     )})
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,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\" width=\"138\" height=\"186\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x29a95724 \"BufferedImage@29a95724: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@560defba transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 138 height = 186 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; **
+;;; Below is the definition of `src-types`. It executes the `any-edge` graph test and then checks that for all matches the label of the `s` node is contained in the list of allowed labels:
+;; **
+
+;; @@
+(defn src-types [e ls]
+  (declare-violation
+    (str "Source nodes of " e " edges should be typed on of " ls)
+    (fn [] (if ((test 'any-edge e))
+             (reduce (fn [b n]
+                       (let [node   (nsel "s" (:nodes n))
+                             label  (-> node :metadata :label)]
+                         (or b (not (some #(= label %) ls )))))
+                     false
+                     (matches))))))
+;; @@
+;; =>
+;;; {"type":"html","content":"true","value":"true"}
+;; <=
+
+;; **
+;;; #### Dropping constraints
+;;;
+;;; Constraints can be dropped using `(reset-constraints!)`
+;; **
+
+;; **
+;;; ## Transactions
+;;;
+;;; Grape supports atomic transactions. Consider the following rule ```let_one_go!``` as an example:
+;; **
+
+;; @@
+(rule 'let_one_go! ['employer]
+      {
+       :read (pattern
+              (node 'emp {:label "Person" :asserts {:name "'&employer'"}})
+              (node 'worker)
+              (edge 'e {:label "works_for" :src 'worker :tar 'emp}))
+       :delete ['e]})
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMoAAADCCAYAAAAINl3FAAAZ50lEQVR42u2dCbhW0xrHo4FmURlCShFNuooozbqUMuVquGSIlDJTJKmEUlTkkqGElCkZ8iA8GUpSoYEMGRuVSiil3ttv7dZ39jm+8ZzTGf//59nP933728Paa7+/td537b3WKmKSJCVUEWWBJAkUSRIokiRQJEmgSJJAkSSBIkkCRZIkgSJJAkWS8hIot912mxYt+X7Zo6DcfvvtVqRIEfepRUt+Xfbaa6+UYUkZlMzQKEl5SZmxY4EiCRSBIkkCRZIKNyjLli2zNWvWZOkY27dvt48++qhQGsLGjRtt27ZtuZqGX3/91RYvXixQoumVV16xGjVquFaFOnXqWIMGDdzvHj162KZNmxIen226du3qWtZee+21TGfEnDlz3PlLlSpVKEGpW7euXXbZZZHftWrVsoYNG9qQIUPs+++/3+Pnf/DBB13eX3TRRTl2zXfccYedf/75zvaWLl2a92uUkSNHOkOfN2+e+71w4UIrWbKknXXWWUmXhlkFBY0fPz4pUH7//Xd76KGHChQoBx10ULr8Puqoo+zxxx/P0TSceuqpOQoK+uWXX5ztLFmyJO+D8uijj7rEzp8/P7LupJNOsvLlyyd1jj/++CNpUHbu3Bnzv4kTJyYEhf27detmPXv2zJYb5dOzY8eObLv5f//9d8r7HH/88XbFFVekA2XChAl7xDj9NWd09dq1a7fHQSGfwzaAu5dvQdm8ebNVrFjROnbs6H5T9Tdv3ty5A4jS/JBDDrGbb745Kihbt251hnzsscc64Px6MqNcuXL27rvvJgXKk08+aSeccIIdccQRNnjwYJfJrKO2O+yww+ycc85JeP0///yzK6m5luOOO85V9xznww8/tA4dOrj/cDM57+mnn+7iJB9ztWzZ0qpVq2YXXHCBfffddwnPtWHDBrv22mvtvPPOc3mFW3H99dfHTYcX1zJs2LCYoMTK05deesnatm3r7jOf+++/v/s+Y8YMl3fcx6eeesptO2rUKKtXr5716dPHHad48eLp4AyDAuwDBgyw0047zU4++WTr1KmTrV692i3YQvXq1W3MmDFu2xdffNGOOeYY+/TTT2OmExs78cQTnS1yPyns8i0ow4cPt/vuu89q165thx9+uM2dOzeyzb333muVKlWK/MZ/vvLK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/fm/efPAjUoFFFxC9r3llrT//TVMnZpcfCRQpJRBweiJFahVMEgMHjfriCPMNmwItu3ePTC+X34JfhObUKpfc018UIhf+Bw/Pu2/mTMDI8Z98tukAgrnxj1s2TLt/zfeCI714YcCRdqDrV633prmuhCfAIEP4hGBO//jLiHiCn5/9JHZ778H333tgyZODNbx3/nnB3EQjQWoXbsg6EbUXH36JE4rNRq1ndcllwSB+urVwW9inho1gtppwoT0UAsUKUsKv8Ly7bdmzZql/dezZ1Dyh3XnnWYVKgQBcpUqQeyBYZ53XmCYGCr70LLlHzj+979mL74YfCcuIdgHDlrNiG9atTJbvjx+OtkHKICNRgRqwF9/DZqL69Y1u+gis2rVgvMuWGBWp05wPs6zbp1AkbKxRvG+vxcBdrTXT1hPbcKT8swKV41nKGvXBr951rFoUewl3rOQFSvMvvgi7flNnstigVLwQMkt4SLx1D3Wksu1gkARKHrNXqBIAkWgSNkhjRQpUCTVKAJFEigCRaAIFIEiUASKQBEo+UCrVgVPr1muvjp40u1/858kUCQLXu3grV86QYUX1vEfT80lgVLo1aVLMDgDUIQX1tHLURIokgUvLfraI7yw7q23lD8CRXLi5UFcrYygsC6PvlgoUARK7ojBGooWTYOE76yTBIoUEp2z6BviQeE76ySBImVQ5cppoPBdEihSFPXrFwz8wMI4WJJAkaKIAbRLlgwWvksCRYrjfsntEijJaufOnbtc9SKFbum0azmvEF43y87snI6isICyY8cO24sn01Kh0N57721/59Dg3QJFEigCRRIoAkWgCBSBIlAkgSJQMq21a9faOeec467zwAMPtJNPPtmOPPJI69ixo33KKPYCRaAIlECbNm1yTaNX0avRGKDxF6tXr55VrFjRfmUsX4EiUAo6KP65wLYMc41kfF7AdV5NF+DdGj58uIPndUarT5BH4U//fUeKr+b79OzIxVf6BUo+A2Xr1q3Ws2dPO/bYY+2kk06y1157za1/6aWXrG3bti4P+Nx///3d9xkzZtgJJ5zgaoCnds9LOGrUKFcr9OnTxx2nePHidkXolfmGDRumAyMjKP369XOgzJkzJ2p61qxZYwMGDLDDDjvMRo8ebWXLlrUXXnjBnnjiCbv00kutUaNGzqXzAriWLVva6aef7v5799133foH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\" width=\"202\" height=\"194\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x5fb8563d \"BufferedImage@5fb8563d: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@7648d7de transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 202 height = 194 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; **
+;;; This rule "fires" one employee of a named employer (by deleting the ```works_for``` relationship).
+;;; Now consider the case where you want to define a function that fires _exactly two_ employees.
+;;;
+;;; Of course, you could simply call ```let_one_go!``` twice. However, if the employer only has one employee left to fire, only one would be let go. In some cases, we may want "all or nothing" semantics (atomic transactions).
+;;;
+;;; Grape provides this functionality with the ```transact``` and ```apl``` forms. Transactions are defined as follows:
+;;;
+;;; ```
+;;; (transact
+;;;      (apl 'let_one_go! employer)
+;;;      (apl 'let_one_go! employer))
+;;; ```
+;;;
+;;; The above form defines a transaction that applies ```let_one_go!``` twice (if possible) or makes no change at all. A transaction is invoked with the _attempt_ function, which returns true if (and only if) the entire transaction succeeds.
+;; **
+
+;; @@
+(attempt
+   (transact
+     (apl 'let_one_go! "Jens")
+     (apl 'let_one_go! "Jens")))
+;; @@
+;; =>
+;;; {"type":"html","content":"false","value":"false"}
+;; <=
+
+;; **
+;;; Of course, transactions can be used to define Clojure operations:
+;; **
+
+;; @@
+(defn fire-two!
+  [employer]
+  (attempt
+   (transact
+     (apl 'let_one_go! employer)
+     (apl 'let_one_go! employer))))
+;; @@
+;; =>
+;;; {"type":"html","content":"#'user/fire-two!","value":"#'user/fire-two!"}
+;; <=
+
+;; **
+;;; ## Backracking
+;;;
+;;; A Grape rule may have multiple possible applications in a host graph. Grape supports _backtracking_ when working with transactions. Consider the following rules ```hire!``` and ```promote!``` as an example. The first rule (```hire!```) recruits a worker on the job market for a given employer ```name```.
+;; **
+
+;; @@
+(rule 'hire! ['name]
+      {:read (pattern
+              (node 'm {:label "Employer" :asserts {:name "'&name'"}})
+              (node 'w {:label "Worker"})
+              (NAC
+               (edge 'e {:label "works_for" :src 'w :tar 'm})))
+       :create (pattern
+                (edge 'e {:label "works_for" :src 'w :tar 'm}))})
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,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+OCDkjlzZhkxYkSynatv376SLVs2efnllxUKhSJ1lxShoaG2CrJdu3bRPu/evbsMHjw4Wc/1+OOPKxQKReqEIjLy74d/4eHhFor27dtH2+bgwYOyb9++JB3//Pno3VBr1KiR4lBERERE+30KxT8UigkTJkj16tXt7+A1T5489v3UqVPl/vvvl7x588pPP0WNqrFhwwa5/vrrZe7cubFCERISIq+//rp9v2nTJvsg69lnn5W3335bbrzxRnniiSdk3bp1Uq9ePcmdO7e89NJLNiF+/fXXcvfdd9t9S5UqJZkyZbIPJmODYtq0afLII4/IU089JeXLl/ddU4cOHeSWW26RBg0ayPHjx2XHjh1SuXJlW3qh4cOH299VvHhx+eSTTywIAwcOlAoVKtj7yOcvvviiQvFPhoKEjr9+3333yc6dO6VTp042oZM49+zZI3Xq1JF7773XbnvgwAGpXbu2bNy4MRoUd955pzRu3FheeOEFKVq0qLRu3dq3PXFGlixZZPr06fLHH3/Yc91zzz32GAMGDLD7b9++XZYvX27fE6fwHTCxvnbt2sugIODmOOzn7gHnYP306dOSL18+adu2re83kuC51sWLF0uVKlXk5MmTsmLFCnv82bNny+TJk+17tsPtGzRokELxT3efyB3JqV3uTgL5888/7fqwYcNsaeFPDoqmTZtaoDZv3ixffvmlDwr0zjvvyAMPPOBbv+uuu+S996ImWDl37pzdn1zevR83bpz9jsRNadG1a9fLoCCGASwnSgP2dffhww8/tCXaqVOnZPXq1b5mF5RKZcqUsSUBCxUE7777ri2p0qdPb0sRjSkUisug2L9/fzQoRo0aJTlz5owTCq/7dPHiRRk/fnysUDz00EPy/vvv++IH9qcUiQkFovRyIHihoDTxQoHy588vTZo0se+JZwCKWitKvvnzo2Y5rVixooXWnzJmzChjxoxRKBSKy6HA5UkKFE7fffedhIWFXQbFww8/HC8o+O6GG27wJWIvFK1atZIMGTLY0sSpUKFCvhIINWrUyMYm1apV8wXPlBj8X1658ykUCkU0kaC++ipqCBlcIBLnkiVL7DpBdvbs2e37Y8eO2eAXd8ULkDcgRrhDuEnojTfesIGwU9myZW0w7IVqypQpPij69etnv1uwYIF93vHXX1Fz+JHQSOiInN8LEME97s+aNWt851m6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\" width=\"197\" height=\"194\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x126bb909 \"BufferedImage@126bb909: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@7fb9e337 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 197 height = 194 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; **
+;;; The second rule (```promote!```) promotes one of the workers who work for employer ```name``` to become a ```Director```, but only if that worker does not also work for a different employer.
+;; **
+
+;; @@
+(rule 'promote! ['name]
+      {:read (pattern
+              (node 'm {:label "Employer" :asserts {:name "'&name'"}})
+              (node 'w {:label "Worker"})
+              (edge 'e {:label "works_for" :src 'w :tar 'm})
+              (NAC
+               (node 'm2)
+               (edge 'en {:label "works_for" :src 'w :tar 'm2}))
+              )
+       :delete ['w]
+       :create (pattern
+                (node 'd {:label "Director"})
+                (edge 'f {:label "works_for" :src 'd :tar 'm})
+                )})
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,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\" width=\"278\" height=\"194\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x36068f24 \"BufferedImage@36068f24: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@7fb9e337 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 278 height = 194 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; **
+;;; Now consider the following transaction ```hire_director!``` that consists of hiring a worker and then promoting the worker to become a director.
+;; **
+
+;; @@
+(defn hire_director! [employer]
+    (transact
+     (apl 'hire! employer)
+     (apl 'promote! employer)))
+;; @@
+;; =>
+;;; {"type":"html","content":"#'user/hire_director!","value":"#'user/hire_director!"}
+;; <=
+
+;; **
+;;; In general, there will be many possible matches for ```hire!```. However, only those workers can be promoted to Director, which do not also work for a different employer. Therefore, transaction ```hire_director!``` may need to backtrack in order to search for a worker that can be promoted. For example, consider the following job market that has four workers and four employers:
+;; **
+
+;; @@
+(rule 'setup-job-market!
+      {:create
+       (pattern
+        (node 'w1 {:label "Worker"})
+        (node 'w2 {:label "Worker"})
+        (node 'w3 {:label "Worker"})
+        (node 'w4 {:label "Worker"})
+        (node 'm1 {:label "Employer" :asserts {:name "'Jens'"}})
+        (node 'm2 {:label "Employer" })
+        (node 'm3 {:label "Employer" })
+        (node 'm4 {:label "Employer" })
+        (edge 'e1 {:label "works_for" :src 'w1 :tar 'm2})
+        (edge 'e2 {:label "works_for" :src 'w2 :tar 'm3})
+        (edge 'e3 {:label "works_for" :src 'w3 :tar 'm4}))})
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAggAAADCCAYAAAAsEDqYAAArEUlEQVR42u2dC7yU0/7/dxJdSFRC6eIQokQ3l+NOcaIit5AooRKhIiTSOdU5TomDIzpyPU7o4i4k0kkq6lcuySXJpShKUqj1/77X35oze5rZe/ZuX56Z+by/r+fV7Jlnnpl5vj3f9Vlrfdf3yXNCCCGEEAnk6RQIIYQQQgJBCCGEEBIIQgghhJBAEEIIIYQEghBCCCEkEIQQQgghgSCEEEIICQQhhBBCSCAIIYQQQgJBCCGEENkrEG666SZt2rRp06ZNW4ZtpSoQbr75ZpeXl+f/1aZNmzZt2rRlxlahQoUii4QiC4TiqBAhhBBClB/Fab8lEIQQQggJBAkEIYQQQgJBAkEIIYSQQJBAEKL0+fXXX91bb72VNb9n3bp17oMPPkhr36+++sqtXbu2XL/vxo0b3aeffrrVx9m8ebNbtWqV/kMLCQQJBCGcu/HGG93222/vKlas6I4++mjXuHFjd9BBB7l77rknrffPmjXLHXjgga5q1apZc05GjBjhf8+mTZtS7vPbb7+5rl27+kzo2bNnl9t3nThxott1113dWWedtdXHGjp0qNtll11iv5v/GzvvvLO7/vrr3QsvvOAmT57s+vfv73bccUd3yy236OIREggSCCLbadOmjWvYsGHs71tvvdUv33300UfTev/YsWPLRSDcdtttpXLc7777zr3++uuF7kevnfNUngIBTj/99GIJhMTz17dvX/97fvnlF//3DTfc4E4++eQt3nfMMcf42CeEBIIEgshy2rVr5/baa6/Y31988YVvKLp3757W+8ePH5+2QGAYuyBC41QYTz31lKtZs2bavzF8brrHT4dwnoJAKOy3FYeff/55i+OGHn7499xzzy2yQEh2/hg5iX8ulUA4/vjjJRCEBIIEgshFgfD000/7hu/vf/+7//u5555zdevWdYMGDXI//vijO++881ytWrXcf//736QCYfHixe7YY491jRo18sPwn332mX/+vffec9WrV3evvfZa0gb8kksucZdeeqmf5vjnP/+Z8ljLli3zf2+33XbulFNOcaNHj075/fisU0891bVv395vlSpVci1atHDLly9P2ehzHL5DgOF1vgONZatWrWLfPwiEgQMH+mkWfhuNbDJ++ukn/xrHffjhh/2/e++9t3v5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iqtYsaJr166dO+WUU9wJJ5zg6tSp4zp16lRi32HNmjXu3HPPdXl5ee65555TI1MA77//vmvZsqXbYYcd3C677OIeeugh+S5DfDd79mzXpk0bf6722msvd//998t3EghCRFMgPP300z44pBIIcNRRR7ndd98933OfffaZD1olyQ8//KBGJg2uuOIK98EHH/iRnw4dOrh99tlHvssA323atMm1atXK3X333W7mzJnu8MMPd9WrV3fr16+X7yQQhIiWQFi1apU7+eSTfY8kUSDED3/SCO2xxx75XieoMSxZrCDw+7F/++23fJ/z008/lXqgIkjH/5tpjczPP/+c77zffvvt7ogjjpDvMsB3jB6MGzcu9vfzzz/vz9mLL74o30kgCFF6gerDDz/0jTyN/YABA1zNmjX90OTChQvdGWec4WrUqOG6du2aLzB069bNvfvuu+7MM8/MJxBGjhzp6tev7wNJqkDVsWPHWHAZMWKEa9y4sXv44Yf9v3vvvbd7+eWX3ZAhQ1zdunXdAQcc4OfLv/rqK3f55Ze7evXquRtvvNF/R4bIJ0+enDRQLV++3P8ePr958+Zu2LBhPsC89NJL/jNatGjh5syZ4/ft3r27/73MyRNAjz32WNeoUSP/m+l1Mb96ww03uD333NM3qjvuuKN76qmnItHIFMd3sHbtWn8OZsyYId9lmO/CaEClSpVi+T/ynQSCEKUSqL755hvXvn17V7lyZd8jmT59uqtataq/wJmzHjt2rA8Cn3zyid+fizRcB4kCYcqUKe7888+PBTUCBcflufPOO88Pk9auXdu/RmAYM2aMP/agQYPc0qVL/RxrtWrV3IQJE9yCBQt8kCOYsS/Bgn3vueceN2vWLHfwwQe7fffdd4tARUDitVGjRvnXOM62227rgwxceOGFPuCFYHr99df7Hhmf0aRJEx+gf/zxR9esWTN32WWX+ccESY7P/C5BlH2i0MgU1XcwadIkPx/N83369JHvMsh3gfHjx/sRPPlOAkGIUh/qHDhwoDv00ENjfzdt2tRfwMB8NRfpa6+95r799luf8BQy4BMFQiIEKgITPQI2AuF+++0Xe53eBMdetmyZ/3vo0KH55sVPPfVU17t3b/+Y3g4BJ/DII4/EAmh8oKJXzOMlS5bE9qXnsv/++8cCF6+H3gjD7L/++qvPqaCXQkBlO+igg9yBBx7o93niiSf8ezgXhQ7HlvEwdbq+C2zcuNE3QPhum222iZ17+S76vgtTBYiI9957T9edBIIQZR+ojjzySN9z8Bee9UrCfCdDoezH8CBbgwYNfG+Cx6FnkBioEoc6n3zyyS0C1RdffOH/vuOOO/IFKoZae/TokTRQEfh4L72Q+EAVAlh8oKKnTGZ3gOFMtnfeecf17dvXPzd69GjfA0oGvW6OmQ7l3cik8l0iiDxWM9x5550pGxn5Lnq+oyc+ceLEAo8r30kgCFFqgYos6GSBiqHM6667LrYhDhgS5HGyJKJkgQrmzp3rXn311S0CFY1VuoFq6tSp/r0ff/xxvkA1bdo0/zh+Cd+VV17p50ATAw89pbfeess/x/fZfvvt3ddffx3bj14PPaVMamRS+S4Z+O+ZZ55Ju5GR78rXd0wNhCF7+PLLL3XdSSAIUbqBql+/fn6eMsAw39VXXx0bkk6VqXzOOefkm2J44403XP/+/fP1iEhsik+0Wrlype8xzJ8/3y/Z4tj0SoCkJuYp4wMdCZEhUDEkzjQHsGTvuOOO849J1uI4JE+Rrd+wYUPXpUuX2HEIwsxhBgiqJESxX3yPmqHO1q1b+6D1yiuvuM6dO/t9mZvl+KmWlZVnI5Ou7xjO5XeQoAjz5s3z+4bpIvkuur4Dzg+5AvzN9thjj8XqGsh3EghClEqgYgkVFy0JUlyQJECh6Jk+ePPNN33A4iJt27at77HEQ6GUXr16xf4m05mLnZ4Fj0mU4r2HHHKI7x2RaV2hQgWfCU1wOe2002K1FPgeZE/z92233eaHMAly9ITonRCoeO2kk07yeRAEU3pA69at88OuvEbgomdDD4nvT5ITQZT59sQgk+x6JjFsu+228wGRJLBFixb5bHPWnXN8giYFYqLSyBTFd9Q/qFWrlp9WoAHAd2Spy3fR9x15COzH3/EbDbt8J4EgRKn2ZEoKeiwEjtIgDHWSsBQ/HJkKeiAEmVRlYOmlENQSoSdEhnmxz0GECyXRWws9Qfkus3yn604jCEJktEAoTR544AHfw2CovLgQtIYPH+7ncglUpRKsdcMf+U6+i5zvJBCEyNJARWY0y6IYbiTxiUqOxYEhUIZxjz/+eF8IRo2MfCff5YbvJBCEyNJAxRJKCqeErbCyqwVR2ncxVCMj38l30fOdBIIQWRqoMgk1MvKdfBc930kgCKFApUZGyHfynQSCEApUamSEfCckEIRQoFIjI+Q7IYEghASCGhn5Tr4TEghCSCCokZHv5DshgSCEBIIaGflOvhMSCEJIIChQyXfynZBAEEICQYFKvpPv5DsJBCEiTEWzPFmZGudcvpPvdDaj4zsJBCGEEEJIIAghhBBCAkEIIYQQEghCCCGEkEAQQgghhASCEEIIISQQhBBCCJHNAiEvL89/iDZt2rRp06YtM7bQdpeaQAgiQZs2bdq0adOWWVtRydPAixBCCCEkEIQQQgghgSCEEEIICQQhhBBCSCAIIYQQQgJBCCGEEBIIQgghhJBAEEIIIYQEghBCCCEkEIQQQgghgSCEEEKIzOX/AbUEL01EvuKzAAAAAElFTkSuQmCC\" width=\"520\" height=\"194\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x128eaeb \"BufferedImage@128eaeb: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@7fb9e337 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 520 height = 194 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; **
+;;; Attempting to hire a Director for employer "Jens" ```(attempt (hire_director! "Jens"))``` may attempt to hire any of the workers but only succeed with promoting worker ```w4```, as all other workers also work for other employers. Grape will find this only possible match by using backtracking.
+;; **
+
+;; @@
+(setup-job-market!)
+;; @@
+;; =>
+;;; {"type":"html","content":"true","value":"true"}
+;; <=
+
+;; @@
+(attempt (hire_director! "Jens"))
+;; @@
+;; =>
+;;; {"type":"html","content":"true","value":"true"}
+;; <=
+
+;; @@
+(rule 'query-job-market
+      {:read
+       (pattern
+        (node 'w)
+        (node 'm {:label "Employer"})
+        (edge 'e { :src 'w :tar 'm}))})
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALUAAACsCAYAAAA9iu36AAAQjklEQVR42u2dCbCOVRjHbUX2bImEVmOXLRHZsosSsk+LLbQSSUITGVKKQQ1laQZZUpaUlCRL9iUqhKwVsu+n+T0z7zvf993v4173Xvq++//PnLnv/r7nnN95zvOce+85qZwkxZhSqQgkQS1JglqSBLUkCWpJEtSSoJYkQS1JglqSBLUkJR3Ur7/+upLSNU3JCvUbb7zhUqVKZT+VlK5FSp06dYLBTjDUV9NyJOlqdTXMCWpJUAtqSVBLkqB27vDhw27Tpk0xV0EnTpxwv/zyS7yu3bdvnzt27Nh1/d6zZ8+6HTt2pGyod+3a5erXr28Ra548eVyVKlVcoUKFXI0aNdyaNWvi9Y7Ro0e7jBkzug4dOsQc1EOGDLG8Xbx4MeI1Fy5ccG3btrUyXLFixXX71pkzZ1odNm/ePFHPWb9+veWlffv2bvjw4e733393r732mitZsqQrXrx4dFjq3bt327Bfr169fOv0wAMPuAwZMsTb8tSuXTsmof7777/d999/f8XrsI6U4fWEGj366KNXBfWwYcP87XXr1llejh8/Hsd4FS1aNDqgBlwy0bt3b//YO++8Y8fmz58fr/dg7eML9aVLl654jWcZL2ch46Okes6VtGfPniCo45PHhOr06dNxnhuav1atWiUY6hkzZricOXPGgRrjFqgxY8ZEN9Rt2rRx6dKl8/2zHj16uFy5crlly5ZZxVWsWDEog6FQT5o0yVWoUMFcmQEDBviF/vbbb7vbb7/duuxwsPfv398qpWrVqmb9W7du7f744w9XrVo1V6RIEb9w8+XL5/r06WP7Z86ccZ06dbLvqVSpkps7d647ePCg69u3rytQoIB79913XZYsWVy/fv3cXXfd5cqWLetWrVpl9z755JOuTp067ty5c2FB5R333HOPf4xGXr16dVevXj1Xvnx5t3jx4iCo6e3oorNmzWquSzidPHnSzvFcyomffNfXX39t+c+fP78rVqyYuYbesymTF154wd15551u9uzZYfMHnIFQU2e4DOSB/G3bts2+vXDhwuYu7dy503pp9m+88UbXsGFDt3LlytiCumnTpm78+PHu8ccfd+nTpzcAQy3Rd99958OJ/xYOasAHQp4LPNy3aNEiO/f5559bgwlnyUaMGOEqV67sn8O/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\" width=\"181\" height=\"172\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x51913c8d \"BufferedImage@51913c8d: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@7fb9e337 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 181 height = 172 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; @@
+(-> query-job-market matches view)
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,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\" width=\"280\" height=\"155\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x3b169ea6 \"BufferedImage@3b169ea6: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@7fb9e337 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 280 height = 155 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; **
+;;; ## Passing values from one rule application to another with ```bind``` and ```consult```
+;;;
+;;; At times we may want to pass values from one rule application context to another. This can be done in Grape transactions using the ```bind``` and ```consult``` forms. Consider the same starting graph as in the previous example.  Now consider the following rules ```hire-someone!``` and ```train!```.
+;; **
+
+;; @@
+(rule 'hire-someone! ['name]
+      {:read (pattern
+              (node 'm {:label "Employer" :asserts {:name "'&name'"}})
+              (node 'w {:label "Worker"}))
+       :create (pattern
+                (edge 'e {:label "works_for" :src 'w :tar 'm}))})
+
+(rule 'train! ['name 'w]
+      {:read (pattern
+              (node 'm {:label "Employer" :asserts {:name "'&name'"}})
+              (node 'w {:label "Worker"}))
+       :create (pattern
+                (edge 'f {:label "in_training" :src 'w :tar 'm})
+                )})
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,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\" width=\"157\" height=\"194\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x6c1f35de \"BufferedImage@6c1f35de: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@7fb9e337 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 157 height = 194 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; **
+;;; Note that the second rule (```train!```) receives the worker node ```w``` as a parameter. Let's now define a transaction that first hires someone and then "trains" that worker. That transaction must first apply the ```hire-someone!``` rule and then pass the hired worker (node) as a parameter to the ```train!``` rule. This can be done using ```bind``` and ```consult```. ```bind``` binds a node that was matched in a successfully applied rule to a given name and ```consult``` uses the value bound to a given name as a parameter for another rule application. Here is the transaction:
+;; **
+
+;; @@
+(defn hire_and_train! [employer]
+    (transact
+      (apl 'hire-someone! employer)
+      (bind 'new-hire 'w)
+      (apl 'train! employer (consult 'new-hire))))
+;; @@
+;; =>
+;;; {"type":"html","content":"#'user/hire_and_train!","value":"#'user/hire_and_train!"}
+;; <=
+
+;; @@
+(clear!)
+(setup-job-market!)
+;; @@
+;; =>
+;;; {"type":"html","content":"true","value":"true"}
+;; <=
+
+;; @@
+(attempt (hire_and_train! "Jens"))
+;; @@
+;; =>
+;;; {"type":"html","content":"true","value":"true"}
+;; <=
+
+;; @@
+(-> query-job-market matches view)
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARwAAADhCAYAAAAajwqTAABDKUlEQVR42u3dBbh01Xk+fFqkxYqWoA0WoDgkyItLcChpoC0uL+7uFpoAxd1KoBQotLi7WyAQKBYKAUpxCNY2TWiB7P/3W8k63373O7LnnJmjz31dc505I3v27FnrXs9zP7ImKQKBQGCQMElcgkAgEIQTCASCcAKBQGBQCOdXv/pV8Q//8A/F97///WLuuecu/uiP/qiYZJJJij/8wz/su+X/O/lbvd/qsf6+ttVnNvrb6P6f/MmfFN/5zneKQw45pPjXf/3XGD0jHP/1X/9VXHTRRcVf/uVfFn/2Z39W/PEf/3HLcdBu/Lj9wR/8QcMx2WqsNxu7ncyBOp/V7tyrj/ku1cemmGKKYq655ir+4i/+ovj7v//74j//8z+7Tzi//vWvixNOOKGYeeaZ04/zT//0T8Xrr79e/OY3vxlzA/QnP/lJ8YMf/CAN0DXXXLP42c9+FjN3hOF//ud/ir/9279N4/mv/uqvin/+538u/v3f/7343//937g4bfB///d/xX/8x38UV199dfE3f/M3xUwzzVQcc8wxxX//9393h3D8EIsttljxve99r3jttdfiiv8ev/3tb4uLL764+MY3vlH86Ec/igsyQvCLX/yiWGihhYq//uu/ThMnMDC4hltssUWxwAILFP/2b/82MMJBNsyos88+O65sE/zyl79MbtbWW2+dSCgwfPHqq6+m8XzJJZfExegyWIl/+qd/Wvz0pz/tH+G8+OKLxWSTTVb8y7/8S1zNGi7nt7/97WLjjTeOizFM8cwzzyQd4qabboqL0SPceeedidBbWToNCefDDz8svvnNbxaXX355XMWaoGdNP/30xQ9/+MMRaaV9/PHHXT2mAMNjjz1WfPLJJ0P+/d59991i9tlnL6699toYqD3G+eefX8w222zFW2+9VZ9wCGmHHXZYXL0OYdLSdJ566qkRcb5ffvllsc8++6SV/5prrunacZ9++uli9dVXL3baaadi2mmnTSLtUGKDDTYInW0Q8Xd/93fFuuuuW49wRGFYN9ToQOe49NJLi9VWW23EnK/fuduEY4K7Dl999VVx8803D+n3u//++4tvfetb6VwCgwNa5p//+Z8nF6st4Qh7X3jhhXHVBgA5SsPZyvn6668n+Eura0U4nS4+8847b0qd6O/5dBPrrbdecdlll8WgHGTQftdYY43WhCPPRHLbUJvAIx3M9/3226+rx6SHyHkQEXvzzTfTRJpuuumKgw46KD1/0kknFQsuuGD6Dd95552UxiA5a8kll0znYzI/8cQTKYQpf2LDDTdMx5M/kQmH322QfPe7300Dxkq18847F7vssksKe15wwQVtXUrhZgljyyyzTLpPUO/0fLoF2tQMM8wQ1voQgEXp93z//febE85tt91WrLXWWnG1BgjJgIsvvnjXj7vpppsWK6ywQrr/xhtvpIl9xx13pP8JonxnE3mppZYqTjvttPT4c889lwjljDPOSDkTclD8L4yJrAyMTDhXXXVVCu9/8cUX6b333HNPsdxyy/UdR/JnHUw11VR9VkV/zqdbcE2QXGBoQAu+8sormxOOQdHtlXksQsTKpOt2Xg5yobe8/fbbyRKYcsopE0FkMrKaPPLIIyk0KcEtQ8ieTw2sjuokNOHXWWed9FzZrRFKdixjQtSpbqJcmXD6cz7dwnHHHVccccQRMSCHCDLyZSE3JZzddtst3eqaTBIDW+HTTz/tWy07ea7XkMLOQuglTLJufz/XfI455kiWxjnnnFOsssoqxTTTTJN+B9obXHHFFRNN8D322CORE3BhTPIq4Uw99dRJe/r8888neO7II49MlpRSjjqZpFXC6c/5dAvbbLNNceCBB9Z6re/dLjVA3ZCgSiN88MEHw2KSm1dy6IYDjB3uclPCkUNSZaRG+PGPf1zMN998xaSTTlosvPDCDYnHF5f7cO+993b0HJPbwDfI11577bSa77nnnul/xaLnnXdeet1nn32WJpkV/5RTTql9Ea6//vpilllm6dkgzzChelGbc/jhhyc9ZcUVV0w5LjQ3FoPvBaIyJnhZKBX6nn/++VsSzrnnnptC+uUB8vLLLydL6r777ktEl0mtE8Lpz/l0C4ceemjStlqBReccZMm6DltuueVEr/n5z3+edC1E+eijj070/C233FLMOOOMDY/PKmTBGb+zzjpr0qpE8VZaaaU0njsR19vB3HDtt9tuu2FBOGeddVax7777NiecY489ti3hEAAdBNsjA3kWJkEV48ePTwOtEam0eg7kcXi+bA4z+V1Mpn3GXXfdlQZLp1Dt3mvCMZh6UdzKUnBtjj766PS/XBeTJQujPhNhb7755n3vWX755ft+V66XQV+2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8XzJJZfExegyWIk2GWy162ZLwnnxxReLySabLO0/E2jvctrqd+ONN46LMUzxzDPPJB3ipptuiovRI9x5552J0FtZOg0J58MPP0x7z1x++eVxFWuCnjX99NOPyF04WWkff/xxV48pwPDYY48Vn3zyyZB/v3fffbeYffbZi2uvvTYGao9x/vnnF7PNNlvx1ltv1SccQtphhx0WV69DmLQ0naeeempEnO+XX35Z7LPPPmnlv+aaa7p23KeffrpYffXVi5122qmYdtppk0g7lNhggw1CZxtE2KV33XXXrUc4ojCsG2p0oHNceumlxWqrrTZiztfv3G3CMcFdh6+++qq4+eabh/T73X///Wnfa+cSGBzQMu3fzsVqSzjC3hdeeGFctQFAjtJwtnK+/vrrCf7S6loRTqeLz7zzzptSJ/p7Pt3EeuutV1x22WUxKAcZtN811lijNeHIM5HcNtQm8EgH832//fbr6jHpIXIeRMTefPPNNJGmm2664qCDDkrPn3TSScWCCy6YfsN33nknpTFIzlpyySXT+ZjMTzzxRAphyp/YcMMN0/HkT2TC4XcbJN/97nfTgLFS7bzzzsUuu+ySwp4XXHBBW5dSuFnCmD3Y3Seod3o+3QJtaoYZZghrfQjAovR7vv/++80J57bbbivWWmutuFoDhGTAxRdfvOvH3XTTTYsVVlgh3X/jjTfSxL7jjjvS/wRRvrOJvNRSSxWnnXZaevy5555LhHLGGWeknAk5KP4XxkRWBkYmnKuuuiqF97/44ov03nvuuadYbrnl+o4j+bMOpppqqj6roj/n0y24JkguMDSgBV955ZXNCceg6PbKPBYhYmXSdTsvB7nQW95+++1kCUw55ZSJIDIZWU0eeeSRFJqU4JYhZM+nBlZHdRKa8Ouss056ruzWCCU7ljEh6lQ3Ua5MOP05n27huOOOK4444ogYkEMEGfmykJsSzm677ZZudU0miYHNRKNPP/207TFMkM8//3zQL4QUdhZCL2GSZUuhm2bqHHPMkSyNc845p1hllVWKaaaZJv0OtDe44oorJprge+yxRyIn4MKY5FXCmXrqqZP2VP09jjzyyGRJKeWok0laJZz+nE+3sM022xQHHnhgrdf63u1SA9QNCap0+txgwryTQzccYOxwl5sSjhySKiM1wo9//ONivvnmKyaddNJi4YUXnoB4PCdKs+eeexarrrpq8cEHH/Q9Z/Wcf/750wB24+NV67GY3Aa+59dee+20mjuW/xWLnnfeeel1n332WZpkVvxTTjml9kW4/vrri1lmmaVngzzDhOpFbc7hhx+e9JQVV1wx5bjQ3FgMvheIypjgZaFU6Nt1b0U45557bgrplwfIyy+/nCyp++67LxFdJrVOCKc/59MtHHrooUnbagVj0jnIknUdttxyy4le8/Of/zzpWojy0Ucfrf0csApZcMbvrLPOmrQqUbyVVlopjedOxPV2MDdc++22225YEM5ZZ51V7Lvvvs0J59hjj21LOARAB8HoyECehUkA8i9Uk77yyivp/wMOOGACpVqIdPvtty9uvPHGdGsWyXEcg7RsDjP5XUymfcZdd92VBkunUO3ea8IxmHpR3MpScG2OPvro9L9cF5MlC6M+E2Fvvvnmfe9Zfvnl+35XrpdBX7aaLBxE4ttvvz0dO2s1rBM3uO6669Jx24FVlwmsP+dTB88//3zxwAMPtI1qqeo/8cQTW75GPZzv7lgWS9+/3AmAjmVMN8q4b/VcGRJpHXfvvfee4HELpe4L3QQNdrgQzumnn54Wl6aEo4K2HeFY9cort5X2zDPP7PPZll566b7n1FVg9lzCrrqatcKvb+SGlUFonGeeefoeJz750crZz45lkrRDNeza31W1k/AtC6fbLlV5UBnE8Pjjj0+kuyFyuVSuj+gQ8U60SIUvq5L7JPVB4p/3uq7cM5oNEddvtsMOO6RcGq0IiNGuWbtcHdaQiJbjLbHEEsWtt97a0fnUBTfSZ8jsZllYoJpZOO0Ip0wu7733XvruFlVgnbP6Gk3gVs9Vx7P54nyrk++jjz5Kn9kf5ONXI3Drr79+zwmn7jwQGKiOzY4tnDKENYU5s9/PdNxoo40msIZcaCa5C2tg5d4brIyyXiDcW/5BCNhel81U5qL/uVl5ZTY5XHD3WUOyG0VxrJoGhEnpcZPGl2eNWanLhGPVEVGSWe1YrDNZssiOIMtdbHacVtBbpVeEU7byGv2fBwPNJRNTf4CQDGxaWx7gUiaUCjS6tSpj6Mb5ZHDH8jhinRlX0ulZ2tm6rmvhlCFKVtZ8zAefQWpwLKSYJ3ir51566aXk6rLCmhFOlgrAdUHUyNg5IGEW/QsvvJDGMmLNxcGnnnpqGq/eS86YfPLJi1133bUp4Qg0GM/SKKQq5HPaf//9U77UZpttluYhTZPxkOUJC/uyyy6brFPftT9pDOZKS5eKhZJN9XbYa6+9+n5s4XQgLI4fP34C87psohvATz75ZCImj3MHMpwYk7ZMVvQZPwSsvPLK6UfwmSYAczZ/lh993LhxfT8u68jFk5Pih/FZRx11VCJTP2ImHBeZ/62KOK8WfkSvcSH9sH5M9xsdZyhcqqEGt5hG1+g2WBHOMuGUb9wbliV9EdGwflhn7UBnsVA5huhZFo+NOY85zsknn5yOTRJo95zFzsJL3ykTjgVyq622SmPP4rX77rv3vZ6uY5GSnfvggw8m+cBi7hgaXXm/HlS8BvfNIc9li5KbWSUc4rHjeF+e3z7D/xYprrh5nCEFwrmymumv5g/rNBsNnaYxtHWpOrFwuEkEQQyYc0OIsRLFymYfE7W6ynjcj8NSaBU69qVnnHHGRAh+4Iceeih9edYPkz/noFjdhEAzDDKvc8G5AdWIEcJBJojJylyeTM6JcOjGLVh00UXTc42O0wpWnv52Kuxmp8M6t05eW+5o183jdvI9JDy2O56J5m8dC8fqzQIncppMJgpYwRFEOajCcjEpWz3XKCrqXLbddttkMbPCLMKZcODggw9O2laGHlRZG80LN+sk389BAsRhrGViLRMO6x1pZVhgy/qfxdM5W1CfffbZvsWdNWXc53lA7OaeQidpDG0JpxMLJ0O5vy+Bpek35UiGL+I5AnEVmTywaCvV3Wswr548yIkWsMgii6RVjsWUf8wy4eRj33LLLcUNN9yQ7peBcOgAJs/dd989wQVCQo3Q6Dhj0cIZDmhn4XhedKquhVOGCUbPAtbOjjvuONG4evjhh1s+14xwypOPZWBMNSMcC2wOmhj33s/6qRJOliMyyZQJJ2d2l8EokC6QNStkZZ6RFPK58xaaJXl2on921cLJEMbmVrmAGDJnpgK3o5qDUY4wzTnnnG3VfS4UYsjhdazvmOUfW6vIsnakDMBrsHYzwnHR+KLYOx+b2YgoyunYvh8TtFPC6aWGE4TTWMMxQQei4YDckZxMaYyUFyAaRracWz1Xh3DKoWMLU5VwkF4dwvGc8o1MEGXCkVPn+pQ1Pm06suWU5wIZQTQ5exvmMamhjPx5nRBOWw2nTpSKWcYqyCeHGbNVZHL6gvlH5/rkvA5JUawh5qubMGnOqQEDo1G/EtpAObTOb3XBs26U9SSuV46G+Vwmoc8RCfF6UZEMURJinFwevrTPMChoOFwqYhnyuffee4tNNtmk6XGGKko11tHNKJXfOY9XE5O1IFqXo2usptzbxYrNYjD2Wz1nXNH+cnKpBc35lsVd4CJxnbKGSdTN4M4TdsuEZcxnwsl1bSK+FsksDYgE51QRFkuZnAjVXFTztEqUCK8sLeTzZTQgxUxonaQxdCVKJTrjpCncokJM17JwJK/AjyYHx8TOFyJHnZiizEUnU9ZvJLNRzKuQUUs0K4PJV57MiIaF47hWNS6XC0X9z2Ig/9nrnD+xzGBFgM7T80jG6uSzDCTfkbLvsUbHCZdq6NDNPByTkwVt0ZFukKM4GaI1rHYBCpZAFoJbPceyNn6MNYRkbGZdyRj1HuPPYzRPgRRRUc9b2KQjGD/kA1FaxJMjtFmHId5atLlImVC0TmXtsdpzWxBEKGmTxuQcG6Uf5PlStshII1kvEzDxWKdpDF3Jw8naTKtJh4CwfBVclZzjUIXJ2WgAsSiqE7dZ+NXxrVYDrWHyeeUM6f4gLJyhB8Jpl2kMqspbVZTTCsvBhTrP9arjQtmlosHUKXZ1LhbORtY5DTVrVlXIExrI95Cf19KloprXraUKtEYvaqkCnaGTWqqRAm6fsTXQXuPcLRYIkbxa0d0ttK2lcgJRLd6dVYiFE7s4DC1GW7W48STUjXCkjNBf+gshcYEN7lqvximJphr1noBwlAlU1elA5yBiEv0CQ4vR2A+HnJFvA20s1uvGZATmlv1wouNfd9CLjn+BzhEd/4YOtTr+gRqn6Gk8MLNXxGGk7Nww2hE9jYcGSh+E6KuIXRu6jJG2a8NoR+zaMDSLbu1dGyD2peofRtq+VGMFsS/V4KKjfakg77x5/PHHx9WrCbk7Eh5H4s6box15500Zs4HeQt1kxztvgqpW4bfYHrU98t7i5erhwPBC7pRYLokJdBeuraxtLTSaoWU1okZCXISLLroormYTiIQolRB+jbyb4Q0lB36rbvYRDvwOhHmEXi796JhwwKZrCiF1I3vttdfiyv4eyEXDMIQcbtTIsnQImiqe6257E2gO11BNF2G+zq4etfot0CcIQdpAKOrSWBv5jLXiRHlKuqHJoNTdUJKkTe8CIwvyzNQNGs8CJEK4iiJ7scvGaINrRG5RWqFsQZcGfbTq7pg6SScfpo5DNbiWDXJNVLTmrmz5Vu7SVvfvYHS+a/WZjf42ui8pUgsBpfzl5tuBkbuAkAssooIkUv1bjYN246faEbHZ+K6O1VadEevOgTqf1e7cq4/5LtXHchU7CUFnhTqdE/pNOIFAIDAQBOEEAoEgnEAgEIQTCAQCQTiBQCAIJxAIBIJwAoFAEE4gEAjCCQQCgSCcQCAQhBMIBAJBOIFAIAgnEAgE4QQCgUAQTiAQCMIJBAKBIJxAIBCEEwgEgnACgbGAcotRPaqjxWj7FqNTTDFFMddcc0WL0UCgLho1UdcYPJqot4ctwO3UcPXVV6cm6jPNNFNxzDHH9KaJeiAw0mGbmIUWWii2iekSXMMtttiiWGCBBbq3TUwgMBrw6quvJrfgkksuiYvRZbASbTLYatfNIJzAmMEzzzyTdIibbropLkaPcOeddyZCb2XpBOEERj3efffdYvbZZy+uvfbapq/5/PPPi48//rjlcQikP/nJTzp+32Di008/LV588cUh+/zzzz+/mG222Yq33norCCcwNrHBBhsUP/rRjxo+9/XXXycNgjsw2WSTFVtuueVEr7Fftl1W99hjj+LRRx+t/T6gcYjoiPjMOuusxYYbbpjOZ6WVVkqbynVzn/PzzjuvmGqqqYrttttuSK+3XXrXXXfdIJzA2MP999+f9r3+6quvGj5/8cUXp21rEYi94rkE5V1V77nnnhQK9ppO3lfGhx9+mJ7fe++9J3j8lFNOSTvZdhNrrbXWkBPOb3/727R/OxcrCCcwprDeeusVl112WdPnyyTx3nvvJUvknXfeSf9/8MEHxTe+8Y2GE7jV+/KkyxBuRzj77LPPBMf46KOP0nv7O6lBmLqM9ddfv+eEg2TLfxsBGa+xxhpBOIGxg1/+8pfFDDPMMNGkbIaDDjqoOPDAA/v+P/bYYxNR/PCHPywOOeSQ4sILL2x4rOr7XnrppbQP/QMPPNCUcN5+++1izz33TPeJrLvsskvxve99Lx1Lbss666xTvPDCC8Wmm25aTD/99MXWW2+dSObUU08tFl988fTehRdeuJh88smLXXfdtSnh3HHHHcXqq6+eiHeZZZbpO6f999+/mHfeeYvNNtss6VBvvPFGseKKKyarCy6//PJi2WWXLeaee+50HZDLE088kdxI+TdcQ+fZLP+GRen5999/PwgnMDZAJKaftAOdZYUVVkikwBXIIvDKK6+cHqPdnHzyycWUU05ZbL/99m3fxzLaaKONkvZTJhz5P1tttVXKAZKtu/vuu/e9nq4j05kb8uCDDyYtZskll0zHkNHr/a+//noKO7vve3kOUfn/+eefn4hwiMeO433wgx/8IH2G/3/1q18l/Wmvvfbq+z7LLbdcOtfHH3+8WHXVVVMm9lNPPZWOf99996Xv6zvQrITBkWMzVxUkVV555ZVBOIGxgeOOO6444ogjarkIXJuzzjorTabTTz89PW6FRhAZLB2WS85Ibva+KjLhbLvttimj+ZVXXilOOOGEPsKBgw8+uFh++eX7/l9sscWKww8/PN3/4osv0vtZJ/n+9ddfn55DHKwcQm2VcGhGSCuDFeO9Rx99dPr/qKOOSt+HlfLss88m8gLW1KKLLpqEcDdi96GHHpqeQ5Z1SDwTnCzkIJzAmMDaa69dbLPNNh29xwRbZZVV0n1Wy4477tj33EMPPZQm7MMPP9zyfc0Ip+xSsQxuuOGGpoTDuspkyZXyftZPlXDgO9/5Th/JlAkHMZQJB2aZZZa+a4IskZXo1mGHHdb3vcaNG5cIsRG4VEinDhBY9ZoE4QRGLeguJ554YkfvOfLII9MKn1fzpZZaqu85GobJ3ijPpfy+OoSTwTr6zW9+MxHhmKh1CMdzdKpMEGXC2W233YpJJ500WUEZ8pGy5ZQJhBZE4M1CNKKQBlBG/rxOCOeMM84o9t133yCcwNghnJNOOqnla2gTXJzsnrAWZCUD/UJIPCexcZlYDCZmq/d99tlnScjlwmSNBkmUxV3gInGdwMQk6mYsscQSSdgtE9Ztt93WRzgXXHBBeu6RRx5J+TySG2HNNddMpAAsljI5EaplWz/33HMTkSjCy7j55pv7zpdwjRQzoRGxCcZ1CWe//fYLwglMCNGcbmfLmoSPPfZY8cknnwxrC8fkFNJebbXVUg5LjuJkiNYQU8ePH58sgSwEt3ofPcTEvu666xJZEZBNYAIuV8nxRJ48tvPOOxdPPvlkMc8886TnVWFfeumliUS++c1vpkRDxOO1XMSswxBvN9988+QiZUJRIzb11FMnzQVpZJKcY445kv7k/EXaqlhkkUUSsZQtMi07fM50002XImIec250LZ/R6DhV+OyqVReEM4bx5ZdfpgFhclxzzTVdO+7TTz+dQrE77bRTMe2006Z2EEMBq3YWU9sRbqvQueuULYi67+vVdy67VDSYVlGi8rlwA3/9619P9JxIVDPtSZ7QQL5HEE5gIpgw3SYcIV6rtMmQV9qhgMhKpxrOcAfLEeFUM587BXcLIRC7q6HrbiFcqkBCNVNUSLcV4dRNnMuQUNZJjVCdzNVeuVQjCbQjoW6EI0+G/tJfCInLyeGulbOiu004IRqPUNBD+M/EyTfffDNljvKvJV8BcXTBBRdMJrIUe1mrOSyqcLFVpmgmHHqDaIUIhRXUQKQxiFposJSFymagA4lg0DYIoO4z4zs9n8F2qUYSXJ9863QhGOhCEi7VGIMIgcxWIB6a2FLXQVatyWUiC+Wedtpp6XERCYRitWmWKZoJ56qrrkqhXToBKFwkcObjNMvNqIL4meuX+nM+4VKNDpx55plh4YxkIBd6i/CmFU6qfc79QEbqVoRJmdxaaWZ8+9vfTkls0ChT1IRXu+O5slsjzOtY/HDaQd2WnGXC6c/5hIUzOhAWzgiH1V+Ik6VxzjnnpOjCNNNMk9LlhTHhiiuumGiCqwVCTtAocQvhCHUq1FPIV4aENpaUXQ3q9KytEk5/zqdbyOHkuA3drZp7FIQzwiBLlJ6isleOi1oYFkPOxdD/xQ9dbslglZl//vlbEs65556bWjHQUzJefvnlZElJckN0mdQ6IZz+nE87yHtZeumlE/HSgYStw8IJCyfQA7AUygV4cl1U/WYBUJo8S0VSWIaU+VxEV80UZTVJfycS33777enYWathnbiBJDbHbQf6Tyaw/pxPHRDH8x5JCNdfrRQUCwr3Zg0qNJzQcAJdgBVeFznQSqCa6yAlX5aqDFHRIW0CRIuqmaIsA+81eblnNBsiLhdqhx12SLk02iiwElgi7XJ1WEO5XYLU/FtvvbWj86kLkbRG5rtCRATkr2jYfPPNFxZOWDiBgaJcjNfofyD+0lwyMfUHCElonBidczVknsq6bXRrVcYw0POhLWlsdffdd6d6oXbaQd5FMyycoUPk4QQGDJnD6oca3aqWVh0gMsWNrCDtGhQKcoVkwDqmfsQ0ISUSrC9kox6p2Ra4rCWvkyYw2hL/MkQpBwMWHOUNAyGcyDQODCokIioM5F7lvivcM6ShYJH+QoMiAguPi2AhCSIzsZpVVE0GtB84Eirvic2isRNCuYhyNIrGiii5vDlFwZbF3EiPff/732+6PUt/IFs852GFSxUYFrAPkmJN+o42nHQa1dH67qqIZnGoUpYZTd8hSKvA1kbztdde6xN4OwHyylqNqmrRs9xis4zRauEg23L6wsYbb5xIt9sFo66zCvUgnMCggVlti1y9WLg7fHIDHKGY9G4EWpOe+Sw/6MYbb0wtGnrVmoJLwbJBYK2SEev0w6nj8mUNqgqP9YcwBwrlLWXos5zzmup+H38b1VCVyx1YpgPZASJcqkBTUtFMCqkYJKwUmceiPKwIxZj+13BbV38hchEt1s1QoU7N1UAsHMSJSKUfCOOzKhBu2V1znTwnNQE62X0BXHNtPLiWHpfAWQflxueNCKfRcf1W3FX9c+yjNeecc6bcKkJ8Pneu7iabbJLSGAQBuMN1ekK3IpwQjYNUGpKKv/73uOe9zuubJdWNBHAH+rtC29mAmyJdQN2aNAGTFXK5hknsde6LvnWy+wJLgquJjJAni1FWLuuQG9rolpMlq1uvlAmn2XGRnMXC52su7xwQUt6qBmnmLWJkl+edHqqf1Ql87oB6Ggu/2imQOIUF+c9ZtMu3/H8nf6v3Wz3W39e2+sxGfxvd5z4wZ62czXZZHGrY/1r2rd/JKiypTqRntJJKK9TdtaEZTHJCN7DqjAHXilai2FRSo+c9nvccr7v7gmifyFveGUHekp0SNPXSrL3RTWfARigTTrPjQk7s9Bkgq5w1BiKDeiPLjRKZatSsq1PYzyonqHZEOD6c2DfzzDMnX516jQFd8LEEJqaBJaNVbZEQ7c9+9rMhIxYtK7SMIMw5Fw2yrahKHWxvYsIJNdNgRiuptELdfanqEE7u85s1DlE0FpTP8LjfohHhNNt9gaBabtA+EJQJp9Vxq4TD3aLHAZLJ+3C5Zt3oTcSN7HhfKv4flsaEogqB/198s7+0+iP9XXoFA1wEBskLKbNYZO2aDNL5mfoGmUFct5p7rKDTnTfrEs69996brAjN0rlVrQin2e4LQv48hLLLonUHt4vW0+gmv6gZ4RgT0Oy4DIRWhCMPyqJkkWLRD7QLYL923kQ2TvDss8+O0dtiUHOzymLgQIRQTbOJkwYR358eoJWDAkc5FywWxN+rLm2jDe32Fm8GK7yJm8c+F8pcYO3TOOQPiZaZmB7XOoSrVXf3BcSFtCwaSAKJEWxNUPcb3TKpZdgGxngh9hKE8wLV6Li+j7GT9SYgjdCcwJa/rOZ8v7yLQ3/gerG6q2hKOJouK8IbaO/UsQCDkBuTV4u6Iq78FUWOhE2d87lDVkdim9oi27r2uivbaIdqdRpWp429hNNNTolvfqfsbmjNKeRPXtBxkUZBzOViq9ivu/uCKBBrBnGxKBBjo/2uWoEex/JBGmVNsdFx5e3o5OjzRbkI2iwQFiBNyYKmbamonjwqXRoHYv1bJFlytQgHA7pIErQC9UDP8uPbjqMR5KTccsstSZxjZufohZ0dkYsw81jUWQYDJmS33V7WSl4M/O2v5mHciG71F412k+jPcY09onY3tguS3b3uuus2fK4h4ajmpRcEOoMfi6bDH3ZfCj7XSDsFZq4qb4KzAkQCdGBwYFIS1Mt5NIHeQFh/ttlma1piMRHhiMKwbsKU7x+Y0YoOWS10nfPPPz+Jdt3ekSDQGXIfIfpJoDdwbdV0kQKaYSLCEfbupDdJYGLIUWLldAusobyt7FCBUC0q0+3XDiZoLwpFO9nCJlAPhHmEnncmrUU4BrbktqHaKXG0gF7Qn1YNzcC9NVGGEoTRHAnp5muHwtLJUb9IIxg4XEPdHAnzdXpeT1I1iegMgYFBMqCU8m6B+Kez30AhU7zd3lLNwEyuG7no5LVDAQuqFAORJnqlEK7yBUJwoDVcI+kyotcylWecccakS9bdT2wCwrF3UDdX5rEKEQJRqG7mylSP1aqKudn7pborLizD+6vHdv6Nzr2Tcyi/tl2Fciffoy6EwQmX3Ci5KCaIJD5RRPkrElnlqhDz5crQLXOXwGYlLu1KY9xoGI3KbVqV8TQry+mkvKfOZ7U79+pjvkv1sRzml40s/J5zd+piAsLxQ7jVHcDtuoHJwhyK8v06LG1F6yX8ON347ibNgQce2JdJKvlLnoQJI6SO2ORatAupS3GQ/q5HsYQvFcNyTOSR0JyQkUQ2roZFR92ViAPIZZGmLqsZWlVSl1/brkIZPO71GnDJE5E4p/BwoGBh5vo3+TL++v5VQkAyQ1n1PtYwAeFg/9xNvxWk0hs8fjxl8KIwjchGKNLqAgaR11dv1c3uHcsE8JwEKZNAsaH/sWtONSdKErgNmlzlWgeSs0yAXu2FlGFwd8NEdx0lm/nuwHQVBbMfVS4CNHkU97WDjnhZW5ETlBPbFHpecsklad/qnB0qlyJX+gorIwT1WdCqkrr82nYVysRlRMCikpzmdccff3xXCMCOAeWugI0ars8666xp2+TAEBGO6s52hCNsbk8kRELtt3qUtwDJGD9+fPphM+HIskRoMhyV9+smJpO5UT6KzE7vLVf6yqo0gMoNw++6666U1t0prPC9JhwE0a3iVtZJJhyQ24PosyviOtapfUE4ebIjA6RRTu60D5WMWPqLdHiLSgYTOhMONKukrr62VYWylIHydaKpMNO7gbwzaSOy8ZksuIE0mA90gXAIae0IhxldzmA0+K1SZTDFCUllwjGQy7CPNRJppg+oeLUa5sdzzUp5gpg8BnQ7ZH0g/+3vbo/V47SzcLrlTrYinExudUK9CKfcvCnvKZ7hfHfeeed001KBhVqHcKqV1K0Ip1wwKB0f6SmCZdXQU7qR6er3kVafe/1Ud3Og2VR3GA0MUwunCjUnNIQMAwaRGHxlwqnCSpc3SwMFkOX+pwRs789ElfuO5B6rREHVsz7HfdaQdOoVVlghaQJI0QrmcbqF/i8GtNW4TDjcCP6+0LNjNeqW1uw4rWBgjzTC2X333fvIQC5WrwkH9BbigimIJPAOBNwjx6ETGU/SE3LPJjcWMjewG71eAl0gHFZJtWFOO6y//vpJA8gwoPLAaUY4tA2uWDn9mVhIQMxg1lv9clRF8Rwis0ukitp77rknuW1Zexo3blzfsVlH3D7uGisoF90hU1pSJhz6A6FSvxho1i3N/UbHGSyXyuR3LfKEdv5ZX/GYayLDuR2QNTKgf7333nvpff/4j//Y97wSDEQmbKxiWMgzu7y0Ha5otiCaVVJXX9uqQlmSmOtNy2Fx9CeqZ2EhWPv95SpVRWdpHplsfPfIoB/BFg4tBhHkH9FqaUL2HbwJ4TB36zQfUr1q0CMEn0MYdUzWD6FSSwBQu0GUzCB4eh0h0jlVI0YmLDJxDuXit1bd0hodZzAIR06P8K3PNpnk4xA7icbyprLrynrJVkQz5OplpJI1NtdAh0BQKczqsXc58VbFMWHegsJtNqG5y60qqcuvZXW1qlD2XcphWQSI6NrBYkT/QSYWrm222SaNhUaROl3yHJtVGC09RrCFY3CzIsoNdoiMTGmDOQ9oVokwahmshjrElt0oA9tqasAID2vlIJvVAMs9RsqEk4lJJCavsGUgHBNW5EshZUarbmmNjjNYFk5dcGeb7YqZs8fblRyURflenz+L1iLHwkFcFieLjGzgMvzu9B7jk/tlETLORBzrLACCC4ERbOGwaJjG5XwK7hHXRvuFfDNBaTXlBkgGD22gTmtOZrhVDzFkoZqY6bhyUDJEN+SmZMhV8RquXTPC4VI5N9ZCPnarbmmdEk43NZy6EAlstism8h1OoLtxc4wZC4eb34vb5740eRqfaBmC4e4dcMABaTHptLdNYJgSTp0oFQiD6wjGpM+7ADR6H7KoulRM3HK4NYM5rz9sFSaLzesz+P3Vql/mukGZsx65XFwhWoNGSGV9AaSzE5at9oRgn5H7mzTrltboOK3QzSjVaAXL1++E5P3lmiEci4CGVtwggnmzni+BMWDhZP+9emtUzUwPMHHLYKE0ymamGzTy3w3Kam4GgbA8mRENC8eAFfXgchEOrZKiVs5v2223Ta8TXaIvaJZ10003pVXT80iG5tOoW1qj4wxHl2q4g3VLqGctco9YyVxjJE8Et5eTRWc412EFhsDCGQhoP42S/UzORvktLIrqxG22oyNXCPENVBwcaBe2sWzhuPYsEm4t60SYmkVJgHdNaHCiVBYe0S0Wa/QKGqOEIw+jbi1VoM2F/f+sIen+omGiKdIF1ETZbkcnQKu8HCM6mBD1cLeGkILFgqBLR0EWXGkWpZ7M3F6JdqxDLpEaK8IuS0aSJ82uLEgHgnBSlCaqxQcOlo3V3EpPCJUGICStrsgEFdKX/CaUrTeLCcoFcxPi515qyk5bykl09AyLgd+HIG8iC//7zYSI1ULJxr7iiiuSZUGol2Pj5rNzvVS+cVWdj+iecLbzcnyf5dwQCNJAItxPLqaQtnNz3qwW2pnwuePLi5K+ELpVoDbhyAqVNxEYGIR4uRD9deVoRjoGqryW9yKfRfq/qM2pp56aJrn0BcK97GzJkawMuUMicP4iDlaVmzwV2pPXuCE81qyolgxr2h1tzvERFeuLYE7gZ9EoO4gclkDXCSc6/nUH3e74FwiMSsIBkYPoadx/sATUYXWzp3EgMGoJJ3ZtGBjyrg2BQKAG4UDsS9U/lPelGkkQfepGW4gyRKSExpulMASCcPqQd94kTgbqgeCrJUKznTeHI5QQEJ1FoMptKgYKorkC0Z122ikl9YUmGGhJOKAPjFySRuUGgQmR9xYv94sZKeA6d5twJPZxLdU8VVvIBoJwmkJSGhdBolqguTuiVEK+zEgJHVc7F1YbcTUipU4w77zzdrTZXCedFAOjmHBAFzWFdfrQaiMQ+B2Qi/YKCHkw3Ch6iMQ7bpvfRJ2XXjDqj0AejYpqqQ1qkfxeSNDuCsL0JrO+N/J0VMlvuOGG6Xiai2XCUfEv4U8ulm1VfEftRuX5SPhrt6cVHUgVvur+ZZZZJt1n/XV6PoExTDhZn5DVqg2EhkyyWZHPWCtONJk1jZIop5rZxKzTZqNbUOGuiBQUQZrYuQkZ19dvZCLr6aNiHrTXQCjKEOySqC2r/5UmICtuTyYcJQgSBXO2sOxhvYjycZRl1IG2E7klSX/OJzDGCSdD5EGKvJYNck1yv9i8YVizTcPa/W224VfdTcDqvLbOxl/NNkDL9yVFWrll+GoIVQWLx6qulKEX7gFycS62zsm7EiCITEaKV3VhdK7lJlb0JSUU4PxYGmWY8Bqlea583s8880w6liRGv33drXHLhNOf8wkE4QRqQE8dXQq5PXr+qFHq5r5HVn8NwlkaaqG0dNC5kMDP8gTWZ3WC24sKOUGjHSsQjqbo9gOr7mag2pslxaKrs3d0lXD6cz6DabHSJ1073y923my/86biXD2kurLzZqB7eP7551PIWcW4Pj0KLLuRk6KtAz1Fe1fHY3WxGLTbBPVXBka5y6Lz0HemFeGoo6JH0VMy7FPFktLTCNFlUuuEcPpzPr1Go73FkXbsLd4eAggsXQ3pjBW6m5Y2/dpbPNCbH0hoWHMx5EAcVdXd361KWAomcO49LddFlCxHkuhqLJXy5oSqvnOfI66XcyhbTTozEonzli5Zq2GduIHGZY7bDvSfTGD9OZ9ew/WjGyG5ui5ioDlcQ4uGRbCOBRyEM4iwCmgdkSNMIjfaR3S6ta3+OnnbFSJ2tVBUprPETVvb+AyrOIKzKlmRuE/q5ST+eS+S4Z7RbExGprSKcrk0zGditEHVLlfH9xPRcjzV8nZX7eR8eg3tM5yb9hyB7oKVaOH76U9/GoQzHEEr4WZwU2TjinhxuzRsb4dqI6tGja2Iv1acgWxni5CExonROceIO9JsZ4hWLmM3zmcgQKZ0CG1lA72BYAlCb2XpBOEMA1jtaTB61WjGpemVfjUmx3ArC+AeNtsZYri25ECGdgqJrPnew6KpiVx5k8sgnGEOgvPJJ5+crB5RKA3eNXvXjCuKITuHUgvJhoHBARfctttBOCMQRFg9hE0YuTIISA6LDGAuWQifrSFK9q1vfSsSCgcR3G9jlIsVhDPCQQuhR5x55plJfGW+usmLEOoVaWq35e9YAoG+HJIPDA5EPcv7yQXhjCJILhRB0gh9zTXXTBEwUSEhZ+atfbzHoiuGeO1jHs3kBh8sShHI8i62QTij2KQVAlaxTciVeCgSxhLiltmuRjjejhKjOdmNSBxlE0MHFricsyCcMQp6jz3GNVaTiGeHUqnq/G3/S8YzQEbLHlK2wDniiCPihx8i2MqourFmEM4YB3dDBTdrKO+SafM+dUXKGfjh9qtS3U0EtLPpcLCK6tTw2B6HNVcH8qLatVn1mXp+N0PdWrNeQhKp7amHA4yncqlMEE6gpVtGG7rrrruKs846KxVcrr322ilHaPLJJ0/FqbKT5Q5p1yGDWs8eu4j2upFWrs/SYVEKQTPYMFCfoFZwrrKoZckqybCnVxW2I5ai4BrYLTVDK1VZ2fnmWjSyKrl1npdjpYxDmN5mgrotdNKorB0UDqtja3QeQwHjZt999w3CCQwMJikyMvG15OC2cMn0zqETISSitUnlce08DD4b7HHXBkpKhHD1X26qzpdeeumk11RD30T0E088seWxbDAoouJ8fBdEVm49oicQt9NrqtAaxHvkR7lJMGwE2dWOu/fee0/wuJ1PtXvpJpS9DBfCsSusQt0gnEDP3TQNwuQPKf5UDMo6sNKrbFeVrszAXzVXksRMEjuFCPcjjwcffDC5BiZrlUi4SdV2DURxESmpATktgIXTjnDK5IIIWSI6FIJdUJ1jowks+sIq0gWxUVZtud0sF9Q5ViffRx99lD6zvxZovtZlrL/++j0nnLotYbnh1ezzIJzAkFlJJpucottuuy1ZGpIbFXjSkbhrCy+8cJrULJkZZ5wxtVDVlgNJNesfw+LhqjiGAtR2hFOGjoNlzYer6JhayLKWFJjmCa4XTO4R4zNzR0PQC1xnAOkIzQhHEzXfNWs/il4VtjoH4WTRxBdeeCGlNtjbnTWFZGz1TGPzXteHNbnrrrs2JRxN2+ygIR9J87h8TrZ51ntaFwP6lQXCtWV1ARdZhrtKf9ehPy1hEU64VIERqScRdPXn0UGQ69aMcPItN9PifrUDnUXrVq8XscvisXQCj7HOlJoglu23377vfSYqN1HzLq+7++67+yyjjTbaKGk/ZcJRiU930hpDFb56ufx6uo5zJsyz7mgx+j87BnLzfoW9qrHdZy16LlfnZy2rTDgsRMfJBcGiRj7D/6KQyHyvvfbq+z6uq3PVgWDVVVdNDcpU+ju+nkidtoQNlyowKmClrhKMScCqMKHoGKwRE7qOhZOtLTqT45goYAUvb/3D0vEZ1SgdgkI6zVyZTDjbbrttavQl0sfNzIQDdC59gjIWW2yx1GwNlLd4P+sk388N1xAHKycTa5lwaEZIK4MVU+6lpCOl78NKkZOFvLI2ZeMEArobsZt7Cp20hA3CCYwKiJRl3cZk0/yJ/iOCVF5xTeI6Fk4ZJhh3Dlg7O+64Y99zNCmf+/DDD0/0Pi6OSFYrwilPPufJOmpGOKyrnEPEwvN+1k+VcEBL20wyZcLJu2SUoQOldIGsWbl+oluuX/5e48aNa9owv5MOjUE4gVEBKzAXxC4TrUo26kSpqpA7khvTm1h2nMigYZjsjfJcEFOz9hzNRGNgVemKWCUcpFeHcDxHLM8EUSYc+VP0r3ISpzYd2XLKBEILkm+VhWiWTpU88+d1Qjih4QTGFOpEqWgTXJzsnrAWCNlAvxASz1EoKzaLwcRUGkIczi4VcTXv2/bZZ58lIZcLkzUaJFEWd4GLxHUCE5OrmEEYJ+yWCYu4ngkn7xFG0yKS55C8WjqkACyWMjkRqgndEj2rJIrwMvQ8yudLuEaKmdA6aQkbUarAmEIdC8fkFArXQIz2k6M4GaI1xNTx48cnSyALwawR72MJsEYIrRn0EBNbH2hkRUA2gQm4XCXHE3nymDYjTz75ZNp2yfParmrtikTkMnETEY/XSrzMOgzxVo4TFykTitap2rXSXPIWy0hSxjj9yfk3auWqxAWxlC0ynSh9jkJg7qLHOm0JGy5VYMwRTrtMY5C306qiXKvValIfDcbkr26rk9GrTo1ll4oGU6fPj3PhBjZq3C8SlTWrKuQJDeR7yKkKlyowZtBJLdVIAbcP4TTKfO4E3C0WCJG8WtHdLUQtVWBMYbRVi9OOhLoRjjwZ+kt/ISQuhYC7Vs6K7iYkDOYQfBBOYNRjNPbDkTOTbwNtLNbrxmQE5uiHExgziI5/Q4fo+BcYk4iexkMDpQ9C9FUE4QRGNWLXhsFH7NoQGNOIfakGF7EvVWBMI++8KWM20FtoRBY7bwbGPH7xi1/0lQcEegPXVva1FhrNEIQTGDNQcqAHTDf7CAd+B8I8Qs+lH0E4gcDvLR2Cporn2CZ54HAN1XQR5uvsWhGEExhzUB+k9/HMM8+cWpEK4aqLGs2bAnYLrpEmYkorlC1o/aqTYKtWo0E4gUDxu8LFiy66KFVGq8zObUlzr2J/y/fLf5s9RsOoPt/qfqP/6zzX6hid3G/1mO9SfSxXscvg1vq0zv5gQTiBQGBIEIQTCASCcAKBQBBOIBAI9Bv/D/pRxWFKRmp0AAAAAElFTkSuQmCC\" width=\"284\" height=\"225\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x5d6b73e8 \"BufferedImage@5d6b73e8: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@7fb9e337 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 284 height = 225 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; **
+;;; ## Control structures
+;;;
+;;; Sometimes we may need additional control structures in transactions to direct backgracking.
+;;; Grape supports For example, consider the following graph setup:
+;;;
+;;; ### Until
+;; **
+
+;; @@
+(rule 'setup-likes!
+      {:create
+       (pattern
+        (node 'n1)
+        (node 'n2 )
+        (node 'n3 )
+        (edge 'e1 {:label "likes" :src 'n1 :tar 'n2})
+        (edge 'e2 {:label "likes" :src 'n1 :tar 'n3})
+        (edge 'e3 {:label "likes" :src 'n2 :tar 'n1})
+        (edge 'e4 {:label "likes" :src 'n2 :tar 'n3})
+        (edge 'e5 {:label "likes" :src 'n3 :tar 'n2})
+        (edge 'e6 {:label "likes" :src 'n3 :tar 'n1}))})
+
+(setup-likes!)
+;; @@
+;; =>
+;;; {"type":"html","content":"true","value":"true"}
+;; <=
+
+;; **
+;;; Moreover, consider the following rule, which deletes a ```likes``` relationship between two arbitrary nodes.
+;; **
+
+;; @@
+(rule 'dislike_one!
+      {:read (pattern
+              (node 'n1)
+              (node 'n2)
+              (edge 'e {:label "likes" :src 'n1 :tar 'n2}))
+       :delete ['e]})
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,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\" width=\"152\" height=\"186\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x3cda79c9 \"BufferedImage@3cda79c9: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@7fb9e337 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 152 height = 186 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; **
+;;; Now let's assume that we want a transaction that repeatedly deletes ```likes``` relationships until there is a unidirectional cycle of ```likes``` relationships in the graph. Formally, this condition can be expressed in the following graph test:
+;; **
+
+;; @@
+(rule 'chain_of_likes?
+      {:read (pattern
+              (node 'n1)
+              (node 'n2 )
+              (node 'n3 )
+              (edge 'e1 {:label "likes" :src 'n1 :tar 'n2})
+              (edge 'e2 {:label "likes" :src 'n2 :tar 'n3})
+              (edge 'e3 {:label "likes" :src 'n3 :tar 'n1})
+              (NAC 1 :homo
+                   (node 'n5)
+                   (node 'n6)
+                   (edge 'e5 {:label "likes" :src 'n5 :tar 'n6})
+                   (edge 'e6 {:label "likes" :src 'n6 :tar 'n5})))})
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOQAAAERCAYAAABrfwuTAAAj8UlEQVR42u2dB3hUVRbHKSIgTSkKSBMRlBVhFQFRUEGKIqKy0jsi2AWVtqCyykoTEGIgSBMEASkmLAKhhCqgoZMQWiCQkBBqKCFgwln+B94wmUz6lDeT///73peZyZtX7tzfu+eee+85uYSiKNMoF4uAoggkRVEEkqIIJEVRBJKiCCRFUQSSoggkRVEEkqIIJEVRZgTyiy++4MaNWwY3pwL51VdfSa5cufQvN27c0t5y586daSgzDWRWqKeonKis8EIgKYpAUhSBJJAURSDNr7///lu2bt3qtONHR0fL+fPnM/WdixcvyoEDB5x+70lJSbJjxw45dOhQuvviek6dOqWvb9y4Ibt27dLvGwoLC3PotZ08eVISExMJpCcBOWTIEMmfP7/kzZtXnn/+ealatarUrFlTJk2alKHvb9myRR5//HG55557nHJ97733nnrb1q1bl6nvDRo0SEqVKuXUsktISJBGjRrJiBEjJF++fLJw4UK7+8XFxUmHDh3Uw75s2TL9bOfOnfoe93Xw4EEte7x3hPCA+PTTT+Wjjz6SihUryvjx4y2/9X333SeDBw+W5cuXy2+//SafffaZFClSRIYNG0YgzaK6detKpUqVLO+//vprrRxz5szJ0PenTJniNCDPnTtnqbiZUUxMjPzxxx9OLbeZM2fKK6+8oq83bNggp0+fTnXfCxcuJAMSLReguH79ur7/5ZdfHAbkW2+9JUuXLtXXeFgAwvj4ePn3v/8tL7/8cor9X3jhBa2bBNIkatasmVSuXNny/sSJE1o5evTokeGKmVEgYaplZp9Lly4lA9Le92H2obVK71zGe2szMTsaMGCAvP766xna98qVK8mAtL2mJUuWZBlIA2pDHTt2VPgggInjwhxODcjGjRsTSDMDGRAQoD/id999p+9RiR588EE1AwEIfvCSJUtaWiBbINFXevHFF+Whhx6Szp07y9GjR/XzkSNHSoUKFez2awAJygbfa9iwoXzwwQfJgBw6dKjUqlVLChUqZDHBoP79++u+9erVk169eulnx48fV1MM5hrk4+Oj38XxsR+udcKECRkqG7RiuCZU5KefflqCgoL0c5h9OH7p0qWlTZs2smbNmgwDiT43rql27dpa1rZABgYG6u/RvXt32b9/vz5s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\" width=\"228\" height=\"273\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x446c3851 \"BufferedImage@446c3851: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@7fb9e337 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 228 height = 273 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; **
+;;; This can be accomplished by using the Grape ```until``` control structure. The first argument of an ``until`` function is the _completion condition_ (which must be side-effect free). Then then one or several Grape rules (or other control structures) can be called. Here is the program for the above example:
+;; **
+
+;; @@
+(attempt (until 'chain_of_likes? (apl 'dislike_one!)))
+;; @@
+;; =>
+;;; {"type":"html","content":"true","value":"true"}
+;; <=
+
+;; **
+;;; Let's check the result:
+;; **
+
+;; @@
+(rule 'likes?
+      {:read (pattern
+              (node 'n1)
+              (node 'n2 )
+              (edge 'e {:label "likes" :src 'n1 :tar 'n2}))})
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHMAAAC6CAYAAACdpHKaAAALBUlEQVR42u3dd0gXfxgH8MzEbFLZJLJF+48KK0OaNqjQtpZmO23SgLKgskkUUtGQimjSMs0GFpUN2ntr2aLCpjYs2uP58X7gju9X/aGWmvft/cDh3X3Hnfe6z7jzPo+FhOEwUYiHgJgMYjKIySAmMRnEZBCTQUwGMYlpHzNnzuSUT1OeYs6aNUsKFSqkPznl7eTk5JRj0Bxj/s4Zw8h5/M6xJiYxGcRk/HuYSUlJ8vLlyz/6ju/fv8u5c+fM5fv378vbt2/N5ZSUFElNTc21fX7//r28e/fOcTD37dsntWvX1p5Yo0aNpEmTJro8fPhwSUtLy/L78Z7AwEDtMcfFxf32gTh79qxuv1ixYuY67MeYMWMUefz48VK4cGHZuXPnHx904/vmzJkj9evXF19fX/nx44e+Vq9ePfH09NTXHj16JPPmzZOAgAA9PomJiQW/ZEZERCjGxYsXdfnq1avi5uYmPXr0yNY2cHb/KSZizZo1dpgXLlyQ5ORknf/27VuuYUZFRUlwcLDOP3jwQPd97969ulynTh1Zt26d3ftRI+A9CQkJBR9z7dq1urOXL18217Vs2VJKly6drW18/Pgx25i/fv3639c2bNhgh5n+/UWKFPktzJ8/f+pkxK5du6Ru3brmMk7cuXPnmpjr16+3+/ybN2+si/nhwwdxd3cXPz8/XUZ106ZNG62CEKtWrZIqVarItGnTMsX88uWLhIaGSoMGDfSksEVGFYYqLivMo0ePSp8+fWTYsGEZMJ88eSLt27eXDh06yI4dO/S1zZs3S/PmzaV69eoye/ZsE2/jxo36Hc2aNZNevXplOEnu3LmjJR61kUNhLly4UJYsWSINGzaUatWqyfnz5833LF68WMqXL2+HgvYsM8yJEyfKggUL9ICFhYVJhQoVtJ1CTJgwQbeXFebTp0+ladOmMmDAgAyY27Zt02oSJw3izJkzerKhQ4OmAvty5MgRbQfLlSun+Nj+wIEDM2wzPDxcQkJCzGWHwRw3bpxWOTVq1FAg21i5cqUdpre3d6aYKBH4jm7duklQUJB07NhRKleuLKdPn85yX9NXs6gZ0mN27txZ/P397apNwKLzhO1hqlSpkkydOlVfq1Wrlnh5eWkJfPz4cYZt4qR8/fq142Giml29erXOT5o06bcw0WHBPC4rchrZwSxevLhWpbaXFKjKURNkFqiu0WS4uLhkqBEePnyoVbJtOFybibYKy+go2GLioGSnZOJ9OCmMQHWYnc5RdjCxHxUrVtTLBSPQPqP9tA3sO/YFvxOq7C5dukipUqXsSiH6Avfu3XMsTLSV2Nn4+HhdxoW6h4eH9maNErZnzx691kJHAddbAOvbt6/dL7t7926z2kNbtWLFCrlx44ZWfcaBwLaio6Mz3Q+cAK6urmbnxMfHx+y0oP1zdnbWDs/+/ft1e0ZpxGUFlkeOHCk3b96UZcuW6Wu4nOnevbt5bVm0aFHz8svoNMXGxjoOJg5EzZo1dWdbtGhh3oE5deqUHjx0hHDwvn79qr1TrMNZjpLQtm1bOXHihAwePFg/jx4m8IGNkwHrcAmwadMmu4PVr1+/DPtx5coVvWGBz0yePFmv9VCSULXHxMRopwqvtW7dWt+LnjVOLvRU0fvu2bOnvo4TcOzYsbq/wERJHz16tPa8gW0baEvRtjtUycxJ4BdDfP78OcvrSfQi0wc+Z9t5yc149epVho4bSiRqmvTrEZ8+fVL0fxbT0QOYaKvRZOA+8MGDB807ZMS0WKDNxW1ETKi+0YEylrOqjYjpQEFMYhKTmAxiMohJTGISk5jEZBCTQUxiFhDM48eP681mR5yOHTv2b2E6agnPzd+LmMQkJjGJSUxiEpOYxCQmMYlJTGISk5jEJKaOMzHGYhLTopgY4oCBtXjKHINniWlhTAzQxYguYyQ0MS2AaQzhy2xA0bNnz4hpBUyM32zcuLF+L4bXYfgdSiIxLYiJHDzI9IExlxiSjrGWSGZBTItWs8hREBkZqfMYVAs4IzMJMS2MaQxnx4hnYhKTmH8LE71XJKRYvny5Lm/fvl3hMDzdtl3FukOHDhGzIGMuWrTITIxx6dIladWqlS7PmDFDX0emEmQbwbpOnTrJyZMnicl7s8QkJjGJSUxiEpOYxCQmMYlJTGISk5jEJCYxiUlMYv5lTOY0cCBMq5aWgr7fxCQmMYlJTGL+SeBfOmG/icmSSUxiEpOYxCQmO0DEZMkkJjGJSUxiEpMdIGKyZBKTmMQkJjGJ6SAHZs6cORIeHq7/hf3WrVu6Domfrl27Zpf46c6dO8S0whnetWtXTfI0ePBgXXf16lV9+AoPlt29e1fatGmjy8S0SHXVsWNHExOZLQ8cOGBmIkGCRGJaCBOl08A0wsizFxsb+9uYtqlpiJnPmMjYhTx7np6emisoPSbSytSsWVOGDBkit2/f1ty0oaGh0qBBA2nZsqXExcWZbWxgYKD07t1bqlevLk+fPiVmfmOiij116pTipccE9KBBg2TTpk3m5ydOnCgLFizQUhwWFqb5+PC+ESNGSEREhL5n+vTpmmOImH+hmv369avi7dmzxw7T19dXk0EZgd6um5ubdOvWTYKCgrTdrVy5suaunTp1qpQpU0aioqLk1atXdsmjiPkXMNOXzLJly0pISIj52eTkZF1///79DN8LQCNxlJ+fX6b5bYn5FzGjo6PNn0bJdHd3l9WrV5vfhzYU7ebFixe1up0/f76mRt26dSsx8wvTx8dHOywI3EAAGi5JEKgqsYx2cejQoVKiRAm5fv26vhYcHCzlypXTThNStqG6TUhIkH79+klaWpq+B/NTpkwhZl4H/gTWvXt3zXhZqVIl2bFjh3ZegIdEwwcPHjRvGkyaNElz6mG+fPnysm7dOklMTBQPDw9dV7duXbNz5O/vr59buHChtrWokolZAC++0wdK7JMnT+zWoYpFlZuamsrrTCth8g4QMYlJTGIS81/pzeLvmcRkySQmMYlJTGJmjJcvX+qtN0yjRo3Sv0cay3iNmBbCxK23kiVLSqlSpfQ+KybMY136fylFzAIeAQEB4uTklCF7FtbhnipLpoUwDx8+bJZC2wnr8uq/DREzjwJ/h/w/TDw2QkyL9QzR6XF2djYhMW/7FAExLYR57tw57fgYmJjHOmJa9JoNf2A2MDHP60wLY+JRDhcXF50mT55MTCtj4lkdPCqJcSbGoCFiWhQTgYeW8YSd1YJpvZnWO/8xmXCfmMQkJjGJSUxiEpOYxCQmMYlJTGISk5jEJGYWgXGWyEVATItjLlmyRKpWrapP6LVr184c5k5Mi2GePXtWvL29JT4+XrZs2SKlS5eW/v37E7OgYxop1GxTuWBbL168MJeRfQsPRROzgGIiG0jjxo31e728vPTpgmXLlmX63kWLFkmXLl2IWVAxke4M+XiQQeThw4cybNgwfcogs0BOoPXr1xOzIFezSA8TGRmp8zExMZmOK0FqGGTWyotslMTMI0xk3wKmLVpKSop2hJ4/f85LEytj4mevXr30iT0j0uf2IWYBwUTv1dXVVZYvX67LyE4JTCPbJC5F8Bwt8t5hWrp0aa7nOiBmLgV6qMBr0aKFXLp0ycw4OWPGDPO19FNSUhIxrXgHKD+CmMQkJjGJSUxiEpOYxCQmMYlJTGISk5jEJCYxiUnMfNlZ5jRwIEwGMYlJTGISk5gMYjKIScw/xMS1FDbCKW8n4zjnGaYByil/ppxGIVZojhPEJCaDmAxiMohJTAYxGcRkEJNBTEeP/wCFqQv26dHopgAAAABJRU5ErkJggg==\" width=\"115\" height=\"186\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x1e0d985f \"BufferedImage@1e0d985f: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@7fb9e337 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 115 height = 186 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; @@
+(-> likes? matches view)
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAScAAABQCAYAAABbCrOMAAAV20lEQVR42u3dBbRUVRsGYPxV7FbswO7CFru7O7FbLAwEFcXCQlEUA7G7E1vBBLsQO7G74/zr2WudWecOMzeYuXfi7netWcwdJs4+e+93f/11SCIiIiKqDx91iPcgIiIiklNEREREJKeIiIhIThE1i5EjRyZHHnlk0qVLl2SqqaZKOnToEB7/+9//co/xxhsv95p/07+zrxV7vdhr2e9P/9/vr7DCCsnxxx+fvPnmm3FyIjlFtEeMGDEiWXXVVZO55por6dOnT/Lss88mP/30U8Wu57///kt++OGH5Mknn0yOPfbYZOaZZ0422WST5I033oiTFckpor2gV69eYfMPHjw4kEI14q+//kr69++fTD/99MnAgQPjpEVyiqhn/Pvvv8nuu++ezDrrrMl3331XE9f88ccfJwsssEBy6KGHxgmM5BRRjyAhbbnllknXrl2TP/74o6au/fvvv086d+6cHHHEEXEiIzlF1BuOO+64ZOWVV07+/PPPmrx+kt4kk0ySXHLJJXEyIzlF1AuGDRsWVDkSSC3jgw8+CDao0aNHx0mN5BRRD+Cev+GGG+piLGeccUayzTbbxEmN5BRR6+CaX2ihhepmPOxlM8wwQ/L+++/HyY3kFFHLOOCAA5KzzjqrrsZ0yCGHJKeddlqc3EhOEbUMbvjXX3+9rsZ0//33J2uttVac3EhOEbWKf/75J+nYsWOIb6oniH2affbZ4wRHcoqoVfDOyVkrFdJKvvnmm0bfM2bMmJobV0Qkp4gK4eeffw7JtOMKEteOO+4YDNATTDBBstNOOxV83913351MO+20ub979+4dknuzj8knn7xsElyp44qI5BRRYUjknXLKKcf585dffnly4403BlK57LLLgrTy8ssvN3iP4MiZZpopmWaaaXKEttJKKyXXX3998tRTT4VH9+7dk80226xqxhURySmiCsipFAkjS0Sff/55kIA+/fTTBu+Rq9ezZ8+c5PTLL7+MRWBbbLFFILoUpSYblzquiEhOETUuOWVx1FFHhbpPWdx+++3JCSeckNx0000N1Losfv/992SKKabI2aSUQHFNjz32WJScIiI5tVf8+OOPgRhKWiEffRTUNCqdYM7UMP71118n6667biht0hg53XXXXSFCPQWSUqeplGJy5RhXRCSniBonJzYkKt35558fjOLnnntueJ1x/MUXXwzPGyOnPffcMzn11FOrblwRkZwiapycskBIqmc+//zzyYwzzpjsscce4bH66qsnE044YXj+3HPPNSC2Tp06lT0INJJTJKeIIuChSjcc4y4DcNZN/vbbb1fFdZbbNqO29y677BLy2o455pjcg8F74oknDs9feuml3PtVQ5h77rmrflx///13KFOc4t13321QwYEK21ScV0Qkp4rjoosuSiaddNLgpQKbkT3m8ccfT955551ktdVWq5oAwVK9Wo888kgyatSo8JwXbplllsmpclncdtttBdU6BnRhBFnY9Pvtt19Jibvl9NY988wzyaKLLhrmNMW8886bHHjggYG0VODUhOHmm2+Oiz+SU/VjnXXWyZGTFBG5XgzDIL6nmsipFAlDAKbwAWqbMRfzsBUjp/nmmy959NFHG7yGzG32W2+9tWokp0GDBjUgJ2prGjJhXiM5RXKqGWy44YY5ckqRxu5wr48rOaUEVy6IpC51E1NpxvW6Pvzww4JR4b/++mvFx5XFlVde2YCcsvMJHAHjQk7GXm95jZGcaoSciP0DBgwI6g6XeT45DR06NNhcunXrlrz11luhFtG+++6bLLzwwsmKK66Y3HvvveF9bFSklK222iq0avrss8/Kcp31moNW7nFlyYmkt/XWWwcvYz45SThec801k7XXXjtEzsPVV1+dLLfccmHeTjrppBwZDRkyJHzHsssuG2q3R0RyalNyotIx+too+eSEuHbbbbfkqquuyn3usMMOC3WInMpHH3108GR53957752rucTo/N577zUpkVx88cVhY1CPqJVPPPFE8sILL4QgR+Vsv/zyy6D+2Fj1dnp/8sknyWyzzdYq5ORgWHrppZOdd955LHKisnMIpA0inn766WBjdJ/de/POTmddTDfddIHMzO+uu+4aN00kp7ZX6zQMsCjvvPPOBuQk0DBbGhdBKNC/0UYbBZc8G47eccOHDw9eLrlp4oW++uqr5Lfffmv0922eNJmWesM4nD642CebbLLgPXMdU089dd3Vc7rvvvuSJZdcMtjCzjnnnJKrYuardZtuuulY5LTeeusl2267bQOiR1SM6ebTQ46huYR55pknBJ+SigWyRkRyqhg55UtODMT77LNP7jMMrF7nps4HQlpllVXC/9sYTUk6JCbE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\" width=\"295\" height=\"80\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x5f688781 \"BufferedImage@5f688781: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@7fb9e337 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 295 height = 80 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; **
+;;; Similar to loops in other programming languages, ```until``` control structures may not necessarily terminate. Of course, the above example program quite clearly terminates, as each iteration removes a ```likes``` edge from the graph - and the number of these edges is finite. However, in general, transactions that use ```until``` may loop forever.
+;; **
+
+;; **
+;;; ### Choice
+;;;
+;;; Sometimes we may want to try different rule applications non-deterministically. The ```choice``` constrol structure can be used for this. Consider the following two rules:
+;; **
+
+;; @@
+(rule 'KimLikesJohn!
+      {:read
+       (pattern
+        (node 'n1 {:label "Kim"})
+        (node 'n2 {:label "John"}))
+       :create
+       (pattern
+        (edge 'e1 {:label "likes" :src 'n1 :tar 'n2}))})
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,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\" width=\"170\" height=\"186\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x23cda7bc \"BufferedImage@23cda7bc: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@7fb9e337 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 170 height = 186 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; @@
+(rule 'JohnLikesKim!
+      {:read
+       (pattern
+        (node 'n1 {:label "Kim"})
+        (node 'n2 {:label "John"}))
+       :create
+       (pattern
+        (edge 'e1 {:label "likes" :src 'n2 :tar 'n1}))})
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,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\" width=\"170\" height=\"186\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x302802ba \"BufferedImage@302802ba: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@7fb9e337 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 170 height = 186 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; **
+;;; and the following start graph:
+;; **
+
+;; @@
+(rule 'setup3!
+      {:create
+       (pattern
+        (node 'n1 {:label "Kim"})
+        (node 'n2 {:label "John"})
+        (edge 'e1 {:label "likes" :src 'n1 :tar 'n2}))})
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,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\" width=\"124\" height=\"186\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x50f4a6c7 \"BufferedImage@50f4a6c7: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@7fb9e337 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 124 height = 186 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; @@
+(clear!)
+(setup3!)
+;; @@
+;; =>
+;;; {"type":"html","content":"true","value":"true"}
+;; <=
+
+;; **
+;;; The following call will non-deterministically choose one of the two above rules so that the graph test ```likeEachOther?``` is met:
+;; **
+
+;; @@
+(rule 'likeEachOther?
+      {:read
+       (pattern
+        (node 'n1 {:label "Kim"})
+        (node 'n2 {:label "John"})
+        (edge 'e1 {:label "likes" :src 'n2 :tar 'n1})
+        (edge 'e2 {:label "likes" :src 'n1 :tar 'n2}))})
+
+(attempt
+  (choice (apl 'KimLikesJohn!)
+          (apl 'JohnLikesKim!))
+  (apl 'likeEachOther?))
+;; @@
+;; =>
+;;; {"type":"html","content":"true","value":"true"}
+;; <=
+
+;; **
+;;; ### Avoid
+;;;
+;;; Sometimes we may want to specify a condition to avoid in a transaction. To some degree, this can be achieved by using Negative Application Conditions (NACs) attached to rules (see above). However, the expressiveness of NACs is limited. Therefore, Grape provides the ```avoid``` control structure.
+;;;
+;;; Consider the following start graph:
+;; **
+
+;; @@
+(rule 'setup4!
+      {:create
+       (pattern
+        (node 'n1)
+        (node 'n2 )
+        (node 'n3 )
+        (node 'n4 {:label "A"} )
+        (node 'n5 )
+        (edge 'e1 {:label "relates" :src 'n1 :tar 'n4})
+        (edge 'e2 {:label "relates" :src 'n2 :tar 'n4})
+        (edge 'e3 {:label "relates" :src 'n3 :tar 'n4}))})
+
+(clear!)
+(setup4!)
+;; @@
+;; =>
+;;; {"type":"html","content":"true","value":"true"}
+;; <=
+
+;; **
+;;; and the following rule that creates a ```relates``` relationship between an arbitrary node and the node with label "A".
+;; **
+
+;; @@
+(rule 'relate-one!
+      {:read
+       (pattern
+        (node 'n1)
+        (node 'n4 {:label "A"}))
+       :create
+       (pattern
+        (edge 'e1 {:label "relates" :src 'n1 :tar 'n4}))})
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAI8AAAC6CAYAAACX1B6NAAANI0lEQVR42u2dDVBVZRrHEUwSdNndlEFU0talVmm1SUVWxay0LVtX2xK21LGwNSdNakdTRzTFpsEtc0WZZJlKLHVJW9NJN4Wx8QPIaFxN29oJx9TxK0TzAxDUZ5//G+d2v7mwyXoP//9/znC+v97fed7nPffy3hChqCYqhLeAIjwU4aEID0V4KIrwUISHIjwU4aEID0U1Dzxz587lYNPhusLz0ksvSUhIiPnLwV5Dq1atGg1Qo+FpCqHUja+mlC3hoQgPRXgowvO/6auvvpJTp041242rrKyUAwcOBF2Bnzt3Tmpra+0Bz6ZNm6RHjx4mc09ISJC77rrLTE+cOFG+++67BvePdR5//HHTovvwww+bpQBycnIkIiJCJkyYEHTw3HnnnfL00087pu+44w7p27evLFiwQA4fPiwLFy6UlJQUUx5ffPHFjR95Xn31VVP4n376qZneu3evtG3bVkaNGhXw09Sc8EDDhg0LCJ6LFy/KG2+8ccPAExMT43Jf4+Pj5c0333RZ59tvvzX38+DBgzc+PHl5eeZkP/vsM8e8pKQkiYqKCugYly5dChiea9eu+V1+9epVl7++9NBDD3nAg21qampcjvXEE0/IpEmTrgsI1rU0dK7Ouvvuu+WZZ55xgeett97yqJKDFp4LFy5Ihw4dZOTIkWYa4XTIkCEmxEJ4kmNjY2XWrFle4UEBosB69uxpIHSGCiF62rRpHudQWlpqqj+E7IcfflhuueUWcx6rVq2S/v37S7du3WT+/PmOgnKHZ8aMGTJlyhQZMGCAo1rAtoigXbt2lUceecQxz9v+vGnLli0ydOhQefDBB6Vfv36yfft2M3/ZsmXSp08fc19xPFShS5cudWzn7xg4j5dfftl+8GRlZcnrr78uvXr1kri4OPnkk08c6yxevFg6duzoAsGzzz7rFZ7nn39eXnnlFfNkvvjiixIdHS11dXVmWXp6ujmeu7755hsDZ+vWrWXt2rUyffp02blzp4H2/PnzpkrFMYqKijzgwXpYhpteXl5uxq3kfdCgQY7zLC4u9rk/dyEZBxTYn3Ufb775ZjONITQ0VJKTk+XQoUOSlpZmrjGQY+DerFy50n7wTJ061Typ3bt3N0A4a/ny5S7wDBw40Cs8eMqwjxEjRpgqA7lJp06dZPfu3Q2e65gxYxzRDho3bpxJ4rEfDMgXZs6c6QEPjg/gqqurTTKNcykpKXHAg4jU0P7c9dxzz5noYgmQYL/WvYyMjDTHgtavX2+W4QFp6BivvfaaC0y2qrZWrFhhxl944YUmwXPs2DEz/vXXXzc6h0C1BYCc8y5EsEBynvz8fBk+fLisW7fOHN+CFfDgofC3P1w3WjfWkJubayB2hgdCdBk/frwHPBs3bjTHRBPc3zlD77zzjnmtYduc59FHHzXT77//vgs8yIMCiTxYDxBaQg4USDLtDg/ypvvvv99lHeucnOEpLCyU9u3by9mzZx033hs8vvaHQj9y5IhjwPVMnjxZwsLCTGvNEvK82bNn+4XH3zlb1bNzUh/08CDXwcmiECAUwq233mpaW1YE+eCDD8xTiWY83j8AkMcee8zlYjds2OCoHpDwIrHcv3+/Cd/WjcCxEB28CdAiWbZkFQpaJ59//rlJSq2n+r777jOwQXPmzJE2bdrI0aNHZfXq1WYbJLuAANEIUQTXhOjka3/u2rFjh8sDhH0jz9m3b595QMLDwyU7O9ssQ5WJdauqqvyeMwRQrPsc9PDgYm+77TZzsomJiabVA+3atcs8eUicN2/eLJcvXzatJ8xD6wNP1z333GNuMiIAtr/33nsNbIAL8GHe7bffbgrN+WalpqZ6nEdBQYEBDk+0FbVwzNGjR5v9AGTkLpiH9yJYD/kEzh9AA2asg2vFS06cNxLbt99+2xQ0zu3kyZNe9+dLaDx07txZMjMzzbVb57Vo0SLH/SorK5PBgweb6YyMDJ/n7Hz91kNni8jT2I8FICSnDb0DQRXgLmzXmPci0OnTpz0SeHehgKzX/vjrfAxEncbuz/kdFlpeiCo/xjmjFeYOU4uBh/pxBXhQraLKr6iokI8++sjxxp/wUH6FvGjPnj1mwEtRNFqs6YaiO+GhmizCQxEeivBQhIfwEB7CQxEeivBQhIciPISH8BAeivDIxx9/bD7Qs+Ngffmd8NxAF2PXJ5zwEB7CQ3gID+EhPISH8BAewkN4CA/hITyEh/AQHsJDeAgP4SE8tr/JV65ccelAgPAQngaFf2tes2aN+c9LXx01ER7C41XoSgU9Ufjr5YvwtHB4/HUeefz4ccJDeDzVUOeRhIfw+JS/ziMJD+FpUL46jyQ8hKdR8Dj3/0d4CA/hITzX51j+Oo90zoswb+vWrYSH8Pwgf51HQuhtFV3yYx56PkVv8ISH8AR1IREewkN4CA/hITyEh/AQHsJDeAgP4SE8hIfwEB7CQ3gID+EhPISH8BAewkN4bApPs/ZJ+Esd4tknIXtDbcqNU8+Vlt3LK+EhPISH8BAewkN47A/PfDUAIjyEh5GH8BAewkN4CA/hITyEhwkz4WHkITyEh/AQHsJDeAgP4WHCTHgYeQgP4SE8hIfwEB7CQ3h+NC1Qz1M3RvvUh9WEh5En4MhzTN1DHaLOVRMewtOoaqtMHSg8E9WX1YTH5vBcU9eqr6gx7kv/UXuD54Ia21r6qxrrVasDUZVUEZ5gU4Z6mLqn+nfqaHWyulj9azUAGKn+l9obPPvVQ9UJ6gj1cvV2dSs11uukLlBXqv+gvkndS71SbUEzQt1NHaWeoyY8QQTPb9Qh9Z6gHq/+iRog7FH/TP1btTd4AFacGkpTd1dDM9RYr06+/3mC36tHqbH9cHUbdYU6Tw1oEO1wvClqwhNE1Va6GgWNjyqgbDWme9cb42Hqi2p3eDap/6ZGpEpUI+I4w4Oq7KQa4+Fq7K+dGtP56jVqjCP6/FtdoiY8QQTPn9UowCVqCDD9VH3Zzd4iD1pgA9WIXkPUIfW31YLnqhpgYXyz2nl/iDbIiRC9sLytGusQniCGB1UJpneoLa1WF6rd4UlSI99Bso0q0B0eRJ4zakQu5yoJ74nwjqlIjX2uUEeq49UAjvAECTxT1ShoFD6EagbVz8/VaIllqn+hPq+2muqL1RAiVKx6qxqJMJZhHPvF+D/UAA9RKVT9R3WO+lfqf6qz1JPUAGahGgDVSA3hCQbNUseoUdBIjFepIbx1RrTA/EHqnWpECwuQzuotalRxAK2reqwa2/RX71aj5YY85+/qXeoOamyLdS34/qLGNog4iGBImllt2eAlIRLko+qGdFbt/L7HeRz7sIToUq52rpbq6o3cyfk9EeEJcnhaiggP4SE8hIfwEB7CY3948Fa5sd/nITyEh5GH8BAewkN4CE8w6JR6f70nq/HxgDWNZYSH8Pi58BBpr8Z3dtrVG+OY5/wdHMJDeDyUora+6edszBujZuQhPD61TW1FGWdjHj4RJzyEx6fwwaQveP5fH04SniASkmTrKxfW10z/pGZri/A0qFK19V1iGOOYR3gIT0DqqLbgwXhLFeFpgvA945vqPV1NeAhPwDqoxn8s4J/1DqgJD+FplPA9Y3y3uCWLPxPZ1CG1fuDPRNoDHv5ALeEhPISH8BAewkN4CA/hITyEh/AQHsJDeAgP4SE8hIfwEB7CQ3hsCE9lZaXU1ATWA9eZM2cID+H5AZzY2FgpLCwMaP0+ffrIl19+SXgIj8hTTz1lPuEOBJ7S0lKz7rRp0whPS4Dn2rXvu/+/etWzV9ENGzaY/bvDY23jrieffNJEnqioKLl06RLhsSs8y5YtMwWNbQcMGCARERGydOlSx/KKigp54IEHpLa21gOevn37ekSXc+fOSVJSkpSUlJj1c3NzCY9d4SkvL5fQ0FBJTk6WQ4cOSVpamkRHRzuWjxs3Tvbu3fv9xbvBk56eLnl5eR4wWvAlJCQYMAmPjautyMhIycnJMePr1683kNTV1cl7770nGRkZP1x8ADlPv379HC2tJUuWmG2Ki4sJT0uAZ+PGjabAUU116dJFxo4da5JlK2FGFYbo4k2AJCYmxlR/GFCttW7d2uyD8LQweDIzM2XmzJmOAfNTUlIkPz/f635QxW3bts1l3ujRoyU8PFxOnz5NeOwGD1pXKNzs7GwzvXbtWgNJVZXnD6GFhYW5VFtZWVmybt06M378+HGJi4vzaK1ZMM6bN4/w2A2eRYsWmcJNTEyUsrIyGTx4sJl2znUsoQoqKipyTMfHx0tqaqqcOHFCevfubSB89913HcvRTLequ3bt2klBQQHhseN7nqaourra63uhYL8uwmMTER7CQ3gID+EhPISH8BAewkN4CA/hITyEh/AQHsJDeAgP4SE8hIfwEB77wdOsfRI288A+CakWHxEJD0V4KMJDER6K8BAewkN4qBsCHrynwEE42GuwyvW6wWMBxMGeQ2MVwoBNNVWEhyI8FOGhCA9FeCiK8FCEhyI8FOGhCA9FNU3/BVgcgA6lSKJSAAAAAElFTkSuQmCC\" width=\"143\" height=\"186\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x789007ba \"BufferedImage@789007ba: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@7fb9e337 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 143 height = 186 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; **
+;;; The following Grape program tries out all possible (4) matches for ```relate-one!``` so that graph test ```double?``` fails (i.e., is avoided).
+;; **
+
+;; @@
+(rule 'double?
+      {:read
+       (pattern
+        (node 'n1 )
+        (node 'n4 {:label "A"} )
+        (edge 'e1 {:label "relates" :src 'n1 :tar 'n4})
+        (edge 'e2 {:label "relates" :src 'n1 :tar 'n4}))})
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,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xx13mFNCnBAGerQUbIItXYUDQM/D5fvvv29ged7FBZtgixhseK4ELNyOCjbBJtgE26UJG7VPnCh7vnznzp1rYHn+cj27LtiTuGATbCnW888/byCxPBELb9SpU8e+e06j8TbeqlUr+40lhliAQ7AJtktWgk2w6bkEm2ATbEoUwSbYBJtgE2yCTbDpuQSbYBNsShTBJtgEm2ATbIJNsOm5BJtgE2yZIvnUFWyZKiYO33777W7IkCERCT8hIcEVLFjQSYLN3X///baFs/56asXgysDBlIItDmEbNmyYq1Wrljt//nxE71OmTBm3Y8cOURavsM2YMcMgSExMjPi96tatG7H5B4ItymFbv369K1SokNu+fXuG3K9z587unXfeEWXxBtuJEydcyZIl3YIFCzLsngMHDnRjx44VZfEGW5s2bdzjjz+eofecOHGie+yxx0RZPMGGnVaxYsWI+Un7L82bN8/de++9oixeYDtw4IDZaVu3bs3we3/33Xeudu3aoixeYGvWrJkbNWpUptx7586drnTp0qIsHmCjGMOtFa5GM0OnTp1yefPmFWWxDhsNttdff7375ptvMvUF58iRI8NtRcGWwaLopAaa2bruuuvc/v37RVqswkabGp3ge/fuzfQXXLVqVffjjz+KtFiFjb7Phx9+OCpecIMGDdxnn30m0mIRtpMnT1qudvDgwah4wbSzzZ8/X6TFImy02rdt2zZqXjA57NSpU0VarMHG2DTatVauXBk1L5j+0eeee06kxRpstNjTLRVNGjNmjBs6dKhIizXY+vTpk6pchAGOR48ejUicXnzxxRQPAIhkfARbOqlChQpu7dq1YZ9PC3/79u1t4siyZcsiEicW53jkkUeiJj6CLR10+vRpd+WVV6Z4TgG113ATl1wqpXrzzTfdgw8+GDXxEWzpICoFNWvWTPIbHr0vBt+5c+dCJi7dXYHXsqhGSmZLeS7q58yZ49q1axc18RFs6SDaslq3bm3706dPNy/e3JfRuR06dDA7qF69eq5UqVKuU6dObs+ePSETlyFJ9913n+vfv7/VbD/88EPrbuI6+jkZRbJmzRrr7+zRo4crX768Qe5dDxDdu3e3Yyz/2LNnT1elSpWoic+UKVMEW1r1+uuvu169etn+kiVLfLfxb7/9tps2bZolwqZNm9yZM2dcpUqVDIJQiUslg1Z/RGWDtanQ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\" width=\"155\" height=\"186\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x3a1c740f \"BufferedImage@3a1c740f: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@7fb9e337 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 155 height = 186 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; @@
+(attempt (transact (apl 'relate-one!)
+                   (avoid (apl 'double?))))
+;; @@
+;; =>
+;;; {"type":"html","content":"true","value":"true"}
+;; <=
+
+;; **
+;;; ## Attribute conditions and assignments - The Ferryman example
+;;;
+;;; We already saw how simple equality conditions on node and edge attributes can be expressed. For more complex conditions on attributes (for example inequalities), Grape provides a special ```condition``` form in the read part of rules. Moreover, Grape provides an ```assign``` form in the create part of rules to revise attribute values of machted graph elements. These two concepts are exemplified with the popular Ferryman problem. Consider a ferryman who is tasked to ship a goat, a grape and a wolf from one side of the river to the other side. The ferryman can only ship one thing at a time. Moreover, if left unsupervised, the wolf will eat the goat and the goat will eat the grape, respectively.
+;;;
+;;; The Ferryman problem is to find a sequence of actions to safely ship all three items to the other side. In Grape it can be described in the following transaction:
+;;;
+;;; ```
+;;;   (until 'all_on_the_other_side?
+;;;          (transact (choice (apl 'ferry_one_over!)
+;;;                            (apl 'cross_empty!))
+;;;                    (avoid (apl 'wolf-can-eat-goat?)
+;;;                           (apl 'goat-can-eat-grape?))))
+;;; ```
+;;;
+;;; The start graph for the problem is shown here:
+;; **
+
+;; @@
+(rule 'setup-ferryman!
+      {:create
+       (pattern
+         (node 'tg {:label "Thing" :asserts {:kind "'Goat'"}})
+         (node 'tc {:label "Thing" :asserts {:kind "'Grape'"}})
+         (node 'tw {:label "Thing" :asserts {:kind "'Wolf'"}})
+         (node 's1 {:label "Side" :asserts {:name "'This side'"}})
+         (node 's2 {:label "Side" :asserts {:name "'Other side'"}})
+         (node 'f  {:label "Ferry" :asserts {:name "'Ferryman'" :coins "7"}})
+         (edge 'e1 {:label "is_at" :src 'tg :tar 's1})
+         (edge 'e2 {:label "is_at" :src 'tc :tar 's1})
+         (edge 'e3 {:label "is_at" :src 'tw :tar 's1})
+         (edge 'e4 {:label "is_at" :src 'f :tar 's1})
+         )})
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAn8AAADKCAYAAADU1iYUAABDLUlEQVR42u2dCbyU0//H20MqqewJUSElEpElIhUiW9oskWTLFpV+fmXLWiIqEYVKWiRbWpRkKyTJloRIQhRZyvmf9/E783/u9Mx279x7Z+Z+3t/XvO6dmWeeeeY52+d8z/ecU8oIIYQQQogSQyndAiGEEEIIiT8hhBBCCCHxJ4QQQgghJP6EEEIIIYTEnxBCCCGEkPgTQgghhBASf0IIIYQQQuJPCCGEEEJI/AkhhBBCCIk/IYQQQgiRTvH3n//8Rw899NBDDz300EOPDHkUqvj773//a0qVKuX+6qGHHnrooYceeuhRvI/SpUunLABTFn/5UZhCCCGEECL95EebSfwJIYQQQkj8SfwJIYQQQkj8SfwJIYQQQkj8CSFKFj/99JP58MMPc+o3bdiwwbz++uvmxx9/zPrf8sMPPyiTCiHxJ/EnhDBm5cqVpk2bNm522A477GCaN29u9thjD3Psscead999N6lzPPjgg2abbbYx5513Xs7cl4ULF5oWLVqYiy66yFSuXNn89ttvWftbli5dasqWLWtefvll93zx4sUuvc8991xzzz33mM8//9zceOONpmHDhqZBgwYqFEJI/En8CZHrfPXVV27Jpt69e7vneLwOP/xws9VWW5lff/01qXMcf/zxRS7+5s6da95+++1COXfbtm3NY489ZjZt2mSmTZuW1ek7b948l75PPvmke/7++++75+vXr99CxO+3334qEEJI/En8CZHrIPAQAzfccEPktXvvvde99uKLLyZ1DryHyYi/f/75J+77mzdvdo9EfPvtt6ZWrVpm5syZSf9O/91//fVXwmP32muviFhKhL/e4HWHvZYuNm7cGHof/WvR3/nFF1+4tJw9e3Ye8YfIDzJ8+HCJPyEk/iT+hCip4q9z586mXLlyTjjAFVdcYWrUqGEWLFhg3nrrLXPooYfmEQrR4m/s2LGmadOmbgh5wIABEUHSpEkTc+WVV4Zex+OPP266detmDjnkENO+ffu45zrnnHPcNR922GFOqMa7PoY2GdK87LLL3Gvly5c3PXr0CL2GtWvXmrPOOssNi3Id/P/777+bTz75xA0D77nnnqZLly5mxYoV5vvvvzf9+vVzInTIkCFuePj22283HTt2NGeffbY56aSTTPXq1d33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5oADDjBnn312nvf69+9vtt56a1O2bFlz4oknmpNOOsk0a9bMVKlSxbRt21bKTeKvwKKvQ4cOLo9tu+225oILLjB//fVXzOP79u1rDjnkEHP66aebWrVqmZo1a0Yqtj59+rjnYfTr18+UKVPGTJw4UeKvGGnYsKGrS/bff3+z2267mVKlSpkjjzzS7L333qZ06dJm7NixpkmTJjHT8b333nOfefXVVyX+lCY5L/6WLVvm0mCbbbYxhx12mNlqq61cOtAG16hRw1StWtX07NnTHRPr/pOOl156qcSfxF9e1q9f7xrF3377zXn/Fi5cuMUxRx11lNlpp5226E2ccMIJUm4SfwXimmuuMZdddplZtGiRueqqq1wjMmXKlNBjv/jiC/c+f93vXb3a1K5d23z00UeR5wsWLAj97KZNm1wFGevcEn/JCfXhw4cX6ByIiFWrVrn/r776apeeHvLB1KlT3XfEEhqk44svvhi3g1CSxd/cuXPN22+/XaLSJFvE3913353yZxDWp556auTeIs7POOMM9z9tdr169cxPP/0UV3yTH7755huJP4m/vCD2yDh///135DXc+EFOOeUUs8suu+R57ffff480uvFgKCB4Pj80kElDBBJ/RQfpHkz77t27/39Fayu4atWqmW7duoXmxYcffniLSu7BBx80s2bNipl3wedtOjnPPvusxF8+4L526tTJXHzxxfn+PDzyyCOR16KFxocffmjefPNN8+ijj0aERlh6Rr/u/49VpyBOSoL4+/bbb503fObMmaHlrjjShL+xji/MNiDTxN+kSZNM9erVk74P/p7hZAnWd0Hx59MOB06wXgy739GvFWWZkfjLQJ577jlzxBFHuIzTvn17c8stt0R6gldeeWVM8UeGOe2009z/f/zxh2sQ9ttvP+eKfv75593ro0aNMoceeqi733vssYcbpmPojcppyJAhpnLlym5IGZf0wQcf7OINgWG/Vq1aZVQvUuIvPTz++ONO2DFsS34Lg/doaGDp0qUuvGDOnDnuOb1Xhqd4DW+EF4zEAOK1vvbaa50nMHI/Vq82bdq0MV27dnVeavL5tGnT3HvEBrZo0cLsueeepkuXLi6GUOIvNgz9MTRP+SXtbrjhBjfkxHASXtu99trL1REvv/yy6xgee+yx5pJLLnGfveOOO8zuu+++RYMSLTQ8XmgMGDDA7LDD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f0LiTwghhMSfkPgTEn9CCCEk/iT+hJD4E0IIIfEn8SeExJ8QQgiJP4k/IST+hBCixNPZWilZVlona0JI/AkhhEgJef6yE3n+hMSfEEIIiT+JPyEk/oQQQkj8SfwJIfEnhBBC4k/iTwiJPyGEkPjLJtiWbc2aNUkfz37AbB0Xxueffx7zvVT49ddfzSeffBLz/R9++MF8//33cc/x9ddfS/wJiT8hhBASf9E8+eST5tBDDzUDBw40pUuXNjvvvLM58MAD3f/169c3Bx10kKlQoYK58MILTc+ePd3rr776aui59t57b3PppZcW+Jr69OljatasGfpev379TJkyZczEiRNjfp49ibnOlStXSvwJiT8hhBASf0GmT59uTjjhBCe4HnvsMffaG2+8YUqVKmUmTJjgns+dO9d06tTJ/PTTT+71WOLv7bffNt98802Br2n16tVmwYIFoe9t2rTJCbspU6bEPcc222xj1q1bJ/EnJP6EEEIUn/j7559/In/9/0E2btwY+nphsmTJEnPeeec5D+Aff/wRKv7gkUceMevXr88j/sKuNfq1v/76K+E1hB0Tdm6GqAHP37PPPhv3nE2aNEn4vRJ/QuJPCCFEoYg/PGYMh+6www5m1KhRZrfddjO77rqrWbp0qXuf+LSzzjrLXHXVVaZOnTpm6tSp7nX+4pWjvufv9ttv7/5/4YUXTNOmTU2NGjXME088EfmesWPHutf32GMPM2DAALN58+aE1058HUOpQcLEH3jx179/fzc0XKlSJTNkyBD33uzZs80ZZ5xhunXrFhFv3bt3NxdffLGpW7euGT58eKjAiz7mq6++Mtdee62pXbt25Dg8gW3atDFdu3Z194FrmDZtmnuP2MAWLVqYPffc03Tp0sWsWLHCvX755ZdL/AmJPyGEEMUj/hA5d999txMtt956q1m+fLkTK5dddpl7/4orrjDHHXec+3/QoEHmqKOOcv8jDhm+xIuFqGFolnPwOUTSaaedZg4++GB3LMOkRx99tBNz77zzjjtu1qxZTjAh0sIevXv3dp9lEkcq4q9du3Yuno44wB133NG9t2rVKhcf2LlzZ/f8lVdecbGEsHjxYnP77bdvcV/CjkEoIy4rVqwYOa558+Zm8ODB7n9+kxd/eAz3228/573k2ho2bGh69OgR+psk/oTEnxBCiCITf4C3DtHCTFU4++yzzamnnur+X7ZsmZk/f76Llzv99NOdZ9CDF++ee+5x/3/88cfuHO+//757PmbMGOf9A7xeDRo0cLF5PHbaaSdzww03uHMTsxf2QISGkUj8vfjii+755MmT3XOGq+GUU06JiL93333XvYc3c8OGDaGTL2IdgwfTi7+FCxe6Y/gdgDeTmL/nnnvOCcDKlStHfnOjRo3cPUgWiT8h8SeEEKLIxB9iDQ8aEGvH8CePvn37ml122SVU/OHNCoo/xBniB5o1axbqXcsPyYq/559/3j3/7bffthB/cOONNzqhtvvuuzvhGkbYMUHxh8DlO/huDzF/iD+8gY0bN87375T4ExJ/QgghikX8sYSK/3/EiBExxR+xb7HEH3FzLVu2zPOdeObOP/98s91224U+GEYuLPGHp47jGaYlvpEh6mhiHRMUf3go+Y4ZM2bkEX/MUuZzHBcc4mX4OJZHU+JPSPwJIYQoMvHH0iSIGL84cfv27U3btm3d//Xq1XOTFhBRHTp0cBM7iN0DhOCdd97p/mdyA+dAnAGTPYjdA4ZAeY+YN2Lghg4d6jyBH374oZk5c2bo49NPPw29Vn+uhx56KM/rXDuvT5o0yT1/5pln8gha4hb5Xf7a/GQUjkfERhPrGAQwAo+YPoZ5iStkiJz/iYPkO/l9DDcjfpnkghDkNzFsnsxEF4k/IfEnhBCi0MQf683hlUO0MAuVpVKqV69uqlWrZubMmWPuuOMOU65cOTfj9bbbbnOLKuMFGzZsmPsMEz6Ij+vYsaN7jmhctGiROfLII91zFmhmYWM+w/OqVau6SSG8lip42JhEwnlY5HncuHGR95ixzOsIVUTlMccc455fc801ZvTo0aZKlSpucWZmKSPqatWq5SawcN1hizKHHcPvQsxx3l69ernJMlwDIpf71apVK1O2bFknkokRHDlypLtfiMXWrVu760oWiT8h8SeEEKJQxF8yMOHB4ydQ5Ae2avPDsMUJa/Ih3BiSjbV2YTLHBI/98ccf3f/B+D9/vxgSTxWJPyHxJ4QQotjEnyh6JP6ExJ8QQgiJP4k/IST+hBBCSPxJ/Akh8SeEEELiT+JPCIk/IYSQ+BMSf0LiT+JPCCFymIetlZJlpY20JoTEnxBCCCGEkPgTQgghhBASf0IIIYQQQuJPCCGEEELiT+JPCCGEEELiT+JPCCGEEELiT+JPCCGEEELiL/gFpUqVcl+ihx566KGHHnrooUfxPrwuKzTx5wWgHnrooYceeuihhx6Z8UiVUnKYCiGEEEKUHCT+hBBCCCEk/oQQQgghhMSfEEIIIYSQ+BNCCCGEEBJ/QgghhBBC4k8IIYQQQkj8CSGEEEIIiT8hhBBCCCHxJ4QQQgghJP6EEEIIIUQ8/g+oJP54jqnVDQAAAABJRU5ErkJggg==\" width=\"639\" height=\"202\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x27647d71 \"BufferedImage@27647d71: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@7fb9e337 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 639 height = 202 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; **
+;;;
+;; **
+
+;; **
+;;; ... whereas the target condition of the transaction ```all_on_the_other_side?``` is specified below:
+;; **
+
+;; @@
+(rule 'all_on_the_other_side?
+      {:read
+       (pattern :homo
+                (node 'tg {:label "Thing" :asserts {:kind "'Goat'"}})
+                (node 'tc {:label "Thing" :asserts {:kind "'Grape'"}})
+                (node 'tw {:label "Thing" :asserts {:kind "'Wolf'"}})
+                (node 's2 {:label "Side" :asserts {:name "'Other side'"}})
+                (edge 'e1 {:label "is_at" :src 'tg :tar 's2})
+                (edge 'e2 {:label "is_at" :src 'tc :tar 's2})
+                (edge 'e3 {:label "is_at" :src 'tw :tar 's2}))})
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUgAAADKCAYAAADHG9lUAAAtAUlEQVR42u2dCbiV49rHzRkjnFOh0ZA5SoZKgwYRhZKkkIQokiblfA7nFM6pVMaSSsmQKJJZhgYqY1RopERlSJxzchzn+a7f/X3Put797rXWftfee+29hv//ut5r73etd73DM/ze+5nuewcnSZIkxdUOSgJJkiQBUpIkSYCUJEkSICVJkgRISZIkAVKSJEmAlCRJEiAlSZIESEmSJAFSkiRJgIyn//mf/9GmTZu2rNzSCsg///nPbocddrC/2rRp05ZN24477pgyJFMGZHEoLEmSVN4qDr8ESEmSBEgBUpIkAVKAlCRJEiCzWb/99pt7991303b+H374wX366acJ98tbn332Wd5de9WqVe7HH39M+P2yZcsin2vjxo3uP//5jyqSAJl5uuWWW1yFChXczjvv7Jo2beqOOOIIV7duXffAAw9E+v0777zjjj32WLfnnnum5f7uv/9+O/fll18ed788tX79enfSSSe5P/zhD3l1bXTYYYe56667Lu59tWjRwkZZi9IHH3zgbrrpJnf99de7GjVquNGjR8fKZKVKldyQIUPciy++6GbNmuX69+/v9tlnH3fbbbeJjgJk2eqUU05xNWvWjO3/5S9/sSlQ06ZNi/T78ePHpw2QqFWrVgWAGN4va40YMSL2/4MPPlimkHrrrbfc4sWLy+XaQXEPGzZsiPvdE0884XbZZZciz3HhhRe62bNn2/933nmnQfGf//ynGzp0qDvrrLMKHd+sWTOrt5IAWaY688wzXe3atQtYAQDyiiuuiPT7yZMnRwbkf//736Tf/+tf/yp0zNlnn10AiOH94spfh79F3ZfX008/7Q444IDY/sSJE2OQinqO4oqmaLVq1dxrr71W4mv//vvvKf3m3//+d6S8pLuFNNptt92KPOcll1xiMESAkjJHl0EiQGKZCpACZLkD8rnnnrPCOnLkSNufM2eOO/jgg93NN9/sfv75ZyvYBx54oFu4cGFcQH7++eeuefPmrlatWq5bt25u7dq19vldd93lqlevHre/CSh36tTJ3Xjjje7QQw+1ZlVJAcl1qGxt2rRxDRs2dB07dnTffvut9WHSPPzjH//oJkyY4A455BB7vqL6zb766it7Jir/OeecY1aUhxRNP84HwHz/6Pbt293VV1/t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pNxS5cqV3TfffKOEECAlAVISIAVISYCUBEgBUhIgJQFSgBQgBcgSiAGmqNNn8P/IMj9Cqm7atCn2+bZt25LOTWTZYPB4AVISIAXIjAdj586dbc4h03auuOKKpCFnhwwZYl50OnTo4KpVq2aOan1I1Ztvvtn24wnXZCwPLE+HvwKkAClACpApCbdhvXv3du+//7678cYbbUpLorAFa9asse/565+3Ro0abvny5bH9RBPHWY7IhO9sDIkgQAqQUp4A8vfff7fNiyV7XliOlSpVcj169Ih9RjPa66GHHjJABkMbsLLl9ddfj3u812+//WZ/sSCfffZZAVISIAXIzNMjjzxi8KOJfMEFF8Q9hu8mTpxo/y9btsxVrFgxtoplw4YNtjaaz2bNmhWDKn2SX331levfv79ZlMH0YE34pZdeah7Hgetzzz1n39FX2bx5c1erVi3XrVu3jHZdJkAKkFKOA5Im7gEHHGAgw6IDWmHhnXvfffd1P/zwQ+x5cEzrm9Dovvvui3nSAWx4+0b8hljULA30aty4sbv77rvtf6xMD0igevTRR7tPPvnEVqgcf/zx7pprrhEgJQFSgCw/HXrooe7UU091n332mfvyyy8LfX/DDTe4ESNGFHme9957zx111FEGvNNOO81Gr9HUqVNjgOQYvl+xYkWsaU8f5OzZsw2S+JG85JJLbKtbt66tvRYgJQFSgCw3zZ071x144IFu1113dRMmTCjwHdDCIkymYPwXRr/bt29vEJw0aVIhQE6ZMqXQGmb6IAEkVuWJJ56YNfkqQAqQUo4DEguOkeqvv/7anXXWWdaP+P3339t3NKHPP/9860tENME3btxY6BznnHOO27p1a2x/5cqVBsFrr722ECDfeust+w4P5EFAPv/889bc5rggdAjbunr1agFSEiAFyLIX/X5YfB6AeOpesmSJVfw6deq4xx57zM2ZM8cGX7AkP/zwQ5vfSN+gn9bTtWtXc5DrR8Hffvttg+C8efNsf9y4cQZBrsUxgOW8886z/xnw4dixY8dagC+a2CeffLLB8rXXXrN5lcHRdQFSgBQgBcgyBSTBr7D2mNDtB0UYtQ679qJPEAFJgEe4V0R5OuaYY1zDhg1tQnm9evUs4iDCOgV4/L5v37423efxxx83J75MHSKmNiPgTEqn/3P8+PHm75HzY9F++umnamJLAqQAWX7C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\" width=\"328\" height=\"202\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x2728cb59 \"BufferedImage@2728cb59: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@7fb9e337 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 328 height = 202 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; **
+;;; The two graph tests specifying the dangerous conditions to avoid are:
+;; **
+
+;; @@
+(rule 'wolf-can-eat-goat?
+      {:read
+       (pattern :homo
+                (node 't1 {:label "Thing" :asserts {:kind "'Wolf'"}})
+                (node 't2 {:label "Thing" :asserts {:kind "'Goat'"}})
+                (node 's {:label "Side"})
+                (edge 'e1 {:label "is_at" :src 't1 :tar 's})
+                (edge 'e2 {:label "is_at" :src 't2 :tar 's})
+                (NAC
+                  (node 'f {:label "Ferry"})
+                  (edge 'ef {:label "is_at" :src 'f :tar 's})))})
+
+(rule 'goat-can-eat-grape?
+      {:read
+       (pattern :homo
+                (node 't1 {:label "Thing" :asserts {:kind "'Goat'"}})
+                (node 't2 {:label "Thing" :asserts {:kind "'Grape'"}})
+                (node 's {:label "Side"})
+                (edge 'e1 {:label "is_at" :src 't1 :tar 's})
+                (edge 'e2 {:label "is_at" :src 't2 :tar 's})
+                (NAC
+                  (node 'f {:label "Ferry"})
+                  (edge 'ef {:label "is_at" :src 'f :tar 's})))})
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAADCCAYAAADzRP8zAAAmLElEQVR42u2dB5hV1dWGURQrEtSEKCIkKFEgEBBQEURAQUGCAcVCMwKKBSkigsYQYkBJVEgo0qSKCiqIgIUqgthAJTBUpRdp0nvZv+/y3zdnLvfO3Ol37nzf85xnbjlz7jln7/2etdfee618TpIkKZcon26BJEkCliRJkoAlSZKAJUmSJGBJkiQJWJIkCViSJEkCliRJkoAlSZKAJUmSlLuB9de//lWbNm3aMmXLUmD97W9/c/ny5bO/2rRp05aR7bTTTksztNIMrPRQUZIkKTN4ImBJkiRgSZIkCViSJAlYAlbW6scff3RLlizRjcgj2rx5szt+/LhuhICVvVq3bp2rV6+ejWj86le/ctWqVXMlSpRwtWrVcl9//XVMxxg4cKA799xz3f33369amuCiTjzxxBPu8ccfd8WLF3d9+/a1zxctWmR1qGXLlu6ll15y3333nfvLX/7iypUr58qWLStgCViZp/Xr19t0ji5dutj7/fv3u6pVq7qzzz7b7d27N6Zj3HLLLXEJrBdffDHXlUc8n/Ndd93lJk+ebK9feOEFV7hwYXfw4EH37bffWh3at2/fKQ+z0qVLC1gCVuYJKFHZunbtGvrs5Zdfts8++OCDmI6BlRYLsE6ePBnT8U6cOJHm6zh06FCy47/zzjvuoosuytDv0RijXQN/Y72erDjnaF0yfy3Ba+L14cOHo17L0aNHY/rNpk2bumeeecZeAy7qyPLly0PA4mEX1KBBgwQsASvrgdWsWTN3xhlnuNWrV9t7ugAXX3yxmz9/vvviiy/ctddem6wihgNrzJgxrkqVKta97NGjR6jxVKpUybVv3z7quQwbNszdeeedrmLFiu7mm292HTp0cIsXL7bGSUO59dZbzfpjnx9++MH+Z8OGDa5JkyauY8eOrmTJku7dd981q/E3v/mNK1CggLv99tvdl19+GfH3OAbfN2rUyFWuXNnOG02aNMk1b97c3Xvvva5ChQrms8FP9+ijj1rXmfO87LLLXNGiRV1SUlLU61mxYoWrWbOmnQvHW7NmTYbPedeuXfZ/WDtXXXWVu/vuu62b9vnnn7v77rvP3vP/gA+LB8v5sccec9ddd51r06aNHWP27NmuQYMGrn79+radeeaZ7pprrnEbN25M8byDeu655+z3gZ6AJWBlO7D+9Kc/ueHDh1tDOOuss1zv3r1D+9DA2Ofjjz+293xHw40ELKBWo0YNO+5XX31l/zdz5kz7DgDR2CMJv8cFF1xgVgcOfP6vV69eBgoax/XXX2/7HTlyxCByww03WGMBprVr1w51U2688UZ7/e9//zvZOUayLmjEHlIAsUiRIvb6kksuscaGaMj9+vWz/emucV49e/Z033//vTVoYBBJWC00VoALOPDntG3bNvQASM85+/0BKerevbs7/fTTDW74IwEID5o333zTPfnkk1ZenC/3kPPl9datWw163MMLL7zQymjUqFHuvPPOM79TSucdFPtMnz7dXgtYAla2AwtHOxYQr+fMmZNsn23btiUDVnjDCgKLJzKOVroPbL/+9a+TWW/R9MorrxgoARbCohsyZEgIIEAi2Gg5H8C2bNkyN2/ePLMOGjdubJaPP0cPoEjif7BmfCPj7zfffGOvp06d6rZs2WL7XH755a5Tp072+fvvv2+/u337dnuPNXPHHXdEPP57773nChYsGLoP5cuXDzmg03vOCMsHCxPNmjXLnN0ACWG1/fGPfwzte+DAAYMX9xR/Euf+2Wef2Xfs58GHGjZsaJZtSufthZXNtXsJWAJWjnQJMf0LFSpkT+qgAzUtwMISev7559N8HlR6rIVXX33VGiCNZseOHWZReavGC6DyGX4UfDMPPvigbU8//bS79NJLQ+cILL3oetG42erWreuGDh1qvxHJf7N06VLrkg4YMMAsOSzDSMACzjT0SMfv06ePWTGRlN5zRs8++6x19ygrLOLbbrsttD9dQqAV1OjRo12dOnXc22+/bef+6aefRgQWVjNWVkrnHXxgcI8ELAErx31Y48aNs/dU/nBg4ftIDVgPPfSQNfagJkyYENO5PPXUU/aUp2virR1vbeFz8aLRcT7s88gjj4SgMXjw4KiNH4sJPxEb1+MbsO+uIo5H95eu3tixY+0zum6xACv8+BwXi5HPvRj+p2uW3nNGx44ds24a9xyg+nOJBKwZM2YYlOkC8hBICVj4twBVSuft5buCApaAle3CsU5lAzRerVq1ss/oRniLAP8SINmzZ485as8555xQ941G7QFHl4L/xe+BH+Q///lPyOLiKQ4oIoknNpUbX9bu3buTjZ61a9fO/C38NmIUk24Kzvzf/e531k2i+3PPPffYfkAY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\" width=\"300\" height=\"194\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x4657b4 \"BufferedImage@4657b4: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@7fb9e337 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 300 height = 194 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; **
+;;; Now considering the above transaction definition (which uses an ``until`` control structure), the ferryman has a choice to ship one thing over or cross empty at any given iteration. This means that it is perfectly possible to loop endlessly. For example, the ferryman could take the goat for rides back and forth forever. Or the ferryman may cross empty forever. In order to bound the search, each trip across the river costs a coin - and we give the ferryman initially a purse of 7 gold coins to start with. Each time the ferryman crosses, it needs to be checked whether the ferryman still has a coin left - and once he reaches the other side, the number of coins needs to be reduced. This is done with Grape ```condition``` and ```assign``` forms, respectively. The following example shows their use:
+;; **
+
+;; @@
+(rule 'ferry_one_over!
+      {:read
+       (pattern
+         (node 's1 {:label "Side"})
+         (node 's2 {:label "Side"})
+         (node 'f {:label "Ferry"})
+         (node 't {:label "Thing"})
+         (edge 'et {:label "is_at" :src 't :tar 's1})
+         (edge 'e {:label "is_at" :src 'f :tar 's1})
+         (condition "f.coins > 0"))
+       :delete ['e 'et]
+       :create
+       (pattern
+         (edge 'en {:label "is_at" :src 'f :tar 's2})
+         (edge 'et2 {:label "is_at" :src 't :tar 's2})
+         (assign "f.coins=f.coins-1"))})
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,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\" width=\"498\" height=\"186\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x3a303151 \"BufferedImage@3a303151: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@7fb9e337 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 498 height = 186 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; **
+;;; The rule that defines empty crosses is specified similarly.
+;; **
+
+;; @@
+(rule 'cross_empty!
+      {:read
+       (pattern
+         (node 's1 {:label "Side"})
+         (node 's2 {:label "Side"})
+         (node 'f {:label "Ferry"})
+         (edge 'e {:label "is_at" :src 'f :tar 's1})
+         (condition "f.coins > 0"))
+
+       :delete ['e ]
+       :create
+       (pattern
+         (edge 'en {:label "is_at" :src 'f :tar 's2})
+         (assign "f.coins=f.coins-1"))})
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,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\" width=\"422\" height=\"186\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x607e180 \"BufferedImage@607e180: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@7fb9e337 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 422 height = 186 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; **
+;;; Finally, the following function encodes the solution algorithm:
+;; **
+
+;; @@
+(defn solve_problem! []
+  (until 'all_on_the_other_side?
+         (transact (choice (apl 'ferry_one_over!)
+                           (apl 'cross_empty!))
+                   (avoid (apl 'wolf-can-eat-goat?)
+                          (apl 'goat-can-eat-grape?)))))
+;; @@
+;; =>
+;;; {"type":"html","content":"#'user/solve_problem!","value":"#'user/solve_problem!"}
+;; <=
+
+;; **
+;;; Let's try it out.
+;; **
+
+;; @@
+(clear!)
+(setup-ferryman!)
+(attempt (solve_problem!))
+;; @@
+;; =>
+;;; {"type":"html","content":"true","value":"true"}
+;; <=
+
+;; **
+;;; ## Rule Visualization and Documentation
+;;;
+;;; Grape supports automatic generation of rule visualizations based on the Graphviz tool. Each rule definition automatically creates a function to emit the rule in Graphviz (dot) format. The name of that function is <rulename>-dot. For example, the following function call will return the visual prepresentation of the above example rule:
+;; **
+
+;; @@
+(use 'grape.visualizer)
+(create-jens!-dot)
+;; @@
+;; =>
+;;; {"type":"html","content":""digraph g {  splines=true overlap=false subgraph cluster0 {label=\\"Rule: create-jens![]\\" n [color=green shape=record penwidth=bold   label=\\"{n:Person | name='Jens' }\\"]; }}"","value":"\"digraph g {  splines=true overlap=false subgraph cluster0 {label=\\\"Rule: create-jens![]\\\" n [color=green shape=record penwidth=bold   label=\\\"{n:Person | name='Jens' }\\\"]; }}\""}
+;; <=
+
+;; **
+;;; Likewise, here is an example for a syntactically correct rule that has problems with respect to static semantics. (In this case an undeclared identifier is referenced.) Consider the following simple example rules:
+;; **
+
+;; @@
+(rule 'testrule
+       {:create
+        (pattern
+         (node 'n {:label "Person" :asserts {:name "'&id'"}}))})
+;; @@
+;; =>
+;;; {"type":"html","content":"<img src=\"data:image/png;base64,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\" width=\"124\" height=\"107\" alt=\"\" />","value":"#object[java.awt.image.BufferedImage 0x76321d56 \"BufferedImage@76321d56: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@7fb9e337 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 124 height = 107 #numDataElements 4 dataOff[0] = 3\"]"}
+;; <=
+
+;; **
+;;; Visual representations can also be saved as image files to the file system by calling function ```document-rule``` for a defined rule, or ```document-rules``` for all defined rules:
+;; **
+
+;; @@
+(document-rule 'create-jens!) ; saves a PNG visual representation of rule 'createJens!
+;; @@
+;; =>
+;;; {"type":"html","content":""digraph g {  splines=true overlap=false subgraph cluster0 {label=\\"Rule: create-jens![]\\" n [color=green shape=record penwidth=bold   label=\\"{n:Person | name='Jens' }\\"]; }}"","value":"\"digraph g {  splines=true overlap=false subgraph cluster0 {label=\\\"Rule: create-jens![]\\\" n [color=green shape=record penwidth=bold   label=\\\"{n:Person | name='Jens' }\\\"]; }}\""}
+;; <=
+
+;; @@
+(document-rules) ; saves PNG visual representations for all defined rules
+;; @@
+
+;; **
+;;;
+;;; Copyright © 2016-20 Jens Weber
+;;;
+;;; Distributed under the Eclipse Public License either version 1.0 or (at
+;;; your option) any later version.
+;; **