* More Stian comments
authorJames Cheney <jcheney@inf.ed.ac.uk>
Tue, 07 Aug 2012 17:26:12 +0100
changeset 4297 14a374300475
parent 4296 8f63cf1f72f1
child 4298 b9d2157889f7
* More Stian comments
model/comments/issue-459-stian.txt
model/prov-constraints.html
--- a/model/comments/issue-459-stian.txt	Tue Aug 07 12:45:25 2012 +0100
+++ b/model/comments/issue-459-stian.txt	Tue Aug 07 17:26:12 2012 +0100
@@ -493,6 +493,10 @@
    > I am confused by the 'holds'. It implies that you can simply ignore it
    > otherwise.
    > 
+
+Removed unnecessary "holds".
+
+21.
    > 
    > 
    > > There are also no expansion rules for entity, agent,
@@ -506,6 +510,12 @@
    > "by other rules above" -> "by definition 1 and 2"
    > 
    > What about mentionOf and bundle ?
+
+Fixed.  Bundles are not relations so I don't think they need to be in
+the list.
+
+22.
+
    > 
    > 
   > > Thus, before proceeding to apply other definitions or inferences, most occurrences of - must be replaced by fresh existential variables, distinct from any others occurring in the instance.
@@ -514,6 +524,11 @@
    > processing the inferences.
    > 
    > 
+
+This is ISSUE-465.
+
+23.
+
    > 
    > "The only exceptions, where - must be left in place, are the activity
    > parameter in wasDerivedFrom and the plan parameter in
@@ -521,6 +536,11 @@
    > 
    > Add "as explained in the remark below"
    > 
+
+Done.
+
+24.
+
    > 
    > 
    > > (Table)
@@ -531,12 +551,20 @@
    > wasDerivedFrom(id;e2,e1,attrs) IF AND ONLY IF
    > wasDerivedFrom(id;e2,e1,-,-,-,attrs).
    > 
+
+Fixed.
+
+25.
    > 
    > Before definition 4, which otherwise looks like a new thing, add something like:
    > 
    > "The following definition generalizes the definitions of the above
    > table for expanding parameters."
    > 
+
+Clarified this transition.
+
+26.
    > > For each r in {entity, activity, agent}, the following definition holds:
    > > r(a0,...,ai-1, -, ai+1, ...,an) IF AND ONLY IF there exists a' such that r(a0,...,ai-1,a',ai+1,...,an).
    > 
@@ -553,6 +581,10 @@
    > So change it to just a definition for activity() and its optional timestamps.
    > 
    > 
+
+Done.
+
+27.
    > 
    > 
    > > For each r in { used, wasGeneratedBy, wasInfluencedBy,
@@ -560,12 +592,22 @@
    >   wasDerivedFrom, wasAttributedTo, wasAssociatedWith, actedOnBehalfOf} 
    > 
    > Make this the same order as in the table.
+
+Done. 
+
+28.
+
    > 
    > >  if the ith parameter of r is an expandable parameter of r
    > 
    > I would add "as explained in Table x" and give the table a name. As it
    > stands the table is not clearly marked as normative and the definition
    > on its own sounds incomplete.
+
+Done.  (Also added a note that Table 2 is normative).
+
+29.
+
    > 
    > > A final check is required on this inference to ensure that it
    > does not lead to non-termination, when combined with Inference 5
@@ -575,6 +617,11 @@
    > as 'this' is inference 5 itself!
    > 
    > 
+
+Fixed by making it a reference.
+
+30.
+
    > > Remark
    > 
    > Make it clearer that we are talking about this particular example:
@@ -590,6 +637,11 @@
    > > So it is impossible for a3 to have used an entity generated by a1.
    > --> "So in this case it is..."
    > 
+
+Fixed by adopting suggested rephrasings.
+
+31.
+
    > 
    > > Inference 7 (entity-generation-invalidation-inference)
    > 
@@ -614,7 +666,12 @@
    > - but you don't know when or how - so why should the PROV imply
    > provenance statements about the future?
    > 
-   > 
+   >
+
+This is ISSUE-466.
+
+ 
+32.
    > > Inference 8 (activity-start-end-inference)
    >    > > From an activity statemen,t we can infer that start and
    > end events having times matching the start and end times of the
@@ -623,9 +680,13 @@
    > 
    > --> "statement"
    > Delete "that"
+
+Fixed.
+    
+
+33.
    > 
-   > 
-   >    >    >    >    >    >    >    >    >    > > IF
+   > IF
    > activity(a,t1,t2,_attrs) THEN there exist _id1, _e1, _id2, and
    > _e2 such that wasStartedBy(_id1;a,_e1,_a1,t1,[]) and
    > wasEndedBy(_id2;a,_e2,_a2,t2,[]). 
@@ -638,6 +699,10 @@
    > 
    > All activities must end? Same argument as for inference 7 applies.
    > 
+
+This is ISSUE-467.
+
+34.
    > 
    > 
    > Combining inference 7 and 8 means inference rules loops forever,
@@ -696,6 +761,11 @@
    > used/wasStartedBy/wasEndedBy/wasAssociatedWith and invalidation of a
    > specialization - meaning 'it must have existed then'. This is good.
    > 
+
+This is ISSUE-465.
+
+35.
+
    > 
    >    > > IF wasEndedBy(_id;a,e1,a1,_t,_attrs), THEN there exist
    > _gen and _t1 such that wasGeneratedBy(_gen;e1,a1,_t1,[]). 
@@ -711,11 +781,21 @@
    > would keep _id* for the first argument (if it is not used elsewhere),
    > but change id*.
    > 
+
+
+Done.
+
+36.
    > 
    > I agree on removing inference 12 and the following paragraph and
    > remark, this is redundant from inference 11 and definition 4.
    > 
-   > 
+
+This is ISSUE-454 - as the inference is related to how derivation
+optional parameters work.
+
+37.
+  > 
    > However, I think it is worth pointing out somewhere that "Derivation
    > is not defined to be transitive either", but not by "following similar
    > reasoning as for wasInformedBy." - I don't see how that reasoning
@@ -757,6 +837,18 @@
    > Inference 12 is not this, that talks about not deriving wasGeneratedBy
    > from wasDerivedFrom+used.  (which to me seems self-evident).
    > 
+
+Fixed.  I have made it a bare, separate remark stating that derivation
+is not necessarily transitive.  If more needs to be said, it should
+probably be said in prov-dm or primer.
+
+I personally believe we should not bother with remarks justifying
+properties that we do NOT require, since there are an infinite number
+of these, and justifying why we do not want them is not the job of the
+spec, only explaining how to handle the ones we do want.
+--jrc.
+
+38.
    > 
    > 
   > > A derivation specifying activity, generation and use events is a
@@ -765,6 +857,10 @@
    > 
    > --> "not the case because a blank activity is a special case in definition 4"
    > 
+
+Fixed.
+
+39.
    > 
    > 
    > 
@@ -779,12 +875,21 @@
    > Change sentence to match DM, "Attribution is the ascribing of an
    > entity to an agent".
    > 
