Software:Cooperating Validity Checker

From HandWiki
Short description: SMT solver
CVC5
Developer(s)Stanford University and University of Iowa
Initial release2022; 2 years ago (2022)
Stable release
1.0.8[1] / 31 August 2023
Written inC++
Operating systemWindows, Linux, macOS
TypeTheorem prover
LicenseBSD 3-clause
Websitecvc5.github.io

In computer science and mathematical logic, Cooperating Validity Checker (CVC) is a family of satisfiability modulo theories (SMT) solvers. The latest major versions of CVC are CVC4 and CVC5 (stylized cvc5); earlier versions include CVC, CVC Lite, and CVC3.[2] Both CVC4 and cvc5 support the SMT-LIB and TPTP input formats for solving SMT problems, and the SyGuS-IF format for program synthesis. Both CVC4 and cvc5 can output proofs that can be independently checked in the LFSC format, cvc5 additionally supports the Alethe and Lean 4 formats.[3][4] cvc5 has bindings for C++, Python, and Java.

CVC4 competed in SMT-COMP in the years 2014-2020,[5] and cvc5 has competed in the years 2021-2022.[6] CVC4 competed in SyGuS-COMP in the years 2015-2019,[7] and in CASC in 2013-2015.

CVC4 uses the DPLL(T) architecture,[8] and supports the theories of linear arithmetic over rationals and integers, fixed-width bitvectors,[9] floating-point arithmetic,[10] strings,[11] (co)-datatypes,[12] sequences (used to model dynamic arrays),[13] finite sets and relations,[14][15] separation logic,[16] and uninterpreted functions among others. cvc5 additionally supports finite fields.[17]

In addition to standard SMT and SyGuS solving, cvc5 supports abductive reasoning, which is the problem of constructing a formula B that can be conjoined with a formula A to prove a goal formula C.[18][19]

cvc5 has been subject to several independent test campaigns.[20]

Applications

CVC4 has been applied to the synthesis of recursive programs.[21] and to the verification of Amazon Web Services access policies.[22][23] CVC4 and cvc5 have been integrated with Coq[24] and Isabelle.[25] CVC4 is one of the back-end reasoners supported by CBMC, the C Bounded Model Checker.[26]

