Samovar is a DSL for world-modeling using predicates rather than explicit objects. It could be thought of as an "assertion-retraction engine", which itself could be thought of as a very stilted style of Prolog programming plus some syntactic sugar.
rules [actor(α),item(β),~holding(α,β)] α picks up the β. [holding(α,β)] [actor(α),item(β),holding(α,β)] α puts down the β. [~holding(α,β)] end situations [actor(Ignatz),item(brick)] end