* IBBT -> iMinds
authorJames Cheney <jcheney@inf.ed.ac.uk>
Mon, 17 Dec 2012 14:31:32 +0000
changeset 5368 2676962db448
parent 5367 996f0d82117e
child 5370 3afdd5380e0b
* IBBT -> iMinds
model/prov-constraints.html
semantics/prov-sem.html
--- a/model/prov-constraints.html	Mon Dec 17 11:57:36 2012 +0100
+++ b/model/prov-constraints.html	Mon Dec 17 14:31:32 2012 +0000
@@ -888,7 +888,7 @@
 //authors:  ,
           authors:  [
               { name: "Tom De Nies", url: "http://users.ugent.be/~tdenies/",
-			  company: "IBBT - Ghent University"  },
+			  company: "iMinds - Ghent University"  },
          ],
           
           // name of the WG
@@ -5564,10 +5564,10 @@
 Reza B'Far (Oracle Corporation),
 Khalid Belhajjame (University of Manchester),
 James Cheney (University of Edinburgh, School of Informatics),
-Sam Coppens (IBBT),
+Sam Coppens (iMinds),
 David Corsar (University of Aberdeen, Computing Science),
 Stephen Cresswell (The National Archives),
-Tom De Nies (IBBT),
+Tom De Nies (iMinds),
 Helena Deus (DERI Galway at the National University of Ireland, Galway, Ireland),
 Simon Dobson (Invited expert),
 Martin Doerr (Foundation for Research and Technology - Hellas(FORTH)),
--- a/semantics/prov-sem.html	Mon Dec 17 11:57:36 2012 +0100
+++ b/semantics/prov-sem.html	Mon Dec 17 14:31:32 2012 +0000
@@ -1,14 +1,9 @@
-<!DOCTYPE html>
-
+<?xml version="1.0" encoding="UTF-8"?>
 <html><head> 
     <title>Semantics of the Provenance Data Model</title> 
-    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
-    <!-- 
-      === NOTA BENE ===
-      For the three scripts below, if your spec resides on dev.w3 you can check them
-      out in the same tree and use relative links so that they'll work offline,
-     -->
-<!-- PM -->
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></meta> 
+    
+
     <style type="text/css">
       .note { font-size:small; margin-left:50px }
 
@@ -535,12 +530,11 @@
      </style>
 
     <script src="http://dev.w3.org/2009/dap/ReSpec.js/js/respec.js" class="remove"></script>  
-<!--    <script src="http://www.w3.org/Tools/respec/respec-w3c-common" class="remove" async></script> -->
+
 
     <script src="http://www.w3.org/2007/OWL/toggles.js" class="remove"></script> 
     <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" class="remove"></script>
-    <script type="text/javascript" class="remove"
-            src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML">
+    <script type="text/javascript" class="remove" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML">
     </script>
 <script type="text/x-mathjax-config" class="remove">
 MathJax.Hub.Config({
@@ -551,354 +545,13 @@
     },
  });
 </script>
