Analysis and Transformation of Constrained Horn Clauses for Program Verification

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 specialization-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 specialization and fold/unfold rules, which are useful for improving the effectiveness of CHC satisfiability tools. Finally, we discuss future developments in applying these techniques.

[1]  Nicolas Halbwachs,et al.  Automatic discovery of linear restraints among variables of a program , 1978, POPL.

[2]  Sumit Gulwani,et al.  Control-flow refinement and progress invariants for bound analysis , 2009, PLDI.

[3]  C. R. Ramakrishnan,et al.  Beyond Tamaki-Sato Style Unfold/Fold Transformations for Normal Logic Programs , 1999, ASIAN.

[4]  Danny De Schreye,et al.  Constrained partial deduction and the preservation of characteristic trees , 2009, New Generation Computing.

[5]  中川 裕志,et al.  UNFOLD/FOLD TRANSFORMATION OF STRATIFIED PROGRAMS , 1989 .

[6]  John P. Gallagher,et al.  Tree dimension in verification of constrained Horn clauses , 2018, Theory and Practice of Logic Programming.

[7]  Alberto Pettorossi,et al.  Transformation Rules for Locally Stratified Constraint Logic Programs , 2004, Program Development in Computational Logic.

[8]  Étienne Payet,et al.  A termination analyzer for Java bytecode based on path-length , 2010, TOPL.

[9]  Jorge A. Navas,et al.  Failure tabled constraint logic programming by interpolation , 2013, Theory Pract. Log. Program..

[10]  Giorgio Delzanno,et al.  Model Checking in CLP , 1999, TACAS.

[11]  Elvira Albert,et al.  Decompilation of Java bytecode to Prolog by partial evaluation , 2009, Inf. Softw. Technol..

[12]  Manuel V. Hermenegildo,et al.  Using Global Analysis, Partial Specifications, and an Extensible Assertion Language for Program Validation and Debugging , 1999, The Logic Programming Paradigm.

[13]  Manuel V. Hermenegildo,et al.  Energy Consumption Analysis of Programs Based on XMOS ISA-Level Models , 2013, LOPSTR.

[14]  Urszula Wybraniec-Skardowska,et al.  On Certain Axiomatizations of Arithmetic of Natural and Integer Numbers , 2019, Axioms.

[15]  Alan J. Hu,et al.  Formal Methods in Computer-Aided Design , 2004, Lecture Notes in Computer Science.

[16]  Philipp Rümmer,et al.  Systematic Predicate Abstraction Using Variable Roles , 2017, NFM.

[17]  M. Hermenegildo,et al.  Deriving a fixpoint computation algorithm for top-down abstract interpretation of logic programs , 1990 .

[18]  Saumya K. Debray,et al.  Abstract Interpretation of Logic Programs using Magic Transformations , 1994, J. Log. Program..

[19]  Ekaterina Komendantskaya,et al.  Coinduction in Uniform: Foundations for Corecursive Proof Search with Horn Clauses , 2018, ESOP.

[20]  Bor-Yuh Evan Chang,et al.  Boogie: A Modular Reusable Verifier for Object-Oriented Programs , 2005, FMCO.

[21]  Elvira Albert,et al.  Cost Analysis of Java Bytecode , 2007, ESOP.

[22]  Joxan Jaffar,et al.  Constraint logic programming , 1987, POPL '87.

[23]  Dov M. Gabbay,et al.  What Is Negation as Failure? , 2012, Logic Programs, Norms and Action.

[24]  Michael J. Maher,et al.  The Semantics of Constraint Logic Programs , 1998, J. Log. Program..

[25]  Maximiliano Klemen,et al.  Cost Analysis of Smart Contracts Via Parametric Resource Analysis , 2020, SAS.

[26]  Mikolás Janota,et al.  Digital Object Identifier (DOI): , 2000 .

[27]  C. A. R. HOARE,et al.  An axiomatic basis for computer programming , 1969, CACM.

[28]  Robert A. Kowalski,et al.  Linear Resolution with Selection Function , 1971, Artif. Intell..

[29]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[30]  Hiroshi Unno,et al.  Automating Induction for Solving Horn Clauses , 2016, CAV.

[31]  Peter J. Stuckey,et al.  A practical object‐oriented analysis engine for CLP , 1998 .

