* Added draft proof of termination
authorJames Cheney <jcheney@inf.ed.ac.uk>
Fri, 31 Aug 2012 16:45:49 +0100
changeset 4377 00fd12054f9b
parent 4376 95ad452a23c6
child 4378 20b166780fa8
* Added draft proof of termination
model/prov-constraints.html
model/weak-acyclic-6.svg
--- a/model/prov-constraints.html	Thu Aug 30 19:14:34 2012 +0100
+++ b/model/prov-constraints.html	Fri Aug 31 16:45:49 2012 +0100
@@ -783,7 +783,7 @@
 <p> As set out in other specifications, the identifiers used in PROV
 documents have associated type information.  An identifier can have
 more than one type, reflecting subtyping or allowed overlap between
-types, and so we define a set of types of each identifier, <span class="name">typeof(id)</span>.  Some types are, however,
+types, and so we define a set of types of each identifier, <span class="name">typeOf(id)</span>.  Some types are, however,
 required not to overlap (for example, no identifier can describe both
 an entity and an activity).
 In addition, an identifier cannot be used to identify both an object
@@ -1123,7 +1123,7 @@
   B<sub>k</sub></span> are either both true or both false.
     </li>
   <li>A logical implication as used in an inference is
-   satisfied with the forumula  <span class="math">∀
+   satisfied with the formula  <span class="math">∀
   x<sub>1</sub>,....,x<sub>n</sub>.  A<sub>1</sub> ∧ ... ∧
   A<sub>l</sub> ⇒ ∃ y<sub>1</sub>...y<sub>m</sub> . B<sub>1</sub> ∧
   ... ∧ B<sub>k</sub></span> holds, that is, for any substitution of
@@ -1261,11 +1261,11 @@
   and invalidation event, using
   <a class="rule-text"
   href="#entity-generation-invalidation-inference"><span>TBD</span></a>.
-  Likewise, for activities, we allow inferring that a declared <span class="name">activiy(id,t1,t2,attrs)</span> has a generation
+  Likewise, for activities, we allow inferring that a declared <span class="name">activity(id,t1,t2,attrs)</span> has a generation
   and invalidation event, using
   <a class="rule-text"
   href="#activity-start-end-inference"><span>TBD</span></a>.  These
-  inferences do not apply to identifiers whose types are kown, but for
+  inferences do not apply to identifiers whose types are known, but for
   which there is not an explicit entity or activity statement.
 If we strengthened the type
   inference constraints to add new entity or activity statements for
@@ -1323,7 +1323,7 @@
 <li><p>For typing constraints, we check by constructing a function
   <span class="math">typeOf(id)</span> mapping identifiers to sets of possible types.  We
   start with a function mapping each identifier to the empty set,
-  reflecting no consrtaints on the identifiers' types.  A typing
+  reflecting no constraints on the identifiers' types.  A typing
   constraint of the form <span class="math">∀
 x<sub>1</sub>...x<sub>n</sub>. A<sub>1</sub> ∧ ... ∧ A<sub>l</sub> ⇒ 'type' ∈ typeOf(id)
 </span> is checked  by adjusting the
@@ -1382,7 +1382,7 @@
   both instances are valid, then
   testing whether the two normal forms are isomorphic.  (It is
   technically possible for two invalid normal forms to be isomorphic,
-  but to be condered equivalent, the two instances must also be
+  but to be considered equivalent, the two instances must also be
   valid.)
 As with validity, the algorithm suggested by this specification is
   just one of many possible ways to implement equivalence checking; it
@@ -2231,7 +2231,7 @@
 <!--
 <div class="note">
   The following two inferences could interact with type inference to produce
-  nontermination.  For example, once we have an activity we can yse
+  nontermination.  For example, once we have an activity we can use
   activity-start-end-inference and start-type-inference forever to
   infer an infinite chain of activities, each starting the next.
   Similarly, we can use inference-activity-start-end,
@@ -4586,9 +4586,128 @@
 
       <section class="appendix informative" id="termination">
       <h2>Termination of normalization</h2>
