One of the advantages of using LogiQL is the unification of programming model such that prescriptive rules of computation can be specified together with descriptive constraints that need to be solved by a solver. In this publication in Fifth Workshop on Constraint Handling Rules, LogicBlox team members Beata Sarna-Sarosta, David Zook, Emir Pasalic and Molham Aref discuss the formalism of combining these two types of specifications in LogiQL.
Abstract LogiQL is an extension of Datalog supporting global stratification of negation and functional dependencies, designed for use in industrial-scale decision automation applications. Constraint Handling Rules (CHR) is a declarative rule-based programming language, particularly suitable for specifying custom constraint solvers at a high level. Our goal is to enhance LogiQL with CHR-like capabilities in order to improve its expressive power and open it to specification of general-purpose constraint solvers for industrial applications. In this paper we relate the two formalisms and define a translation of a significant class of CHR programs into LogiQL. It turns out that the translation enables reasoning about the properties of CHR programs at a high level of Datalog logic.