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

Re: Discussion on tetrits motion



John Pryce wrote:
Nate & P1788

On 23 Apr 2010, at 21:59, Nate Hayes wrote:
...
But how is a user supposed to know just by looking at the bits
(T,F,T) if somewhere in the history of computation an operand was
evaluated entirely vs. partially outside its natural domain?

The proposed mapping appears to be counting on the fact that any
function evaluated entirely outside its natrual domain will produce
{empty}, and that this is good enough to start a chain-reaction of
(F,F,T) tetrits propagating through the result all the way to the
end.

However, {empty} can be absorbed by a union operation, in which case
the tetrit can change back to (T,F,T) state. In this case, the fact
that a serious domain violation ocurred is lost. With priority
mapping the decoration (F,F) would propagate all the way to the end.

The context in which I have been thinking of the "domain" (also
"continuous") property being used is -  f is a point function defined
   by an expression F using elementary functions e_i.
-  ff is an interval version of f defined by the
   same expression F but using the corresponding
   interval versions ee_i of the e_i.

Then, union cannot occur since it is not an allowed elementary
function for use within a point function.

Nate, you are interested in branch & bound calculations rather than
the Brouwer fixed point ones that I know more about; but wouldn't
union() be forbidden in your app, for the same reason?

Not that it is forbidden entirely, but may only be used outside the
scope of a ff() calculation that sets "domain" or "continuous"
trits/tetrits.

Does this avoid the difficulty?

No.

There was already a lot of discussion about this before Motion 8 back in the
days we were considering NaI; part of the stated purpose of the decorations
framework (even in the rationale of Motion 8) was to unify these concepts of
NaI and Empty in a semantically correct way.

For example, if X is a non-empty bare interval, Empty is an empty bare
interval, and "ok" and "bad" are two decorations making opposite assertions
about some property, then:
   (X,ok) \union (Empty,ok) = (X,ok)
is an unambiguous version of X \union Empty = X, and
   (X,ok) \union (Empty,bad) = (X,bad)
is an unambiguous version of X \union NaI = NaI.

The proposed definitions of the current motion effectively "undo" this
distinction and leave us with an ambiguous situation again.

If the purpose of an exception-handling mechanism is to ensure that
exceptional information is propagated reliably through any computation, then
the proposed definitions don't serve this purpose.

In my position paper, tetrits have the same propagation semantics as the
multi-valued logic of bool_set. These are the semantics we need in the P1788
exception handling mechanism.

Nate