References

  1. "Release cvc5-1.0.8 · cvc5/cvc5" (in en). https://github.com/cvc5/cvc5/releases/tag/cvc5-1.0.8. 
  2. Barrett, Clark; Tinelli, Cesare (2018), Clarke, Edmund M.; Henzinger, Thomas A.; Veith, Helmut et al., eds., "Satisfiability Modulo Theories" (in en), Handbook of Model Checking (Cham: Springer International Publishing): pp. 305–343, doi:10.1007/978-3-319-10575-8_11, ISBN 978-3-319-10575-8, https://doi.org/10.1007/978-3-319-10575-8_11, retrieved 2023-11-29 
  3. Barbosa, Haniel; Reynolds, Andrew; Kremer, Gereon; Lachnitt, Hanna; Niemetz, Aina; Nötzli, Andres; Ozdemir, Alex; Preiner, Mathias et al. (2022). "Flexible Proof Production in an Industrial-Strength SMT Solver". in Blanchette, Jasmin; Kovács, Laura; Pattinson, Dirk (in en). Automated Reasoning. Lecture Notes in Computer Science. 13385. Cham: Springer International Publishing. pp. 15–35. doi:10.1007/978-3-031-10769-6_3. ISBN 978-3-031-10769-6. https://link.springer.com/chapter/10.1007/978-3-031-10769-6_3. 
  4. (Barbosa Barrett)
  5. "Participants" (in en-US). https://smt-comp.github.io/2014/participants.html. 
  6. "SMT-COMP" (in en-US). https://smt-comp.github.io/2022/participants.html. 
    • Alur, Rajeev; Fisman, Dana; Singh, Rishabh; Solar-Lezama, Armando (2016-02-02). "Results and Analysis of SyGuS-Comp'15". Electronic Proceedings in Theoretical Computer Science 202: 3–26. doi:10.4204/EPTCS.202.3. ISSN 2075-2180. 
    • Alur, Rajeev; Fisman, Dana; Singh, Rishabh; Solar-Lezama, Armando (2016-11-22). "SyGuS-Comp 2016: Results and Analysis". Electronic Proceedings in Theoretical Computer Science 229: 178–202. doi:10.4204/EPTCS.229.13. ISSN 2075-2180. 
    • Alur, Rajeev; Fisman, Dana; Singh, Rishabh; Solar-Lezama, Armando (2017-11-28). "SyGuS-Comp 2017: Results and Analysis". Electronic Proceedings in Theoretical Computer Science 260: 97–115. doi:10.4204/EPTCS.260.9. ISSN 2075-2180. 
  7. Liang, Tianyi; Reynolds, Andrew; Tinelli, Cesare; Barrett, Clark; Deters, Morgan (2014). "A DPLL(T) Theory Solver for a Theory of Strings and Regular Expressions". in Biere, Armin; Bloem, Roderick (in en). Computer Aided Verification. Lecture Notes in Computer Science. 8559. Cham: Springer International Publishing. pp. 646–662. doi:10.1007/978-3-319-08867-9_43. ISBN 978-3-319-08867-9. https://link.springer.com/chapter/10.1007/978-3-319-08867-9_43. 
  8. Hadarean, Liana; Bansal, Kshitij; Jovanović, Dejan; Barrett, Clark; Tinelli, Cesare (2014). "A Tale of Two Solvers: Eager and Lazy Approaches to Bit-Vectors". in Biere, Armin; Bloem, Roderick (in en). Computer Aided Verification. Lecture Notes in Computer Science. 8559. Cham: Springer International Publishing. pp. 680–695. doi:10.1007/978-3-319-08867-9_45. ISBN 978-3-319-08867-9. https://link.springer.com/chapter/10.1007/978-3-319-08867-9_45. 
  9. Brain, Martin; Niemetz, Aina; Preiner, Mathias; Reynolds, Andrew; Barrett, Clark; Tinelli, Cesare (2019). Dillig, Isil; Tasiran, Serdar. eds. "Invertibility Conditions for Floating-Point Formulas" (in en). Computer Aided Verification. Lecture Notes in Computer Science (Cham: Springer International Publishing): 116–136. doi:10.1007/978-3-030-25543-5_8. ISBN 978-3-030-25543-5. https://link.springer.com/chapter/10.1007/978-3-030-25543-5_8. 
  10. Liang, Tianyi; Tsiskaridze, Nestan; Reynolds, Andrew; Tinelli, Cesare; Barrett, Clark (2015). "A Decision Procedure for Regular Membership and Length Constraints over Unbounded Strings". in Lutz, Carsten; Ranise, Silvio (in en). Frontiers of Combining Systems. Lecture Notes in Computer Science. 9322. Cham: Springer International Publishing. pp. 135–150. doi:10.1007/978-3-319-24246-0_9. ISBN 978-3-319-24246-0. https://link.springer.com/chapter/10.1007/978-3-319-24246-0_9. 
  11. Reynolds, Andrew; Blanchette, Jasmin Christian (2015). "A Decision Procedure for (Co)datatypes in SMT Solvers". in Felty, Amy P.; Middeldorp, Aart (in en). Automated Deduction - CADE-25. Lecture Notes in Computer Science. 9195. Cham: Springer International Publishing. pp. 197–213. doi:10.1007/978-3-319-21401-6_13. ISBN 978-3-319-21401-6. https://link.springer.com/chapter/10.1007/978-3-319-21401-6_13. 
  12. Sheng, Ying; Nötzli, Andres; Reynolds, Andrew; Zohar, Yoni; Dill, David; Grieskamp, Wolfgang; Park, Junkil; Qadeer, Shaz et al. (2023-09-15). "Reasoning About Vectors: Satisfiability Modulo a Theory of Sequences" (in en). Journal of Automated Reasoning 67 (3): 32. doi:10.1007/s10817-023-09682-2. ISSN 1573-0670. https://doi.org/10.1007/s10817-023-09682-2. 
  13. Bansal, Kshitij; Reynolds, Andrew; Barrett, Clark; Tinelli, Cesare (2016). "A New Decision Procedure for Finite Sets and Cardinality Constraints in SMT". in Olivetti, Nicola; Tiwari, Ashish (in en). Automated Reasoning. Lecture Notes in Computer Science. 9706. Cham: Springer International Publishing. pp. 82–98. doi:10.1007/978-3-319-40229-1_7. ISBN 978-3-319-40229-1. https://link.springer.com/chapter/10.1007/978-3-319-40229-1_7. 
  14. Meng, Baoluo; Reynolds, Andrew; Tinelli, Cesare; Barrett, Clark (2017). "Relational Constraint Solving in SMT". in de Moura, Leonardo (in en). Automated Deduction – CADE 26. Lecture Notes in Computer Science. 10395. Cham: Springer International Publishing. pp. 148–165. doi:10.1007/978-3-319-63046-5_10. ISBN 978-3-319-63046-5. https://link.springer.com/chapter/10.1007/978-3-319-63046-5_10. 
  15. Reynolds, Andrew; Iosif, Radu; Serban, Cristina; King, Tim (2016). "A Decision Procedure for Separation Logic in SMT". in Artho, Cyrille; Legay, Axel; Peled, Doron (in en). Automated Technology for Verification and Analysis. Lecture Notes in Computer Science. 9938. Cham: Springer International Publishing. pp. 244–261. doi:10.1007/978-3-319-46520-3_16. ISBN 978-3-319-46520-3. https://hal.archives-ouvertes.fr/hal-01418883/file/Atva2016-2.pdf. 
  16. Ozdemir, Alex; Kremer, Gereon; Tinelli, Cesare; Barrett, Clark (2023). "Satisfiability Modulo Finite Fields". in Enea, Constantin; Lal, Akash (in en). Computer Aided Verification. Lecture Notes in Computer Science. 13965. Cham: Springer Nature Switzerland. pp. 163–186. doi:10.1007/978-3-031-37703-7_8. ISBN 978-3-031-37703-7. https://link.springer.com/chapter/10.1007/978-3-031-37703-7_8. 
  17. Reynolds, Andrew; Barbosa, Haniel; Larraz, Daniel; Tinelli, Cesare (2020-05-30). "Scalable Algorithms for Abduction via Enumerative Syntax-Guided Synthesis". Automated Reasoning. Lecture Notes in Computer Science. 12166. pp. 141–160. doi:10.1007/978-3-030-51074-9_9. ISBN 978-3-030-51073-2. 
  18. (Barbosa Barrett)
  19. Berman, Shmuel (2021-10-17). "Programming-by-example by programming-by-example: Synthesis of looping programs". Companion Proceedings of the 2021 ACM SIGPLAN International Conference on Systems, Programming, Languages, and Applications: Software for Humanity. SPLASH Companion 2021. New York, NY, USA: Association for Computing Machinery. pp. 19–21. doi:10.1145/3484271.3484977. ISBN 978-1-4503-9088-0. https://doi.org/10.1145/3484271.3484977. 
  20. Backes, John; Bolignano, Pauline; Cook, Byron; Dodge, Catherine; Gacek, Andrew; Luckow, Kasper; Rungta, Neha; Tkachuk, Oksana et al. (October 2018). Semantic-based Automated Reasoning for AWS Access Policies using SMT. IEEE. pp. 1–9. doi:10.23919/FMCAD.2018.8602994. ISBN 978-0-9835678-8-2. https://ieeexplore.ieee.org/document/8602994. 
  21. Rungta, Neha (2022). "A Billion SMT Queries a Day (Invited Paper)". in Shoham, Sharon; Vizel, Yakir (in en). Computer Aided Verification. Lecture Notes in Computer Science. 13371. Cham: Springer International Publishing. pp. 3–18. doi:10.1007/978-3-031-13185-1_1. ISBN 978-3-031-13185-1. https://link.springer.com/chapter/10.1007/978-3-031-13185-1_1. 
  22. Desharnais, Martin; Vukmirović, Petar; Blanchette, Jasmin; Wenzel, Makarius (2022). "Seventeen Provers Under the Hammer" (in en). DROPS-IDN/V2/Document/10.4230/LIPIcs.ITP.2022.8 (Schloss-Dagstuhl - Leibniz Zentrum für Informatik). doi:10.4230/LIPIcs.ITP.2022.8. https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ITP.2022.8. 
  23. Kroening, Daniel; Tautschnig, Michael (2014). "CBMC – C Bounded Model Checker". in Ábrahám, Erika; Havelund, Klaus (in en). Tools and Algorithms for the Construction and Analysis of Systems. Lecture Notes in Computer Science. 8413. Berlin, Heidelberg: Springer. pp. 389–391. doi:10.1007/978-3-642-54862-8_26. ISBN 978-3-642-54862-8. https://link.springer.com/chapter/10.1007/978-3-642-54862-8_26.