Re: about emp (was: Motion 42: NO)
On 2013-02-07 19:07:11 +0100, Guillaume Melquiond wrote:
> Le jeudi 07 février 2013 à 16:11 +0100, Vincent Lefevre a écrit :
> > On 2013-02-07 15:07:27 +0100, Guillaume Melquiond wrote:
> > > Le jeudi 07 février 2013 à 14:50 +0100, Vincent Lefevre a écrit :
> > > > On 2013-02-06 22:07:15 +0100, Guillaume Melquiond wrote:
> >
> > [Note: this was together with your "I feel that def, dac, and com,
> > should not require the inputs to be nonempty".]
>
> And I still think so, due to the propagation rule below.
>
> > > > > - Finally, the emp decoration seems superfluous to me. There
> > > > > is no point in decorating a nonempty interval with an emp
> > > > > decoration (except maybe for wreaking havoc in an interval
> > > > > library), so the emp decoration could just as well be
> > > > > removed. An empty interval would then be decorated with trv
> > > > > when it does not designate a NaI.
> > > >
> > > > IIRC, there can be problems with that. For instance, take zz = g(yy)
> > > > where yy is Empty. Since g is defined and continuous on the empty set
> > > > yy, one can return zz = (Empty,dac). But now assume that yy wasn't
> > > > actually an input, but yy = f(xx) for some non-empty xx, e.g.
> > > > sqrt([-2,-1]). So, one would get:
> > > >
> > > > (g o f)(xx) = (Empty,dac)
> > > >
> > > > which is wrong.
> > >
> > > As I understand it, decorations propagate from inputs to output and you
> > > can never get an output with a stronger decoration than an input.
> >
> > IIRC, in our discussions it was allowed to improve a decoration
> > if the condition associated with the property was satisfied.
>
> According to 8.8.6/25, this is not allowed. (And I am perfectly fine
> with it not being allowed. I think it is the only way of defining it
> correctly.)
No, the implementation can use additional knowledge to provide a
different decoration. See the last example of 8.8.3, for instance.
> Just to clear any potential misunderstanding, I was not saying that
> empty is only allowed to have the trv decoration. What I was saying is
> that the emp decoration is redundant with the trv decoration: there is
> no situation that I can think of where empty_emp could not be encoded by
> empty_trv, and since nonempty_emp does not make sense, that does not
> leave any purposeful meaning for decoration emp.
nonempty_emp makes sense for sqrt(-x*x-1) with x = [-1,1]. As an
expression on intervals, sqrt(-x*x-1) = sqrt(-[-1,1]-1) = sqrt([-2,0])
= [0,0], so that the computed result must contain [0,0]. In general,
one would get [0,0]_trv. But if the implementation can determine that
for the point function sqrt(-x*x-1), the result is not defined for any
input of [-1,1], then it could improve the decoration to emp.
--
Vincent Lefèvre <vincent@xxxxxxxxxx> - Web: <http://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)