-
-   <script class="remove"> 
-
-
-
-      function updateRules() {
-        var count=1;
-        $('.constraint,.definition,.inference').each(function(index) {
-
-          var myid=$(this).attr('id');
-          var mycount=count++;
-
-          if (myid==undefined) {
-            myid='rule_' + mycount;
-            $(this).attr('id',myid);
-          }
-
-          var myClass=$(this).attr('class');
-
-          var myTitle=capitaliseFirstLetter(myClass) + ' ' + mycount + ' (' + myid + ')';
-          
-          $(this).attr('data-count', mycount)
-                 .attr('data-title',myTitle).prepend($('<div>').addClass('ruleTitle')
-                                                          .append($('<a>').addClass('internalDFN').attr('href','#'+myid).append(myTitle)));
-
-          //console.log( "rule for " + myid + " " + mycount);
-
-        });
-		   
-        $('.constraint-example,.definition-example,.inference-example').each(function(index) {
-
-          var myid=$(this).attr('id');
-          var mycount='NNN';
-
-          if (myid==undefined) {
-            myid='rule_' + mycount;
-            $(this).attr('id',myid);
-          }
-
-          var myClass=$(this).attr('class');
-
-          var myTitle=capitaliseFirstLetter(myClass) + ' ' + mycount + ' (' + myid + ')';
-          
-          $(this).attr('data-count', mycount)
-                 .attr('data-title',myTitle).prepend($('<div>').addClass('ruleTitle')
-                                                          .append($('<a>').addClass('internalDFN').attr('href','#'+myid).append(myTitle)));
-
-          //console.log( "rule for " + myid + " " + mycount);
-
-        });
-      }
-
-          function capitaliseFirstLetter(string)
-          {
-          return string.charAt(0).toUpperCase() + string.slice(1);
-          }
-
-
-      function updateRulesRefs() {
-        $('.rule-ref').each(function(index) {
-
-          myhref=$(this).attr('href');
-
-          //console.log( "example ref for " + myhref);
-
-          mytitle=$(myhref).attr('data-title');
-
-          console.log( "rule ref for " + myhref + " " + mytitle);
-
-          $(this).children('span').replaceWith(function(){return $('<span>').append(mytitle)});
-
-        });
-
-        $('.rule-text').each(function(index) {
-
-          myhref=$(this).attr('href');
-          $(this).attr('href', myhref + '_text');
-
-          //console.log( "example ref for " + myhref);
-
-          mytitle=$(myhref).attr('data-title');
-
-          console.log( "rule ref for " + myhref + " " + mytitle);
-
-          $(this).children('span').replaceWith(function(){return $('<span>').append(mytitle)});
-
-        });
-      }
-      function updateExamples() {
-        var count=1;
-        $('.anexample').each(function(index) {
-
-          var myid=$(this).attr('id');
-          var mycount=count++;
-
-          if (myid==undefined) {
-            myid='example_' + mycount;
-            $(this).attr('id',myid);
-          }
-
-          
-          $(this).attr('data-count', mycount).prepend($('<div>').addClass('anexampleTitle')
-                                                          .append($('<a>').addClass('internalDFN').attr('href','#'+myid).append("Example " + mycount)));
-
-          //console.log( "example for " + myid + " " + mycount);
-
-        });
-      }
-
-
-      function updateExamplesRefs() {
-        $('.anexample-ref').each(function(index) {
-
-          myhref=$(this).attr('href');
-
-              //console.log( "example ref for " + myhref);
-
-          mycount=$(myhref).attr('data-count');
-
-              //console.log( "example ref for " + myhref + " " + mycount);
-
-          $(this).children('span').replaceWith(function(){return $('<span>').append("Example " + mycount)});
-
-        });
-      };
-
-
-        // function to replace figcaption since not allowed by prov rules, and not transformed by respec.js
-      function updateFigCaptions() {
-	var figureCount=1;
-
-        $('figcaption').each(function(index) {
-
-          var myid=$(this).attr('id');
-          var mycount=figureCount++;
-
-          $(this).replaceWith(function(){return $('<span>').addClass('figcaption').attr('data-count', mycount).attr('id',myid).append("Figure " + mycount)
-.append($('<sup>').append($('<a>').addClass('internalDFN').attr('href','#'+myid).append($('<span>').addClass('diamond').append(" &#9674;:")))).append(" ")
-.append($(this).contents())});
-        });
-      }
-
-        // function to replace figure since not allowed by prov rules, and not transformed by respec.js
-      function updateFigures() {
-        $('figure').each(function(index) {
-
-          var myid=$(this).attr('id');
-          var mystyle=$(this).attr('style');
-
-             console.log( "figure " + myid + " " + $(this).contents());
-
-          $(this).replaceWith(function(){
-                                          var aNewElement=$('<span>').addClass('figure').append($(this).contents());
-                                          if (myid) {
-                                            aNewElement.attr('id',myid)
-                                          }                                          
-                                          if (mystyle) {
-                                            aNewElement.attr('style',mystyle)
-                                          }                                          
-                                          return aNewElement });
-
-
-
-        //          $(this).replaceWith(function(){return $('<span>').addClass('figure').attr('id',myid).attr('style',mystyle).append($(this).contents())});
-             console.log( "figure " + myid);
-        });
-      }
-
-
-      function removeDataAttributes() {
-
-
-        $('.anexample').each(function(index) {
-          $(this).removeAttr('data-count');
-        });
-
-        $('caption').each(function(index) {
-          $(this).removeAttr('data-count');
-        });
-
-        $('.figcaption').each(function(index) {
-          $(this).removeAttr('data-count');
-        });
-
-        $('.definition').each(function(index) {
-          $(this).removeAttr('data-count');
-          $(this).removeAttr('data-title');
-        });
-
-        $('.inference').each(function(index) {
-          $(this).removeAttr('data-count');
-          $(this).removeAttr('data-title');
-        });
-
-        $('.constraint').each(function(index) {
-          $(this).removeAttr('data-count');
-          $(this).removeAttr('data-title');
-        });
-
-        $('.inference-example').each(function(index) {
-          $(this).removeAttr('data-count');
-          $(this).removeAttr('data-title');
-        });
-
-        $('.constraint-example').each(function(index) {
-          $(this).removeAttr('data-count');
-          $(this).removeAttr('data-title');
-        });
-
-        $('.definition-example').each(function(index) {
-          $(this).removeAttr('data-count');
-          $(this).removeAttr('data-title');
-        });
-}				    
-
-      $(document).ready(function(){
-        updateRules();
-        updateRulesRefs();
-        updateFigCaptions();
-	if (typeof String.prototype.startsWith != 'function') {
-            String.prototype.startsWith = function (str) {
-					    return this.indexOf(str) == 0;
-					  };
-        }
-	if (typeof String.prototype.contains != 'function') {
-            String.prototype.contains  = function (str) {
-					    return this.indexOf(str) >= 0;
-					  };
-        }
-
-
-
-      });
+  <script class="remove"> 
+//
 </script>
     <script src="../model/provbib.js" class="remove"></script>
 
     <script class="remove"> 
