In this paper, we address the problem of defining a fixpoint semantics for Constraint Handling Rules (CHR) that captures the behavior of both simplification and propagation rules in a sound and complete way with respect to their declarative semantics. Firstly, we show that the logical reading of states with respect to a set of simplification rules can be characterized by a least fixpoint over the transition system generated by the abstract operational semantics of CHR. Similarly, we demonstrate that the logical reading of states with respect to a set of propagation rules can be characterized by the greatest fixpoint. Then, in order to take advantage of both types of rules without losing fixpoint characterization, we present a new operational semantics with persistent constraints.
We finally establish that this semantics can be characterized by two nested fixpoints, and we show that the resulting language is an elegant framework to program using coinductive reasoning.