Re: Midpoint in the waters between Scylla and Charybdis...
I'll second that.
George Corliss
George.Corliss@xxxxxxxxxxxxx
On Mar 8, 2012, at 7:40 PM, Dan Zuras Intervals wrote:
> 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>