Nate, and anyone else who can elucidate
My sister is staying for a few days so I send this as I wrote it before
Nate's Oct 6 email on bare decorations, which I haven't time to absorb
yet. Nate, forgive me if your explanation answers many of my concerns.
Also, if my language is a bit OTT.
On 5 Oct 2010, at 18:17, Nate Hayes wrote:
In my opinion, there is a large degree of compatibility and overlap
between the proposed NaI and a bare decoration. In other words, the NaI
is mostly serving the same purpose as a bare decoration. This shouldn't
come as too much suprise, because it was the intention of Motion 8 that a
"bare decoration" is NaI.
This brings into the open the fact that despite much study I do not
understand what a bare decoration (BD) is, as Nate understands it.
To me, Nate's BD seems inconsistent, in both its nature and its purpose.
It is clear from Motion 8 §2.1 that bare decoration is a _type_ in the
same way as bare interval is a type, but Nate seems to treat it as a
_value_.
For illustration, suppose we have agreed on these decoration prits as a
level 2 model:
domain, a tetrit d with values 0 to 3.
continuous, a bit c with values 0, 1.
well-formed, a bit w with values 0,1.
Assume types REAL, TETRIT, BIT have been defined. Suppose the interval
part ivl is in inf-sup format with two REAL's. Then we can define
typedef struct{REAL inf; REAL sup;} INTERVAL; //bare interval
typedef struct{TETRIT d; BIT c; BIT w;} DECORATION; //bare decoration
typedef struct{INTERVAL ivl; DECORATION dcw} DINTERVAL; //decorated
interval
...
DINTERVAL XX ...;
If REAL means binary64, and the decoration part dcw is held in 1 byte,
then a whole decorated interval occupies 17 bytes.
That is the only semantics a sane person can get from Motion 8 §2.1 and
preceding, and anything that contradicts it must be WRONG.
Further, the Motion 8 forgetful operation that "drops" the decoration part
is quite unambiguous. It simply extracts the interval field, and
conversely for dropping the interval part. Equivalent to:
INTERVAL xx = XX.ivl;
DECORATION dec = XX.dcw;
In the above, the bare decoration dec is a 1-byte _variable_ from which I
can extract whatever values are currently in d,c,w. And I can re-assemble
XX from xx and dec if I want.
(Probably the API must prevent the application programmer doing these
things if w is false, because that flags an ill-formed object.)
Nate, if you want your BD concept to mean something different from that,
then don't call it "bare decoration". If it's a specific _value_, packed
into a bare interval's 16 bytes, as you seem to indicate, then call it
"bare interval NaI".