+
+Fixed.
+
+40.
    > 
    > > An agent can only be responsible for an entity if it was
    > associated with an activity that generated the entity 
    > 
    > "responsible for" -> "ascribed to".
    > 
+
+Fixed. (The sentence needed to be rearranged since ascription is not
+symmetric.)
+
+41.
    > 
    > > Inference 15 (attribution-inference)
    > > IF wasAttributedTo(_att;e,ag,_attrs) holds for some identifiers
@@ -796,6 +901,9 @@
    > definition 4).  Instead -  should be inferred, and no 'there exists'
    > required for -. (it might exist, though!)
    > 
+
+This is ISSUE-452.  
+
    > 
    > 
    > 
@@ -808,6 +916,9 @@
    > very often not the case!  It is worth pointing out here that the two
    > plans are different.
    > 
+
+This is ISSUE-452.
+
    > 
    > The following remark tries to clarify this, but as remarks are not
    > normative, and the inferences are, then their "there exists _pl1"
@@ -821,6 +932,12 @@
    > replaced with -.
    > 
    > 
+
+ISSUE-452.  
+Yes it is, in the definition of merging.  But this needs to be
+clearer, since merging is not explained until later.  @TODO.
+
+42.
    > 
    > 
    > > Inference 17 (influence-inference)
@@ -830,28 +947,50 @@
    > > IF wasGeneratedBy(id;e,a,t,attrs) THEN wasInfluencedBy(id; e, a, attrs).
    > t -> _t
    > 
+
+Fixed.
    > > IF used(id;a,e,t,attrs) THEN wasInfluencedBy(id; a, e, attrs).
    > t -> _t
    > 
+
+Fixed
+
    > > IF wasInformedBy(id;a2,a1,attrs) THEN wasInfluencedBy(id; a2, a1, attrs).
    > > IF wasStartedBy(id;a2,e,a1,t,attrs) THEN wasInfluencedBy(id; a2, e, attrs).
    > a1 -> _a1
    > t -> _t
    > 
+
+Fixed
+
    > > IF wasEndedBy(id;a2,e,a1,t,attrs) THEN wasInfluencedBy(id; a2, e, attrs).
    > a1 -> _a1
    > t -> _t
    > 
+
+Fixed
+
    > > IF wasInvalidatedBy(id;e,a,t,attrs) THEN wasInfluencedBy(id; e, a, attrs).
    > t -> _t
    > 
+
+Fixed
+
    > > IF wasDerivedFrom(id; e2, e1, attrs) THEN wasInfluencedBy(id; e2, e1, attrs).
    > > IF wasAttributedTo(id;e,ag,attr) THEN wasInfluencedBy(id; e, ag, attrs).
    > > IF wasAssociatedWith(id;a,ag,pl,attrs) THEN wasInfluencedBy(id; a, ag, attrs).
    > pl -> -
    > 
+
+No, this should be _pl.
+
    > > IF actedOnBehalfOf(id;ag2,ag1,a,attrs) THEN wasInfluencedBy(id; ag2, ag1, attrs).
    > a -> _a
+
+Fixed.
+
+
+43.
    > 
    > 
    > A good question is if wasInfluencedBy can be none of the above (ie.
@@ -859,6 +998,14 @@
    > a remark? The reason is that combined with Constraint 52 it might be
    > misinterpreted as disjoint subclasses (true) and equivalent with a the
    > union  (false).
+
+We don't make influence disjoint with anything, and we say this.  We
+also don't say that influence is equivalent to the union of its
+instances.  I've added to the remark to say this (though elsewhere we
+encourage people to use specific relations).
+
+
+44.
    > 
    > 
    > > 5.1 Uniqueness Constraints
@@ -871,18 +1018,33 @@
    > Suggest rewrite to "or it is <em>undefined</em>, indicating that the
    > merge cannot be performed."
    > 
+
+Changed to say that merging fails (we use this term elsewhere)
+
+45.
    > 
    > > The merge of two attribute lists attrs1 and attrs2 is their
    > union, considered as unordered lists, written attrs1 ∪ attrs2 
    > 
    > Add something like ", allowing duplicate keys, but merging equal
    > key-value pairs".
+
+Done.
+
+46.
    > 
    > 
    > > If merging succeeds with a substitution S, then S is applied to the instance I, yielding result I(S).
    > 
    > So you mean S(I) ? What notation is this?
-   > 
+   >
+
+S(I), correct.  This is the instance obtained by replacing all
+existential variables x in the domain of S with S(x)  wherever they
+appear in I - we probably need to write it down
+clearly, but it is a standard notion.
+ 
+47.
    > 
    > > In the common case that a particular field of a relation
    > uniquely determines the other fields, we call the uniqueness
@@ -890,6 +1052,10 @@
    > 
    > <em>key constraint</em>
    > 
+
+Fixed, Made it a definition too.
+
+48.
    > 
    > > We assume that an entity has exactly one generation and invalidation event
    > 
@@ -897,6 +1063,10 @@
    > 
    > --> "An entity has exactly..."
    > 
+
+Done
+
+49.
    > 
    >    >    >    >    > > It follows from the above constraints that
    > the generation and invalidation times of an entity are unique, if
@@ -907,6 +1077,14 @@
    > 
    > Change "times" to "activites and times".
    > 
+
+Actually, I think this should be demoted to a remark: it is an
+observation about the implications of the specification, not an
+additional requirement.  But I
+extended the remark to give an example.
+
+50.
+
    > 
    > > IF wasGeneratedBy(id1;e,_a1,_t1,_attrs1) and wasGeneratedBy(id2;e,_a2,_t2,_attrs2), THEN id1=id2.
    > ..
@@ -917,12 +1095,21 @@
    > IF wasInvalidatedBy(id3;e,_a3,_t3,_attrs3) and
    > wasInvalidatedBy(id4;e,_a4,_t4,_attrs4), THEN id3=id4.
    > 
+
+These have been changed to gen1, gen2, etc.
+
+51.
    > 
    > "We assume that an activity has exactly one start and end event"
    > -->
    > "An activity has.."
    > 
    > 
+
+Done.
+
+52.
+
    > 
    > "Again, together with above key constraints these constraints imply
    > that the activity is a key for activity start and end statements"
@@ -934,6 +1121,11 @@
    > 
    > id'-> id2
    > 
+
+Done
+
+53.
+
    > > Constraint 30 (unique-wasEndedBy)
    > > IF wasEndedBy(id1;a,_e1,_a1,_t1,_attrs1) and wasEndedBy(id2;a,_e2,_a2,_t2,_attrs2), THEN id=id'.
    > 
@@ -941,6 +1133,10 @@
    > IF wasEndedBy(id3;a,_e3,_a3,_t3,_attrs3) and
    > wasEndedBy(id4;a,_e4,_a4,_t4,_attrs4), THEN id3=id4.
    > 