[32]  Yoshihiko Futamura,et al.  Partial Evaluation of Computation Process--An Approach to a Compiler-Compiler , 1999, High. Order Symb. Comput..

[33]  Uday P. Khedker,et al.  Efficiency, Precision, Simplicity, and Generality in Interprocedural Data Flow Analysis: Resurrecting the Classical Call Strings Method , 2008, CC.

[34]  Temesghen Kahsai,et al.  JayHorn: A Framework for Verifying Java programs , 2016, CAV.

[35]  David Maier,et al.  Magic sets and other strange ways to implement logic programs (extended abstract) , 1985, PODS '86.

[36]  Ju. V. Matijasevic,et al.  ENUMERABLE SETS ARE DIOPHANTINE , 2003 .

[37]  John P. Gallagher,et al.  Control-Flow Refinement by Partial Evaluation, and its Application to Termination and Cost Analysis , 2019, Theory and Practice of Logic Programming.

[38]  C.-H. Luke Ong,et al.  Higher-order constrained horn clauses for verification , 2018, Proc. ACM Program. Lang..

[39]  Michael Leuschel,et al.  A Compiler Generator for Constraint Logic Programs , 2003, Ershov Memorial Conference.

[40]  Patrice Godefroid,et al.  Dynamic partial-order reduction for model checking software , 2005, POPL '05.

[41]  Alberto Pettorossi,et al.  Relational Verification Through Horn Clause Transformation , 2016, SAS.

[42]  C. R. Ramakrishnan,et al.  Verification of Parameterized Systems Using Logic Program Transformations , 2000, TACAS.

[43]  Clara Schneidewind,et al.  eThor: Practical and Provably Sound Static Analysis of Ethereum Smart Contracts , 2020, CCS.

[44]  Michael Luttenberger,et al.  Newtonian program analysis , 2010, JACM.

[45]  Michael Codish,et al.  Bottum-up abstract interpretation of logic programs , 1992 .

[46]  Jochen Hoenicke,et al.  Refinement of Trace Abstraction , 2009, SAS.

[47]  Greg Nelson,et al.  Simplification by Cooperating Decision Procedures , 1979, TOPL.

[48]  Albert L. Baker,et al.  Preliminary design of JML: a behavioral interface specification language for java , 2006, SOEN.

[49]  Aws Albarghouthi Probabilistic Horn Clause Verification , 2017, SAS.

[50]  Grigory Fedyukovich,et al.  Property Directed Inference of Relational Invariants , 2019, 2019 Formal Methods in Computer Aided Design (FMCAD).

[51]  Alberto Pettorossi,et al.  Transformation of Logic Programs: Foundations and Techniques , 1994, J. Log. Program..

[52]  Alberto Pettorossi,et al.  Property-Based Test Case Generators for Free , 2019, TAP@FM.

[53]  Giorgio Delzanno,et al.  Constraint-based deductive model checking , 2001, International Journal on Software Tools for Technology Transfer.

[54]  Eric Walter From Calculus to Computation , 2014 .

[55]  Ofer Strichman,et al.  Inference rules for proving the equivalence of recursive procedures , 2008, Acta Informatica.

[56]  Peter J. Stuckey,et al.  Incremental analysis of constraint logic programs , 2000, TOPL.

[57]  Jean Rohmer,et al.  The Alexander Method — A technique for the processing of recursive axioms in deductive databases , 1986, New Generation Computing.

[58]  Xavier Leroy,et al.  Mechanized Semantics for the Clight Subset of the C Language , 2009, Journal of Automated Reasoning.

[59]  Pascal Van Hentenryck,et al.  Experimental Evaluation of a Generic Abstract Interpretation Algorithm for PROLOG , 1992, ACM Trans. Program. Lang. Syst..

[60]  Vítor Santos Costa,et al.  PrologCheck - Property-Based Testing in Prolog , 2014, FLOPS.

[61]  Nikolaj Bjørner,et al.  Z3: An Efficient SMT Solver , 2008, TACAS.

[62]  Elvira Albert,et al.  Removing useless variables in cost analysis of Java bytecode , 2008, SAC '08.

[63]  Amir Pnueli,et al.  CoVaC: Compiler Validation by Program Analysis of the Cross-Product , 2008, FM.

