Constraint Handling Rules (CHR) is an extension to Prolog which opens up
a spectrum of hypotheses-based reasoning in logic programs without
additional interpretation overhead.
Abduction with integrity constraints is one example of hypotheses-based reasoning which can be
implemented directly in Prolog and CHR with a straightforward use of available
and efficiently implemented facilities.
The present paper clarifies the semantic foundations for this way of doing
abduction in CHR and Prolog as well as other examples
of hypotheses-based reasoning that is possible,
including assumptive logic programming, hypotheses with priority and scope,
and nonmonotonic reasoning.
Examples are presented as executable code so the paper may also serve
the additional purpose of a practical guide for developing such programs,
and it is demonstrated that the approach provides a seamless integration
with existing constraint solvers