+
+Done (with more descriptive id names)
+
+54.
    > 
    > > Constraint 31 (unique-startTime)
    > > IF activity(a,t,_t',_attrs) and wasStartedBy(id;a,_e1,_a1,t1,_attrs1), THEN t=t1.
@@ -949,6 +1145,9 @@
    > IF activity(a,t,_t2,_attrs) and
    > wasStartedBy(_id;a,_e1,_a1,t1,_attrs1), THEN t=t1.
    > 
+
+I don't like this either, but I fixed it to improve parallelism
+
    > 
    > > Constraint 32 (unique-endTime)
    > > IF activity(a,_t,t',_attrs) and wasEndedBy(_id;a,_e1,_a1,t1,_attrs1), THEN t' = t1.
@@ -958,6 +1157,10 @@
    > THEN t2 = t3.
    > 
    > 
+
+Likewise, I don't like your version either but I fixed it to avoid the problem.
+
+55.
    > 
    > > Constraint 33 (mention-unique)
    > > IF mentionOf(e, e1, b1) and mentionOf(e, e2, b2), THEN e1=e2 and b1=b2.
@@ -966,6 +1169,13 @@
    > 
    > 4. The identifier field e is a KEY for the mentionOf(e, e1, b1) statement.
    > 
+
+I wanted to keep this separate since it is at risk.  It is equivalent
+to say that e is a KEY (though it is not an identifier field!).  We
+can do this later, if Mention stays in the specification, since it
+does not change the technical content this is editorial.
+
+56.
    > 
    > > 5.2 Event Ordering Constraints
    > 
@@ -973,6 +1183,11 @@
    > 
    > Link to definition for "preorder"
    > 
+
+Done
+
+57.
+
    > 
    >    > > Moreover, we sometimes consider strict forms of these
    > orders: we say e1 strictly precedes e2 to indicate that e1
@@ -984,7 +1199,10 @@
    > e1 strictly precedes e2 to indicate that e1 happened before e2, but
    > not at the same time. This is a transitive, irreflexible relation.
    > 
-   > 
+
+Done
+
+58.
    > > To check ordering constraints, we generate all precedes and
    > strictly precedes relationships arising from the ordering
    > constraints to form a directed graph, with edges marked precedes
@@ -995,6 +1213,11 @@
    > 
    > Change to "One way to check ordering constraint is to generate all ..."
    > 
+
+Excuse me! Done
+
+59.
+
    > 
    > > 5.2.1 Activity constraints
   >    > >  An activity starts, then during its lifetime uses,
@@ -1004,10 +1227,16 @@
    > 
    > It can also be associated with agents who affect the behaviour of the activity.
    > 
+
+Done
+
    > > Figure 2e
    > 
    > Shows wasStartedByActivity - now defunct relation. Remove.
    > 
+
+ISSUE-468. @Luc?
+
    > 
    > 
    > > Constraint 35 (usage-within-activity)
--- a/model/prov-constraints.html	Tue Aug 07 12:45:25 2012 +0100
+++ b/model/prov-constraints.html	Tue Aug 07 17:26:12 2012 +0100
@@ -1072,8 +1072,10 @@
   forms as defined in this specification.</p>
 
   <p>
-  All diagrams are for illustration purposes
-  only.  Text in appendices and
+  All figures are for illustration purposes
+  only.  Information in tables is normative if it appears in a
+  normative section; specifically, <a
+  href="#expandable-parameters-fig">Table 2</a> is normative.  Text in appendices and
 in boxes labeled "Remark" is informative.  Where there is any apparent
   ambiguity between the descriptive text and the formal text in a
   "definition", "inference" or "constraint" box, the formal text takes
@@ -1130,13 +1132,13 @@
   markers, are placeholders for existentially quantified variables;
   that is, they denote unknown values.  There are a few exceptions to
   this general rule, which are specified in <a class="rule-ref"
-  href="#optional-placeholders"><span>TBD</span></a></p>
+  href="#optional-placeholders"><span>TBD</span></a>.</p>
 
 <p> Definitions have the following general form:</p>
 
 <div class='definition-example' id='definition-example'>
 <p>
-  <span class="name">defined_exp</span> holds <span
+  <span class="name">defined_exp</span> <span
   class='conditional'>IF AND ONLY IF</span>
   there exists <span class="name">a<sub>1</sub></span>,..., <span
   class="name">a<sub>m</sub></span> such that <span
@@ -1183,8 +1185,7 @@
   identifiers, literals, the placeholder <span class="name">-</span>,
   or other <a>existential variables</a>.  
 <a class="rule-ref" href="#optional-identifiers"><span>TBD</span></a>,
-<a class="rule-ref" href="#optional-attributes"><span>TBD</span></a>,
-, and
+<a class="rule-ref" href="#optional-attributes"><span>TBD</span></a>, and
 <a class="rule-ref" href="#definition-short-forms"><span>TBD</span></a>,
  explain how to expand the compact forms of PROV-N notation into a
   normal form.  <a class="rule-ref"
@@ -1208,12 +1209,12 @@
 <span class="name">actedOnBehalfOf</span>}, the following
     definitional rules hold:</p>
     <ol>     <li>
-    <span class="name">r(a<sub>1</sub>,...,a<sub>n</sub>) </span> holds <span  class="conditional">IF AND ONLY IF</span>
+    <span class="name">r(a<sub>1</sub>,...,a<sub>n</sub>) </span> <span  class="conditional">IF AND ONLY IF</span>
   there exists <span class="name">id</span> such that  <span
-     class="name">r(id; a<sub>1</sub>,...,a<sub>n</sub>)</span>  holds.</li>
-     <li> <span class="name">r(-; a<sub>1</sub>,...,a<sub>n</sub>) </span> holds <span  class="conditional">IF AND ONLY IF</span>
+     class="name">r(id; a<sub>1</sub>,...,a<sub>n</sub>)</span>.</li>
+     <li> <span class="name">r(-; a<sub>1</sub>,...,a<sub>n</sub>) </span> <span  class="conditional">IF AND ONLY IF</span>
   there exists <span class="name">id</span> such that  <span
-     class="name">r(id; a<sub>1</sub>,...,a<sub>n</sub>)</span>  holds.</li>
+     class="name">r(id; a<sub>1</sub>,...,a<sub>n</sub>)</span>.</li>
      </ol>
     </div>
 
@@ -1228,8 +1229,8 @@
    <span class="name">agent</span>}, if <span class="name">a<sub>n</sub></span> is not an attribute
    list parameter then the following definitional rule holds:
   <p><span class="name">p(a<sub>1</sub>,...,a<sub>n</sub>)</span> 
-   holds <span  class="conditional">IF AND ONLY IF</span>   <span
-   class="name">p(a<sub>1</sub>,...,a<sub>n</sub>,[])</span> holds.
+   <span  class="conditional">IF AND ONLY IF</span>   <span
+   class="name">p(a<sub>1</sub>,...,a<sub>n</sub>,[])</span>.
   </li>
   <li>
      For each <span class="name">r</span> in { 
@@ -1246,9 +1247,9 @@
 <span class="name">actedOnBehalfOf</span>}, if <span class="name">a<sub>n</sub></span> is not an
    attribute list parameter then the following definition holds:
    
-  <p> <span class="name">r(id; a<sub>1</sub>,...,a<sub>n</sub>)</span> holds
+  <p> <span class="name">r(id; a<sub>1</sub>,...,a<sub>n</sub>)</span> 
    <span  class="conditional">IF AND ONLY IF</span>   <span
