Part III: Constraints

This part develops Predica's constraint language. Constraints can be read as ordinary database invariants, but the same expressions can also classify larger domains of possible situations.