-<div class="note">TODO: give proof that normalization terminates and
-      produces unique normal forms.
-  </div>
+
+      <p>
+      We will show that normalization terminates, that is, that
+      applying definitions, inferences and uniqueness/key constraints
+      eventually either fails (due to constraint violation) or
+      terminates with a normal form.
+      </p>
+      <p>
+      First, since the inferences and constraints never introduce new
+      defined statements, for the purpose of termination we always expand
+      the definitions first and then consider only normalization of
+      instances in which there are no remaining defined statements.
+      </p>
+      <p>We will prove termination for the simple case where there are no
+      attributes.  For the general case, we will show that any
+      nontermination arising from an instance that does involve
+      attributes would also arise from one with no attributes.
+      </p>
+
+      <p><b>Termination for instances without attributes.</b>  For
+      these instances, uniqueness and key constraints can be
+      As shown in [[DBCONSTRAINTS]], termination of normalization can be
+      shown by checking that the inference rules are <em>weakly
+      acyclic</em>.  In addition, weak acyclicity can be checked
+      in a modular fashion for our system, because there are only a few possible
+      cycles among statements.  The following table summarizes seven
+      <em>stages</em> of the inference rules; because there are no
+      cycles among stages, it is sufficient to check weak acyclicity
+      of each stage independently.
+      </p>
+      
+      <table border="1">
+	<tr>
+	  <th>Stage #</th>
+	  <th>Inference</th>
+	  <th>Hypotheses</th>
+	  <th>Conclusions</th>
+	</tr>
+	<tr>
+	  <td>1</td>
+	  <td>19, 20, 21, 22</td>
+	  <td class="name">specializationOf, mentionOf</td>
+	  <td class="name">specializationOf, entity</td>
+	</tr>
+	<tr>
+	  <td>2</td>
+	  <td>7, 8, 13, 14</td>
+	  <td class="name">entity, activity, wasAttributedTo, actedOnBehalfOf</td>
+	  <td class="name">wasInvalidatedBy, wasStartedBy, wasEndedBy</td>
+	</tr>	
+	<tr>
+	  <td>3</td>
+	  <td>9, 10</td>
+	  <td class="name">wasStartedBy, wasEndedBy</td>
+	  <td class="name">wasGeneratedBy</td>
+	</tr>	
+	<tr>
+	  <td>4</td>
+	  <td>11, 12</td>
+	  <td class="name">wasDerivedFrom</td>
+	  <td class="name">wasGeneratedBy, used, alternateOf</td>
+	</tr>	
+	<tr>
+	  <td>5</td>
+	  <td>16, 17, 18</td>
+	  <td class="name">alternateOf, entity</td>
+	  <td class="name">alternateOf</td>
+	</tr>	
+	<tr>
+	  <td>6</td>
+	  <td>5, 6</td>
+	  <td class="name">wasInformedBy, generated, used</td>
+	  <td class="name">wasInformedBy, generated, used</td>
+	</tr>
+	<tr>
+	  <td>7</td>
+	  <td>15</td>
+	  <td>many</td>
+	  <td class="name">wasInfluencedBy</td>
+	</tr>	
+
+     </table>
+      <p>
+      For each stage, we show that the stage is weakly acyclic.
+     <ul><li>Stages 1 and 5 have no rules with existential quantifiers,
+      so they are weakly acyclic.
+       </li>
+       <li>Stages 2, 3, 4, and 7 have no cycles among the formulas
+      involved, so they are weakly acyclic.
+       </li>
+       <li>For stage 6, the following graph witnesses weak
+      acyclicity.  The nodes <span class="name">wasGeneratedBy.i</span>,
+      <span class="name">wasInformedBy.i</span>, and <span
+      class="name">used.i</span> denote the <span class="math">i</span>th arguments
+      of the corresponding predicates.  The solid edges are ordinary
+      edges, and the dashed edges are <em>special</em> edges.  These
+      edges are added to the graph following the rules in
+      [[DBCONSTRAINTS]].  Weak
+      acyclicity means that there is no cycle involving a special
+      edge.
+        </li>
+       </ul>
+      </p>
+       
+       <img src="weak-acyclic-6.svg" text="Graph illustrating weak acyclicity of stage 6"/>
+      </p>
+
+      <p><b>Termination for instances with attributes.</b>
+       We can translate an instance with attributes to an alternative,
+       purely relational language by introducing a relation
+       <span class="name">attribute(id,a,v)</span> and replacing every statement of the form
+       <span class="name">r(id;a1,...,a_n,[(k_1,v_1),...,(k_m,v_m)])</span> with
+       <span class="name">r(id;a1,...,a_n),attribute(id,k_1,v_1),...,attribute(id,k_m,v_m)</span>,
+       and similarly for <span class="name">entity</span>, <span class="name">activity</span> and <span class="name">agent</span>
+       attributes.  The inference rules can also be translated so as
+       to work on these instances, and a similar argument to
+       the above shows that inference is terminating on instances with
+       explicit attributes.  Any infinite
+       sequence of normalization steps on the original instance would
+       lead to an infinite sequence of translated normalization steps
+       on instances with explicit attributes.
+       </p>
 </section>
 
 
