Skip to main content Accessibility help
  • Print publication year: 2009
  • Online publication date: February 2010

2 - My first CHR programs

from Part I - CHR tutorial


In this chapter, we introduce some simple, but concise and effective CHR programs. Often these programs consist just of one rule. We discuss basic properties of CHR programs which we introduce in an informal way. These properties are the anytime and online algorithm property, logical correctness, rule confluence, declarative concurrency, and worst-case time complexity. The programs in this section will be formally analyzed for these properties in Part III.

We will sometimes give longer examples of computations as a sequence of goals, one per line. We may underline the constraints involved in a rule application if it helps to understand the computation.

CHR as a database language

We can use CHR as an information store, as a simple deductive database, where database relations are modeled as CHR constraints which are maintained in the constraint store. Each database tuple corresponds to an instance of the constraint. The query contains (or generates) the tuples of the database as CHR constraints. Database queries, views, integrity constraints, and deductive database rules can be formulated as CHR propagation rules. This leads to the deduction of new and additional data constraints, i.e. tuples.