[64]  Manuel V. Hermenegildo,et al.  Compile-Time Derivation of Variable Dependency Using Abstract Interpretation , 1992, J. Log. Program..

[65]  José C. Monteiro,et al.  Automatic equivalence checking of programs with uninterpreted functions and integer arithmetic , 2015, International Journal on Software Tools for Technology Transfer.

[66]  John P. Gallagher,et al.  Analysis of Imperative Programs through Analysis of Constraint Logic Programs , 1998, SAS.

[67]  Jean-Christophe Filliâtre,et al.  Why3 - Where Programs Meet Provers , 2013, ESOP.

[68]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.

[69]  Wlodzimierz Drabent,et al.  On the Role of Semantic Approximations on Validation and Diagnosis of Contraint Logic Programs , 1997, AADEBUG.

[70]  Alberto Pettorossi,et al.  Improving Reachability Analysis of Infinite State Systems by Specialization , 2011, Fundam. Informaticae.

[71]  David Scott Warren,et al.  A System for Tabled Constraint Logic Programming , 2000, Computational Logic.

[72]  Derek R. Brough Grammar-related transformations of logic programs , 2009, New Generation Computing.

[73]  Alberto Pettorossi,et al.  Semantics and Controllability of Time-Aware Business Processes , 2019, Fundam. Informaticae.

[74]  Robert K. Brayton,et al.  Efficient implementation of property directed reachability , 2011, 2011 Formal Methods in Computer-Aided Design (FMCAD).

[75]  Alberto Pettorossi,et al.  Automated strategies for specializing constraint logic programs , 2000, LOPSTR.

[76]  Roberto Bagnara,et al.  The Parma Polyhedra Library: Toward a complete set of numerical abstractions for the analysis and verification of hardware and software systems , 2006, Sci. Comput. Program..

[77]  John P. Gallagher,et al.  Constraint specialisation in Horn clause verification , 2017, Sci. Comput. Program..

[78]  Viktor Kuncak,et al.  Induction for SMT Solvers , 2015, VMCAI.

[79]  A. Tarski A LATTICE-THEORETICAL FIXPOINT THEOREM AND ITS APPLICATIONS , 1955 .

[80]  Lawrence Charles Paulson,et al.  Isabelle/HOL: A Proof Assistant for Higher-Order Logic , 2002 .

[81]  Nikolaj Bjørner,et al.  Generalized Property Directed Reachability , 2012, SAT.

[82]  Andrey Rybalchenko,et al.  Solving Existentially Quantified Horn Clauses , 2013, CAV.

[83]  Cesare Tinelli SMT-Based Model Checking , 2012, NASA Formal Methods.

[84]  Weifeng Wang,et al.  Trace Abstraction Refinement for Solving Horn Clauses , 2016, Comput. J..

[85]  Manuel V. Hermenegildo,et al.  An Integrated Approach to Assertion-Based Random Testing in Prolog , 2019, LOPSTR.

[86]  Alberto Pettorossi,et al.  VeriMAP: A Tool for Verifying Programs through Transformations , 2014, TACAS.

[87]  Jorge A. Navas,et al.  User-Definable Resource Usage Bounds Analysis for Java Bytecode , 2009, BYTECODE@ETAPS.

[88]  Elvira Albert,et al.  Systematic testing of actor systems , 2018, Softw. Test. Verification Reliab..

[89]  Christopher L. Conway,et al.  Cvc4 , 2011, CAV.

[90]  Fabio Fioravanti,et al.  Efficient generation of test data structures using constraint logic programming and program transformation , 2015, J. Log. Comput..

[91]  Manuel V. Hermenegildo,et al.  Combined Static and Dynamic Assertion-Based Debugging of Constraint Logic Programs , 1999, LOPSTR.

[92]  Danny De Schreye,et al.  Deriving of Linear Size Relations by Abstract Interpretation , 1992, PLILP.

[93]  Matteo Maffei,et al.  Foundations and Tools for the Static Analysis of Ethereum Smart Contracts , 2018, CAV.

[94]  William R. Harris,et al.  Relational Verification via Invariant-Guided Synchronization , 2019, HCVS/PERR@ETAPS.

[95]  Manuel V. Hermenegildo,et al.  Incremental and Modular Context-sensitive Analysis , 2018, Theory and Practice of Logic Programming.