@@ -4634,5 +4753,5 @@
  -->
 <!--  LocalWords:  hasMember toplevel sameAs tuple acyclicity isomorphism
  -->
-<!--  LocalWords:  endBundle
+<!--  LocalWords:  endBundle typeof equational acyclic invertible
  -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/model/weak-acyclic-6.svg	Fri Aug 31 16:45:49 2012 +0100
@@ -0,0 +1,537 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="400"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.1 r9760"
+   sodipodi:docname="weak-acyclic-6.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;">
+      <path
+         id="path4003"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible">
+      <path
+         id="path4000"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lend-2"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4003-6"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lend-5"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4003-1"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart-8"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4000-0"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+         transform="matrix(0.8,0,0,0.8,10,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart-9"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4000-7"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+         transform="matrix(0.8,0,0,0.8,10,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart-3"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4000-1"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+         transform="matrix(0.8,0,0,0.8,10,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lend-5-4"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4003-1-7"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart-31"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4000-15"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+         transform="matrix(0.8,0,0,0.8,10,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart-91"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4000-04"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+         transform="matrix(0.8,0,0,0.8,10,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart-1"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4000-6"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+         transform="matrix(0.8,0,0,0.8,10,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart-83"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4000-5"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+         transform="matrix(0.8,0,0,0.8,10,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart-2"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4000-4"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+         transform="matrix(0.8,0,0,0.8,10,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart-39"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4000-64"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+         transform="matrix(0.8,0,0,0.8,10,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart-7"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4000-3"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+         transform="matrix(0.8,0,0,0.8,10,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.8100745"
+     inkscape:cx="224.93946"
+     inkscape:cy="158.05048"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1452"
+     inkscape:window-height="988"
+     inkscape:window-x="447"
+     inkscape:window-y="0"
+     inkscape:window-maximized="0"
+     inkscape:snap-global="false" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-752.36218)">
+    <rect
+       style="fill:#98fb98;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:2, 2;stroke-dashoffset:0"
+       id="rect3010"
+       width="104.55079"
+       height="24.24366"
+       x="25.5"
+       y="777.61853" />
+    <text
+       xml:space="preserve"
+       style="font-size:10px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="31.341494"
+       y="792.77081"
+       id="text3016"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan3018"
+         x="31.341494"
+         y="792.77081">wasGeneratedBy.1</tspan></text>
+    <rect
+       style="fill:#98fb98;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:2, 2;stroke-dashoffset:0"
+       id="rect3010-4"
+       width="104.55079"
+       height="24.24366"
+       x="25.5"
+       y="827.61853" />
+    <text
+       xml:space="preserve"
+       style="font-size:10px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="31.05584"
+       y="842.77081"
+       id="text3016-6"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan3018-4"
+         x="31.05584"
+         y="842.77081">wasGeneratedBy.2</tspan></text>
+    <rect
+       style="fill:#98fb98;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:2, 2;stroke-dashoffset:0"
+       id="rect3010-3"
+       width="104.55079"
+       height="24.24366"
+       x="25.5"
+       y="877.61853" />
+    <text
+       xml:space="preserve"
+       style="font-size:10px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="31.05584"
+       y="892.77081"
+       id="text3016-8"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan3018-40"
+         x="31.05584"
+         y="892.77081">wasGeneratedBy.3</tspan></text>
+    <rect
+       style="fill:#98fb98;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:2, 2;stroke-dashoffset:0"
+       id="rect3010-0"
+       width="104.55079"
+       height="24.24366"
+       x="25.5"
+       y="927.61853" />
+    <text
+       xml:space="preserve"
+       style="font-size:10px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="31.05584"
+       y="942.77081"
+       id="text3016-9"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan3018-3"
+         x="31.05584"
+         y="942.77081">wasGeneratedBy.4</tspan></text>
+    <rect
+       style="fill:#fffacd;stroke:#000000;stroke-width:0.68763739000000002;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:1.37527482000000001, 1.37527482000000001;stroke-dashoffset:0"
+       id="rect3010-5"
+       width="49.312363"
+       height="24.304611"
+       x="325.34381"
+       y="777.46234" />
+    <text
+       xml:space="preserve"
+       style="font-size:10px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="331.34149"
+       y="792.77081"
+       id="text3016-3"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan3018-9"
+         x="331.34149"
+         y="792.77081">used.1</tspan></text>
+    <rect
+       style="fill:#fffacd;stroke:#000000;stroke-width:0.68763739000000002;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:1.37527482000000001, 1.37527482000000001;stroke-dashoffset:0"
+       id="rect3010-4-0"
+       width="49.312363"
+       height="24.304611"
+       x="325.34381"
+       y="827.58807" />
+    <text
+       xml:space="preserve"
+       style="font-size:10px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="331.05585"
+       y="842.77081"
+       id="text3016-6-5"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan3018-4-5"
+         x="331.05585"
+         y="842.77081">used.2</tspan></text>
+    <rect
+       style="fill:#fffacd;stroke:#000000;stroke-width:0.68763739000000002;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:1.37527482000000001, 1.37527482000000001;stroke-dashoffset:0"
+       id="rect3010-3-6"
+       width="49.312363"
+       height="24.304611"
+       x="325.34381"
+       y="877.71375" />
+    <text
+       xml:space="preserve"
+       style="font-size:10px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="331.05585"
+       y="892.77081"
+       id="text3016-8-3"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan3018-40-2"
+         x="331.05585"
+         y="892.77081">used.3</tspan></text>
+    <rect
+       style="fill:#fffacd;stroke:#000000;stroke-width:0.68674117000000001;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:1.37348241000000004, 1.37348241000000004;stroke-dashoffset:0"
+       id="rect3010-0-6"
+       width="49.313259"
+       height="24.24086"
+       x="325.5014"
+       y="927.61993" />
+    <text
+       xml:space="preserve"
+       style="font-size:10px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="331.05585"
+       y="942.77075"
+       id="text3016-9-8"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan3018-3-9"
+         x="331.05585"
+         y="942.77075">used.4</tspan></text>
+    <rect
+       style="fill:#ffe4e1;stroke:#000000;stroke-width:0.97332764000000005;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:1.94665523999999990, 1.94665523999999990;stroke-dashoffset:0"
+       id="rect3010-7"
+       width="99.026672"
+       height="24.248865"
+       x="179.27345"
+       y="802.60516" />
+    <text
+       xml:space="preserve"
+       style="font-size:10px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="185.12828"
+       y="817.77081"
+       id="text3016-84"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan3018-0"
+         x="185.12828"
+         y="817.77081">wasInformedBy.1</tspan></text>
+    <rect
+       style="fill:#ffe4e1;stroke:#000000;stroke-width:0.97332764000000005;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:1.94665523999999990, 1.94665523999999990;stroke-dashoffset:0"
+       id="rect3010-4-06"
+       width="99.026672"
+       height="24.248865"
+       x="179.27345"
+       y="852.61591" />
+    <text
+       xml:space="preserve"
+       style="font-size:10px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="184.84264"
+       y="867.77081"
+       id="text3016-6-2"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan3018-4-4"
+         x="184.84264"
+         y="867.77081">wasInformedBy.2</tspan></text>
+    <rect
+       style="fill:#ffe4e1;stroke:#000000;stroke-width:0.97332764000000005;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:1.94665523999999990, 1.94665523999999990;stroke-dashoffset:0"
+       id="rect3010-3-7"
+       width="99.026672"
+       height="24.248865"
+       x="179.27345"
+       y="902.62665" />
+    <text
+       xml:space="preserve"
+       style="font-size:10px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="184.84264"
+       y="917.77081"
+       id="text3016-8-4"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan3018-40-1"
+         x="184.84264"
+         y="917.77081">wasInformedBy.3</tspan></text>
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend);stroke-miterlimit:4;stroke-dasharray:none"
+       d="m 326.11604,845.50699 -48.81675,18.62083"
+       id="path3221"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Lend);stroke-miterlimit:4;stroke-dasharray:none"
+       d="m 180.16905,124.36034 c -49.82328,60.89512 -49.82328,60.89512 -49.82328,60.89512 l 0,0 -0.50327,-0.50326"
+       id="path3227"
+       inkscape:connector-curvature="0"
+       transform="translate(0,752.36218)" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow1Lstart);marker-end:none;stroke-miterlimit:4;stroke-dasharray:none"
+       d="m 326.36768,839.22923 -48.81675,18.62083"
+       id="path3221-9"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow1Lstart);marker-end:none;stroke-miterlimit:4;stroke-dasharray:none"
+       d="M 179.40751,914.71895 130.60404,895.59508"
+       id="path3221-9-4"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-end:url(#Arrow1Lend-5)"
+       d="M 179.40751,920.40201 130.60404,901.27814"
+       id="path3221-9-4-5"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Lend-5);stroke-miterlimit:4;stroke-dasharray:1,3;stroke-dashoffset:0"
+       d="M 325.85777,831.93178 277.0543,812.80791"
+       id="path3221-9-4-5-3"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow1Lstart);marker-end:none;stroke-miterlimit:4;stroke-dasharray:1,3;stroke-dashoffset:0"
+       d="m 178.90424,820.35667 -49.81,58.37902"
+       id="path3221-9-4-3"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 3;stroke-dashoffset:0;marker-start:url(#Arrow1Lstart);marker-end:none"
+       d="m 130.25659,790.02202 49.47562,112.82597"
+       id="path3221-9-4-3-5"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 3;stroke-dashoffset:0;marker-start:url(#Arrow1Lstart);marker-end:none"
+       d="m 129.88442,841.32696 50.18735,62.64936"
+       id="path3221-9-4-3-5-6"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 3;stroke-dashoffset:0;marker-start:url(#Arrow1Lstart);marker-end:none"
+       d="m 131.12994,939.18913 48.40804,-13.14934"
+       id="path3221-9-4-3-5-6-6"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 3;stroke-dashoffset:0;marker-start:url(#Arrow1Lstart);marker-end:none"
+       d="m 324.71912,791.50622 -46.25138,61.22591"
+       id="path3221-9-4-3-5-6-8"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 3;stroke-dashoffset:0;marker-start:url(#Arrow1Lstart);marker-end:none"
+       d="m 324.18532,889.01254 -45.53965,-20.2666"
+       id="path3221-9-4-3-5-6-8-7"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 3;stroke-dashoffset:0;marker-start:url(#Arrow1Lstart);marker-end:none"
+       d="m 325.25291,941.14639 -46.9631,-68.30803"
+       id="path3221-9-4-3-5-6-8-7-1"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+  </g>
+</svg>