The comment about an extension was a joke. For context, see Jim’s replies to code that I posted in this thread and this thread.
As for your noose, I’d try modeling it as one wearable object and have attachment be a one-to-one relation, assuming that you won’t allow different ends of the rope, prior to its becoming a noose, to be attached to different things.
You could also just do the whole thing in an ad hoc manner and forego the idea of a relation. Give the noose a “tied to the beam” property, set it when the player types “tie noose to beam” or “attach noose to beam”, disallow attaching the noose to anything else, and then alter the noose description, the room description, the player’s inventory, and the player’s ability to travel when holding the noose based on whether the property is set.
The whole thing is going to be an exercise in thinking up corner cases and making sure that they’re handled properly: can’t tie the noose to the beam unless standing on the stool, complain if it’s already tied, mock the player if they kick the stool or jump off the stool wearing the noose when it’s not attached to the beam (or not wearing the noose when it is attached to the beam), and so on. I’d suggest getting the expected sequence of actions working properly first and then testing it vigorously and fixing issues as you discover them.
To solve this particular issue, assuming you’ve defined an “attaching it to” action, you can do:
Understand the command "attach" as something new.
Understand "attach [something] to [something]" as attaching it to.
to make “attach” distinct from “tie”, although I don’t think that in this case you need to separate these two actions.