- From: <bugzilla@jessica.w3.org>
- Date: Fri, 22 Apr 2016 10:07:14 +0000
- To: public-qt-comments@w3.org
https://www.w3.org/Bugs/Public/show_bug.cgi?id=29586 Bug ID: 29586 Summary: [XQ31] 2.5.6.2 The judgement subtype-itemtype(Ai, Bi) Product: XPath / XQuery / XSLT Version: Candidate Recommendation Hardware: PC URL: https://www.w3.org/XML/Group/qtspecs/specifications/xq uery-31/html/xquery-31.html#id-itemtype-subtype OS: Windows NT Status: NEW Severity: normal Priority: P2 Component: XQuery 3.1 Assignee: jonathan.robie@gmail.com Reporter: tim@cbcl.co.uk QA Contact: public-qt-comments@w3.org Target Milestone: --- In 2.5.6.2 The judgement subtype-itemtype(Ai, Bi) we read: Bi is AnnotationsB function(Ba_1, Ba_2, ... Ba_N) as Br, Ai is AnnotationsA function(Aa_1, Aa_2, ... Aa_M) as Ar, where [AnnotationsB] and [AnnotationsA] are optional lists of one or more annotations; N (arity of Bi) equals M (arity of Ai); subtype(Ar, Br); for values of I between 1 and N, subtype(Ba_I, Aa_I) ; and subtype-assertions(AnnotationsA, AnnotationsB). so if Ai = function(xs:decima) as xs:integer Bi = function(xs:integer) as xs:decimal subtype(xs:integer, xs:decimal) and so subtype-itemtype(function(xs:decima) as xs:integer, function(xs:integer) as xs:decimal) holds. Later it reads, Ai is map(Ka, Va) and Bi is map(Kb, Vb), where subtype-itemtype(Ka, Kb) and subtype(Va, Vb). Suppose Ai is map(xs:decimal, xs:integer) and Bi is map(xs:integer, xs:decimal). So Ka = xs:decimal Va = xs:integer Kb = xs:integer Vb = xs:decimal The judgement says: subtype-itemtype(map(xs:decimal, xs:integer), map(xs:integer, xs:decimal)) does not hold because subtype-itemtype(xs:integer, xs:decima) (true) and subtype(xs:decimal, xs:integer) (false) I think the rule is incorrect, and doesn't exhibit the covariance of function types. I think the correct rule is Ai is map(Ka, Va) and Bi is map(Kb, Vb), where subtype-itemtype(Ka, Kb) and subtype(Vb, Va). I also wonder why there are no judgements relating map(Ka, Va) to function(Ka) as Va and array(Va) to function(xs:integer) as Va. e.g. Ai is map(Ka, Va) and Bi is function(Kb) as Vb, where subtype-itemtype(Ka, Kb) and subtype(Vb, Va). Ai is array(Va) and Bi is function(xs:integer) as Vb, where subtype(Vb, Va). -- You are receiving this mail because: You are the QA Contact for the bug.
Received on Friday, 22 April 2016 10:07:17 UTC