elevator is not possible to be enterable

I was messing around with inform7 today, and I ran into an issue I can’t seem to figure out.

[code]
Understand “talk to [someone]” as talking to.
Report talking to: say “You have nothing to say.”.

credit amount is a number variable.
loan amount is a number variable.
When play begins:
say “Welcome to Stellarscape 3500! This is a text based adventure game, in the Stellarscape Usniverse. The goal of this game, is to provide users with a massive and interesting starmap to explore. There are many features planned, but this game is still in heavy development.”;
now credit amount is 100;
now loan amount is 0.

The City Streets is a room. "Your name is Collin Renyolds. You are on the busy streets of Shangri-La, the largest city in the planet of Xanadu, where you grew up. This city is a lot different than the backwater town you spent your youth in, and you are astounded by the things you see. While this city is much smaller than most of the cities in the core, it is still larger than any community you have layed your eyes upon. As you walk down the busy streets from where the shuttle dropped you off, sirens and horns blair from all directions. You feel sick when you look up at the cars swerving around each other in a seemingly random fashion, and you are filled with worry that a collision could happen at any moment. Meanwhile, around you in the open passegeways between the buildings, which were converted from land vehicle roads long ago, there is an endless swarm of people walking and jogging in all directions, oblivious to the insane traffic going on overhead. With only [credit amount] credits in your account, you feel slighly jelous of all the people in suits around you.

After walking for a few blocks, you arrive at your destination: the Bank of Xanadu. This banking organization is the largest in this part of space, and it is also very important to you. This is because, the doorway to this building is probably the only passage you can take to ever get off of this miserable rock. Since your youth, you have always dreamed of exploring other worlds. You grew up in a farming family, but contrary to your father’s wishes, you took special interest in spacecraft operation during your school years. You graduated top of your class, which means that you will have a very easy time getting a loan to buy your first ship.

The entrance to the bank lies directly to the north."

The Bank lobby is north of the City Streets.

The Bank Lobby is a room. “When you enter the loby, you are surprised at how quiet it is in here compared to the atmopshere in the city. There are many people quietly walking about, between the hallways that line the sides of the loby and the elevator shafts at the end. The only sounds you hear are the soft echoes of footsteps off of the ceiling.”

The elevator shaft is in the Bank Lobby. “You see an elevator shaft open for the taking.”. The elevator shaft is enterable.

The bank teller woman is a woman in the Bank Lobby. “You see a woman with behind a desk, waiting for her next customer.”

Before going to the City Streets:
say “You probably shouldn’t leave until you get your loan.”;
stop the action.
[/code]

The problem is, it keeps saying this:

Problem. You wrote 'The elevator shaft is enterable'  : but the property enterable for the elevator shaft is not allowed to exist, because you haven't said it is. What properties something can have depends on what kind of thing it is: see the Index for details.

You need to specify that the elevator is a container (or a supporter). Only containers and supporters are allowed to be enterable by default.

If you don’t need to the elevator shaft to contain or support objects, but just to handle the player command ENTER SHAFT, you can skip the enterable property and just write an “instead of entering” rule.

Or, you need to say that the object can be enterable since things don’t carry that basic property by default.

[code]An elevator is in Bank Lobby.

An elevator can be enterable. Elevator is enterable.[/code]

I’ve never understood this. Why doesn’t Inform deduce “can be enterable” from “is enterable”?

I’m not completely sure, but I think it’s something to do with not having to allocate memory for every object in the world having every possible set of binary attributes.

It’s not a technical requirement, it’s an organizational choice. It allows the concept of catching a user mistake. Like if you said “Shaft is enterable” but the compiler applied that to Samuel L. Jackson, it could report that that made no sense because people don’t have the “enterable” property.

Yes, the compiler infers some things and not others. (Like if you say “Steve is wearing a hat,” the compiler deduces that the hat is wearable.)

It’s ultimately a set of choices which seemed good to Graham. We can file bugs if some bit of the behavior seems particularly unintuitive.

Yes, I see. I guess that the principle behind the design choice is “properties depend on kind”. When you declare “the shaft can be enterable”, you override the principle by allowing “enterable” for a particular thing whose kind does not support it in general.