On Role Logic
We present role logic, a notation for describing propertiesof relational structures in shape analysis, databases, andknowledge bases. We construct role logic using the ideas ofde Bruijn's notation for lambda calculus, an encoding offirst-order logic in lambda calculus, and a simple rule forimplicit arguments of unary and binary predicates.The unrestricted version of role logic has the expressivepower of first-order logic with transitive closure. Using asyntactic restriction on role logic formulas, we identify anatural fragment RL^2 of role logic. We show that the RL^2fragment has the same expressive power as two-variable logicwith counting C^2 and is therefore decidable.We present a translation of an imperative language into thedecidable fragment RL^2, which allows compositionalverification of programs that manipulate relationalstructures. In addition, we show how RL^2 encodes booleanshape analysis constraints and an expressive descriptionlogic.