  This paper surveys recent work on applying analysis and transformation
techniques that originate in the field of constraint logic programming (CLP) to
the problem of verifying software systems. We present specialisation-based
techniques for translating verification problems for different programming
languages, and in general software systems, into satisfiability problems for
constrained Horn clauses (CHCs), a term that has become popular in the
verification field to refer to CLP programs. Then, we describe static analysis
techniques for CHCs that may be used for inferring relevant program properties,
such as loop invariants. We also give an overview of some transformation
techniques based on specialisation and fold/unfold rules, which are useful for
improving the effectiveness of CHC satisfiability tools. Finally, we discuss
future developments in applying these techniques.