-   class="name">r(id; a<sub>1</sub>,...,a<sub>n</sub>,[])</span> holds.</li></ol>
+   class="name">r(id; a<sub>1</sub>,...,a<sub>n</sub>,[])</span>.</li></ol>
     </div>   
 
     <p>  Finally, many PROV
@@ -1295,9 +1296,10 @@
 
   <p>
 There are no expansion rules for entity, agent, communication,
- attribution, influence, alternate, or specialization, because these
+ attribution, influence, alternate, specialization, or mention
+   relations, because these
  have no optional parameters aside from the identifier and attributes,
- which are expanded by the rules in <a class="rule-ref" href="#optional-attributes"><span>TBD</span></a>.  </p>
+ which are expanded by the rules in <a class="rule-ref" href="#optional-identifiers"><span>TBD</span></a> <a class="rule-ref" href="#optional-attributes"><span>TBD</span></a>.  </p>
    </div>
 
 <!--<div id="optional-attributes1"> -->
@@ -1313,7 +1315,8 @@
   in place, are the <a href="http://www.w3.org/TR/prov-dm/#derivation.activity">activity</a>, <a href="http://www.w3.org/TR/prov-dm/#derivation.generation">generation</a>, and <a href="http://www.w3.org/TR/prov-dm/#derivation.usage">usage</a> parameters in <span class="name">wasDerivedFrom</span> and
   the <a
   href="http://www.w3.org/TR/prov-dm/#association.plan">plan</a>
-  parameter in <span class="name">wasAssociatedWith</span>.
+  parameter in <span class="name">wasAssociatedWith</span>.  This is
+  further explained in remarks below.
   </p>
 
    <p>The treatment of optional parameters is specified formally using
@@ -1325,7 +1328,9 @@
     parameter</a>s of the properties of PROV, needed in <a class="rule-ref"
 href="#optional-placeholders"><span>TBD</span></a>.  For emphasis, the four optional parameters
     that are not <a title="expandable parameter">expandable</a> are
-    also listed.</p>
+    also listed.  Parameters that cannot have value <span
+class="name">-</span>, and identifiers that are 
+   expanded by <a class="rule-ref" href="#optional-identifiers"><span>TBD</span></a>, are not listed.</p>
   <div id="expandable-parameters-fig">
     <table id="expandable-parameters" border="1" class="thinborder" style="margin-left: auto; margin-right: auto; border-color: black;">
 <caption id="expandable-parameters">Table 2: Expandable and
@@ -1336,68 +1341,73 @@
 	<th>Expandable </th>
 	<th>Non-expandable</th>
       </tr>
+     <tr>
+	<td class="name">used(id; a,e,t,attrs)</td>
+	<td class="name">e,t</td>
+	<td></td>
+      </tr>
       <tr >
 	<td class="name">wasGeneratedBy(id; e,a,t,attrs)</td>
-	<td class="name">id,a,t</td>
+	<td class="name">a,t</td>
 	<td></td>
     </tr>
       <tr>
-	<td class="name">used(id; a,e,t,attrs)</td>
-	<td class="name">id,e,t</td>
-	<td></td>
-      </tr>
-      <tr>
 	<td class="name">wasInformedBy(id; a2,a1,attrs)</td>
-	<td class="name">id</td>
+	<td class="name"></td>
 	<td></td>
       </tr>
       <tr>
 	<td class="name">wasStartedBy(id; a2,e,a1,t,attrs)</td>
-	<td class="name">id,e,a1,t</td>
+	<td class="name">e,a1,t</td>
 	<td></td>
       </tr>
       <tr>
 	<td class="name">wasEndedBy(id; a2,e,a1,t,attrs)</td>
-	<td class="name">id,e,a1,t</td>
+	<td class="name">e,a1,t</td>
 	<td></td>
       </tr>
       <tr>
 	<td class="name">wasInvalidatedBy(id; e,a,t,attrs)</td>
-	<td class="name">id,a,t</td>
+	<td class="name">a,t</td>
 	<td></td>
       </tr>
       <tr>
 	<td class="name">wasDerivedFrom(id; e2,e1,a,g2,u1,attrs)</td>
-	<td class="name">id</td>
+	<td class="name">e1,e2</td>
 	<td class="name">a,g2,u1</td>
       </tr>
+<!--
       <tr>
 	<td class="name">wasDerivedFrom(id; e2,e1,attrs)</td>
-	<td class="name">id</td> 
+	<td class="name"></td> 
 	<td></td>
      </tr>
+     -->
       <tr>
 	<td class="name">wasAttributedTo(id; e,ag,attr)</td>
-	<td class="name">id</td> 
+	<td class="name"></td> 
 	<td></td>
      </tr>
       <tr>
 	<td class="name">wasAssociatedWith(id; a,ag,pl,attrs)</td>
-	<td class="name">id,ag</td> 
+	<td class="name">ag</td> 
 	<td class="name">pl</td>
      </tr>
       <tr>
 	<td class="name">actedOnBehalfOf(id; ag2,ag1,a,attrs)</td>
-	<td class="name">id,a</td> 
+	<td class="name">a</td> 
 	<td></td>
      </tr>
       <tr>
-	<td class="name">wasInfluencedBy(id; e2,e1,attrs)</td>
-	<td class="name">id</td> 
+	<td class="name">wasInfluencedBy(id; o2,o1,attrs)</td>
+	<td class="name"></td> 
 	<td></td>
-     </tr>
-</table>
+     </tr></table>
     </div>
+
+<p> <a class="rule-ref"
+  href="#optional-placeholders"><span>TBD</span></a> states how parameters are to be expanded,
+    using the expandable parameters defined in the   <a href="#expandable-parameters-fig">Table 2</a>.</p>
     
   <div class="definition" id="optional-placeholders">
     <ol><li>
@@ -1420,17 +1430,19 @@
     <li>For each  <span class="name">r</span> in { 
 <span class="name">used</span>,
 <span class="name">wasGeneratedBy</span>,
-<span class="name">wasInfluencedBy</span>,
-<span class="name">wasInvalidatedBy</span>,
+<span class="name">wasInformedBy</span>,
 <span class="name">wasStartedBy</span>,
 <span class="name">wasEndedBy</span>,
-<span class="name">wasInformedBy</span>,
+<span class="name">wasInvalidatedBy</span>,
 <span class="name">wasDerivedFrom</span>,
 <span class="name">wasAttributedTo</span>,
 <span class="name">wasAssociatedWith</span>,
-<span class="name">actedOnBehalfOf</span>}, if the <span class="name">i</span>th parameter
+<span class="name">actedOnBehalfOf</span>,
+    <span class="name">wasInfluencedBy</span>}, if the <span class="name">i</span>th parameter
     of <span class="name">r</span> is an <a>expandable parameter</a>