[96]  Aaron R. Bradley,et al.  SAT-Based Model Checking without Unrolling , 2011, VMCAI.

[97]  John P. Gallagher,et al.  An Integration of Partial Evaluation in a Generic Abstract Interpretation Framework , 1999, PEPM.

[98]  Krzysztof R. Apt,et al.  Logic Programming and Negation: A Survey , 1994, The Journal of Logic Programming.

[99]  Jorge A. Navas,et al.  Safe upper-bounds inference of energy consumption for java bytecode applications , 2008, FM'08 2008.

[100]  John Wylie Lloyd,et al.  Foundations of Logic Programming , 1987, Symbolic Computation.

[101]  John P. Gallagher,et al.  Tutorial on specialisation of logic programs , 1993, PEPM '93.

[102]  Petar Tsankov,et al.  Securify: Practical Security Analysis of Smart Contracts , 2018, CCS.

[103]  Alberto Pettorossi,et al.  Program verification via iterated specialization , 2014, Sci. Comput. Program..

[104]  Alberto Pettorossi,et al.  Unfolding - Definition - Folding, in this Order, for Avaoiding Unnecessary Variables in Logic Programs , 1991, PLILP.

[105]  Bart Demoen,et al.  Analysing Logic Programs Using 'Prop'-ositional Logic Programs and a Magic Wand , 1993, ILPS.

[106]  Fosca Giannotti,et al.  A Technique for Recursive Invariance Detection and Selective Program Specification , 1991, PLILP.

[107]  John P. Gallagher,et al.  Analysis of Linear Hybrid Systems in CLP , 2008, LOPSTR.

[108]  Alexander Aiken,et al.  Semantic program alignment for equivalence checking , 2019, PLDI.

[109]  Helmut Veith,et al.  Counterexample-guided abstraction refinement for symbolic model checking , 2003, JACM.

[110]  Hugo Herbelin,et al.  The Coq proof assistant : reference manual, version 6.1 , 1997 .

[111]  Philipp Rummer Competition Report: CHC-COMP-20 , 2020 .

[112]  Roland H. C. Yap,et al.  The CLP( R ) language and system , 1992, TOPL.

[113]  Sagar Chaki,et al.  Automatic Abstraction in SMT-Based Unbounded Software Model Checking , 2013, CAV.

[114]  Cesare Tinelli,et al.  Satisfiability Modulo Theories , 2021, Handbook of Satisfiability.

[115]  Roberto Barbuti,et al.  A Bottom-Up Polymorphic Type Inference in Logic Programming , 1992, Sci. Comput. Program..

[116]  V. Krishna Nandivada,et al.  Mix your contexts well: opportunities unleashed by recent advances in scaling context-sensitivity , 2020, CC.

[117]  John W. Lloyd,et al.  Partial Evaluation in Logic Programming , 1991, J. Log. Program..

[118]  John P. Gallagher,et al.  Abstract Interpretation of PIC Programs through Logic Programming , 2006, 2006 Sixth IEEE International Workshop on Source Code Analysis and Manipulation.

[119]  Alberto Griggio,et al.  The MathSAT5 SMT Solver , 2013, TACAS.

[120]  Manuel V. Hermenegildo,et al.  An overview of Ciao and its design philosophy , 2011, Theory and Practice of Logic Programming.

[121]  Alberto Pettorossi,et al.  Predicate Pairing for program verification , 2017, Theory and Practice of Logic Programming.

[122]  Alberto Pettorossi,et al.  Solving Horn Clauses on Inductive Data Types Without Induction , 2018, Theory and Practice of Logic Programming.

[123]  John P. Gallagher,et al.  Inferring Parametric Energy Consumption Functions at Different Software Levels: ISA vs. LLVM IR , 2015, FOPARA.

[124]  Elvira Albert,et al.  Test case generation for object-oriented imperative languages in CLP , 2010, Theory Pract. Log. Program..

[125]  Gilles Barthe,et al.  Relational Verification Using Product Programs , 2011, FM.

[126]  Manuel V. Hermenegildo,et al.  Resource Usage Analysis of Logic Programs via Abstract Interpretation Using Sized Types* , 2014, Theory and Practice of Logic Programming.

[127]  Bruno. Blanchet,et al.  Modeling and Verifying Security Protocols with the Applied Pi Calculus and ProVerif , 2016, Found. Trends Priv. Secur..

