Expressiveness of Statements

We utilize in DPF only atomic statements, called "atomic constraints", i.e., statements like parent(*Anna*, *Uwe*, *Gabi*) in predicate logic stating that *Uwe* and *Gabi* are the parents of *Anna*. With those statements, we can not express all relevant constraints for software systems. String-based languages like the Object Constraint Language (OCL), for example, are traditionally used to express those constraints. OCL is built upon a fragment of firstorder predicate logic and we want to extend the diagrammatic language of sketches in such a way that we can work with statements incorporating the usual logical connectives as well as universal and existential quantification. We want to be able to formulate statements like (∃*x*1∃*x*2∃*x*<sup>3</sup> : parent(*Anna*, *x*2, *x*3) ∧ parent(*x*1, *x*2, *x*3)) in traditional first-order predicate logic stating that *Anna* is the sibling of someone.

Our framework obtained its abstract appearance after we realized that our initial ideas to define such an extension for graph-based sketches would work in arbitrary categories!
