In this formal part of the book, we define the syntax and semantics of the CHR programming language. We will actually define several operational and several declarative semantics. We introduce guaranteed properties of CHR programs such as incrementality and concurrency. We then analyze CHR programs for desired properties such as termination and confluence.
Last but not least we show how to embed essential aspects of other rulebased and graph-based formalisms such as term rewriting, Petri nets, and constraint programming in CHR.
When we present theorems and the like, we will only give the proof idea, detailed proofs can be found in the respective research papers.