Boost logo

Boost :

Subject: Re: [boost] [challenge!] find a common domain
From: Eric Niebler (eric_at_[hidden])
Date: 2010-05-19 18:31:12


On 5/19/2010 3:17 PM, Jeremiah Willcock wrote:
> On Wed, 19 May 2010, Eric Niebler wrote:
>> On 5/19/2010 3:07 PM, Jeremiah Willcock wrote:
>>> For non-default_domain domains I use the least
>>> common ancestor (which is what it seemed like you wanted).
>>
>> That works. Something like it should also work for the family of domains
>> rooted at default_domain, with a special case for when the result would
>> be default_domain itself.
>
> What about DD2 and DD3 from your tests, though? You have that
> combination returning DD2, which is the opposite of what I would expect
> from your description (if X derives from default_domain, always pick X
> as the result). Or am I misunderstanding something?

We have:

  default_domain
       ^
       |
      DD2
       ^
       |
      DD3

That is, DD3 is a sub-domain of DD2, which is a sub-domain of
default_domain. If you mix expressions from domains DD2 and DD3 (e.g.,
{DD2, DD3, DD2}), the resulting expression should be in domain DD2. It
is the strongest domain that is a super-domain of all the domains in the
set.

If, however, we had something like this:

  default_domain my_domain
       ^
       |
      DD2
       ^
       |
      DD3

The common domain of {DD2, DD3, my_domain} should be my_domain, because
it dominates over all domains from the family rooted at default_domain.

And this:

  default_domain
    ^ ^
    | |
   DD2 my_domain
    ^
    |
   DD3

Logically, you'd think that the common domain of {DD2, DD3, my_domain}
should be default_domain, but I don't want that. It would strip all
domain-specific behaviors from the resulting expression. By fiat, I say
this is ambiguous.

-- 
Eric Niebler
BoostPro Computing
http://www.boostpro.com

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk