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

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>