Constraint programming, unlike imperative programming, focuses on defining the desired properties of a result rather than specifying a sequence of steps. We will explore interesting properties of this approach using Constraint Handling Rules embedded in the ZIG language.