-
-
-      var addExtraReferences = function() {
-          for (var k in extraReferences)
-              berjon.biblio[k] = extraReferences[k];
-      };
-
-      var extraReferences = {
-        "CHR":
-         "Thom Frühwirth. "+
-         "<a        href=\"http://constraint-handling-rules.org/\"><cite>Constraint        Handling Rules</cite></a>."+
-         " Cambridge University Press "+
-         " URL: <a href=\"http://constraint-handling-rules.org/\">http://constraint-handling-rules.org/</a>",
-        "CLOCK":
-         "L. Lamport. "+
-         "<a href=\"http://research.microsoft.com/users/lamport/pubs/time-clocks.pdf\"><cite>Time, clocks, and the ordering of events in a distributed system</cite></a>."+
-         " Communications of the ACM 21 (7): 558–565. 1978. "+
-         "URL: <a href=\"http://research.microsoft.com/users/lamport/pubs/time-clocks.pdf\">http://research.microsoft.com/users/lamport/pubs/time-clocks.pdf</a> " +
-         "DOI: doi:10.1145/359545.359563.",
-        "CSP":
-         "Hoare, C. A. R. "+
-         "<a href=\"http://www.usingcsp.com/cspbook.pdf\"><cite>Communicating Sequential Processes</cite></a>."+
-         "Prentice-Hall. 1985"+
-         "URL: <a href=\"http://www.usingcsp.com/cspbook.pdf\">http://www.usingcsp.com/cspbook.pdf</a>",
-        "DBCONSTRAINTS":
-         " Ronald Fagin; Phokion G. Kolaitis; Renée J. Miller; Lucian Popa. "+
-         " <a href=\"http://dx.doi.org/10.1016/j.tcs.2004.10.033\"><cite>Data        exchange: Semantics and query answering</cite></a>.  Theoretical computer science 336(1):89-124 "+
-         "  Elsevier "+
-         " URL: <a href=\"http://dx.doi.org/10.1016/j.tcs.2004.10.033\">http://dx.doi.org/10.1016/j.tcs.2004.10.033</a>",
-	    "Logic":
-          "W. E. Johnson. "+
-          "<a href=\"http://www.ditext.com/johnson/intro-3.html\"><cite>Logic: Part III</cite></a>."+
-          "1924. "+
-          "URL: <a href=\"http://www.ditext.com/johnson/intro-3.html\">http://www.ditext.com/johnson/intro-3.html</a>",
-
-         "RDF":
-          "Graham Klyne and Jeremy J. Carroll (eds.) "+
-          "<a href=\"http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/\"><cite>Resource Description Framework (RDF): Concepts and Abstract Syntax</cite></a>. "+
-          "2004, W3C Recommendation. "+
-          "URL: <a href=\"http://www.w3.org/TR/2004/REC-rdf-concepts-20040210//\">http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/</a>",
-};
-      var respecConfig = {
-          // specification status (e.g. WD, LCWD, NOTE, etc.). If in doubt use ED.
-          specStatus:           "ED",
-          
-          // the specification's short name, as in http://www.w3.org/TR/short-name/
-          shortName:            "prov-sem",
- 
-          // if your specification has a subtitle that goes below the main
-          // formal title, define it here
-          //subtitle : "<a href=\"diff-c.html\">Changes</a> since Last Call Working Draft  (LC)",
-
-
-
-          // if you wish the publication date to be other than today, set this
-         // publishDate:  "",
-
-          // if the specification's copyright date is a range of years, specify
-          // the start date here:
-          copyrightStart: "2012",
- 
-          // if there is a previously published draft, uncomment this and set its YYYY-MM-DD date
-          // and its maturity status
-          
-          // if there a publicly available Editor's Draft, this is the link
-          edDraftURI:           "http://dvcs.w3.org/hg/prov/raw-file/default/semantics/prov-sem.html",
-
-
-
- 
-          // if this is a LCWD, uncomment and set the end of its review period
-
-          // if you want to have extra CSS, append them to this list
-          // it is recommended that the respec.css stylesheet be kept
-          //extraCSS:             ["http://dev.w3.org/2009/dap/ReSpec.js/css/respec.css", "./extra.css"],
- 
-          // editors, add as many as you like
-          // only "name" is required
-          editors:  [
-              { name: "James Cheney", url:
-          "http://homepages.inf.ed.ac.uk/jcheney", company:
-          "University of Edinburgh" },
-         ],
- 
-          // authors, add as many as you like. 
-          // This is optional, uncomment if you have authors as well as editors.
-          // only "name" is required. Same format as editors.
- 
-//authors:  [] ,
-         
-          // name of the WG
-          wg:           "Provenance Working Group",
-          
-          // URI of the public WG page
-          wgURI:        "http://www.w3.org/2011/prov/",
-          
-          // name (with the @w3c.org) of the public mailing to which comments are due
-          wgPublicList: "public-prov-comments",
-          
-          // URI of the patent status for this WG, for Rec-track documents
-          // !!!! IMPORTANT !!!!
-          // This is important for Rec-track documents, do not copy a patent URI from a random
-          // document unless you know what you're doing. If in doubt ask your friendly neighbourhood
-          // Team Contact.
-          wgPatentURI:  "http://www.w3.org/2004/01/pp-impl/46974/status",
-
-          // Add extraReferences to bibliography database
-          preProcess: [addExtraReferences, addProvReferences],
-
-          postProcess: [updateFigures, removeDataAttributes, checkLinksToW3CReports],
-      };
+//
     </script> 
   </head> 
   <body> 
@@ -927,8 +580,7 @@
 <li> <a href="http://www.w3.org/TR/2012/CR-prov-o-20121211/">PROV-O</a> (Recommendation), the PROV ontology, an OWL2 ontology allowing the mapping of PROV to RDF [[!PROV-O]];</li>
 <li> <a href="http://www.w3.org/TR/2012/CR-prov-dm-20121211/">PROV-DM</a> (Recommendation), the PROV data model for provenance [[!PROV-DM]];</li>
 <li> <a href="http://www.w3.org/TR/2012/CR-prov-n-20121211/">PROV-N</a> (Recommendation), a notation for provenance aimed at human consumption [[!PROV-N]];</li>
-<li> <a
-href="http://www.w3.org/TR/2012/CR-prov-constraints-20121211/">PROV-CONSTRAINTS</a>
+<li> <a href="http://www.w3.org/TR/2012/CR-prov-constraints-20121211/">PROV-CONSTRAINTS</a>
 (Recommendation), a set of constraints applying to the PROV data model;</li>
 <li> <a href="http://www.w3.org/TR/2012/WD-prov-aq-20120619/">PROV-AQ</a> (Note), the mechanisms for accessing and querying provenance [[PROV-AQ]]; </li>
 <li> <a href="http://www.w3.org/TR/2012/WD-prov-xml-20121211/">PROV-XML</a> (Note),  an XML schema for the PROV data model [[PROV-XML]].</li>
@@ -949,8 +601,7 @@
 
 
     <section id="introduction"> 
-      <h2>Introduction<br>
-</h2> 
+      <h2>Introduction</h2> 
 
 <p>
 Provenance is a record that describes the people, institutions, entities, and activities involved in producing, influencing, or delivering a piece of data or a thing.
@@ -972,8 +623,7 @@
 
 <p>In this document, logical formulas contain variables written as
     lower-case identifiers.  Some of these variables are written
-    beginning with the underscore character <span
-    class="name">_</span>, by convention, to indicate that they
+    beginning with the underscore character <span class="name">_</span>, by convention, to indicate that they
     appear only once in the formula.  Such variables are
     provided merely as an aid to the reader.  </p>
 
@@ -1025,27 +675,46 @@
 </section>
 
 
