Comments on decoration ill, intersection and union
John, P1788,
It appears that knowing Dom(f) is empty requires global knowledge of the
function f. For example, some Computer Algebra System (CAS) or a user's
comprehensive run-time knowledge of an entire program may be required. But
complicated functions may be composed from collections of smaller functions
or subroutines that are part of pre-compiled libraries, for instance, so
even a CAS may not be able to prove the ill decoration. This leads me to
think it should be dropped.
On a different topic:
Empty is a subset of any interval in set-theory. I think it is advantageous
to have a decoration that has this property too, i.e., a decoration that is
a "subset" of every other decoration. This would be the decoration ein for
"empty input" with property p_ein(f,X) defined as X is empty, and the
restriction of f to X is (vacuously) continuous.
Removing ill and adding ein would give the propagation order:
ein > dac > def > trv > emp
and the exclusivity rule is satisfied such that ein is a subset of every
decoration.
This allows set-theoretic operations like intersection and union to be
decorated. For example, the function in Example 2 on pp. 34-35 may be
implemented:
U = f1(X intersect [-oo,-2])
V = f2(X intersect [-2,2])
W = f1(X intersect [2,+oo])
return U union V union W
The user's knowledge that the function f is continuous makes this
implementation safe. Piecewise functions with discontinuities may similarly
require user's knowledge to implement safely.
IMO the issue of safety is not an argument for or against P1788 providing
standardized rules for decorated intersection and union operations, since
users have an equal opportunity to write bad code in either scenario.
But standardizing decoration rules for these operations provides opportunity
for faster and more efficient implementations when due to the user's
knowledge the standard propagation rules can be applied (for example an
interval processor can then compute the decorations at same speed as for
arithmetic operations).
My suggestion for P1788 to consider is that decorated intersection provides
the weakest decoration of the input operands according to the linear
propagation order (much like an arithmetic operation); and decorated union
provides the "tightest" decoration containing both of the input operands.
Examples of decorated unions:
ein union dac = dac
dac union def = def
dac union emp = trv
emp union emp = emp
ein union emp = emp
Nate