
arXiv: 2111.11819
handle: 11564/775851 , 20.500.14243/413928
Abstract We address the problem of checking the satisfiability of constrained Horn clauses (CHCs) defined on algebraic data types (ADTs), such as lists and trees. We propose a new technique for transforming CHCs defined on ADTs into CHCs where the arguments of the predicates have only basic types, such as integers and booleans. Thus, our technique avoids, during satisfiability checking, the explicit use of proof rules based on induction over the ADTs. The main extension over previous techniques for ADT removal is a new transformation rule, called differential replacement, which allows us to introduce auxiliary predicates, whose definitions correspond to lemmas that are used when making inductive proofs. We present an algorithm that performs the automatic removal of ADTs by applying the new rule, together with the traditional folding/unfolding rules. We prove that, under suitable hypotheses, the set of the transformed clauses is satisfiable if and only if so is the set of the original clauses. By an experimental evaluation, we show that the use of the new rule significantly improves the effectiveness of ADT removal. We also show that our approach is competitive with respect to tools that extend CHC solvers with the use of inductive rules.
Program Verification, FOS: Computer and information sciences, Computer Science - Logic in Computer Science, Computer Science - Programming Languages, Logic in Computer Science (cs.LO), Program Transformation, Algebra; Logic programming; Metadata; Trees (mathematics), Constrained Horn Clauses, Algebraic Data Types, Programming Languages (cs.PL)
Program Verification, FOS: Computer and information sciences, Computer Science - Logic in Computer Science, Computer Science - Programming Languages, Logic in Computer Science (cs.LO), Program Transformation, Algebra; Logic programming; Metadata; Trees (mathematics), Constrained Horn Clauses, Algebraic Data Types, Programming Languages (cs.PL)
| selected citations These citations are derived from selected sources. This is an alternative to the "Influence" indicator, which also reflects the overall/total impact of an article in the research community at large, based on the underlying citation network (diachronically). | 6 | |
| popularity This indicator reflects the "current" impact/attention (the "hype") of an article in the research community at large, based on the underlying citation network. | Top 10% | |
| influence This indicator reflects the overall/total impact of an article in the research community at large, based on the underlying citation network (diachronically). | Average | |
| impulse This indicator reflects the initial momentum of an article directly after its publication, based on the underlying citation network. | Top 10% |
