- From: <bugzilla@wiggum.w3.org>
- Date: Wed, 13 Jul 2005 05:02:59 +0000
- To: public-qt-comments@w3.org
- Cc:
http://www.w3.org/Bugs/Public/show_bug.cgi?id=1563
Summary: [FS] technical: 4 Expressions
Product: XPath / XQuery / XSLT
Version: Last Call drafts
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
STA / rule 1
This rule doesn't say what you mean. The prose says (roughly):
error = (Expr has empty type) and not(Expr is an exception)
which means (via one of De Morgan's laws)
not(error) = not(Expr has empty type) or (Expr is an exception)
which is not at all what the rule says.
Specifically, if Expr is one of the exceptions, then (regardless of
its type!), the prose says that it is *not* an error, but the rule
says that it *is* an error (because premise 2 fails to hold, and so
the rule fails to hold, and so supposedly an error is raised).
All of which is moot, because the rule's conclusion is the same as
premise 1, so an inference procedure would have no need to apply the
rule. (So whether it fails or not is inconsequential.)
It seems to me that the more straightforward way to write the rule is:
statEnv |- Expr : Type
Type = empty
not( Expr is an exception )
---------------------------
statEnv |- Expr raises error
although it's unclear whether the inference procedure is obliged to
try to satisfy the rule.
A more robust alternative would be to go to the STA for each
expression other than the exceptions, and add a
not(Type = empty)
premise (if it's not already implied by other premises).
Received on Wednesday, 13 July 2005 05:03:02 UTC