Folks,
We have argued about only one function in all my table
4 proposal. As a result, George suggested that I extract
midpoint only& make a motion about that. So here are
both the midpoint motion& arguments pro& con below.
It is hard to navigate between Scylla and Charybdis.
It is impossible when the crew argue about the course.
Let's decide now.
Dan
I move the following:
<begin motion for midpoint>
The midpoint function for non-Empty, non-Entire intervals
---------------------------------------------------------
At level 1: mid(X) = (inf(X) + sup(X))/2
Properties: For intervals X& Y& when using midpoint to
split an X into X1& X2 we have
X \subset (X1 \union X2)
[inf(X),mid(X)] \subset X1
[mid(X),sup(X)] \subset X2
mid(X) \element-of (X1 \intersect X2)
X \subset Y ==> if (inf(X)==inf(Y)) then mid(X)<= mid(Y)
X \subset Y ==> if (sup(X)==sup(Y)) then mid(X)>= mid(Y)
always. These are required. The first 4 properties are
required for containment to hold. The last 2 for well
ordering.
Coercion to level 2: For some implicit or explicit IFbar
based on a some floating-point system F we have that
mid_F(X) = if ((inf(X) == -inf)&& (sup(X) == +inf)) then 0
else if (round2Nearest_F(mid(X)) == +inf)
then nextDown_F(+inf)
else if (round2Nearest_F(mid(X)) == -inf)
then nextUp_F(-inf)
else round2Nearest_F(mid(X))
Note that midpoint has been generalized to include Entire via
the means of the arbitrary choice of zero as its midpoint.
This choice is part of this motion. Midpoint is still not
defined for Empty& any generalization to include Empty is
not part of this motion.
The coercion mid_F(X) always returns a finite result even
when mid(X) is infinite.
If, for any X& Y that live at level 2, we define intervals
X1& X2 to be the smallest representable intervals for which
[inf_F(X),mid_F(X)] \subset X1& [mid_F(X),sup_F(X)] \subset
X2 we have
X \subset (X1 \union X2)
[inf_F(X),mid_F(X)] \subset X1 (trivially)
[mid_F(X),sup_F(X)] \subset X2 (trivially)
mid_F(X) \element-of (X1 \intersect X2)
X \subset Y ==> if (inf_F(X)==inf_F(Y)) then mid_F(X)<= mid_F(Y)
X \subset Y ==> if (sup_F(X)==sup_F(Y)) then mid_F(X)>= mid_F(Y)
The first 4 assure containment. The last 2, well ordering.
<end motion for midpoint>
<begin rationale>
The reason for midpoint to exist is to narrow intervals
via the method of splitting them. At level 1 that is to
take an interval X& replace it with the union of X1& X2
such that
X \subset (X1 \union X2).
[inf(X),mid(X)] \subset X1
[mid(X),sup(X)] \subset X2
mid(X) \element-of X1 \intersect X2
These properties are required for containment. It is
desirable that X1& X2 be the smallest intervals that
have this these properties which leads to further
properties
width(X1)< width(X)
width(X2)< width(X)
width(X1) = width(X2)
but these properties will not always be possible. EVEN
AT LEVEL 1. But there is another useful pair of properties
that ARE true at level 1
X \subset Y ==> if (inf(X)==inf(Y)) then mid(X)<= mid(Y)&
X \subset Y ==> if (sup(X)==sup(Y)) then mid(X)>= mid(Y)
and, with some care, these can even be made to survive the
coercion to level 2.
The coercion to level 2 gives us the translated properties
X \subset (X1 \union X2)
[inf_F(X),mid_F(X)] \subset X1 (trivially)
[mid_F(X),sup_F(X)] \subset X2 (trivially)
mid_F(X) \element-of (X1 \intersect X2)
X \subset Y ==> if (inf_F(X)==inf_F(Y)) then mid_F(X)<= mid_F(Y)
X \subset Y ==> if (sup_F(X)==sup_F(Y)) then mid_F(X)>= mid_F(Y)
Again, the first 4 are required for containment& the last
2 for well ordering. There are other properties we would
like but they can, at best, only be approximated. These
approximations are
width_F(X1)<= width_F(X)
width_F(X2)<= width_F(X)
width_F(X1) ~= width_F(X2)
which are approximations of
width_F(X1) = width_F(X)/2
width_F(X2) = width_F(X)/2
width_F(X1) = width_F(X2)
Indeed, some measure of these approximate properties can
be used as criteria for stopping one's search. There are
many possibilities, depending on one's needs. For example
if (((width_F(X) == inf)&&
((width_F(X1)> 0) || (width_F(X2)> 0))) ||
((width_F(X)< inf)&&
(width_F(X1)< width_F(X))&&
(width_F(X2)< width_F(X)))) then continue splitting
else stop
works (as far as I can tell).
There is an argument that mid(Entire) should be undefined
or should return a NaN.
The merit to this argument is that it is mathematically
true that the Reals, although ordered, have no midpoint.
Stated in this way it is reasonable to say that it is a
mistake to return a number for the midpoint(Entire).
Therefore, the only reasonable answer is NaN.
It is equivalent to say that, for any Real number r, a
one-to-one correspondence exists between r-x& r+x for
all Real x that encompasses all Reals. Stated in this
way it is reasonable to say that the midpoint of the
Reals is not unique in that ANY Real is a correct
midpoint(Entire). That is, any arbitrary Real r is a
correct (but not unique) midpoint(Entire).
Therefore I arbitrarily choose zero as midpoint(Entire).
The value of midpoint(Empty) is not part of this motion.
There is an argument that if midpoint cannot return an
interior point of X then it should return NaN. As
singleton intervals HAVE no interior even at level 1,
this would mean that midpoint([r,r]) = NaN for all Real r.
Further, that finite intervals for which inf(X)> Fmax_F
for some number system F should return midpoint_F(X) = NaN
on the grounds that neither Fmax_F nor +inf are in the
interior of X.
Further, that intervals for which X lies entirely between
two consecutive representable numbers of F should return
midpoint_F(X) = NaN on the grounds that neither number is
in the interior of X.
I reject all 3 of these arguments.
In the first case, I find it unreasonable to define
anything other than midpoint([r,r]) = r on the grounds
that the midpoint is perfectly well defined in the case
of singletons& one should expect this to be so.
I reject the other two on the grounds that the property
of "interiorness" is a derived one which fails in these
two cases not due to any failure in the definition of
midpoint but due to limited range& limited precision,
respectively, of the number system within which one is
forced to express the answer.
The best approximation is the nearest finite number to
the well defined Real number& is the correct& expected
result. Even without being in the interior of X it still
possesses the well defined properties we need of the
midpoint function. Those of containment& well-ordering
among them.
That having been said, midpoint_F will STILL return an
interior point of X so long as X HAS interior points
representable within F. It is the best approximation
of interiorness available to us.
It is argued that midpoint(Empty) should be NaN.
Midpoint(Empty) is not part of this motion.
Let that be settled at a later date.
<end rationale>