Constrained Horn clauses

From testwiki
Revision as of 22:58, 7 November 2024 by 81.41.175.172 (talk)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Template:Short description Template:Missing information Constrained Horn clauses (CHCs) are a fragment of first-order logic with applications to program verification and synthesis. Constrained Horn clauses can be seen as a form of constraint logic programming.[1]

Definition

A constrained Horn clause is a formula of the form

ϕP1(𝐱1)Pn(𝐱𝐧)P(𝐱)

where ϕ is a constraint in some first-order theory, Pi are predicates, and 𝐱i are universally-quantified variables. The addition of constraint makes it a generalization of the plain Horn clause.

Decidability

The satisfiability of constrained Horn clauses with constraints from linear integer arithmetic is undecidable.[2]

Solvers

There are several automated solvers for CHCs,[3] including the SPACER engine of Z3.[4]

CHC-COMP is an annual competition of CHC solvers.[5] CHC-COMP has run every year since 2018.

Applications

Constrained Horn clauses are a convenient language in which to specify problems in program verification.[6] The SeaHorn verifier for LLVM represents verification conditions as constrained Horn clauses,[7] as does the JayHorn verifier for Java.[8]

References

Template:Reflist