--- a/model/prov-constraints.html Thu Jul 19 11:24:28 2012 +0100
+++ b/model/prov-constraints.html Thu Jul 19 13:35:40 2012 +0100
@@ -1407,10 +1407,198 @@
</section>
+
+<section id="type-rules">
+<h2>Type inference rules</h2>
+
+The rules in this section establish the existence of entities, activities, and agents from their use within expressions.
+
+<div class='inference' id="generation-type-inference">
+<p>
+<span class='conditional'>IF</span>
+ <span class='name'>wasGeneratedBy(gen;e,a,t,attrs)</span>
+<span class='conditional'>THEN</span>
+<span class="name">entity(e,[])</span>,
+ <span class="name">activity(a, -,-,[])</span>
+both hold.
+</p>
+ </div>
+
+
+<div class='inference' id="usage-type-inference">
+<p>
+<span class='conditional'>IF</span>
+ <span class='name'>used(u;a,e,t,attrs)</span>
+<span class='conditional'>THEN</span>
+<span class="name">entity(e,[])</span>,
+ <span class="name">activity(a, -,-,[])</span>
+both hold.
+</p>
+ </div>
+
+
+<div class='inference' id="communication-type-inference">
+<p>
+<span class='conditional'>IF</span>
+ <span class='name'>wasInformedBy(id;a2,a1,attrs)</span>
+<span class='conditional'>THEN</span>
+ <span class="name">activity(a1, -,-,[])</span>,
+ <span class="name">activity(a2, -,-,[])</span>
+ both hold.
+</p>
+ </div>
+
+
+<div class='inference' id="start-type-inference">
+<p>
+<span class='conditional'>IF</span>
+ <span class='name'>wasStartedBy(id;a2,e,a1,t,attrs)</span>
+<span class='conditional'>THEN</span>
+ <span class="name">activity(a1, -,-,[])</span>,
+ <span class="name">activity(a2, -,-,[])</span>,
+<span class="name">entity(e,[])</span>
+ hold.
+</p>
+ </div>
+
+
+<div class='inference' id="end-type-inference">
+<p>
+<span class='conditional'>IF</span>
+ <span class='name'>wasEndedBy(id;a2,e,a1,t,attrs)</span>
+<span class='conditional'>THEN</span>
+ <span class="name">activity(a1, -,-,[])</span>,
+ <span class="name">activity(a2, -,-,[])</span>,
+<span class="name">entity(e,[])</span>
+ hold.
+</p>
+ </div>
+
+
+<div class='inference' id="end-type-inference">
+<p>
+<span class='conditional'>IF</span>
+ <span class='name'>wasInvalidatedBy(id;e,a,t,attrs)</span>
+<span class='conditional'>THEN</span>
+ <span class="name">activity(a, -,-,[])</span>,
+<span class="name">entity(e,[])</span>
+ hold.
+</p>
+ </div>
+
+
+
+<div class='inference' id="derivation-type-inference">
+<p>
+<span class='conditional'>IF</span>
+ <span class='name'>wasDerivedFrom(id; e2, e1, a, g2, u1, attrs)</span>
+<span class='conditional'>THEN</span>
+<span class="name">entity(e1,[])</span>,
+<span class="name">entity(e2,[])</span>,
+ <span class="name">activity(a, -,-,[])</span>
+ hold.
+</p>
+ </div>
+
+
+<div class='inference' id="attribution-type-inference">
+<p>
+<span class='conditional'>IF</span>
+ <span class='name'>wasAttributedTo(id;e,ag,attr)</span>
+<span class='conditional'>THEN</span>
+<span class="name">entity(e,[])</span>,
+<span class="name">agent(ag,[])</span>
+ hold.
+</p>
+ </div>
+
+
+<div class='inference' id="association-type-inference">
+<p>
+<span class='conditional'>IF</span>
+ <span class='name'>wasAssociatedWith(id;a,ag,pl,attrs)</span>
+<span class='conditional'>THEN</span>
+ <span class="name">activity(a, -,-,[])</span>,
+<span class="name">agent(ag,[])</span>,
+<span class="name">entity(pl,[prov:type='prov:Plan'])</span>
+ hold.
+</p>
+ </div>
+
+
+<div class='inference' id="delegation-type-inference">
+<p>
+<span class='conditional'>IF</span>
+ <span class='name'>actedOnBehalfOf(id;ag2,ag1,a,attrs)</span>
+<span class='conditional'>THEN</span>
+ <span class="name">activity(a, -,-,[])</span>,
+<span class="name">agent(ag1,[])</span>,
+<span class="name">agent(ag2,[])</span>
+ hold.
+</p>
+ </div>
+
+
+
+<div class='inference' id="alternate-type-inference">
+<p>
+<span class='conditional'>IF</span>
+ <span class='name'>alternateOf(alt1, alt2)</span>
+<span class='conditional'>THEN</span>
+<span class="name">entity(alt1,[])</span>,
+<span class="name">entity(alt2,[])</span>
+ hold.
+</p>
+ </div>
+
+
+<div class='inference' id="specialization-type-inference">
+<p>
+<span class='conditional'>IF</span>
+ <span class='name'>specializationOf(infra, supra)</span>
+<span class='conditional'>THEN</span>
+<span class="name">entity(infra,[])</span>,
+<span class="name">entity(supra,[])</span>
+ hold.
+</p>
+ </div>
+
+
+<div class='inference' id="mention-type-inference">
+<p>
+<span class='conditional'>IF</span>
+ <span class='name'>mentionOf(infra, supra,bundle)</span>
+<span class='conditional'>THEN</span>
+<span class="name">entity(infra,[])</span>,
+<span class="name">entity(supra,[])</span>
+ hold.
+</p>
+ </div>
+
+
+<div class="note">not sure about this one below: the type could as well be EmptyCollection</div>
+<div class='inference' id="membership-type-inference">
+<p>
+<span class='conditional'>IF</span>
+ <span class='name'>hadMember(c, e)</span>
+<span class='conditional'>THEN</span>
+<span class="name">entity(c,[prov:type="prov:Collection"])</span>,
+<span class="name">entity(e,[])</span>
+ hold.
+</p>
+ </div>
+
+
+
+
+
</section>
+</section>
+
+
<section id="constraints">
<h2>Constraints</h2>