[Bug 3273] [FS] technical: 2.3.1 Formal values: () in Values

http://www.w3.org/Bugs/Public/show_bug.cgi?id=3273

           Summary: [FS] technical: 2.3.1 Formal values: () in Values
           Product: XPath / XQuery / XSLT
           Version: Candidate Recommendation
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Formal Semantics
        AssignedTo: simeon@us.ibm.com
        ReportedBy: jmdyck@ibiblio.org
         QAContact: public-qt-comments@w3.org


2.3.1 Formal values

[7 (Formal)] Value ::= Item | (Value "," Value) | ("(" ")")

    Presumably, the Value () represents the empty sequence.  (I don't think
    the FS actually says so; maybe it should.) The odd thing is that this
    production allows Values with () *within* them. E.g., Value derives
        1 of type xs:integer, (), (), "a" of type xs:string
    Since an item (in a sequence) can't be the empty sequence, what is the
    point of such a Value? (Please note that I'm talking about Values, not
    Exprs.)

    At first, I thought it was just a mistake in the production, so I was
    going to suggest an (editorial) change to:
        Value ::= "(" ")" | Item ("," Item)*

    But then I noticed the example in 8.2.3.2, which actually shows a Value
    with embedded ()'s. The following Note ("while preserving the structure
    of the sequence") appears to indicate that the embedded ()'s are
    essential to the workings of the 'test' judgment (though as far as I
    can tell, they aren't).

    Moreover, the inference rule 4.3.1 / DEv / rule 1 appears happy to
    construct such values. E.g., I can use it to conclude that
        dynEnv |-   1, ()   =>   1 of type xs:integer, ()
    I would have expected the resulting Value to be just
        1 of type xs:integer

    So maybe it's more than an editorial matter.

    (On a related note, the corresponding STA rule allows me to conclude:
        statEnv |-  1, ()   :   xs:integer, empty
    but presumably the Type should be just xs:integer.)

Received on Thursday, 11 May 2006 08:08:49 UTC