-    of <span class="name">r</span> then the following definition holds:
+    of <span class="name">r</span>
+    as specified in <a href="#expandable-parameters-fig">Table 2</a>
+then the following definition holds:
     <p> <span class="name">r(a<sub>0</sub>;...,a<sub>i-1</sub>, -, a<sub>i+1</sub>, ...,a<sub>n</sub>) </span> <span class="conditional">IF AND ONLY IF</span> there exists <span class="name">a'</span>
     such that <span class="name">r(a<sub>0</sub>;...,a<sub>i-1</sub>,a',a<sub>i+1</sub>,...,a<sub>n</sub>)</span>.
     </li></ol>
@@ -1476,23 +1488,23 @@
 <p>
 <span class="conditional">IF</span> 
 <span class="name">wasInformedBy(_id; a2,a1,_attrs)</span>
-holds <span class='conditional'>THEN</span>
+<span class='conditional'>THEN</span>
  there exist <span class="name">e</span>,  <span
-  class="name">_id1</span>, <span class="name">_t1</span>, <span
-  class="name">_id2</span>, and <span class="name">_t2</span>, 
-such that <span class="name">wasGeneratedBy(_id1; e,a1,_t1,[])</span> and <span class="name">used(_id2; a2,e,_t2,[])</span> hold.</p>
+  class="name">_gen</span>, <span class="name">_t1</span>, <span
+  class="name">_use</span>, and <span class="name">_t2</span>, 
+such that <span class="name">wasGeneratedBy(_gen; e,a1,_t1,[])</span> and <span class="name">used(_use; a2,e,_t2,[])</span> hold.</p>
 </div>
 
 <p id="generation-use-communication-inference_text">
 
 <div class="note">
-A final check is required on <a class="rule-text" href="#generation-use-communication-inference"><span>TBD</span></a> this to ensure that it does not lead to non-termination, when combined with
+A final check is required on <a class="rule-text" href="#generation-use-communication-inference"><span>TBD</span></a> to ensure that it does not lead to non-termination, when combined with
 <a class="rule-text" href="#communication-generation-use-inference"><span>TBD</span></a>.
   </div>
 
  <div class='inference' id='generation-use-communication-inference'>
 <p>
-<span class="conditional">IF</span>  <span class="name">wasGeneratedBy(_id1; e,a1,_t1,_attrs1)</span>
+<span class="conditional">IF</span>  <span class="name">wasGeneratedBy(_gen; e,a1,_t1,_attrs1)</span>
    and <span class="name">used(_id2; a2,e,_t2,_attrs2)</span> hold
    <span class='conditional'>THEN</span>
  there exists <span
@@ -1508,7 +1520,8 @@
 wasInformedBy(a2,a1)
 wasInformedBy(a3,a2)
 </pre>
-<p> We cannot infer <span class="name">wasInformedBy(a3,a1)</span> from these statements. Indeed, 
+<p> We cannot infer <span class="name">wasInformedBy(a3,a1)</span>
+    from these statements alone. Indeed, 
 from 
 <span class="name">wasInformedBy(a2,a1)</span>, we know that there exists <span class="name">e1</span> such that <span class="name">e1</span> was generated by <span class="name">a1</span>
 and used by <span class="name">a2</span>. Likewise, from <span class="name">wasInformedBy(a3,a2)</span>, we know that there exists  <span class="name">e2</span> such that <span
@@ -1516,7 +1529,9 @@
 and used by <span class="name">a3</span>. The following illustration
 shows a counterexample to  transitivity. The
 horizontal axis represents the event line. We see that <span class="name">e1</span> was generated after <span class="name">e2</span> was used. Furthermore, the illustration also shows that
-<span class="name">a3</span> completes before <span class="name">a1</span>.  So it is impossible for <span class="name">a3</span> to have used an entity generated by <span
+<span class="name">a3</span> completes before <span
+    class="name">a1</span> started.  So in this example (with no other
+    information) it is impossible for <span class="name">a3</span> to have used an entity generated by <span
 class="name">a1</span>. This is illustrated in <a
 href="#counterexample-wasInformedBy">Figure 1</a>.</p>
 
@@ -1567,10 +1582,10 @@
 <span class='conditional'>IF</span> <span
   class="name">entity(e,_attrs)</span> <span
   class="conditional">THEN</span> there exist 
-<span class="name">_id1</span>, <span class="name">_a1</span>, <span class="name">_t1</span>,
-<span class="name">_id2</span>, <span class="name">_a2</span>, and <span class="name">_t2</span> such that
+<span class="name">_gen</span>, <span class="name">_a1</span>, <span class="name">_t1</span>,
+<span class="name">_inv</span>, <span class="name">_a2</span>, and <span class="name">_t2</span> such that
   <span
-  class="name">wasGeneratedBy(_id1; e,_a1,_t1,[])</span> and <span class="name">wasInvalidatedBy(_id2; e,_a2,_t2,[])</span>.
+  class="name">wasGeneratedBy(_gen; e,_a1,_t1,[])</span> and <span class="name">wasInvalidatedBy(_inv; e,_a2,_t2,[])</span>.
 </div> 
 
 
@@ -1592,10 +1607,10 @@
 <p>
 <span class='conditional'>IF</span> <span
   class="name">activity(a,t1,t2,_attrs)</span> <span
-  class="conditional">THEN</span> there exist <span class="name">_id1</span>, <span class="name">_e1</span>, <span class="name">_id2</span>,
+  class="conditional">THEN</span> there exist <span class="name">_start</span>, <span class="name">_e1</span>, <span class="name">_end</span>,
   and <span class="name">_e2</span> such that
   <span
-  class="name">wasStartedBy(_id1; a,_e1,_a1,t1,[])</span> and <span class="name">wasEndedBy(_id2; a,_e2,_a2,t2,[])</span>.
+  class="name">wasStartedBy(_start; a,_e1,_a1,t1,[])</span> and <span class="name">wasEndedBy(_end; a,_e2,_a2,t2,[])</span>.
 </div> 
 
 
@@ -1649,21 +1664,6 @@
 
 <div class='inference' id='derivation-generation-use-inference'>
 <p>
-<!--
-
-  <ol>
-<li><span class='conditional'>IF</span> <span
-  class="name">wasDerivedFrom(_id; e2,e1,a,id2,_id1,_attrs)</span>,
-  <span class='conditional'>THEN</span> there exists  <span
-  class="name">_t2</span>
-  such that <span class="name">wasGeneratedBy(id2; e2,a,_t2,[])</span>.
-<li><span class='conditional'>IF</span> <span
-  class="name">wasDerivedFrom(_id; e2,e1,a,_id2,id1,_attrs)</span>,
-  <span class='conditional'>THEN</span> there exists <span
-  class="name">_t1</span>
-  such that <span class="name">used(id1; a,e1,_t1,[])</span>.
-</ol>
--->
 <p>
 <span class='conditional'>IF</span> <span
   class="name">wasDerivedFrom(_id; e2,e1,a,gen2,use1,_attrs)</span>,
@@ -1714,17 +1714,15 @@
 may not be involved in the derivation  (for instance, it may well have taken place after 
 the generation of <span
 expanclass="name">e2</span>).</p>
-
-
-<p>Derivation is not defined to be
-transitive either. Applications may define specializations of this relation that are transitive. </p>
-  </div>
+ </div>
 
 <hr />
 <p id="specific-derivation-inference_text">A derivation
   specifying activity, generation and use events is a special case of
-  a derivation that leaves these unspecified.  (The converse is not
-  the case).</p>
+  a derivation that leaves these unspecified.  The converse is not
+  the case because the activity parameter of derivations is
+ non-expandable in <a class="rule-ref"
+href="#optional-placeholders"><span>TBD</span></a>. </p>
 
 <div class='inference' id='specific-derivation-inference'>
 <p><span class='conditional'>IF</span> <span
@@ -1742,15 +1740,13 @@
 <div class='inference' id='revision-is-alternate-inference'>
 <p>
   <span class='conditional'>IF</span> <span
-  class="name">wasDerivedFrom(_id; e2,e1,[prov:type='prov:Revision'])</span>
-  holds, <span class='conditional'>THEN</span> <span
-  class="name">alternateOf(e2,e1)</span> holds.
+  class="name">wasDerivedFrom(_id; e2,e1,[prov:type='prov:Revision'])</span>, <span class='conditional'>THEN</span> <span
+  class="name">alternateOf(e2,e1)</span>.
 </p>
 <!--
 <li><span class='conditional'>IF</span> <span
-  class="name">wasDerivedFrom(_id; e2,e1,_act,_gen,_use,[prov:type='prov:Revision'])</span>
-  holds, <span class='conditional'>THEN</span> <span
-  class="name">alternateOf(e2,e1)</span> holds.
+  class="name">wasDerivedFrom(_id; e2,e1,_act,_gen,_use,[prov:type='prov:Revision'])</span>, <span class='conditional'>THEN</span> <span
+  class="name">alternateOf(e2,e1)</span>.
 </li>
 -->
 </div>
@@ -1773,8 +1769,9 @@
   </div>
 <div class='inference' id='quotation-implication'>
 <span class='conditional'>IF</span>
-<span class="name">wasQuotedFrom(e2,e1,ag2,ag1,attrs)</span> holds for some identifiers
-<span class="name">e2</span>, <span class="name">e1</span>, <span class="name">ag2</span>, <span class="name">ag1</span>, 
+<span class="name">wasQuotedFrom(e2,e1,ag2,ag1,attrs)</span>
+  for some identifiers
+<span class="name">e2</span>, <span class="name">e1</span>, <span class="name">ag2</span>, <span class="name">ag1</span>,
 <span class='conditional'>THEN</span> 
 <pre
 wasDerivedFrom(e2,e1)
@@ -1786,23 +1783,29 @@
 <p>
 
 -->
+
+<div class="remark">
+  There is no inference stating that <span class="name">wasDerivedFrom</span> is
+  transitive.  
+  </div>
 </section>
 
 
 <section >
 <h3>Agents</h3>
 
-<p  id='attribution-inference_text'> Attribution identifies an agent as responsible for an entity.  An
-agent can only be responsible for an entity if it was associated with
-an activity that generated the entity.  If the activity, generation
+<p  id='attribution-inference_text'> Attribution is the ascribing of an entity to an agent.  An
+entity can only be ascribed to an agent if the agent was associated with
+an activity that generated the entity.  If the activity, generation 
 and association events are not explicit in the instance, they can
 be inferred.</p>
 
 <div class='inference' id='attribution-inference'>
 <p>
 <span class='conditional'>IF</span>
-<span class="name">wasAttributedTo(_att; e,ag,_attrs)</span> holds for some identifiers
-<span class="name">e</span> and <span class="name">ag</span>,  
+<span class="name">wasAttributedTo(_att; e,ag,_attrs)</span>
+  <!--holds for some identifiers
+<span class="name">e</span> and <span class="name">ag</span>,  -->
 <span class='conditional'>THEN</span> there exist
   <span class="name">a</span>,
  <span class="name">_t</span>,
@@ -1842,7 +1845,8 @@
   the same, and one, both, or neither can be the placeholder <span class="name">-</span>
   indicating that there is no plan, because the existential variables
   <span class="name">_pl1</span> and <span class="name">_pl2</span> can be replaced with constant identifiers or
-  placeholders <span class="name">-</span> independently.
+  placeholders <span class="name">-</span> independently, as explained
+  in the definition of <a>merging</a>.
   </div>
 
 <hr />
@@ -1856,42 +1860,43 @@
 <p>
   <ol>
   <li>
-    <span class="conditional">IF</span> <span class="name">wasGeneratedBy(id; e,a,t,attrs)</span> <span class="conditional">THEN</span> <span class="name">wasInfluencedBy(id;  e, a, attrs)</span>.
+    <span class="conditional">IF</span> <span class="name">wasGeneratedBy(id; e,a,_t,attrs)</span> <span class="conditional">THEN</span> <span class="name">wasInfluencedBy(id;  e, a, attrs)</span>.
   </li>
   <li>
-    <span class="conditional">IF</span> <span class="name">used(id; a,e,t,attrs)</span> <span class="conditional">THEN</span> <span class="name">wasInfluencedBy(id;  a, e, attrs)</span>.
+    <span class="conditional">IF</span> <span class="name">used(id; a,e,_t,attrs)</span> <span class="conditional">THEN</span> <span class="name">wasInfluencedBy(id;  a, e, attrs)</span>.
   </li>
   <li>
     <span class="conditional">IF</span> <span class="name">wasInformedBy(id; a2,a1,attrs)</span> <span class="conditional">THEN</span> <span class="name">wasInfluencedBy(id;  a2, a1, attrs)</span>.
   </li>
  <li>
-    <span class="conditional">IF</span> <span class="name">wasStartedBy(id; a2,e,a1,t,attrs)</span> <span class="conditional">THEN</span> <span class="name">wasInfluencedBy(id;  a2, e, attrs)</span>.
+    <span class="conditional">IF</span> <span class="name">wasStartedBy(id; a2,e,a1,_t,attrs)</span> <span class="conditional">THEN</span> <span class="name">wasInfluencedBy(id;  a2, e, attrs)</span>.
   </li>
   <li>
-    <span class="conditional">IF</span> <span class="name">wasEndedBy(id; a2,e,a1,t,attrs)</span> <span class="conditional">THEN</span> <span class="name">wasInfluencedBy(id;  a2, e, attrs)</span>.
+    <span class="conditional">IF</span> <span class="name">wasEndedBy(id; a2,e,_a1,_t,attrs)</span> <span class="conditional">THEN</span> <span class="name">wasInfluencedBy(id;  a2, e, attrs)</span>.
   </li>
   <li>
-    <span class="conditional">IF</span> <span class="name">wasInvalidatedBy(id; e,a,t,attrs)</span> <span class="conditional">THEN</span> <span class="name">wasInfluencedBy(id;  e, a, attrs)</span>.
+    <span class="conditional">IF</span> <span class="name">wasInvalidatedBy(id; e,a,_t,attrs)</span> <span class="conditional">THEN</span> <span class="name">wasInfluencedBy(id;  e, a, attrs)</span>.
   </li>
   <li>
     <span class="conditional">IF</span> <span class="name">wasDerivedFrom(id;  e2, e1, attrs)</span> <span class="conditional">THEN</span> <span class="name">wasInfluencedBy(id;  e2, e1, attrs)</span>.
   </li>
 
  <li>
-    <span class="conditional">IF</span> <span class="name">wasAttributedTo(id; e,ag,attr)</span> <span class="conditional">THEN</span> <span class="name">wasInfluencedBy(id; e, ag, attrs)</span>.
+    <span class="conditional">IF</span> <span class="name">wasAttributedTo(id; e,ag,attrs)</span> <span class="conditional">THEN</span> <span class="name">wasInfluencedBy(id; e, ag, attrs)</span>.
   </li>
   <li>
-    <span class="conditional">IF</span> <span class="name">wasAssociatedWith(id; a,ag,pl,attrs)</span> <span class="conditional">THEN</span> <span class="name">wasInfluencedBy(id;  a, ag, attrs)</span>.
+    <span class="conditional">IF</span> <span class="name">wasAssociatedWith(id; a,ag,_pl,attrs)</span> <span class="conditional">THEN</span> <span class="name">wasInfluencedBy(id;  a, ag, attrs)</span>.
   </li>
   <li>
-    <span class="conditional">IF</span> <span class="name">actedOnBehalfOf(id; ag2,ag1,a,attrs)</span> <span class="conditional">THEN</span> <span class="name">wasInfluencedBy(id;  ag2, ag1, attrs)</span>.
+    <span class="conditional">IF</span> <span class="name">actedOnBehalfOf(id; ag2,ag1,_a,attrs)</span> <span class="conditional">THEN</span> <span class="name">wasInfluencedBy(id;  ag2, ag1, attrs)</span>.
   </li>
 </ol>
 </div>
 
 <div class="remark">
-  Note that the inferences above use the same identifier for the more
-  specific relationship and the influence relationship.
+  The inferences above permit the use of  same identifier for an
+  influence relationship and a more
+  specific relationship.
 </div>
 
 </section>
@@ -1979,9 +1984,10 @@
 <div class="inference" id="specialization-attributes-inference">
   <p>
 <!--  For any entities <span class='name'>e1</span>, <span class='name'>e2</span>,-->
-<span class='conditional'>IF</span> <span class='name'>entity(e1, attrs)</span> holds for some
-  attributes <span class='name'>attrs</span> and <span class='name'>specializationOf(e2,e1)</span> holds, <span class='conditional'>THEN </span>
-  <span class='name'>entity(e2, attrs)</span> also holds.</p>
+<span class='conditional'>IF</span> <span class='name'>entity(e1, attrs)</span> <!--holds for some
+  attributes <span class='name'>attrs</span>
+  --> and <span class='name'>specializationOf(e2,e1)</span>, <span class='conditional'>THEN </span>
+  <span class='name'>entity(e2, attrs)</span>.</p>
   </div>
 
 
@@ -2060,11 +2066,10 @@
     class="name">a</span>) is <span
     class="name">activity(a,2011-11-16T16:00:00,2011-11-16T18:00:00,[a=1,b=2])</span>.  </p>
 
-    <p> Merging can be applied
+    <p> <dfn>Merging</dfn> is an operation that can be applied
    to a pair of terms, or a pair of attribute lists.
    The result of merging is either a substitution (mapping
-   existentially quantified variables to terms) or a special symbol
-   <span class="name">undefined</span> indicating that the merge
+   existentially quantified variables to terms) or failure, indicating that the merge
    cannot be performed.  Merging of pairs of terms, attribute lists,
    or statements is defined as follows.</p>
 
@@ -2073,7 +2078,7 @@
    class="name">t'</span> are concrete identifiers or values
       (including the placeholder <span class="name">-</span>), then
    their <a>merge</a> exists only if they are equal, otherwise merging
-   is undefined.  </li>
+fails.  </li>
    <li> If <span class="name">x</span> is an existential variable
       and 
    <span class="name">t'</span> is any term (identifier, constant,
@@ -2089,8 +2094,10 @@
       merge is the same as the merge of <span class="name">x</span> and <span class="name">t</span>.</li>
   <li> The <a>merge</a> of two attribute lists  <span
       class="name">attrs1</span> and  <span class="name">attrs2</span>
-   is their union, considered as unordered lists, written  <span
-      class="name">attrs1 &#8746; attrs2</span>. </li>
+   is their union, considered as sets of key-value pairs, written  <span
+      class="name">attrs1 &#8746; attrs2</span>.  Duplicate keys with
+      different  are
+      allowed, but equal key-value pairs are merged.</li>
 </ul>
 
 
