Re: Revised Motion 26 decoration scheme
On Wed, July 20, 2011 16:43, Nate Hayes wrote:
> Arnold Neumaier wrote:
>>> For example, consider the real function
>>> f(x,y) = y + 1 / g(x)
>>> and its interval extention over interval domain (X,Y) where both X and
>>> Y
>>> are
>>> nonempty. If we are computing with bare objects and g(X) is not
>>> continuous,
>>> then we have
>>> Y + 1 / def.
>>>
>>> Promoting the bare decoration def to (Empty,def) gives:
>>> Y + 1 / (Empty,def)
>>> = Y + (1/Empty,inf(ein,def))
>>> = Y + (Empty,def)
>>> = (Y+Empty,inf(dac,def))
>>> = (Empty,def)
>>> = def
>>> In other words, the exception "def" first occured in g(X) and this
>>> decoration is promoted all the way to the end of the computation. So
>>> the
>>> user knows in this case the reason for failure.
>>>
>>> On the other hand, promoting the bare decoration def to (Entire,def)
>>> gives:
>>> Y + 1 / (Entire,def)
>>> = Y + (1/Entire,inf(con,def))
>>> = Y + (Entire,con)
>>> = (Y+Entire,inf(dac,con))
>>> = (Entire,con)
>>> = con
>>> In this case, the exception "def" that occured in g(X) is lost by the
>>> subsequent computations: the user has less knowledge why the failure
>>> occurred.
>>
>> If one has g(x)=sign(x) and X=[-1,1], the decorated evaluation would
>> give
>> con and not def, and indeed, f is not everywhere defined. This property
>> must be preserved by the bare rules, since the use of the decoration
>> might
>> depend on this.
>>
>> Moreover, having a different semantics for the decorated and the bare
>> case
>> (as proposed by you) would lead to confusion....
>
>
> This is already a problem for Motion 26, since for g(x)=floor(x) and
> X=[4,8]
> the full decorated interval computation gives
> def
> but when evaluated using bare objects (by Motion 26) it gives
> con
This is not a problem, since in both cases, the answer says something
correct about the function.
Whereas in your example, the bare answer makes a wrong statement about
the function.
One cannot (and should not) require an optimizing compiler to yield the
_same_ answer; already optimizing x/3+x/3+x/3 to x will change the
interval output (in this case to something better).
But one must insist on that an optimization never changes a correct answer
for the unoptimized version into a false answer in the optimized version.
Arnold Neumaier