- From: <bugzilla@wiggum.w3.org>
- Date: Wed, 20 Jul 2005 18:45:30 +0000
- To: public-qt-comments@w3.org
- Cc:
http://www.w3.org/Bugs/Public/show_bug.cgi?id=1612 simeon@us.ibm.com changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED ------- Additional Comments From simeon@us.ibm.com 2005-07-20 18:45 ------- The semantics is really neither both of those universal/existential alternative that you provide. This is much more of a conditional inference. The way to read it is: Here is the inference rule: statEnv |- Expr1 : Type1 statEnv |- Expr2 : Type2 ------------------------ statEnv |- Expr1, Expr2 : Type 1, Type2 It essentially means: IF statEnv |- Expr1 : Type1 AND statEnv |- Expr2 : Type2 THEN statEnv |- Expr1, Expr2 : Type 1, Type2 The important point here is that *all* of the preconditions must hold for the conclusion to hold. In a few cases, we use the following notation (1 <= i <= k). We have a separate comment from Michael Dyck I believe which recommends not to use that notation which is confusing. A better way to write those cases is as follows: dynEnv |- Expr1 => false dynEnv |- Expr2 => false -------------------------------------- dynEnv |- Expr1 and Expr2 => false which is what is intended in the rest of the spec. This clearly illustrate that the 1 <= i <= k notation is not only confusing but leads to bugs. Since in the case here its just the wrong semantics. What is intended is the two following rules: dynEnv |- Expr1 => false -------------------------------------- dynEnv |- Expr1 and Expr2 => false dynEnv |- Expr2 => false -------------------------------------- dynEnv |- Expr1 and Expr2 => false Which is how the semantic should be written for those cases. - Jerome
Received on Wednesday, 20 July 2005 18:45:36 UTC