@@ -2119,12 +2126,12 @@
 validation, then <span class="math">I</span> is invalid, as explained in <a href="#normalization-validity-equivalence">Section 6</a>.
     </li>
   <li>If merging succeeds with a substitution <span class="math">S</span>, then
-  <span class="math">S</span> is applied to the instance <span class="math">I</span>, yielding result <span class="math">I(S)</span>.</li>
+  <span class="math">S</span> is applied to the instance <span class="math">I</span>, yielding result <span class="math">S(I)</span>.</li>
   </ol>
   
-<p>  In the common case that a particular field of a relation uniquely
-  determines the other fields, we call the uniqueness constraint a
-  <a>key constraint</a>.  Key constraints are written as follows:
+<p>  <em><dfn>Key constraints</dfn></em> are uniqueness constraints
+  that specify that a particular key field of a relation uniquely
+  determines the other parameters.  Key constraints are written as follows:
   </p>
 
   <div
@@ -2261,8 +2268,8 @@
 
 <div class='constraint' id='unique-generation'>
 <p>
-<span class='conditional'>IF</span> <span class="name">wasGeneratedBy(id1; e,_a1,_t1,_attrs1)</span> and <span class="name">wasGeneratedBy(id2; e,_a2,_t2,_attrs2)</span>,
-<span class='conditional'>THEN</span> <span class="name">id1</span> = <span class="name">id2</span>.</p>
+<span class='conditional'>IF</span> <span class="name">wasGeneratedBy(gen1; e,_a1,_t1,_attrs1)</span> and <span class="name">wasGeneratedBy(gen2; e,_a2,_t2,_attrs2)</span>,
+<span class='conditional'>THEN</span> <span class="name">gen1</span> = <span class="name">gen2</span>.</p>
 </div> 
 
 <hr>
@@ -2271,16 +2278,28 @@
 
 <div class='constraint' id='unique-invalidation'>
 <p>
-<span class='conditional'>IF</span> <span class="name">wasInvalidatedBy(id1; e,_a1,_t1,_attrs1)</span> and <span class="name">wasInvalidatedBy(id2; e,_a2,_t2,_attrs2)</span>,
-<span class='conditional'>THEN</span> <span class="name">id1</span> = <span class="name">id2</span>.</p>
+<span class='conditional'>IF</span> <span class="name">wasInvalidatedBy(inv1; e,_a1,_t1,_attrs1)</span> and <span class="name">wasInvalidatedBy(inv2; e,_a2,_t2,_attrs2)</span>,
+<span class='conditional'>THEN</span> <span class="name">inv1</span> = <span class="name">inv2</span>.</p>
 </div> 
 
 
