Consider this code:
Lab is a room.
A hat is a kind of container. The carrying capacity of a hat is usually 1.
A hat can be small, medium, or large (this is its size property). A hat can be red, blue, or green (this is its color property).
[group 1]
Understand the size property as describing a hat. Understand the color property as describing a hat.
[group 2]
Understand "on [something related by reversed support]" as a thing.
Understand "in [something related by reversed containment]" as a thing.
[group 3]
[Understand "on [something related by reversed support]" as a hat.
Understand "in [something related by reversed containment]" as a hat.]
A table is in the Lab. One large blue hat is on the table.
A box is in the Lab. One small blue hat is in the box.
Before printing the name of a hat: say "[size of the item described] [color of the item described] ".
In 6L38, at least, when I run this as is, “x hat on table” yields “You can’t see any such thing.”
When I comment out group 1 of Understand statements, the size and color ones, “x hat on table” yields “The large blue hat is empty” (as expected).
When I uncomment group 1 and group 3 and comment out group 2, so that the understand-by-relation statements apply only to hats rather than all things, again “x hat on table” yields “You can’t see any such thing.”
So it seems as though the understand-by-property statements are fighting with the understand-by-relation statements, but only when the understand-by-relation statements apply to things rather than a subkind. Is there any reason this should be happening?