Thread Links Date Links
Thread Prev Thread Next Thread Index Date Prev Date Next Date Index

Re: about emp (was: Motion 42: NO)



Le vendredi 08 février 2013 à 10:25 +0100, Vincent Lefevre a écrit :
> On 2013-02-08 07:05:57 +0100, Guillaume Melquiond wrote:

> > As you can see from (25) above, the decoration dw of the output can
> > never be improved so that it becomes higher than the decorations
> > dv_0, ..., dv_k of the inputs.
> 
> And if you do this on the last example from 8.8.3 on an x that is not
> a NaI, you'll get the emp or trv decoration, not ill.

Now I understand where the disagreement between us lies. You consider
that ill is an improvement over emp and trv, while I consider it is not
since it is the smallest element in the propagation scale. So the point
of the discussion is moot.

> > > 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.
> > 
> > You are telling me that the implementation knows that the point function
> > being computed is not defined, but it still bothers to return a nonempty
> > interval for the interval function? That is just crazy.
> > 
> > Either the implementation knows that the point function being computed
> > is not defined and it returns empty_emp or empty_ill, or it does not and
> > it returns [0,0]_trv or any superset. Any other behavior is meaningless.
> 
> No, you didn't understand. The functions are used for different purpose
> by the user: approximation of point functions, range of a point function
> over an interval, range computations, etc. P1788 provides only one kind
> of functions for all these. There are flavors to differentiate some uses
> but even in the set-based flavor, there are different uses. And the
> implementation cannot know what is the intent of the user. For range
> computations (where variables represent no more than intervals), the
> implementation MUST return an interval that contains [0,0], as said
> above. So, returning Empty (with any decoration) would be wrong.

As you say, the implementation cannot know what is the intent of the
user. So how does the implementation dare put the emp decoration on the
result [0,0] after executing the following sequences of operations?

x <- newDec([-1,1])
a <- x * x
b <- newDec([1,1])
c <- - a
d <- c - b
e <- sqrt(d)

So I stand by my point. If the implementation knows that the intent of
the user is to compute the range of the function f(x) = sqrt(-x*x-1) on
the domain [-1,1], then it might return empty_emp. If the implementation
does not know what the intent of the user is, then it returns [0,0]_trv.
But in no cases will it ever return [0,0]_emp. The motion does not allow
it and it is fortunate.

Best regards,

Guillaume