- From: <bugzilla@wiggum.w3.org>
- Date: Mon, 18 Jul 2005 22:22:56 +0000
- To: public-qt-comments@w3.org
- Cc:
http://www.w3.org/Bugs/Public/show_bug.cgi?id=1737 Summary: [FS] no seed to start the recursion in 8.1.10 "union interpretation..." Product: XPath / XQuery / XSLT Version: Last Call drafts Platform: PC OS/Version: Windows 2000 Status: NEW Severity: major Priority: P2 Component: Formal Semantics AssignedTo: simeon@us.ibm.com ReportedBy: fred.zemke@oracle.com QAContact: public-qt-comments@w3.org 8.1.10 Union interpretation of derived types. It says that the rule is recursive, which is true, but unfortunately it seems that there is no way to start the recursion, since in order to deduce one "extended with union interpretation" judgment, you need to already know some of the same kind of judgment to supply the hypotheses above the line. To start a recursion, I tried letting n = m = 0 (this is a trick that is sometimes used to provide seeds for recursion). However, in that case, all hypotheses disappear, and we are left (seemingly) with the inference that it is always true that any Type1 is any Type0 extended with union interpretation of any TypeName0. So you must not intend that it is permitted for n = m = 0. (Once again I say, please supply quantifiers on all your free variables in your inferences!) If n > 0 and m = 0, then Type1 is a union of restriction types (see last judgment above the line), and the name of the judgment, "extended with union interpretation" does not make sense -- I expect to find some type extensions, not just restrictions, in the hypotheses. I conclude that m = 0 is not permitted, so we must have m > 0. Looking at the example, the example shows that you intend to make deductions about types with only extension and no restriction. I conclude that n = 0 is permitted. Now lets see if we can actually deduce the example. I will reason backwards. We want to conclude: statEnv |- (element a | (element a, element b) is (element a) extended with union interpretation of T1 so: Type1 = (element a | (element a, element b)) Type0 = (element a) TypeName0 = T1 from the last inference above the line: TypeR,1' = (element a) TypeE,1' = (element b) then TypeNameE,1 = T2 because of "define type T2 extends T1 {element b}" so TypeE,1 is the extender part of this definition = (element b) Now I need to know that statEnv |- (element b) is (element b) extended with union interpretation of T2 but I don't see any way to deduce this. Probably what you need is a "seed rule" saying that any type is itself extended with union interpretation of any typename. I don't see a way to deduce such seeds. By the way, it would really help if you worked your own example out to this level of detail and put it in the spec.
Received on Monday, 18 July 2005 22:23:01 UTC