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

Re: Constructors & decorations



Vincent, Dan and P1788

I am sorry to be so intermittent in taking part in this discussion, as it seems important.

On 19 Feb 2010, at 10:29, Vincent Lefevre wrote:
> On 2010-02-09 15:44:13 -0800, Dan Zuras Intervals wrote:
>> 	Now, can you give me an example of an interval that is Defined
>> 	but not Valid?
> Same question. I think that "Defined" doesn't make sense if not valid.
and
>>      Otherwise, in the overflow case, I think possiblyBounded is
>> 	the best answer.
> It depends on the function. In case of an overflow, the mathematical
> interval can still be bounded.

I agree with both the above. But

>> 	As for Bounded, it seems to me that any result interval with
>> 	an infinite endpoint is notBounded only if it were evaluated
>> 	over a pole of some kind.
> No, not "only" if. This can also occur if one of the arguments
> was already notBounded.

NOT my view. Vincent, suppose I do
    xx = interval(1,+oo) // new interval [1,+oo]
                         // so it is (isValid,isDefined,isContinuous,notBounded)
    yy = 1/xx            // =[0,1]
Do you want yy to be notBounded because xx was?

There are spiky semantic nettles about the Decorations issue and at some stage we must grasp them. I see three different "basic meanings" one can give to a decoration attribute Att. And what other people have in mind may differ from all of these!
I shall use, as Nate & others have, notation like (xx,Att-) to mean that the Att attribute of xx has the value "-", so it means the same as xx.Att = "-".

The meanings I see are:
(1) Att reflects the computational history of an interval xx way back to the beginning. If (xx,Att-) happens iff one of xx's computational ancestors was Att- at construction time. 
As with Henry King, "There is no cure for this disease." I believe this is how Nate/Arnold present "Valid" in Motion 8. (There may be exceptions to the "if" part of the "iff" above, similar to 754's "forgiving max & min", where e.g. max(2,NaN) is 2 instead of NaN.)

(2) Att is purely a property of the current mathematical interval that xx represents. If, say, xx is the result of operation uu op vv, then xx.Att is a function of the uu.Att, vv.Att as well as the interval bounds of uu and vv. In contrast to (1), it is possible for uu or vv to be Att- and xx to be Att+, or vice versa. This is how I see the Bounded attribute. But does Vincent agree, see above?

(3) Att is a property of a limited section (scope) of computational history. This is how the Continuous (C) and Defined (D) attributes _must_ be used when applying fixed-point theorems. The scope is the code FF that defines some interval vector function yy=ff(xx). On entry to FF, each component of xx is given a "clean slate", i.e. is ensured to be (C+,D+). If each component of yy is (C+,D+) on exit from FF then the evaluation of yy was "OK".
I deduce that
(3.1) Unlike Valid, Continuous and Defined are not "Henry King" attributes. There must be a means of setting an existing interval to be (C+,D+), or equivalent. A possibility is that the "copy constructor"
  bb = interval(aa)   where aa is an existing interval
be defined to set bb to (C+,D+) independent of the status of aa, (provided aa is V+).
(3.2) It would be desirable to support a means - at either the 1788 or the language level - to automate the correct setting of xx to "all components (C+,D+)", before entry to such an ff evaluation.

Summary
-------
Existing discussion shows Dan, Vincent, and possibly others don't exactly agree with me whether the above classification correctly describes the V, D, C and B attributes.

Motion 8 has given us a simple _mechanism_, but the devil is in the semantics, not the mechanism. 

Precisely defining such meanings is important. The 1788 standard is to support proofs of code correctness. 
- If it can't, in my view we shall have failed.
- If it can, for code that doesn't use the 1788 exception-handling mechanism, but not for code that does, in my view we shall STILL have failed.
- If it can, also for code that uses exception-handling, but the semantics are so baroque that only a high-priestly class can devise correctness proofs of such code, in my view we shall STILL have failed.

Who will help me grasp this nettle?

Regards

John