<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://www.w3.org/Bugs/Public/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4"
          urlbase="https://www.w3.org/Bugs/Public/"
          
          maintainer="sysbot+bugzilla@w3.org"
>

    <bug>
          <bug_id>4598</bug_id>
          
          <creation_ts>2007-06-05 20:27:27 +0000</creation_ts>
          <short_desc>Some compact expressions appear not to have normal forms</short_desc>
          <delta_ts>2007-06-13 16:29:09 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WS-Policy</product>
          <component>Framework</component>
          <version>CR</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://lists.w3.org/Archives/Public/public-ws-policy/2007May/0297.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Hull">dmh</reporter>
          <assigned_to name="Felix Sasaki">fsasaki</assigned_to>
          
          
          <qa_contact name="Web Services Policy WG QA List">public-ws-policy-qa</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>15286</commentid>
    <comment_count>0</comment_count>
    <who name="David Hull">dmh</who>
    <bug_when>2007-06-05 20:27:27 +0000</bug_when>
    <thetext>Running through the basic case analysis, ignoring the outer &lt;wsp:Policy&gt;, taking everything modulo commutativity and letting &lt;Ai/&gt; represent assertions in normal form:


(1)
&lt;ExactlyOne&gt;
  &lt;All&gt;...&lt;/All&gt;*
&lt;/ExactlyOne&gt;

can be normalized if the &lt;All&gt; expressions can be normalized (or already contain only assertions).  See below.

(2)
&lt;ExactlyOne&gt;
  &lt;ExactlyOne&gt;....&lt;/ExactlyOne&gt;+
&lt;/ExactlyOne&gt;

can be reduced by the associative rule.

(3)
&lt;ExactlyOne&gt;
  &lt;ExactlyOne&gt;...&lt;/ExactlyOne&gt;*
  (&lt;All&gt;...&lt;/All&gt;|&lt;Ai/&gt;)+
&lt;ExactlyOne&gt;

Does not appear to be in normal form, and there does not appear to be a rule by which to reduce it.  Any ExactlyOne children may be reduced by associativity, but this does not appear to help.

(4)
&lt;All&gt;
 &lt;ExactlyOne&gt;...&lt;/ExactlyOne&gt;*
&lt;/All&gt;

can be reduced by the distributive rule (or by the &quot;empty&quot; rule if there are no children).

(5)
&lt;All&gt;
  &lt;All&gt;...&lt;/All&gt;+
  &lt;Ai/&gt;*
&lt;/All&gt;

can be reduced by the associative rule.

(6)

&lt;All&gt;
  &lt;Ai/&gt;*
&lt;/All&gt;

is fine if it&apos;s a subexpression and can be wrapped in ExactlyOne if not.

(7)
&lt;All&gt;
 &lt;ExactlyOne&gt;...&lt;ExactlyOne&gt;+
 (&lt;Ai/&gt;|&lt;All&gt;...&lt;/All&gt;)+
&lt;/All&gt;

Does not appear to be in normal form, and there does not appear to be a rule by which to reduce it.  Any All children may be reduced by associativity, but this does not appear to help.

----

I see three possible resolutions:

1) I got the math wrong, and the forms that do not appear to have normal forms actually do.  I&apos;m pretty sure I got it right, and I&apos;ve asked the list what rules might apply, but on the other hand it seems unlikely that no one has previously done this basic analysis.  If I missed something and there is a way to normalize the expressions above, then we can close the issue.

2) Disallow expressions in forms (3) and (7), with a statement to the effect of &quot;The following compact forms have no normal form.  A processor MUST fault on encountering them.&quot;

3a) Add a rule (say, &quot;Promotion&quot;) to wrap bare assertion children in otherwise non-normal expressions in the operator opposite their parent.

E.g., (note, these examples are of course non-normative; the text would be normative)

&lt;ExactlyOne&gt;
  &lt;A1/&gt;
&lt;/ExactlyOne&gt;

==&gt; (promotion)

&lt;ExactlyOne&gt;
  &lt;All&gt;
    &lt;A1/&gt;
  &lt;/All&gt;
&lt;/ExactlyOne&gt;

----

&lt;ExactlyOne&gt;
  &lt;All&gt;&lt;A1/&gt;&lt;A2/&gt;&lt;/All&gt;
  &lt;A3/&gt;
&lt;/ExactlyOne&gt;

==&gt; (promotion)

&lt;ExactlyOne&gt;
  &lt;All&gt;&lt;A1/&gt;&lt;A2/&gt;&lt;/All&gt;
  &lt;All&gt;&lt;A3/&gt;&lt;/All&gt;
&lt;/ExactlyOne&gt;

----

&lt;ExactlyOne&gt;
  &lt;All&gt;&lt;A1/&gt;&lt;A2/&gt;&lt;/All&gt;
  &lt;A3/&gt;
  &lt;ExactlyOne&gt;&lt;A4/&gt;&lt;A5/&gt;&lt;/ExactlyOne&gt;
&lt;/ExactlyOne&gt;

==&gt; (associative)

&lt;ExactlyOne&gt;
  &lt;All&gt;&lt;A1/&gt;&lt;A2/&gt;&lt;/All&gt;
  &lt;A3/&gt;
  &lt;A4/&gt;
  &lt;A5/&gt;
&lt;/ExactlyOne&gt;

==&gt; (promotion)

&lt;ExactlyOne&gt;
  &lt;All&gt;&lt;A1/&gt;&lt;A2/&gt;&lt;/All&gt;
  &lt;All&gt;&lt;A3/&gt;&lt;/All&gt;
  &lt;All&gt;&lt;A4/&gt;&lt;/All&gt;
  &lt;All&gt;&lt;A5/&gt;&lt;/All&gt;
&lt;/ExactlyOne&gt;

3b) If that&apos;s not the right behavior, add some other rule or rules.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15419</commentid>
    <comment_count>1</comment_count>
    <who name="Asir V Selvasingh">asirveda</who>
    <bug_when>2007-06-13 16:29:09 +0000</bug_when>
    <thetext>&lt;toufic&gt; unanimous consent to resolve issue 4598
&lt;prasad&gt; rrsagent, where am I?
&lt;RRSAgent&gt; See http://www.w3.org/2007/06/13-ws-policy-irc#T16-27-25
&lt;PaulC&gt; RESOLUTION: The WG adopted the two part change in 2007Jun/0030.html to resolve issue 4598.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>