+<section id="test2">
+<h2> BlahTeXML text </h2>
+
+<div xmlns:b="http://gva.noekeon.org/blahtexml">
+  <span><math xmlns="http://www.w3.org/1998/Math/MathML"></math></span>
+  <span><math xmlns="http://www.w3.org/1998/Math/MathML"></math></span>
+  <span><math xmlns="http://www.w3.org/1998/Math/MathML"></math></span>
+  <span><math xmlns="http://www.w3.org/1998/Math/MathML"></math></span>
+  <span><math xmlns="http://www.w3.org/1998/Math/MathML"></math></span>
+  <span><math xmlns="http://www.w3.org/1998/Math/MathML"></math></span>
+  <span><math xmlns="http://www.w3.org/1998/Math/MathML"></math></span>
+  <span><math xmlns="http://www.w3.org/1998/Math/MathML"><mo lspace="0" rspace="0">∀</mo><mi>i</mi><mspace width="0"></mspace><mi>d</mi><mo lspace="0" rspace="0.167em">,</mo><msub><mi>a</mi><mn>2</mn></msub><mo lspace="0" rspace="0.167em">,</mo><msub><mi>a</mi><mn>1</mn></msub><mo lspace="0" rspace="0.167em">,</mo><mi>a</mi><mspace width="0"></mspace><mi>t</mi><mspace width="0"></mspace><mi>t</mi><mspace width="0"></mspace><mi>r</mi><mspace width="0"></mspace><mi>s</mi><mo lspace="0" rspace="0.333em">.</mo><mi>w</mi><mspace width="0"></mspace><mi>a</mi><mspace width="0"></mspace><mi>s</mi><mspace width="0"></mspace><mi>I</mi><mspace width="0"></mspace><mi>n</mi><mspace width="0"></mspace><mi>f</mi><mspace width="0"></mspace><mi>o</mi><mspace width="0"></mspace><mi>r</mi><mspace width="0"></mspace><mi>m</mi><mspace width="0"></mspace><mi>e</mi><mspace width="0"></mspace><mi>d</mi><mspace width="0"></mspace><mi>B</mi><mspace width="0"></mspace><mi>y</mi><mo lspace="0" rspace="0" stretchy="false">(</mo><mi>i</mi><mspace width="0"></mspace><mi>d</mi><mo lspace="0" rspace="0.167em">,</mo><msub><mi>a</mi><mn>2</mn></msub><mo lspace="0" rspace="0.167em">,</mo><msub><mi>a</mi><mn>1</mn></msub><mo lspace="0" rspace="0.167em">,</mo><mi>a</mi><mspace width="0"></mspace><mi>t</mi><mspace width="0"></mspace><mi>t</mi><mspace width="0"></mspace><mi>r</mi><mspace width="0"></mspace><mi>s</mi><mo lspace="0" rspace="0.278em" stretchy="false">)</mo><mo lspace="0" rspace="0.278em">⇒</mo><mo lspace="0" rspace="0">∃</mo><mi>e</mi><mo lspace="0" rspace="0.167em">,</mo><mi>g</mi><mspace width="0"></mspace><mi>e</mi><mspace width="0"></mspace><mi>n</mi><mo lspace="0" rspace="0.167em">,</mo><msub><mi>t</mi><mn>1</mn></msub><mo lspace="0" rspace="0.167em">,</mo><mi>u</mi><mspace width="0"></mspace><mi>s</mi><mspace width="0"></mspace><mi>e</mi><mo lspace="0" rspace="0.167em">,</mo><msub><mi>t</mi><mn>2</mn></msub><mo lspace="0" rspace="0.333em">.</mo><mi>w</mi><mspace width="0"></mspace><mi>a</mi><mspace width="0"></mspace><mi>s</mi><mspace width="0"></mspace><mi>G</mi><mspace width="0"></mspace><mi>e</mi><mspace width="0"></mspace><mi>n</mi><mspace width="0"></mspace><mi>e</mi><mspace width="0"></mspace><mi>r</mi><mspace width="0"></mspace><mi>a</mi><mspace width="0"></mspace><mi>t</mi><mspace width="0"></mspace><mi>e</mi><mspace width="0"></mspace><mi>d</mi><mspace width="0"></mspace><mi>B</mi><mspace width="0"></mspace><mi>y</mi><mo lspace="0" rspace="0" stretchy="false">(</mo><mi>g</mi><mspace width="0"></mspace><mi>e</mi><mspace width="0"></mspace><mi>n</mi><mo lspace="0" rspace="0.167em">,</mo><mi>e</mi><mo lspace="0" rspace="0.167em">,</mo><msub><mi>a</mi><mn>1</mn></msub><mo lspace="0" rspace="0.167em">,</mo><msub><mi>t</mi><mn>1</mn></msub><mo lspace="0" rspace="0.167em">,</mo><mo lspace="0" rspace="0" stretchy="false">[</mo><mo lspace="0" rspace="0" stretchy="false">]</mo><mo lspace="0" rspace="0.222em" stretchy="false">)</mo><mo lspace="0" rspace="0.222em">∧</mo><mi>u</mi><mspace width="0"></mspace><mi>s</mi><mspace width="0"></mspace><mi>e</mi><mspace width="0"></mspace><mi>d</mi><mo lspace="0" rspace="0" stretchy="false">(</mo><mi>u</mi><mspace width="0"></mspace><mi>s</mi><mspace width="0"></mspace><mi>e</mi><mo lspace="0" rspace="0.167em">,</mo><msub><mi>a</mi><mn>2</mn></msub><mo lspace="0" rspace="0.167em">,</mo><mi>e</mi><mo lspace="0" rspace="0.167em">,</mo><msub><mi>t</mi><mn>2</mn></msub><mo lspace="0" rspace="0.167em">,</mo><mo lspace="0" rspace="0" stretchy="false">[</mo><mo lspace="0" rspace="0" stretchy="false">]</mo><mo lspace="0" rspace="0" stretchy="false">)</mo></math></span>
+  <span><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><mstyle displaystyle="true"><mi>exp</mi><mo lspace="0" rspace="0" stretchy="false">(</mo><mo lspace="0" rspace="0">-</mo><mi>γ</mi><mspace width="0"></mspace><mi>x</mi><mo lspace="0" rspace="0" stretchy="false">)</mo></mstyle></math></span>
+  When <span><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>a</mi><mo lspace="0.278em" rspace="0.278em">≠</mo><mn>0</mn></math></span>, there are two solutions to <span><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>a</mi><mspace width="0"></mspace><msup><mi>x</mi><mn>2</mn></msup><mo lspace="0.222em" rspace="0.222em">+</mo><mi>b</mi><mspace width="0"></mspace><mi>x</mi><mo lspace="0.222em" rspace="0.222em">+</mo><mi>c</mi><mo lspace="0.278em" rspace="0.278em">=</mo><mn>0</mn></math></span> and they are
+<span><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><mstyle displaystyle="true"><mi>x</mi><mo lspace="0.278em" rspace="0.278em">=</mo><mfrac><mrow><mo lspace="0" rspace="0">-</mo><mi>b</mi><mo lspace="0.222em" rspace="0.222em">±</mo><msqrt><msup><mi>b</mi><mn>2</mn></msup><mo lspace="0.222em" rspace="0.222em">-</mo><mn>4</mn><mi>a</mi><mspace width="0"></mspace><mi>c</mi></msqrt></mrow><mrow><mn>2</mn><mi>a</mi></mrow></mfrac></mstyle></math></span>.
+</div>
+
+</section>
+
 <section id="inferences">
 <h2>Inferences</h2>
 
