Re: Motion P1788/M0015.01: Definition_of_decorations: Up for discussion
> Subject: Re: Motion P1788/M0015.01: Definition_of_decorations: Up for discussion
> From: John Pryce <j.d.pryce@xxxxxxxxxxxx>
> Date: Wed, 28 Apr 2010 10:15:59 +0100
> To: stds-1788 <stds-1788@xxxxxxxxxxxxxxxxx>
>
> P1788
>
> Note an immediate consequence of passing Dan's motion:
>
> We abolish the "bounded" property.
>
> (Hurrah, say I.) Two reasons:
>
> (a) It is not a pointwise property such as Motion 15 requires.
> That is, there is no predicate isBounded(f,x) or isBounded(f,x,y)
> that is defined for functions f, and points x (or x,y) in an
> interval, such that we ask if there exists x in xx such that
> isBounded(f,x) is true, etc.
> "Bounded" can only be defined by a doubly quantified statement
> (there exists ...)(for all ...)... and hence its negation by
> (for all ...)(there exists ...)...
>
> (b) It is a property of the current interval, not of history.
> Or should we set boundedSticky(xx)=false for xx=[-1,1] because
> it happens to have been computed as tanh(Entire) ?
>
> Regards
>
> John
>
Well, abolishing 'bounded' was neither my intention nor
something that follows for me from motion 15.
However, the form of 'bounded' that I am considering is
sufficiently different from that which has been discussed
that you might consider it abolished.
This is an argument I was going to save for a future
motion but since the issue has been raised, let me outline
it for now so as not to cloud the issue about motion 15.
Let me use an example I recently used in a private note.
In double precision floating-point the overflow threshold
for exp(x) happens around 709.78. That is, exp(709) &
anything smaller is some finite representable number around
maxPos or smaller. But exp(710) or larger rounds to +oo as
the 'nearest' representable answer (or to maxPos, depending
on the rounding direction).
Now, let's take a very strict interpretation for the word
'bounded'. That being that a bound can be (or has been)
computed. Then 'unbounded' means that situation that exists
when this is not true. Not that the answer is infinity.
Just that no bound is known.
The definitions of the 'bounded' properties then become
boundedTrue = {there exists x in xx such that the
nearest representable number for f(x) is
finite in the current working precision.
That is, that the 754 isBounded(f(x)) is
true.}
boundedFalse = {there exists x in xx such that the
nearest representable number for f(x) is NOT
finite in the current working precision.
That is, that the 754 isBounded(f(x)) is
false.}
boundedSticky =
boundedFalse(xx) \or boundedSticky(xx)
Now, I grant you that this definition doesn't live entirely
at level 1. It lives at the mapping between level 1 & level
2. As such, just where this property is true depends both
on the nature of the function & the range of the working
precision being used. But there are predicates isBounded
computable for each of our functions for each available
working precision. They are the ordinary 754 predicates for
isBounded when applied to the value of f(x). And, it is
still a property that can be unambiguiously determined for
all our functions for all our working precisions.
Also, failure of isBounded to be true is tracked by the
decoration boundedSticky. While that property is often not
a property of the final result, knowing that it has happened
along the way is a clue that our final result may not be
accurately computed in this precision. Perhaps a higher
precision is needed to adequately bound that result.
OK, given that, how might we decorate the following interval
valued results?
exp([0,700]) = {[1,reallyBig],{boundedTrue}} because
its all bounded.
exp([600,800]) = {[sosoBig,+oo],{boundedTrue,boundedFalse}}
because some of it is bounded & some is not.
exp([800,1000]) = {[maxPos,+oo],{boundedFalse}} because
all of it is unbounded.
As for whether that turns out to be something useful enough
to rise to the level of something to be tracked with its own
decoration, well, we have to figure that out still.
It looks promising to me, though.
But let me remind you once again that, while this is related
to motion 15, it is not a motion 15 issue. Motion 15 does
not depend on whether you like this definition of 'bounded'
or not. That is an issue for a future motion.
Dan
P.S. - Oh, as for the issue of whether or not boundedSticky
should be set for tanh([entire]), well that kind of depends
on how we got there which is kind of what decorations are
all about.
First, something that is mentioned in motion 15 near the end,
I believe all constructor functions should set their 'sticky's
to False & set their other decorations according to whether
or not they are True for the identity function. So I would
set the following on creation:
Entire = constructInterval(-oo,+oo)
= {[-oo,+oo],{boundedTrue,boundedFalse}}
mostOfIt = constructInterval(-bigEnough,+bigEnough)
= {[-bigEnough,+bigEnough],{boundedTrue}}
And, if bigEnough is big enough to have tanh(bigEnough) = 1
in our working precision we have that:
tanh(Entire) = {[-1,1],{boundedTrue,boundedSticky}}
tanh(mostOfIt) = {[-1,1],{boundedTrue}}
So, like I said, it kind of depends on how you got there.
Both are obviously bounded final results but one used an
unbounded interval to get there.
And boundedSticky records that.
Nothing ominous in this case. But telling you that it
happened is the sticky's job.