-<p> It follows from the above constraints that the generation and
-invalidation times of
-an entity are unique, if specified.
-<p>
-
+<div class="remark"> <p> It follows from the above uniqueness and key
+  constraints that the generation and invalidation activities and
+  times of an entity are unique, if specified.  However, because we
+  apply the constraints by merging, it is possible for a valid PROV instance
+to contain multiple statements about the same identifiers.
+  <pre>
+wasGeneratedBy(id1; e,a,-,[prov:location="Paris"])
+wasGeneratedBy(-; e,-,-,[color="Red"])
+</pre>
+  When the uniqueness and key constraints are applied, the instance is
+  <a title="normal form">normalized</a> to the following form:
+  <pre>
+wasGeneratedBy(id1; e,a,_t,[prov:location="Paris",color="Red"])
+</pre>
+  where <span class="name">_t</span> is a new existential variable.
+  </p>
+</div>
 
 
 <hr />
@@ -2294,10 +2313,10 @@
 <div class='constraint' id='unique-wasStartedBy'>
 <p>
 <span class='conditional'>IF</span> <span
-  class="name">wasStartedBy(id1; a,_e1,_a1,_t1,_attrs1)</span> and <span
-  class="name">wasStartedBy(id2; a,_e2,_a2,_t2,_attrs2)</span>,  <span
-  class='conditional'>THEN</span> <span class="name">id1</span> = <span
-  class="name">id2</span>.</p>
+  class="name">wasStartedBy(start1; a,_e1,_a1,_t1,_attrs1)</span> and <span
+  class="name">wasStartedBy(start2; a,_e2,_a2,_t2,_attrs2)</span>,  <span
+  class='conditional'>THEN</span> <span class="name">start1</span> = <span
+  class="name">start2</span>.</p>
 </div> 
 
 <hr />
@@ -2306,10 +2325,10 @@
 <div class='constraint' id='unique-wasEndedBy'>
 <p>
 <span class='conditional'>IF</span> <span
-  class="name">wasEndedBy(id1; a,_e1,_a1,_t1,_attrs1)</span> and <span
-  class="name">wasEndedBy(id2; a,_e2,_a2,_t2,_attrs2)</span>,  <span
-  class='conditional'>THEN</span> <span class="name">id1</span> = <span
-  class="name">id2</span>.</p>
+  class="name">wasEndedBy(end1; a,_e1,_a1,_t1,_attrs1)</span> and <span
+  class="name">wasEndedBy(end2; a,_e2,_a2,_t2,_attrs2)</span>,  <span
+  class='conditional'>THEN</span> <span class="name">end1</span> = <span
+  class="name">end2</span>.</p>
 </div> 
 
 
@@ -2324,7 +2343,7 @@
 
 <div class='constraint' id='unique-startTime'>
 <p>
-<span class='conditional'>IF</span> <span class="name">activity(a,t,_t',_attrs)</span> and <span class="name">wasStartedBy(id; a,_e1,_a1,t1,_attrs1)</span>,  <span class='conditional'>THEN</span> <span class="name">t</span>=<span class="name">t1</span>.</p>
+<span class='conditional'>IF</span> <span class="name">activity(a2,t1,_t2,_attrs)</span> and <span class="name">wasStartedBy(_start; a2,_e,_a1,t,_attrs)</span>,  <span class='conditional'>THEN</span> <span class="name">t1</span>=<span class="name">t</span>.</p>
 </div> 
 
 <hr>
@@ -2335,9 +2354,9 @@
 <div class='constraint' id='unique-endTime'>
 <p>
 <span class='conditional'>IF</span> <span
-  class="name">activity(a,_t,t',_attrs)</span> and <span
-  class="name">wasEndedBy(id; a,_e1,_a1,t1,_attrs1)</span>,  <span
-  class='conditional'>THEN</span> <span class="name">t'</span> = <span class="name">t1</span>.</p>
+  class="name">activity(a2,_t1,t2,_attrs)</span> and <span
+  class="name">wasEndedBy(_end; a2,_e,_a1,t,_attrs1)</span>,  <span
+  class='conditional'>THEN</span> <span class="name">t2</span> = <span class="name">t</span>.</p>
 </div> 
 
 <p>
@@ -2388,7 +2407,7 @@
 
 <p>To allow for minimalistic clock assumptions, like Lamport
 [[CLOCK]], PROV relies on a notion of relative ordering of <a title="instantaneous event">instantaneous events</a>,
-without using physical clocks. This specification assumes that a preorder exists between <a title="instantaneous event">instantaneous events</a>.
+without using physical clocks. This specification assumes that a <a>preorder</a> exists between <a title="instantaneous event">instantaneous events</a>.
 </p>
 
 
@@ -2407,7 +2426,7 @@
 <a>transitive</a>.  Moreover, we sometimes consider <em>strict</em> forms of these
 orders: we say <span class="name">e1</span> strictly precedes <span
 class="name">e2</span> to indicate that <span class="name">e1</span>
-happened before <span class="name">e2</span>.  This is a
+happened before <span class="name">e2</span>, but not at the same time.  This is a
 <a>transitive</a> relation. </p>
 
 
@@ -2437,7 +2456,8 @@
   class="name">evt2</span>.  </p></div>
   <p>
   The conclusion of an ordering constraint is either <a>precedes</a>
-  or <a title="precedes">strictly precedes</a>.  To check ordering constraints, we
+  or <a title="precedes">strictly precedes</a>.  One way to check
+  ordering constraints is to 
   generate all <a>precedes</a> and <a title="precedes">strictly
   precedes</a> 
   relationships arising from the ordering constraints to form a directed graph, with edges marked <a>precedes</a> or
@@ -2464,9 +2484,10 @@
 <p>
 This section specifies ordering constraints from the perspective of
 the <a>lifetime</a> of an activity.  An activity starts, then during
-its lifetime uses, generates or invalidates entities, and communicates with  or starts
+its lifetime can use, generate or invalidates entities, communicate
+  with, start, or end
 other
-activities, and finally ends.  The following constraints amount to
+activities, or be associated with agents, and finally it ends.  The following constraints amount to
 checking that all of the events associated with an activity take place
 within the activity's lifetime, and the start and end events mark the
 start and endpoints of its lifetime.
@@ -3101,9 +3122,26 @@
   </div>
 
   <div class="remark">
-    Since <span class="name">wasInfluencedBy</span> is a superproperty of many other
+    <p>Since <span class="name">wasInfluencedBy</span> is a superproperty of many other
     properties, it is excluded from the set of properties whose
-    identifiers are required to be pairwise disjoint.
+    identifiers are required to be pairwise disjoint.  The following
+    example illustrates this observation:
+    <pre>
+wasInfluencedBy(id;e2,e1)
+wasDerivedFrom(id;e2,e1)
+</pre>
+    This satisfies the disjointness constraint.
+    </p>
+    <p>There is, however, no
+    constraint requiring that every influence relationship is
+    accompanied by a more specific relationship having the same
+    identifier.  The following valid example illustrates this observation:
+    <pre>
+wasInfluencedBy(id; e2,e1)
+</pre>
+    This is valid; there is no inferrable information about what kind
+    of influence relates <span class="name">e2</span> and <span class="name">e1</span>, other than its identity.
+    </p>
   </div>
 
    <p id='impossible-object-property-overlap_text'> Identifiers of entities,