-<div class="inference" id="communication-generation-use-inference"><span class="math">&#8704; id,a<sub>2</sub>,a<sub>1</sub>,attrs. wasInformedBy(id,a<sub>2</sub>,a<sub>1</sub>,attrs) &#10233; &#8707; e,gen,t<sub>1</sub>,use,t<sub>2</sub>. wasGeneratedBy(gen,e,a<sub>1</sub>,t<sub>1</sub>,[]) &#8743; used(use,a<sub>2</sub>,e,t<sub>2</sub>,[])</span></div>
-<div class="inference" id="generation-use-communication-inference"><span class="math">&#8704; gen,a<sub>1</sub>,t<sub>1</sub>,attrs<sub>1</sub>,id<sub>2</sub>,a<sub>2</sub>,t<sub>2</sub>,attrs<sub>2</sub>. wasGeneratedBy(gen,e,a<sub>1</sub>,t<sub>1</sub>,attrs<sub>1</sub>) &#8743; used(id<sub>2</sub>,a<sub>2</sub>,e,t<sub>2</sub>,attrs<sub>2</sub>) &#10233; &#8707; id. wasInformedBy(id,a<sub>2</sub>,a<sub>1</sub>,[])</span></div>
-<div class="inference" id="entity-generation-invalidation-inference"><span class="math">&#8704; gen,e,a<sub>1</sub>,t<sub>1</sub>,attrs<sub>1</sub>,id<sub>2</sub>,a<sub>2</sub>,t<sub>2</sub>,attrs<sub>2</sub>. wasGeneratedBy(gen,e,a<sub>1</sub>,t<sub>1</sub>,attrs<sub>1</sub>) &#8743; used(id<sub>2</sub>,a<sub>2</sub>,e,t<sub>2</sub>,attrs<sub>2</sub>) &#10233; &#8707; id. wasInformedBy(id,a<sub>2</sub>,a<sub>1</sub>,[])</span></div>
-<div class="inference" id="activity-start-end-inference"><span class="math">&#8704; a,t<sub>1</sub>,t<sub>2</sub>,attrs. activity(a,t<sub>1</sub>,t<sub>2</sub>,attrs) &#10233; &#8707; start,e<sub>1</sub>,a<sub>1</sub>,end,a<sub>2</sub>,e<sub>2</sub>. wasStartedBy(start,a,e<sub>1</sub>,a<sub>1</sub>,t<sub>1</sub>,[]) &#8743; wasEndedBy(end,a,e<sub>2</sub>,a<sub>2</sub>,t<sub>2</sub>,[])</span></div>
-<div class="inference" id="wasStartedBy-inference"><span class="math">&#8704; id,a,e<sub>1</sub>,a<sub>1</sub>,t,attrs. wasStartedBy(id,a,e<sub>1</sub>,a<sub>1</sub>,t,attrs) &#10233; &#8707; gen,t<sub>1</sub>. wasGeneratedBy(gen,e<sub>1</sub>,a<sub>1</sub>,t<sub>1</sub>,[])</span></div>
-<div class="inference" id="wasEndedBy-inference"><span class="math">&#8704; id,a,e<sub>1</sub>,a<sub>1</sub>,t,attrs. wasEndedBy(id,a,e<sub>1</sub>,a<sub>1</sub>,t,attrs) &#10233; &#8707; gen,t<sub>1</sub>. wasGeneratedBy(gen,e<sub>1</sub>,a<sub>1</sub>,t<sub>1</sub>,[])</span></div>
-<div class="inference" id="derivation-generation-use-inference">In this inference, none of <em>a</em>, <em>gen<sub>2</sub></em> or <em>use_1</em> can be placeholders -.<span class="math">&#8704; id,e<sub>2</sub>,e<sub>1</sub>,a,gen<sub>2</sub>,use<sub>1</sub>,attrs. wasDerivedFrom(id,e<sub>2</sub>,e<sub>1</sub>,a,gen<sub>2</sub>,use<sub>1</sub>,attrs) &#10233; &#8707; s,t<sub>1</sub>,t<sub>2</sub>. used(use<sub>1</sub>,a,e<sub>1</sub>,t<sub>1</sub>,[]) &#8743; wasGeneratedBy(gen<sub>2</sub>,e<sub>2</sub>,a,t<sub>2</sub>,[])</span></div>
-<div class="inference" id="revision-is-alternate-inference">In this inference, any of <em>a</em>, <em>g</em> or <em>u</em> may be placeholders.<span class="math">&#8704; id,e<sub>1</sub>,e<sub>2</sub>,a,g,u. wasDerivedFrom(id,e<sub>2</sub>,e<sub>1</sub>,a,g,u,.(prov:type = prov:Revision,[])) &#10233; alternateOf(e<sub>2</sub>,e<sub>1</sub>)</span></div>
-<div class="inference" id="attribution-inference"><span class="math">&#8704; att,e,ag,attrs. wasAttributedTo(att,e,ag,attrs) &#10233; &#8707; a,t,gen,assoc,pl. wasGeneratedBy(gen,e,a,t,[]) &#8743; wasAssociatedWith(assoc,a,ag,pl,[])</span></div>
-<div class="inference" id="delegation-inference"><span class="math">&#8704; id,ag<sub>1</sub>,ag<sub>2</sub>,a,attrs. actedOnBehalfOf(id,ag<sub>1</sub>,ag<sub>2</sub>,a,attrs) &#10233; &#8707; id<sub>1</sub>,pl<sub>1</sub>,id<sub>2</sub>,pl<sub>2</sub>. wasAssociatedWith(id<sub>1</sub>,a,ag<sub>1</sub>,pl<sub>1</sub>,[]) &#8743; wasAssociatedWith(id<sub>2</sub>,a,ag<sub>2</sub>,pl<sub>2</sub>,[])</span></div>
-<div class="inference" id="influence-inference"><ol><li><span class="math">&#8704; id,e,a,t,attrs. wasGeneratedBy(id,e,a,t,attrs) &#10233; wasInfluencedBy(id,e,a,attrs)</span></li><li><span class="math">&#8704; id,a,e,t,attrs. used(id,a,e,t,attrs) &#10233; wasInfluencedBy(id,a,e,attrs)</span></li><li><span class="math">&#8704; id,a<sub>2</sub>,a<sub>1</sub>,attrs. wasInformedBy(id,a<sub>2</sub>,a<sub>1</sub>,attrs) &#10233; wasInfluencedBy(id,a<sub>2</sub>,a<sub>1</sub>,attrs)</span></li><li><span class="math">&#8704; id,a<sub>2</sub>,e,a<sub>1</sub>,t,attrs. wasStartedBy(id,a<sub>2</sub>,e,a<sub>1</sub>,t,attrs) &#10233; wasInfluencedBy(id,a<sub>2</sub>,e,attrs)</span></li><li><span class="math">&#8704; id,a<sub>2</sub>,e,a<sub>1</sub>,t,attrs. wasEndedBy(id,a<sub>2</sub>,e,a<sub>1</sub>,t,attrs) &#10233; wasInfluencedBy(id,a<sub>2</sub>,e,attrs)</span></li><li><span class="math">&#8704; id,e,a,t,attrs. wasInvalidatedBy(id,e,a,t,attrs) &#10233; wasInfluencedBy(id,e,a,attrs)</span></li><li><span class="math">&#8704; id,e<sub>2</sub>,e<sub>1</sub>,a,g,u,attrs. wasDerivedFrom(id,e<sub>2</sub>,e<sub>1</sub>,a,g,u,attrs) &#10233; wasInfluencedBy(id,e<sub>2</sub>,e<sub>1</sub>,attrs)</span></li><li>In this rule, <em>a</em>, <em>g</em>, <em>u</em> may be placeholders -.<span class="math">&#8704; id,e,ag,attrs. wasAttributedTo(id,e,ag,attrs) &#10233; wasInfluencedBy(id,e,ag,attrs)</span></li><li>In this rule, <em>pl</em> may be a placeholder -.<span class="math">&#8704; id,a,ag,pl,attrs. wasAssociatedWith(id,a,ag,pl,attrs) &#10233; wasInfluencedBy(id,a,ag,attrs)</span></li><li><span class="math">&#8704; id,ag<sub>2</sub>,ag<sub>1</sub>,a,attrs. actedOnBehalfOf(id,ag<sub>2</sub>,ag<sub>1</sub>,a,attrs) &#10233; wasInfluencedBy(id,ag<sub>2</sub>,ag<sub>1</sub>,attrs)</span></li></ol></div>
-<div class="inference" id="alternate-reflexive"><span class="math">&#8704; e. entity(e) &#10233; alternateOf(e,e)</span></div>
-<div class="inference" id="alternate-transitive"><span class="math">&#8704; e<sub>1</sub>,e<sub>2</sub>,e<sub>3</sub>. alternateOf(e<sub>1</sub>,e<sub>2</sub>) &#8743; alternateOf(e<sub>2</sub>,e<sub>3</sub>) &#10233; alternateOf(e<sub>1</sub>,e<sub>3</sub>)</span></div>
-<div class="inference" id="alternate-symmetric"><span class="math">&#8704; e<sub>1</sub>,e<sub>2</sub>. alternateOf(e<sub>1</sub>,e<sub>2</sub>) &#10233; alternateOf(e<sub>2</sub>,e<sub>1</sub>)</span></div>
-<div class="inference" id="specialization-transitive"><span class="math">&#8704; e<sub>1</sub>,e<sub>2</sub>,e<sub>3</sub>. specializationOf(e<sub>1</sub>,e<sub>2</sub>) &#8743; specializationOf(e<sub>2</sub>,e<sub>3</sub>) &#10233; specializationOf(e<sub>1</sub>,e<sub>3</sub>)</span></div>
-<div class="inference" id="specialization-alternate-inference"><span class="math">&#8704; e<sub>1</sub>,e<sub>2</sub>. specializationOf(e<sub>1</sub>,e<sub>2</sub>) &#10233; alternateOf(e<sub>1</sub>,e<sub>2</sub>)</span></div>
-<div class="inference" id="specialization-attributes-inference"><span class="math">&#8704; e<sub>1</sub>,attrs,e<sub>2</sub>. entity(e<sub>1</sub>,attrs) &#8743; specializationOf(e<sub>2</sub>,e<sub>1</sub>) &#10233; entity(e<sub>2</sub>,attrs)</span></div>
-<div class="constraint" id="membership-empty-collection"><span class="math">&#8704; c,e. hasMember(c,e) &#8743; prov:EmptyCollection \in typeOf(c) &#10233; False</span></div>
+<div class="inference" id="communication-generation-use-inference"><span class="math">∀ id,a<sub>2</sub>,a<sub>1</sub>,attrs. wasInformedBy(id,a<sub>2</sub>,a<sub>1</sub>,attrs) ⟹ ∃ e,gen,t<sub>1</sub>,use,t<sub>2</sub>. wasGeneratedBy(gen,e,a<sub>1</sub>,t<sub>1</sub>,[]) ∧ used(use,a<sub>2</sub>,e,t<sub>2</sub>,[])</span></div>
+<div class="inference" id="generation-use-communication-inference"><span class="math">∀ gen,a<sub>1</sub>,t<sub>1</sub>,attrs<sub>1</sub>,id<sub>2</sub>,a<sub>2</sub>,t<sub>2</sub>,attrs<sub>2</sub>. wasGeneratedBy(gen,e,a<sub>1</sub>,t<sub>1</sub>,attrs<sub>1</sub>) ∧ used(id<sub>2</sub>,a<sub>2</sub>,e,t<sub>2</sub>,attrs<sub>2</sub>) ⟹ ∃ id. wasInformedBy(id,a<sub>2</sub>,a<sub>1</sub>,[])</span></div>
+<div class="inference" id="entity-generation-invalidation-inference"><span class="math">∀ gen,e,a<sub>1</sub>,t<sub>1</sub>,attrs<sub>1</sub>,id<sub>2</sub>,a<sub>2</sub>,t<sub>2</sub>,attrs<sub>2</sub>. wasGeneratedBy(gen,e,a<sub>1</sub>,t<sub>1</sub>,attrs<sub>1</sub>) ∧ used(id<sub>2</sub>,a<sub>2</sub>,e,t<sub>2</sub>,attrs<sub>2</sub>) ⟹ ∃ id. wasInformedBy(id,a<sub>2</sub>,a<sub>1</sub>,[])</span></div>
+<div class="inference" id="activity-start-end-inference"><span class="math">∀ a,t<sub>1</sub>,t<sub>2</sub>,attrs. activity(a,t<sub>1</sub>,t<sub>2</sub>,attrs) ⟹ ∃ start,e<sub>1</sub>,a<sub>1</sub>,end,a<sub>2</sub>,e<sub>2</sub>. wasStartedBy(start,a,e<sub>1</sub>,a<sub>1</sub>,t<sub>1</sub>,[]) ∧ wasEndedBy(end,a,e<sub>2</sub>,a<sub>2</sub>,t<sub>2</sub>,[])</span></div>
+<div class="inference" id="wasStartedBy-inference"><span class="math">∀ id,a,e<sub>1</sub>,a<sub>1</sub>,t,attrs. wasStartedBy(id,a,e<sub>1</sub>,a<sub>1</sub>,t,attrs) ⟹ ∃ gen,t<sub>1</sub>. wasGeneratedBy(gen,e<sub>1</sub>,a<sub>1</sub>,t<sub>1</sub>,[])</span></div>
+<div class="inference" id="wasEndedBy-inference"><span class="math">∀ id,a,e<sub>1</sub>,a<sub>1</sub>,t,attrs. wasEndedBy(id,a,e<sub>1</sub>,a<sub>1</sub>,t,attrs) ⟹ ∃ gen,t<sub>1</sub>. wasGeneratedBy(gen,e<sub>1</sub>,a<sub>1</sub>,t<sub>1</sub>,[])</span></div>
+<div class="inference" id="derivation-generation-use-inference">In this inference, none of <em>a</em>, <em>gen<sub>2</sub></em> or <em>use_1</em> can be placeholders -.<span class="math">∀ id,e<sub>2</sub>,e<sub>1</sub>,a,gen<sub>2</sub>,use<sub>1</sub>,attrs. wasDerivedFrom(id,e<sub>2</sub>,e<sub>1</sub>,a,gen<sub>2</sub>,use<sub>1</sub>,attrs) ⟹ ∃ s,t<sub>1</sub>,t<sub>2</sub>. used(use<sub>1</sub>,a,e<sub>1</sub>,t<sub>1</sub>,[]) ∧ wasGeneratedBy(gen<sub>2</sub>,e<sub>2</sub>,a,t<sub>2</sub>,[])</span></div>
+<div class="inference" id="revision-is-alternate-inference">In this inference, any of <em>a</em>, <em>g</em> or <em>u</em> may be placeholders.<span class="math">∀ id,e<sub>1</sub>,e<sub>2</sub>,a,g,u. wasDerivedFrom(id,e<sub>2</sub>,e<sub>1</sub>,a,g,u,.(prov:type = prov:Revision,[])) ⟹ alternateOf(e<sub>2</sub>,e<sub>1</sub>)</span></div>
+<div class="inference" id="attribution-inference"><span class="math">∀ att,e,ag,attrs. wasAttributedTo(att,e,ag,attrs) ⟹ ∃ a,t,gen,assoc,pl. wasGeneratedBy(gen,e,a,t,[]) ∧ wasAssociatedWith(assoc,a,ag,pl,[])</span></div>
+<div class="inference" id="delegation-inference"><span class="math">∀ id,ag<sub>1</sub>,ag<sub>2</sub>,a,attrs. actedOnBehalfOf(id,ag<sub>1</sub>,ag<sub>2</sub>,a,attrs) ⟹ ∃ id<sub>1</sub>,pl<sub>1</sub>,id<sub>2</sub>,pl<sub>2</sub>. wasAssociatedWith(id<sub>1</sub>,a,ag<sub>1</sub>,pl<sub>1</sub>,[]) ∧ wasAssociatedWith(id<sub>2</sub>,a,ag<sub>2</sub>,pl<sub>2</sub>,[])</span></div>
+<div class="inference" id="influence-inference"><ol><li><span class="math">∀ id,e,a,t,attrs. wasGeneratedBy(id,e,a,t,attrs) ⟹ wasInfluencedBy(id,e,a,attrs)</span></li><li><span class="math">∀ id,a,e,t,attrs. used(id,a,e,t,attrs) ⟹ wasInfluencedBy(id,a,e,attrs)</span></li><li><span class="math">∀ id,a<sub>2</sub>,a<sub>1</sub>,attrs. wasInformedBy(id,a<sub>2</sub>,a<sub>1</sub>,attrs) ⟹ wasInfluencedBy(id,a<sub>2</sub>,a<sub>1</sub>,attrs)</span></li><li><span class="math">∀ id,a<sub>2</sub>,e,a<sub>1</sub>,t,attrs. wasStartedBy(id,a<sub>2</sub>,e,a<sub>1</sub>,t,attrs) ⟹ wasInfluencedBy(id,a<sub>2</sub>,e,attrs)</span></li><li><span class="math">∀ id,a<sub>2</sub>,e,a<sub>1</sub>,t,attrs. wasEndedBy(id,a<sub>2</sub>,e,a<sub>1</sub>,t,attrs) ⟹ wasInfluencedBy(id,a<sub>2</sub>,e,attrs)</span></li><li><span class="math">∀ id,e,a,t,attrs. wasInvalidatedBy(id,e,a,t,attrs) ⟹ wasInfluencedBy(id,e,a,attrs)</span></li><li><span class="math">∀ id,e<sub>2</sub>,e<sub>1</sub>,a,g,u,attrs. wasDerivedFrom(id,e<sub>2</sub>,e<sub>1</sub>,a,g,u,attrs) ⟹ wasInfluencedBy(id,e<sub>2</sub>,e<sub>1</sub>,attrs)</span></li><li>In this rule, <em>a</em>, <em>g</em>, <em>u</em> may be placeholders -.<span class="math">∀ id,e,ag,attrs. wasAttributedTo(id,e,ag,attrs) ⟹ wasInfluencedBy(id,e,ag,attrs)</span></li><li>In this rule, <em>pl</em> may be a placeholder -.<span class="math">∀ id,a,ag,pl,attrs. wasAssociatedWith(id,a,ag,pl,attrs) ⟹ wasInfluencedBy(id,a,ag,attrs)</span></li><li><span class="math">∀ id,ag<sub>2</sub>,ag<sub>1</sub>,a,attrs. actedOnBehalfOf(id,ag<sub>2</sub>,ag<sub>1</sub>,a,attrs) ⟹ wasInfluencedBy(id,ag<sub>2</sub>,ag<sub>1</sub>,attrs)</span></li></ol></div>
+<div class="inference" id="alternate-reflexive"><span class="math">∀ e. entity(e) ⟹ alternateOf(e,e)</span></div>
+<div class="inference" id="alternate-transitive"><span class="math">∀ e<sub>1</sub>,e<sub>2</sub>,e<sub>3</sub>. alternateOf(e<sub>1</sub>,e<sub>2</sub>) ∧ alternateOf(e<sub>2</sub>,e<sub>3</sub>) ⟹ alternateOf(e<sub>1</sub>,e<sub>3</sub>)</span></div>
+<div class="inference" id="alternate-symmetric"><span class="math">∀ e<sub>1</sub>,e<sub>2</sub>. alternateOf(e<sub>1</sub>,e<sub>2</sub>) ⟹ alternateOf(e<sub>2</sub>,e<sub>1</sub>)</span></div>
+<div class="inference" id="specialization-transitive"><span class="math">∀ e<sub>1</sub>,e<sub>2</sub>,e<sub>3</sub>. specializationOf(e<sub>1</sub>,e<sub>2</sub>) ∧ specializationOf(e<sub>2</sub>,e<sub>3</sub>) ⟹ specializationOf(e<sub>1</sub>,e<sub>3</sub>)</span></div>
+<div class="inference" id="specialization-alternate-inference"><span class="math">∀ e<sub>1</sub>,e<sub>2</sub>. specializationOf(e<sub>1</sub>,e<sub>2</sub>) ⟹ alternateOf(e<sub>1</sub>,e<sub>2</sub>)</span></div>
+<div class="inference" id="specialization-attributes-inference"><span class="math">∀ e<sub>1</sub>,attrs,e<sub>2</sub>. entity(e<sub>1</sub>,attrs) ∧ specializationOf(e<sub>2</sub>,e<sub>1</sub>) ⟹ entity(e<sub>2</sub>,attrs)</span></div>
+<div class="constraint" id="membership-empty-collection"><span class="math">∀ c,e. hasMember(c,e) ∧ prov:EmptyCollection \in typeOf(c) ⟹ False</span></div>
 
 </section>
 