[128]  Herbert B. Enderton,et al.  A mathematical introduction to logic , 1972 .

[129]  Viktor Kuncak,et al.  Satisfiability Modulo Recursive Programs , 2011, SAS.

[130]  Grigore Rosu,et al.  An overview of the K semantic framework , 2010, J. Log. Algebraic Methods Program..

[131]  Bertrand Jeannet,et al.  Apron: A Library of Numerical Abstract Domains for Static Analysis , 2009, CAV.

[132]  Manuel V. Hermenegildo,et al.  Static Performance Guarantees for Programs with Runtime Checks , 2018, PPDP.

[133]  Andy King,et al.  Inferring Argument Size Relationships with CLP(R) , 1996, LOPSTR.

[134]  Gerda Janssens,et al.  Global analysis of constraint logic programs , 1996, TOPL.

[135]  William Craig,et al.  Three uses of the Herbrand-Gentzen theorem in relating model theory and proof theory , 1957, Journal of Symbolic Logic.

[136]  Sukrit Kalra,et al.  ZEUS: Analyzing Safety of Smart Contracts , 2018, NDSS.

[137]  DART: directed automated random testing , 2005, PLDI.

[138]  Manuel V. Hermenegildo,et al.  Abstract Interpretation with Specialized Definitions , 2006, SAS.

[139]  Michael Leuschel,et al.  The Ecce and Logen partial evaluators and their web interfaces , 2006, PEPM '06.

[140]  Thomas W. Reps,et al.  Precise interprocedural dataflow analysis via graph reachability , 1995, POPL '95.

[141]  Manuel V. Hermenegildo,et al.  Optimized Algorithms for Incremental Analysis of Logic Programs , 1996, SAS.

[142]  Armin Biere,et al.  Boolector: An Efficient SMT Solver for Bit-Vectors and Arrays , 2009, TACAS.

[143]  Peter Sestoft,et al.  Partial evaluation and automatic program generation , 1993, Prentice Hall international series in computer science.

[144]  Dan Sahlin,et al.  Mixtus: An automatic partial evaluator for full Prolog , 2009, New Generation Computing.

[145]  Koen Claessen,et al.  QuickCheck: a lightweight tool for random testing of Haskell programs , 2000, ACM SIGPLAN International Conference on Functional Programming.

[146]  Thom W. Frühwirth,et al.  Theory and Practice of Constraint Handling Rules , 1998, J. Log. Program..

[147]  Koushik Sen,et al.  DART: directed automated random testing , 2005, PLDI '05.

[148]  Thierry Massart,et al.  Infinite State Model Checking by Abstract Interpretation and Program Specialisation , 1999, LOPSTR.

[149]  Jorge A. Navas,et al.  A Flexible, (C)LP-Based Approach to the Analysis of Object-Oriented Programs , 2008, LOPSTR.

[150]  Andrew E. Santosa,et al.  A CLP proof method for timed automata , 2004, 25th IEEE International Real-Time Systems Symposium.

[151]  Alberto Pettorossi,et al.  Semantics-based generation of verification conditions via program specialization , 2017, Sci. Comput. Program..

[152]  Jorge A. Navas,et al.  TRACER: A Symbolic Execution Tool for Verification , 2012, CAV.

[153]  Dejan Jovanović,et al.  Solving Non-linear Arithmetic , 2012, IJCAR.

[154]  Alberto Pettorossi,et al.  Verifying CTL properties of infinite state systems by specializing constraint logic programs , 2001 .

[155]  Jorge A. Navas,et al.  The SeaHorn Verification Framework , 2015, CAV.

[156]  Dean Jacobs,et al.  Multiple Specialization of Logic Programs with Run-Time Test , 1990, ICLP.

[157]  Bernard Lang,et al.  Programming Environments Based on Structured Editors: The MENTOR Experience, , 1980 .

[158]  Pascal Van Hentenryck,et al.  Experimental evaluation of a generic abstract interpretation algorithm for Prolog , 1992, ICCL.

[159]  Germán Vidal,et al.  Forward Slicing by Conjunctive Partial Deduction and Argument Filtering , 2005, ESOP.

[160]  Jorge A. Navas,et al.  User-Definable Resource Bounds Analysis for Logic Programs , 2007, ICLP.

