I7: the good parts?

I continually find the I7 syntax and semantics to be a fascinating study but at the same time rather overwhelming, when not bewildering.

I’m curious to know what you all find most useful and/or well designed in the language. Note that this isn’t a request for how to make the study of I7 simpler or easier – just what in particular you use the most or find the most valuable. Relations? Rulebooks? Say phrases? And links to the docs would be most helpful for examples – thanks!

That’s a pretty ill-defined question… even a I7 enthusiast (such as myself) might not declare that “useful” is the same as “well-designed”. Then neither might be the same as “what you need to use most often”.

When I’m writing a game, I use a lot of rules, several say phrases, and a few properties. I might use a couple of rulebooks – but when I say that, it gives the wrong impression; I create a rulebook when other language constructs are too simple or low-level.

My favorite part of the language is the way relations and definitions allow you to write complex, powerful code in a compact, easy-to-read form.

After attacking John: now every dog owned by John which can see the player hates the player. is the classic example.