Updated Featherweight Defenders document available
Brian Goetz
brian.goetz at oracle.com
Fri Dec 2 17:40:23 PST 2011
Yes, this notational trick -- where sometimes a variable is free, and
sometimes is bound, and the reader has to tell the difference -- is
common in many formal models. In R-IntfSuper, i is a free variable, so
the rule defines sres(C, I_i) simultaneously for ALL I_i that are
superinterfaces of C.
In the other example you cite, i is bound by the union quantifier, so it
is not a free variable.
On 12/2/2011 7:17 PM, Richard Warburton wrote:
> On 02/12/11 20:32, Brian Goetz wrote:
>> I have completed a major refinement of the formal model for defender
>> resolution. There are significant cleanups in the math (mostly notably
>> fixing the ambiguity surrounding the meaning of 'nil' in lookup
>> functions) which enabled some simplifications in the model; we were able
>> to eliminate many of the internal predicates (SigOK, BodyOK) and thereby
>> simplify (and in some cases, eliminate) many rules. Also added are new
>> judgments for resolution of I.super.m() calls.
>>
>> Comments welcome.
>>
>> http://hg.openjdk.java.net/lambda/defender-prototype/raw-file/f49be48f1225/doc/featherweight-defenders.pdf
> Thanks for posting this document to the list - it's a really interesting
> read.
>
> On a minor point in rule R-IntfSuper it appears as though the meaning of
> subscript i is overloaded. It is used as an index into the set of all
> immediate super-interface when calculating S (the union of their
> defender candidates). It is also used to denote a specific immediate
> super-interface of C that the super-call is being made through and
> appears to be referred to in that context in "dcand(Ii) = { J }".
>
> This was of initial confusion to me, and it would probably be clearer to
> the reader if the same name wasn't chosen for both meanings. If I've
> misunderstood the linkage rule then I'm sorry.
>
> regards,
>
> Richard
>
More information about the lambda-dev
mailing list