[161]  Salvador Lucas,et al.  SAT Modulo Linear Arithmetic for Solving Polynomial Constraints , 2010, Journal of Automated Reasoning.

[162]  Saumya K. Debray,et al.  Cost analysis of logic programs , 1993, TOPL.

[163]  John P. Gallagher,et al.  Horn clause verification with convex polyhedral abstraction and tree automata-based refinement , 2017, Comput. Lang. Syst. Struct..

[164]  Damien Doligez,et al.  The OCaml system release 4.07: Documentation and user's manual , 2013 .

[165]  Michael Leuschel,et al.  Redundant Argument Filtering of Logic Programs , 1996, LOPSTR.

[166]  JAD HAMZA,et al.  System FR: formalized foundations for the stainless verifier , 2019, Proc. ACM Program. Lang..

[167]  Manuel V. Hermenegildo,et al.  A general framework for static profiling of parametric resource usage* , 2016, Theory and Practice of Logic Programming.

[168]  Alberto Pettorossi,et al.  Generalization strategies for the verification of infinite state systems , 2011, Theory and Practice of Logic Programming.

[169]  David Scott Warren,et al.  Memoing for logic programs , 1992, CACM.

[170]  J. Meseguer,et al.  Security Policies and Security Models , 1982, 1982 IEEE Symposium on Security and Privacy.

[171]  Manuel V. Hermenegildo,et al.  Incremental Analysis of Logic Programs with Assertions and Open Predicates , 2019, LOPSTR.

[172]  Luc De Raedt,et al.  On the implementation of the probabilistic logic programming language ProbLog , 2010, Theory and Practice of Logic Programming.

[173]  Joxan Jaffar Efficient unification over infinite terms , 2009, New Generation Computing.

[174]  Gordon D. Plotkin,et al.  A structural approach to operational semantics , 2004, J. Log. Algebraic Methods Program..

[175]  Shuvendu K. Lahiri,et al.  Differential assertion checking , 2013, ESEC/FSE 2013.

[176]  K. Claessen,et al.  QuickCheck: a lightweight tool for random testing of Haskell programs , 2000, ICFP '00.

[177]  John P. Gallagher,et al.  Rahft: A Tool for Verifying Horn Clauses Using Abstract Interpretation and Finite Tree Automata , 2016, CAV.

[178]  Manuel V. Hermenegildo,et al.  Static Performance Guarantees for Programs with Runtime Checks , 2018, PPDP.

[179]  Maurice Bruynooghe,et al.  Under Consideration for Publication in Theory and Practice of Logic Programming Logic Program Specialisation through Partial Deduction: Control Issues , 2022 .

[180]  Vladimir Klebanov,et al.  Automating regression verification , 2014, Software Engineering & Management.

[181]  Helko Lehmann,et al.  Coverability of Reset Petri Nets and Other Well-Structured Transition Systems by Partial Deduction , 2000, Computational Logic.

[182]  Taisuke Sato,et al.  PRISM: A Language for Symbolic-Statistical Modeling , 1997, IJCAI.

[183]  John P. Gallagher,et al.  Convex Hull Abstractions in Specialization of CLP Programs , 2002, LOPSTR.

[184]  Nikolaj Bjørner,et al.  Horn Clause Solvers for Program Verification , 2015, Fields of Logic and Computation II.

[185]  Developing verified programs with Dafny , 2013, 2013 35th International Conference on Software Engineering (ICSE).

[186]  Alberto Pettorossi,et al.  Semantics-based generation of verification conditions by program specialization , 2015, PPDP.

[187]  John P. Gallagher,et al.  From Big-Step to Small-Step Semantics and Back with Interpreter Specialisation , 2020, VPT/HCVS@ETAPS.

[188]  A Pnueli,et al.  Two Approaches to Interprocedural Data Flow Analysis , 2018 .

[189]  Silvio Ghilardi,et al.  Decision Procedures for Flat Array Properties , 2014, Journal of Automated Reasoning.

[190]  Flemming Nielson,et al.  Semantics with applications - a formal introduction , 1992, Wiley professional computing.

[191]  Saumya K. Debray,et al.  Lower Bound Cost Estimation for Logic Programs , 1997, ILPS.

