Description 
In the below source text, I expose I6's "parse" array variable to I7. It's an array of structs, basically. I've defined a "field" of a struct as "a relation of number to K", where K is the type of the element. So I've defined the array itself as "a relation of index to (a relation of number to K)" to put it succinctly. But I hit one or two problems with it.
First problem: I define the gettor function so that the kind variable K, set by the field's type, is reused in the array type. Except I get spurious I7 compilation errors about the return value no longer being sayable. If I commentout the K and leave "word value" in its place, everything compiles and works beautifully. In the source, see the todecide function that has K commented out.
Second problem: since the Zmachine uses bytes as indexes (the > operator), I changed the field from "number" to "arithmetic value" where needed. But the array's type doesn't like it, giving the same unsayable values error. If I comment out [arithmetic] and just use "value", it works again. Huh? How can the superspecific "number" and supergeneral "value" both work but not the "arithmetic value" inbetween? (In the source, see the definition for (parse) which has arithmetic commented out.)
[The below source text compiles and works asis for both VMs. Uncommenting arithmethic, or swapping the commented K with word value, exposes the bug(s).]
