Understanding by properties and relations (6L38)

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?

This appears to be the same issue as in the other thread. hat is just an internal kind name, it has no parsable name until you give it one via Understand "hat" as a hat.

1 Like

I’m not sure it is exactly the same, because “x hat” and “x large hat” work! Since the hats are anonymous kind instances, their official names are “hat,” and so “hat” is understood as referring to them.

However, adding Understand "hat" as a hat does fix the issue, so perhaps using the kind name for an anonymous instance doesn’t combine with understanding by relations.

EDIT: Link to the other thread for anyone curious.