@@ -1119,69 +788,4 @@
 </p>
     </section> 
 
- </body></html>
-
-<!--  LocalWords:  px DM RL RDF AQ SEM SOTD Definitional wasInformedBy attrs ag
- -->
-<!--  LocalWords:  wasGeneratedBy wasStartedBy gAttr sAttr wasAttributedTo attr
- -->
-<!--  LocalWords:  wasAssociatedWith dAttrs gAttrs wasDerivedFrom uAttrs eAttrs
- -->
-<!--  LocalWords:  wasRevisionOf specializationOf wasQuotedFrom Traceability WD
- -->
-<!--  LocalWords:  tracedTo aAttr actedOnBehalfOf rAttr traceability TODO xsd
- -->
-<!--  LocalWords:  alternateOf wasEndedBy Lamport's timeline subfigure memberOf
- -->
-<!--  LocalWords:  wasStartedByAgent wasAttributedWith derivedByInsertionFrom
- -->
-<!--  LocalWords:  QName derivedByRemovalFrom EmptyCollection wasVersionOf dm
- -->
-<!--  LocalWords:  RecsWD formedness workflow ness operability CSP versa hyp YY
- -->
-<!--  LocalWords:  disambiguating lifecycle conformant minimalistic Lamport fo
- -->
-<!--  LocalWords:  reflexivity antisymmetry timelines timespan WG concl inv TBD
- -->
-<!--  LocalWords:  continuant occurrent modalities toyota womanInRedDress provn
- -->
-<!--  LocalWords:  customerInChairAt manWithGlasses customerInChair irreflexive
- -->
-<!--  LocalWords:  wasStartedByActivity antisymmetric wasInvalidatedBy stmt CHR
- -->
-<!--  LocalWords:  DBCONSTRAINTS formalisms URIs wasInfluencedBy definitional
- -->
-<!--  LocalWords:  wasInvalidated th  nontermination  implementability att evt
- -->
-<!--  LocalWords:  Irreflexivity mentionOf preorder equalities unsatisfiable De
- -->
-<!--  LocalWords:  Lebo subfigures pre del irreflexivity superproperty typeOf
- -->
-<!--  LocalWords:  disjointness inferrable subtyping subtype subtypes hadMember
- -->
-<!--  LocalWords:  hasMember toplevel sameAs tuple acyclicity isomorphism IRI
- -->
-<!--  LocalWords:  endBundle typeof equational acyclic invertible procedurally
- -->
-<!--  LocalWords:  implementers multi unifier ERCIM Groth Stian Soiland Ilkay
- -->
-<!--  LocalWords:  Altintas Reza B'Far Belhajjame Informatics Coppens IBBT Nies
- -->
-<!--  LocalWords:  Corsar Cresswell Deus DERI Galway satisfiable namespace Kai
- -->
-<!--  LocalWords:  endDocument Dobson Doerr Hellas Eckert EVAIN EBU UER Frew de
- -->
-<!--  LocalWords:  Irini Fundulaki Garijo Universidad Politécnica Vrije Hartig
- -->
-<!--  LocalWords:  Universiteit Hau NCI Sandro Hawke Jörn Hees DFKI Gmbh Hua da
- -->
-<!--  LocalWords:  Hodgson TopQuadrant Trung Huynh Klyne Revelytix Rensselaer
- -->
-<!--  LocalWords:  McCusker McGuinness Paolo Missier Luc Moreau Vinh Edoardo
- -->
-<!--  LocalWords:  Pignotti Paulo Pinheiro Geospatial Retter Runnegar Satya
- -->
-<!--  LocalWords:  Sahoo Schaengold Schutzer FSTC Yogesh Simmhan Theodoridou
- -->
-<!--  LocalWords:  Thibodeau OpenLink Tilmes Zednik Zhao Yuting
- -->
+ </body></html>
\ No newline at end of file