[192]  Alexander Schrijver,et al.  Theory of linear and integer programming , 1986, Wiley-Interscience series in discrete mathematics and optimization.

[193]  Alberto Pettorossi,et al.  Removing Algebraic Data Types from Constrained Horn Clauses Using Difference Predicates , 2020, IJCAR.

[194]  Sten-Åke Tärnlund,et al.  Horn clause computability , 1977, BIT.

[195]  Elvira Albert,et al.  PET: a partial evaluation-based test case generation tool for Java bytecode , 2010, PEPM '10.

[196]  Manuel V. Hermenegildo,et al.  Abstract Multiple Specialization and Its Application to Program Parallelization , 1999, J. Log. Program..

[197]  John Darlington,et al.  A Transformation System for Developing Recursive Programs , 1977, J. ACM.

[198]  John P. Gallagher,et al.  Practical Model-Based Static Analysis for Definite Logic Programs , 1995, ILPS.

[199]  Maja Hanne Kirkeby Probabilistic Output Analyses for Deterministic Programs - Reusing Existing Non-probabilistic Analyses , 2019, QAPL@ETAPS.

[200]  Alan Bundy,et al.  The Automation of Proof by Mathematical Induction , 1999, Handbook of Automated Reasoning.

[201]  Alberto Pettorossi,et al.  Controlling Polyvariance for Specialization-based Verification , 2011, CILC.

[202]  Alberto Pettorossi,et al.  Predicate Pairing with Abstraction for Relational Verification , 2017, LOPSTR.

[203]  Hassen Saïdi,et al.  Construction of Abstract State Graphs with PVS , 1997, CAV.

[204]  Maurice Bruynooghe,et al.  Exploiting Goal Independence in the Analysis of Logic Programs , 1997, J. Log. Program..

[205]  Cesare Tinelli,et al.  An efficient SMT solver for string constraints , 2016, Formal Methods Syst. Des..

[206]  Isil Dillig,et al.  Relational verification using reinforcement learning , 2019, Proc. ACM Program. Lang..

[207]  K. McMillan,et al.  Solving Constrained Horn Clauses using Interpolation , 2013 .

[208]  John P. Gallagher,et al.  Ensuring Global Termination of Partial Deduction while Allowing Flexible Polyvariance , 1995, ICLP.

[209]  Saumya K. Debray,et al.  Global Flow Analysis as a Practical Compilation Tool , 1992, J. Log. Program..

[210]  Danny De Schreye,et al.  Controlling generalization and polyvariance in partial deduction of normal logic programs , 1998, TOPL.

[211]  Sarfraz Khurshid,et al.  Software assurance by bounded exhaustive testing , 2004, IEEE Transactions on Software Engineering.

[212]  Christophe Meudec ATGen: automatic test data generation using constraint logic programming and symbolic execution † , 2001, Softw. Test. Verification Reliab..

[213]  Philipp Rümmer,et al.  The ELDARICA Horn Solver , 2018, 2018 Formal Methods in Computer Aided Design (FMCAD).

[214]  Daniel Kroening,et al.  Deciding floating-point logic with abstract conflict driven clause learning , 2013, Formal Methods in System Design.

[215]  Naoki Kobayashi,et al.  ICE-Based Refinement Type Discovery for Higher-Order Functional Programs , 2020, Journal of Automated Reasoning.

[216]  Mikhail A. Bulyonkov Polyvariant mixed computation for analyzer programs , 2004, Acta Informatica.

[217]  Grigory Fedyukovich,et al.  Synchronizing Constrained Horn Clauses , 2017, LPAR.

[218]  Manuel V. Hermenegildo,et al.  Integrated program debugging, verification, and optimization using abstract interpretation (and the Ciao system preprocessor) , 2005, Sci. Comput. Program..

[219]  Alastair F. Donaldson,et al.  Software Model Checking , 2014, Computing Handbook, 3rd ed..

[220]  Manuel V. Hermenegildo,et al.  Removing Superfluous Versions in Polyvariant Specialization of Prolog Programs , 2005, LOPSTR.

[221]  Manuel V. Hermenegildo,et al.  Interval-Based Resource Usage Verification: Formalization and Prototype , 2011, FOPARA.

[222]  Saumya K. Debray,et al.  On the Practicality of Global Flow Analysis of Logic Programs , 1988, ICLP/SLP.

[223]  Jean-Marie Jacquet,et al.  Introduction to Logic Programming , 1993, ICLP Workshop on Construction of Logic Programs.

[224]  Andrew E. Santosa,et al.  An Interpolation Method for CLP Traversal , 2009, CP.

[225]  Sandro Etalle,et al.  Transformations of CLP Modules , 1996, Theor. Comput. Sci..

[226]  Tobias Nipkow,et al.  Isabelle/HOL , 2002, Lecture Notes in Computer Science.

[227]  John P. Gallagher,et al.  An iterative approach to precondition inference using constrained Horn clauses , 2018, Theory Pract. Log. Program..

[228]  Philip Wadler,et al.  Deforestation: Transforming Programs to Eliminate Trees , 1990, Theor. Comput. Sci..

[229]  Tadashi Kanamori Abstract Interpretation Based on Alexander Templates , 1993, J. Log. Program..

[230]  M. Sørensen,et al.  Conjunctive Partial Deduction: Foundations, Control, Algorithms, and Experiments , 1999, J. Log. Program..

[231]  Michael J. Maher,et al.  Constraint Logic Programming: A Survey , 1994, J. Log. Program..

[232]  Fred Mesnard,et al.  Concolic Testing in CLP , 2020, Theory Pract. Log. Program..

[233]  Gopal Gupta,et al.  Coinductive Logic Programming and Its Applications , 2007, ICLP.

[234]  Arnaud Gotlieb,et al.  Automatic test data generation using constraint solving techniques , 1998, ISSTA '98.

[235]  Jorge A. Navas,et al.  Horn Clauses as an Intermediate Representation for Program Analysis and Transformation , 2015, Theory Pract. Log. Program..

[236]  Arie Gurfinkel,et al.  Property Directed Self Composition , 2019, CAV.

[237]  Patrick Cousot,et al.  Comparing the Galois Connection and Widening/Narrowing Approaches to Abstract Interpretation , 1992, PLILP.

[238]  Manuel V. Hermenegildo,et al.  Towards Energy Consumption Verification via Static Analysis , 2015, ArXiv.

[239]  Manuel V. Hermenegildo,et al.  Interval-based resource usage verification by translation into Horn clauses and an application to energy consumption , 2018, Theory and Practice of Logic Programming.

[240]  Hirohisa Seki,et al.  Proving Properties of Co-Logic Programs by Unfold/Fold Transformations , 2011, LOPSTR.

[241]  Laurent Fribourg,et al.  A Decompositional Approach for Computing Least Fixed-Points of Datalog Programs with Z-Counters , 2004, Constraints.

[242]  Fabio Fioravanti,et al.  Generation of Test Data Structures Using Constraint Logic Programming , 2012, TAP@TOOLS.

[243]  Andrey Rybalchenko,et al.  Synthesizing software verifiers from proof rules , 2012, PLDI.

[244]  Bruno Dutertre,et al.  Yices 2.2 , 2014, CAV.

[245]  Yueling Zhang,et al.  Syntax-Guided Termination Analysis , 2018, CAV.

[246]  Alberto Pettorossi,et al.  The Loop Absorption and the Generalization Strategies for the Development of Logic Programs and Partial Deduction , 1993, J. Log. Program..

[247]  Antoine Rauzy,et al.  Efficient Bottom-up Abstract Interpretation of Prolog by Means of Constraint Solving over Symbolic Finite Domains , 1993, PLILP.

[248]  Simple relational correctness proofs for static analyses and program transformations , 2004, POPL.

[249]  Elvira Albert,et al.  Closed-Form Upper Bounds in Static Cost Analysis , 2011, Journal of Automated Reasoning.

[250]  Alberto Pettorossi,et al.  Proving Theorems by Program Transformation , 2013, Fundam. Informaticae.

[251]  David Monniaux,et al.  Abstract Interpretation of Probabilistic Semantics , 2000, SAS.

[252]  Cesare Tinelli,et al.  Satisfiability Modulo Theories , 2018, Handbook of Model Checking.

[253]  Sagar Chaki,et al.  SMT-based model checking for recursive programs , 2014, Formal Methods in System Design.

[254]  Ulf Nilsson,et al.  Abstract Interpretation: A Kind of Magic , 1991, Theor. Comput. Sci..