<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://cvc4.stanford.edu/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mdeters</id>
		<title>CVC4 - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://cvc4.stanford.edu/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mdeters"/>
		<link rel="alternate" type="text/html" href="http://cvc4.stanford.edu/wiki/Special:Contributions/Mdeters"/>
		<updated>2026-04-05T16:27:40Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.26.4</generator>

	<entry>
		<id>http://cvc4.stanford.edu/w/index.php?title=About_CVC4&amp;diff=5341</id>
		<title>About CVC4</title>
		<link rel="alternate" type="text/html" href="http://cvc4.stanford.edu/w/index.php?title=About_CVC4&amp;diff=5341"/>
				<updated>2014-12-02T19:46:15Z</updated>
		
		<summary type="html">&lt;p&gt;Mdeters: /* Decision Procedures */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;CVC4 is an automatic theorem prover for [http://en.wikipedia.org/wiki/Satisfiability_Modulo_Theories Satisifiability Modulo Theories (SMT)] (for a more formal introduction to SMT see the following book chapter [https://cs.nyu.edu/~barrett/pubs/BSST09.pdf Satisfiability Modulo Theories] ). Technically, it is an automated validity checker for a many-sorted (i.e., typed) first-order logic with built-in theories.&lt;br /&gt;
It can be used to prove the validity (or, dually, the satisfiability) of a formula with respect to several built-in logical theories and their combination.&lt;br /&gt;
&lt;br /&gt;
CVC4 currently has support for the following theories:&lt;br /&gt;
* equality over free (aka uninterpreted) function and predicate symbols&lt;br /&gt;
* real and integer linear arithmetic&lt;br /&gt;
* bit-vectors&lt;br /&gt;
* arrays&lt;br /&gt;
* tuples&lt;br /&gt;
* records&lt;br /&gt;
* user-defined inductive data types&lt;br /&gt;
* [[Strings|strings]]&lt;br /&gt;
* [[Sets|finite sets]]&lt;br /&gt;
&lt;br /&gt;
CVC4 has a wide variety of features including:&lt;br /&gt;
&lt;br /&gt;
* support for quantifiers through heuristic instantiation;&lt;br /&gt;
* an interactive text-based interface;&lt;br /&gt;
* a rich [http://church.cims.nyu.edu/cvc4-builds/documentation/public/latest/ C++ API] for embedding in other systems;&lt;br /&gt;
* model generation abilities;&lt;br /&gt;
* source compatibility with much of the CVC3 API via a &amp;quot;compatibility library&amp;quot;;&lt;br /&gt;
* essentially no limit on its use for research or commercial purposes (see [http://church.cims.nyu.edu/cvc4-builds/documentation/public/latest-unstable/copying.html license]).&lt;br /&gt;
&lt;br /&gt;
=Web site=&lt;br /&gt;
&lt;br /&gt;
For more information and the latest news about CVC4, visit the [http://cvc4.cs.nyu.edu CVC4 web site].&lt;br /&gt;
&lt;br /&gt;
=Decision Procedures=&lt;br /&gt;
* Architecture&lt;br /&gt;
** See the [http://dl.acm.org/citation.cfm?id=2032319 CVC4 tool paper].&lt;br /&gt;
* Arithmetic&lt;br /&gt;
** CVC4 solves linear real arithmetic using an implementation of [http://link.springer.com/chapter/10.1007%2F11817963_11? Simplex for DPLL(T)]. For a more complete introduction see the [http://yices.csl.sri.com/sri-csl-06-01.pdf tech report].&lt;br /&gt;
** The linear arithmetic module includes heuristics from [http://eprints-phd.biblio.unitn.it/166/2/thesis.pdf Section 2.5 of Alberto Griggio's thesis] and a few currently unpublished ones.&lt;br /&gt;
** Integers are currently handled by first solving the real relaxation of the constraints, and then using a combination of [http://www.cs.wm.edu/~idillig/cav2009.pdf Cuts from Proofs] and branching to ensure integer solutions.  This approach and the equational solver  used are described in [https://es.fbk.eu/people/griggio/papers/jsat12.pdf A Practical Approach to Satisfiability Modulo Linear Integer Arithmetic].&lt;br /&gt;
** A technical report is planned to explain a number of small details and extensions including analysis to improve simplex's conflicts, handling disequalities, supporting model generation in CVC4's combination framework, heuristically propagating equalities over sharing terms, tableau row based propagation, and terminating simplex with unknown.&lt;br /&gt;
** Non-linear arithmetic support is currently rudimentary to non-existent. In CVC4 v1.0, non-linearity is handled by abstracting monomials as unique new variables.  We plan on implementing [http://cs.nyu.edu/~dejan/papers/jovanovic-ijcar2012.pdf Solving Non-Linear Arithmetic] this spring.&lt;br /&gt;
* Arrays&lt;br /&gt;
** Arrays are implemented in a manner inspired by the [http://research.microsoft.com/en-us/um/people/leonardo/files/fmcad09.pdf Generalized, efficient array decision procedures] paper with a few major modifications.&lt;br /&gt;
* Bitvectors&lt;br /&gt;
** Bitvectors is implemented primarily via a lazy schema for bitblasting. See [http://eprints-phd.biblio.unitn.it/345/ Anders Franzen's thesis chapter 3].&lt;br /&gt;
* Combination&lt;br /&gt;
** Theory combination is based on the care graph framework described in both [http://cs.nyu.edu/~dejan/papers/jovanovic-fmsd2012.pdf Being careful about theory combination] and [http://cs.nyu.edu/~dejan/papers/jovanovic-frocos2011.pdf Sharing is Caring: Combination of Theories].&lt;br /&gt;
* Datatypes&lt;br /&gt;
** CVC4 implements [http://cs.nyu.edu/acsys/pubs/BST07.ps An Abstract Decision Procedure for a Theory of Inductive Data Types].&lt;br /&gt;
* Quantifiers&lt;br /&gt;
** An overall description of the quantifier framework is given here [http://www.divms.uiowa.edu/~ajreynol/pres-comp12.pdf].&lt;br /&gt;
** Rewrite rules [citation?]&lt;br /&gt;
** Finite model finding is described in [http://www.divms.uiowa.edu/~ajreynol/pres-fmf12.pdf this presentation].&lt;br /&gt;
* SAT Solver&lt;br /&gt;
** The main sat solver is based on [http://minisat.se/ minisat v2.2.0].&lt;br /&gt;
** Additionally, we (optionally, and enabled by default for certain theories) use non-clausal analysis to cut down search space of minisat. For more details see the article [http://cs.nyu.edu/~kshitij/articles/cvc4-branching-heuristic.pdf A branching heuristic in CVC4].&lt;br /&gt;
* Sets&lt;br /&gt;
** Adaptation of tableau-based decision procedure described [http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.10.5176 here].&lt;br /&gt;
* Strings&lt;br /&gt;
** Original approach described in our [http://www.cs.nyu.edu/~barrett/pubs/LRT+14.pdf CAV 2014 paper]&lt;br /&gt;
* Uninterpreted functions&lt;br /&gt;
** UF (without cardinality) is handled in a manner inspired by [http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.70.1745 Simplify's tech report].&lt;br /&gt;
** UF + cardinality is described [http://www.divms.uiowa.edu/~ajreynol/pres-fmf12.pdf this presentation] and is used for finite model finding.&lt;br /&gt;
&lt;br /&gt;
=History of CVC=&lt;br /&gt;
&lt;br /&gt;
[[File:svc.gif|thumb|border|100px|The SVC logo.]]&lt;br /&gt;
[[File:cvc3_logo.jpg|thumb|border|100px|The CVC3 logo.]]&lt;br /&gt;
[[File:cvc3_night_logo.png|thumb|border|100px|The CVC3 &amp;quot;by night&amp;quot; logo, used for nightly builds and regressions.]]&lt;br /&gt;
[[File:cvc3cvc4.png|thumb|border|100px|An early CVC4 logo.]]&lt;br /&gt;
&lt;br /&gt;
The Cooperating Validity Checker series has a long history.  The&lt;br /&gt;
Stanford Validity Checker (SVC) came first in 1996, incorporating&lt;br /&gt;
theories and its own SAT solver.  Its successor, the Cooperating&lt;br /&gt;
Validity Checker (CVC), had a more optimized internal design, produced&lt;br /&gt;
proofs, used the Chaff SAT solver, and featured a number of usability&lt;br /&gt;
enhancements.  Its name comes from the cooperative nature of decision&lt;br /&gt;
procedures in Nelson-Oppen theory combination, which share amongst&lt;br /&gt;
each other equalities between shared terms.  CVC Lite, first made&lt;br /&gt;
available in 2003, was a rewrite of CVC that attempted to make CVC&lt;br /&gt;
more flexible (hence the &amp;quot;lite&amp;quot;) while extending the feature set: CVC&lt;br /&gt;
Lite supported quantifiers where its predecessors did not.  CVC3 was a&lt;br /&gt;
major overhaul of portions of CVC Lite: it added better decision&lt;br /&gt;
procedure implementations, added support for using MiniSat in the&lt;br /&gt;
core, and had generally better performance.&lt;br /&gt;
&lt;br /&gt;
[[File:cvc4-logo.png|thumb|border|100px|The CVC4 logo.]]&lt;br /&gt;
CVC4 is the new version, the fifth generation of this validity checker&lt;br /&gt;
line that is now celebrating sixteen years of heritage.  It represents&lt;br /&gt;
a complete re-evaluation of the core architecture to be both&lt;br /&gt;
performant and to serve as a cutting-edge research vehicle for the&lt;br /&gt;
next several years.  Rather than taking CVC3 and redesigning problem&lt;br /&gt;
parts, we've taken a clean-room approach, starting from scratch.&lt;br /&gt;
Before using any designs from CVC3, we have thoroughly scrutinized,&lt;br /&gt;
vetted, and updated them.  Many parts of CVC4 bear only a superficial&lt;br /&gt;
resemblance, if any, to their correspondent in CVC3.&lt;br /&gt;
&lt;br /&gt;
However, CVC4 is fundamentally similar to CVC3 and many other modern&lt;br /&gt;
SMT solvers: it is a DPLL(T) solver, with a SAT solver at its core and&lt;br /&gt;
a delegation path to different decision procedure implementations,&lt;br /&gt;
each in charge of solving formulas in some background theory.&lt;br /&gt;
&lt;br /&gt;
The re-evaluation and ground-up rewrite was necessitated, we felt, by&lt;br /&gt;
the performance characteristics of CVC3.  CVC3 has many useful&lt;br /&gt;
features, but some core aspects of the design led to high memory use,&lt;br /&gt;
and the use of heavyweight computation (where more nimble engineering&lt;br /&gt;
approaches could suffice) makes CVC3 a much slower prover than other&lt;br /&gt;
tools.  As these designs are central to CVC3, a new version was&lt;br /&gt;
preferable to a selective re-engineering, which would have ballooned&lt;br /&gt;
in short order.&lt;/div&gt;</summary>
		<author><name>Mdeters</name></author>	</entry>

	<entry>
		<id>http://cvc4.stanford.edu/w/index.php?title=About_CVC4&amp;diff=5340</id>
		<title>About CVC4</title>
		<link rel="alternate" type="text/html" href="http://cvc4.stanford.edu/w/index.php?title=About_CVC4&amp;diff=5340"/>
				<updated>2014-11-19T19:06:56Z</updated>
		
		<summary type="html">&lt;p&gt;Mdeters: /* Decision Procedures */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;CVC4 is an automatic theorem prover for [http://en.wikipedia.org/wiki/Satisfiability_Modulo_Theories Satisifiability Modulo Theories (SMT)] (for a more formal introduction to SMT see the following book chapter [https://cs.nyu.edu/~barrett/pubs/BSST09.pdf Satisfiability Modulo Theories] ). Technically, it is an automated validity checker for a many-sorted (i.e., typed) first-order logic with built-in theories.&lt;br /&gt;
It can be used to prove the validity (or, dually, the satisfiability) of a formula with respect to several built-in logical theories and their combination.&lt;br /&gt;
&lt;br /&gt;
CVC4 currently has support for the following theories:&lt;br /&gt;
* equality over free (aka uninterpreted) function and predicate symbols&lt;br /&gt;
* real and integer linear arithmetic&lt;br /&gt;
* bit-vectors&lt;br /&gt;
* arrays&lt;br /&gt;
* tuples&lt;br /&gt;
* records&lt;br /&gt;
* user-defined inductive data types&lt;br /&gt;
* [[Strings|strings]]&lt;br /&gt;
* [[Sets|finite sets]]&lt;br /&gt;
&lt;br /&gt;
CVC4 has a wide variety of features including:&lt;br /&gt;
&lt;br /&gt;
* support for quantifiers through heuristic instantiation;&lt;br /&gt;
* an interactive text-based interface;&lt;br /&gt;
* a rich [http://church.cims.nyu.edu/cvc4-builds/documentation/public/latest/ C++ API] for embedding in other systems;&lt;br /&gt;
* model generation abilities;&lt;br /&gt;
* source compatibility with much of the CVC3 API via a &amp;quot;compatibility library&amp;quot;;&lt;br /&gt;
* essentially no limit on its use for research or commercial purposes (see [http://church.cims.nyu.edu/cvc4-builds/documentation/public/latest-unstable/copying.html license]).&lt;br /&gt;
&lt;br /&gt;
=Web site=&lt;br /&gt;
&lt;br /&gt;
For more information and the latest news about CVC4, visit the [http://cvc4.cs.nyu.edu CVC4 web site].&lt;br /&gt;
&lt;br /&gt;
=Decision Procedures=&lt;br /&gt;
* Architecture&lt;br /&gt;
** See the [http://dl.acm.org/citation.cfm?id=2032319 CVC4 tool paper].&lt;br /&gt;
* Arithmetic&lt;br /&gt;
** CVC4 solves linear real arithmetic using an implementation of [http://link.springer.com/chapter/10.1007%2F11817963_11? Simplex for DPLL(T)]. For a more complete introduction see the [http://yices.csl.sri.com/sri-csl-06-01.pdf tech report].&lt;br /&gt;
** The linear arithmetic module includes heuristics from [http://eprints-phd.biblio.unitn.it/166/2/thesis.pdf Section 2.5 of Alberto Griggio's thesis] and a few currently unpublished ones.&lt;br /&gt;
** Integers are currently handled by first solving the real relaxation of the constraints, and then using a combination of [http://www.cs.wm.edu/~idillig/cav2009.pdf Cuts from Proofs] and branching to ensure integer solutions.  This approach and the equational solver  used are described in [https://es.fbk.eu/people/griggio/papers/jsat12.pdf A Practical Approach to Satisfiability Modulo Linear Integer Arithmetic].&lt;br /&gt;
** A technical report is planned to explain a number of small details and extensions including analysis to improve simplex's conflicts, handling disequalities, supporting model generation in CVC4's combination framework, heuristically propagating equalities over sharing terms, tableau row based propagation, and terminating simplex with unknown.&lt;br /&gt;
** Non-linear arithmetic support is currently rudimentary to non-existent. In CVC4 v1.0, non-linearity is handled by abstracting monomials as unique new variables.  We plan on implementing [http://cs.nyu.edu/~dejan/papers/jovanovic-ijcar2012.pdf Solving Non-Linear Arithmetic] this spring.&lt;br /&gt;
* Arrays&lt;br /&gt;
** Arrays are implemented in a manner inspired by the [http://research.microsoft.com/en-us/um/people/leonardo/files/fmcad09.pdf Generalized, efficient array decision procedures] paper with a few major modifications.&lt;br /&gt;
* Bitvectors&lt;br /&gt;
** Bitvectors is implemented primarily via a lazy schema for bitblasting. See [http://eprints-phd.biblio.unitn.it/345/ Anders Franzen's thesis chapter 3].&lt;br /&gt;
* Combination&lt;br /&gt;
** Theory combination is based on the care graph framework described in both [http://cs.nyu.edu/~dejan/papers/jovanovic-fmsd2012.pdf Being careful about theory combination] and [http://cs.nyu.edu/~dejan/papers/jovanovic-frocos2011.pdf Sharing is Caring: Combination of Theories].&lt;br /&gt;
* Datatypes&lt;br /&gt;
** CVC4 implements [http://cs.nyu.edu/acsys/pubs/BST07.ps An Abstract Decision Procedure for a Theory of Inductive Data Types].&lt;br /&gt;
* Quantifiers&lt;br /&gt;
** An overall description of the quantifier framework is given here [http://www.divms.uiowa.edu/~ajreynol/pres-comp12.pdf].&lt;br /&gt;
** Rewrite rules [citation?]&lt;br /&gt;
** Finite model finding is described in [http://www.divms.uiowa.edu/~ajreynol/pres-fmf12.pdf this presentation].&lt;br /&gt;
* SAT Solver&lt;br /&gt;
** The main sat solver is based on [http://minisat.se/ minisat v2.2.0].&lt;br /&gt;
** Additionally, we (optionally, and enabled by default for certain theories) use non-clausal analysis to cut down search space of minisat. For more details see the article [http://cs.nyu.edu/~kshitij/articles/cvc4-branching-heuristic.pdf A branching heuristic in CVC4].&lt;br /&gt;
* Sets&lt;br /&gt;
** Adaptation of tableau-based decision procedure described [http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.10.5176 here].&lt;br /&gt;
* Uninterpreted functions&lt;br /&gt;
** UF (without cardinality) is handled in a manner inspired by [http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.70.1745 Simplify's tech report].&lt;br /&gt;
** UF + cardinality is described [http://www.divms.uiowa.edu/~ajreynol/pres-fmf12.pdf this presentation] and is used for finite model finding.&lt;br /&gt;
&lt;br /&gt;
=History of CVC=&lt;br /&gt;
&lt;br /&gt;
[[File:svc.gif|thumb|border|100px|The SVC logo.]]&lt;br /&gt;
[[File:cvc3_logo.jpg|thumb|border|100px|The CVC3 logo.]]&lt;br /&gt;
[[File:cvc3_night_logo.png|thumb|border|100px|The CVC3 &amp;quot;by night&amp;quot; logo, used for nightly builds and regressions.]]&lt;br /&gt;
[[File:cvc3cvc4.png|thumb|border|100px|An early CVC4 logo.]]&lt;br /&gt;
&lt;br /&gt;
The Cooperating Validity Checker series has a long history.  The&lt;br /&gt;
Stanford Validity Checker (SVC) came first in 1996, incorporating&lt;br /&gt;
theories and its own SAT solver.  Its successor, the Cooperating&lt;br /&gt;
Validity Checker (CVC), had a more optimized internal design, produced&lt;br /&gt;
proofs, used the Chaff SAT solver, and featured a number of usability&lt;br /&gt;
enhancements.  Its name comes from the cooperative nature of decision&lt;br /&gt;
procedures in Nelson-Oppen theory combination, which share amongst&lt;br /&gt;
each other equalities between shared terms.  CVC Lite, first made&lt;br /&gt;
available in 2003, was a rewrite of CVC that attempted to make CVC&lt;br /&gt;
more flexible (hence the &amp;quot;lite&amp;quot;) while extending the feature set: CVC&lt;br /&gt;
Lite supported quantifiers where its predecessors did not.  CVC3 was a&lt;br /&gt;
major overhaul of portions of CVC Lite: it added better decision&lt;br /&gt;
procedure implementations, added support for using MiniSat in the&lt;br /&gt;
core, and had generally better performance.&lt;br /&gt;
&lt;br /&gt;
[[File:cvc4-logo.png|thumb|border|100px|The CVC4 logo.]]&lt;br /&gt;
CVC4 is the new version, the fifth generation of this validity checker&lt;br /&gt;
line that is now celebrating sixteen years of heritage.  It represents&lt;br /&gt;
a complete re-evaluation of the core architecture to be both&lt;br /&gt;
performant and to serve as a cutting-edge research vehicle for the&lt;br /&gt;
next several years.  Rather than taking CVC3 and redesigning problem&lt;br /&gt;
parts, we've taken a clean-room approach, starting from scratch.&lt;br /&gt;
Before using any designs from CVC3, we have thoroughly scrutinized,&lt;br /&gt;
vetted, and updated them.  Many parts of CVC4 bear only a superficial&lt;br /&gt;
resemblance, if any, to their correspondent in CVC3.&lt;br /&gt;
&lt;br /&gt;
However, CVC4 is fundamentally similar to CVC3 and many other modern&lt;br /&gt;
SMT solvers: it is a DPLL(T) solver, with a SAT solver at its core and&lt;br /&gt;
a delegation path to different decision procedure implementations,&lt;br /&gt;
each in charge of solving formulas in some background theory.&lt;br /&gt;
&lt;br /&gt;
The re-evaluation and ground-up rewrite was necessitated, we felt, by&lt;br /&gt;
the performance characteristics of CVC3.  CVC3 has many useful&lt;br /&gt;
features, but some core aspects of the design led to high memory use,&lt;br /&gt;
and the use of heavyweight computation (where more nimble engineering&lt;br /&gt;
approaches could suffice) makes CVC3 a much slower prover than other&lt;br /&gt;
tools.  As these designs are central to CVC3, a new version was&lt;br /&gt;
preferable to a selective re-engineering, which would have ballooned&lt;br /&gt;
in short order.&lt;/div&gt;</summary>
		<author><name>Mdeters</name></author>	</entry>

	<entry>
		<id>http://cvc4.stanford.edu/w/index.php?title=Publications&amp;diff=5339</id>
		<title>Publications</title>
		<link rel="alternate" type="text/html" href="http://cvc4.stanford.edu/w/index.php?title=Publications&amp;diff=5339"/>
				<updated>2014-11-13T22:00:23Z</updated>
		
		<summary type="html">&lt;p&gt;Mdeters: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Papers about the tool&lt;br /&gt;
* Clark Barrett, Christopher L. Conway, Morgan Deters, Liana Hadarean, Dejan Jovanović, Tim King, Andrew Reynolds, and Cesare Tinelli.  [http://cs.nyu.edu/~barrett/pubs/BCD+11.pdf CVC4].  Lecture Notes in Computer Science, 2011, Volume 6806, Computer Aided Verification, pages 171-177.&lt;br /&gt;
&lt;br /&gt;
Papers describing original research that was incorporated into CVC4&lt;br /&gt;
* Theory Combination&lt;br /&gt;
** Dejan Jovanović and Clark Barrett. [http://cs.nyu.edu/~barrett/pubs/JB10-SMT.pdf Sharing is Caring].  In Proceedings of the 8th International Workshop on Satisfiability Modulo Theories (SMT '10), July 2010.&lt;br /&gt;
** Dejan Jovanović and Clark Barrett. [http://cs.nyu.edu/~barrett/pubs/JB10-TR.pdf Polite Theories Revisited].  In Proceedings of the Seventeenth International Conference on Logic for Programming, Artificial Intelligence, and Reasoning (LPAR '10), volume 6397 of Lecture Notes in Computer Science, pages 402-416. Springer, October 2010. Yogyakarta, Indonesia.&lt;br /&gt;
** Dejan Jovanović and Clark Barrett. [http://cs.nyu.edu/~barrett/pubs/JB13.pdf Being careful about theory combination].  In Formal Methods in System Design, vol. 42, no. 1, Feb. 2013, pp. 67-90, Springer US.&lt;br /&gt;
* Bitvectors&lt;br /&gt;
** Liana Hadarean, Clark Barrett, Dejan Jovanović, Cesare Tinelli, and Kshitij Bansal. [http://www.cs.nyu.edu/~barrett/pubs/HBJ+14.pdf A tale of two solvers: Eager and lazy approaches to bit-vectors].  In Proceedings of the Twenty-Sixth International Conference on Computer Aided Verification (CAV '14), July 2014, pages 646-662. Vienna, Austria.&lt;br /&gt;
* Arithmetic&lt;br /&gt;
** Tim King, Clark Barrett, and Bruno Dutertre. [http://www.cs.nyu.edu/~barrett/pubs/KBD13.pdf Simplex with sum of infeasibilities for SMT]. In Formal Methods in Computer-Aided Design (FMCAD), 2013.&lt;br /&gt;
** Tim King, Clark Barrett, and Cesare Tinelli. [http://www.cs.nyu.edu/~barrett/pubs/KBT14.pdf Leveraging linear and mixed integer programming for SMT]. In FMCAD, 2014.&lt;br /&gt;
* Strings&lt;br /&gt;
** Tianyi Liang, Andrew Reynolds, Cesare Tinelli, Clark Barrett, and Morgan Deters. [http://www.cs.nyu.edu/~barrett/pubs/LRT+14.pdf A DPLL(T) theory solver for a theory of strings and regular expressions]. In Computer Aided Verification (CAV), 2014.&lt;br /&gt;
* Quantifiers and finite model finding&lt;br /&gt;
** Andrew Reynolds, Cesare Tinelli, and Leonardo de Moura. [http://www.cs.utexas.edu/users/hunt/FMCAD/FMCAD14/proceedings/31_reynolds.pdf Finding conflicting instances of quantified formulas in SMT]. In FMCAD, 2014.&lt;br /&gt;
** Andrew Reynolds, Cesare Tinelli, Amit Goel, and Sava Krstić. [http://lara.epfl.ch/~reynolds/cav13.pdf Finite model finding in SMT]. In Computer Aided Verification (CAV), 2013.&lt;br /&gt;
** Andrew Reynolds, Cesare Tinelli, Amit Goel, Sava Krstić, Morgan Deters, and Clark Barrett. [http://www.cs.nyu.edu/~barrett/pubs/RTG+13.pdf Quantifier instantiation techniques for finite model finding in SMT]. In CADE, 2013.&lt;br /&gt;
&lt;br /&gt;
Applications of CVC4&lt;br /&gt;
* Tim King and Clark Barrett. [http://cs.nyu.edu/~barrett/pubs/KB11.pdf Exploring and Categorizing Error Spaces using BMC and SMT]. In Proceedings of the 9th International Workshop on Satisfiability Modulo Theories (SMT '11), July 2011.&lt;br /&gt;
* Wei Wang, Clark Barrett, and Thomas Wies. [http://www.cs.nyu.edu/~barrett/pubs/WBW14.pdf Cascade 2.0]. In Verification, Model Checking, and Abstract Interpretation (VMCAI), 2014.&lt;/div&gt;</summary>
		<author><name>Mdeters</name></author>	</entry>

	<entry>
		<id>http://cvc4.stanford.edu/w/index.php?title=Publications&amp;diff=5338</id>
		<title>Publications</title>
		<link rel="alternate" type="text/html" href="http://cvc4.stanford.edu/w/index.php?title=Publications&amp;diff=5338"/>
				<updated>2014-11-13T22:00:05Z</updated>
		
		<summary type="html">&lt;p&gt;Mdeters: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Papers about the tool&lt;br /&gt;
* Clark Barrett, Christopher L. Conway, Morgan Deters, Liana Hadarean, Dejan Jovanović, Tim King, Andrew Reynolds, and Cesare Tinelli.  [http://cs.nyu.edu/~barrett/pubs/BCD+11.pdf CVC4].  Lecture Notes in Computer Science, 2011, Volume 6806, Computer Aided Verification, Pages 171-177.&lt;br /&gt;
&lt;br /&gt;
Papers describing original research that was incorporated into CVC4&lt;br /&gt;
* Theory Combination&lt;br /&gt;
** Dejan Jovanović and Clark Barrett. [http://cs.nyu.edu/~barrett/pubs/JB10-SMT.pdf Sharing is Caring].  In Proceedings of the 8th International Workshop on Satisfiability Modulo Theories (SMT '10), July 2010.&lt;br /&gt;
** Dejan Jovanović and Clark Barrett. [http://cs.nyu.edu/~barrett/pubs/JB10-TR.pdf Polite Theories Revisited].  In Proceedings of the Seventeenth International Conference on Logic for Programming, Artificial Intelligence, and Reasoning (LPAR '10), volume 6397 of Lecture Notes in Computer Science, pages 402-416. Springer, October 2010. Yogyakarta, Indonesia.&lt;br /&gt;
** Dejan Jovanović and Clark Barrett. [http://cs.nyu.edu/~barrett/pubs/JB13.pdf Being careful about theory combination].  In Formal Methods in System Design, vol. 42, no. 1, Feb. 2013, pp. 67-90, Springer US.&lt;br /&gt;
* Bitvectors&lt;br /&gt;
** Liana Hadarean, Clark Barrett, Dejan Jovanović, Cesare Tinelli, and Kshitij Bansal. [http://www.cs.nyu.edu/~barrett/pubs/HBJ+14.pdf A tale of two solvers: Eager and lazy approaches to bit-vectors].  In Proceedings of the Twenty-Sixth International Conference on Computer Aided Verification (CAV '14), July 2014, pages 646-662. Vienna, Austria.&lt;br /&gt;
* Arithmetic&lt;br /&gt;
** Tim King, Clark Barrett, and Bruno Dutertre. [http://www.cs.nyu.edu/~barrett/pubs/KBD13.pdf Simplex with sum of infeasibilities for SMT]. In Formal Methods in Computer-Aided Design (FMCAD), 2013.&lt;br /&gt;
** Tim King, Clark Barrett, and Cesare Tinelli. [http://www.cs.nyu.edu/~barrett/pubs/KBT14.pdf Leveraging linear and mixed integer programming for SMT]. In FMCAD, 2014.&lt;br /&gt;
* Strings&lt;br /&gt;
** Tianyi Liang, Andrew Reynolds, Cesare Tinelli, Clark Barrett, and Morgan Deters. [http://www.cs.nyu.edu/~barrett/pubs/LRT+14.pdf A DPLL(T) theory solver for a theory of strings and regular expressions]. In Computer Aided Verification (CAV), 2014.&lt;br /&gt;
* Quantifiers and finite model finding&lt;br /&gt;
** Andrew Reynolds, Cesare Tinelli, and Leonardo de Moura. [http://www.cs.utexas.edu/users/hunt/FMCAD/FMCAD14/proceedings/31_reynolds.pdf Finding conflicting instances of quantified formulas in SMT]. In FMCAD, 2014.&lt;br /&gt;
** Andrew Reynolds, Cesare Tinelli, Amit Goel, and Sava Krstić. [http://lara.epfl.ch/~reynolds/cav13.pdf Finite model finding in SMT]. In Computer Aided Verification (CAV), 2013.&lt;br /&gt;
** Andrew Reynolds, Cesare Tinelli, Amit Goel, Sava Krstić, Morgan Deters, and Clark Barrett. [http://www.cs.nyu.edu/~barrett/pubs/RTG+13.pdf Quantifier instantiation techniques for finite model finding in SMT]. In CADE, 2013.&lt;br /&gt;
&lt;br /&gt;
Applications of CVC4&lt;br /&gt;
* Tim King and Clark Barrett. [http://cs.nyu.edu/~barrett/pubs/KB11.pdf Exploring and Categorizing Error Spaces using BMC and SMT]. In Proceedings of the 9th International Workshop on Satisfiability Modulo Theories (SMT '11), July 2011.&lt;br /&gt;
* Wei Wang, Clark Barrett, and Thomas Wies. [http://www.cs.nyu.edu/~barrett/pubs/WBW14.pdf Cascade 2.0]. In Verification, Model Checking, and Abstract Interpretation (VMCAI), 2014.&lt;/div&gt;</summary>
		<author><name>Mdeters</name></author>	</entry>

	<entry>
		<id>http://cvc4.stanford.edu/w/index.php?title=About_CVC4&amp;diff=5337</id>
		<title>About CVC4</title>
		<link rel="alternate" type="text/html" href="http://cvc4.stanford.edu/w/index.php?title=About_CVC4&amp;diff=5337"/>
				<updated>2014-11-13T21:47:01Z</updated>
		
		<summary type="html">&lt;p&gt;Mdeters: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;CVC4 is an automatic theorem prover for [http://en.wikipedia.org/wiki/Satisfiability_Modulo_Theories Satisifiability Modulo Theories (SMT)] (for a more formal introduction to SMT see the following book chapter [https://cs.nyu.edu/~barrett/pubs/BSST09.pdf Satisfiability Modulo Theories] ). Technically, it is an automated validity checker for a many-sorted (i.e., typed) first-order logic with built-in theories.&lt;br /&gt;
It can be used to prove the validity (or, dually, the satisfiability) of a formula with respect to several built-in logical theories and their combination.&lt;br /&gt;
&lt;br /&gt;
CVC4 currently has support for the following theories:&lt;br /&gt;
* equality over free (aka uninterpreted) function and predicate symbols&lt;br /&gt;
* real and integer linear arithmetic&lt;br /&gt;
* bit-vectors&lt;br /&gt;
* arrays&lt;br /&gt;
* tuples&lt;br /&gt;
* records&lt;br /&gt;
* user-defined inductive data types&lt;br /&gt;
* [[Strings|strings]]&lt;br /&gt;
* [[Sets|finite sets]]&lt;br /&gt;
&lt;br /&gt;
CVC4 has a wide variety of features including:&lt;br /&gt;
&lt;br /&gt;
* support for quantifiers through heuristic instantiation;&lt;br /&gt;
* an interactive text-based interface;&lt;br /&gt;
* a rich [http://church.cims.nyu.edu/cvc4-builds/documentation/public/latest/ C++ API] for embedding in other systems;&lt;br /&gt;
* model generation abilities;&lt;br /&gt;
* source compatibility with much of the CVC3 API via a &amp;quot;compatibility library&amp;quot;;&lt;br /&gt;
* essentially no limit on its use for research or commercial purposes (see [http://church.cims.nyu.edu/cvc4-builds/documentation/public/latest-unstable/copying.html license]).&lt;br /&gt;
&lt;br /&gt;
=Web site=&lt;br /&gt;
&lt;br /&gt;
For more information and the latest news about CVC4, visit the [http://cvc4.cs.nyu.edu CVC4 web site].&lt;br /&gt;
&lt;br /&gt;
=Decision Procedures=&lt;br /&gt;
* Architecture&lt;br /&gt;
** See the [http://dl.acm.org/citation.cfm?id=2032319 CVC4 tool paper].&lt;br /&gt;
* Arithmetic&lt;br /&gt;
** CVC4 solves linear real arithmetic using an implementation of [http://link.springer.com/chapter/10.1007%2F11817963_11? Simplex for DPLL(T)]. For a more complete introduction see the [http://yices.csl.sri.com/sri-csl-06-01.pdf tech report].&lt;br /&gt;
** The linear arithmetic module includes heuristics from [http://eprints-phd.biblio.unitn.it/166/2/thesis.pdf Section 2.5 of Alberto Griggio's thesis] and a few currently unpublished ones.&lt;br /&gt;
** Integers are currently handled by first solving the real relaxation of the constraints, and then using a combination of [http://www.cs.wm.edu/~idillig/cav2009.pdf Cuts from Proofs] and branching to ensure integer solutions.  This approach and the equational solver  used are described in [https://es.fbk.eu/people/griggio/papers/jsat12.pdf A Practical Approach to Satisfiability Modulo Linear Integer Arithmetic].&lt;br /&gt;
** A technical report is planned to explain a number of small details and extensions including analysis to improve simplex's conflicts, handling disequalities, supporting model generation in CVC4's combination framework, heuristically propagating equalities over sharing terms, tableau row based propagation, and terminating simplex with unknown.&lt;br /&gt;
** Non-linear arithmetic support is currently rudimentary to non-existant. In CVC4 v1.0, non-linearity is handled by abstracting monomials as unique new variables.  We plan on implementing [http://cs.nyu.edu/~dejan/papers/jovanovic-ijcar2012.pdf Solving Non-Linear Arithmetic] this spring.&lt;br /&gt;
* Arrays&lt;br /&gt;
** Arrays are implemented in a manner inspired by the [http://research.microsoft.com/en-us/um/people/leonardo/files/fmcad09.pdf Generalized, efficient array decision procedures] paper with a few major modifications.&lt;br /&gt;
* Bitvectors&lt;br /&gt;
** Bitvectors is implemented primarily via a lazy schema for bitblasting. See [http://eprints-phd.biblio.unitn.it/345/ Anders Franzen's thesis chapter 3].&lt;br /&gt;
* Combination&lt;br /&gt;
** Theory combination is based on the care graph framework described in both [http://cs.nyu.edu/~dejan/papers/jovanovic-fmsd2012.pdf Being careful about theory combination] and [http://cs.nyu.edu/~dejan/papers/jovanovic-frocos2011.pdf Sharing is Caring: Combination of Theories].&lt;br /&gt;
* Datatypes&lt;br /&gt;
** CVC4 implements [http://cs.nyu.edu/acsys/pubs/BST07.ps An Abstract Decision Procedure for a Theory of Inductive Data Types].&lt;br /&gt;
* Quantifiers&lt;br /&gt;
** An overall description of the quantifier framework is given here [http://www.divms.uiowa.edu/~ajreynol/pres-comp12.pdf].&lt;br /&gt;
** Rewrite rules [citation?]&lt;br /&gt;
** Finite model finding is described in [http://www.divms.uiowa.edu/~ajreynol/pres-fmf12.pdf this presentation].&lt;br /&gt;
* SAT Solver&lt;br /&gt;
** The main sat solver is based on [http://minisat.se/ minisat v2.2.0].&lt;br /&gt;
** Additionally, we (optionally, and enabled by default for certain theories) use non-clausal analysis to cut down search space of minisat. For more details see the article [http://cs.nyu.edu/~kshitij/articles/cvc4-branching-heuristic.pdf A branching heuristic in CVC4].&lt;br /&gt;
* Sets&lt;br /&gt;
** Adaptation of tableau-based decision procedure described [http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.10.5176 here].&lt;br /&gt;
* Uninterpreted functions&lt;br /&gt;
** UF (without cardinality) is handled in a manner inspired by [http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.70.1745 Simplify's tech report].&lt;br /&gt;
** UF + cardinality is described [http://www.divms.uiowa.edu/~ajreynol/pres-fmf12.pdf this presentation] and is used for finite model finding.&lt;br /&gt;
&lt;br /&gt;
=History of CVC=&lt;br /&gt;
&lt;br /&gt;
[[File:svc.gif|thumb|border|100px|The SVC logo.]]&lt;br /&gt;
[[File:cvc3_logo.jpg|thumb|border|100px|The CVC3 logo.]]&lt;br /&gt;
[[File:cvc3_night_logo.png|thumb|border|100px|The CVC3 &amp;quot;by night&amp;quot; logo, used for nightly builds and regressions.]]&lt;br /&gt;
[[File:cvc3cvc4.png|thumb|border|100px|An early CVC4 logo.]]&lt;br /&gt;
&lt;br /&gt;
The Cooperating Validity Checker series has a long history.  The&lt;br /&gt;
Stanford Validity Checker (SVC) came first in 1996, incorporating&lt;br /&gt;
theories and its own SAT solver.  Its successor, the Cooperating&lt;br /&gt;
Validity Checker (CVC), had a more optimized internal design, produced&lt;br /&gt;
proofs, used the Chaff SAT solver, and featured a number of usability&lt;br /&gt;
enhancements.  Its name comes from the cooperative nature of decision&lt;br /&gt;
procedures in Nelson-Oppen theory combination, which share amongst&lt;br /&gt;
each other equalities between shared terms.  CVC Lite, first made&lt;br /&gt;
available in 2003, was a rewrite of CVC that attempted to make CVC&lt;br /&gt;
more flexible (hence the &amp;quot;lite&amp;quot;) while extending the feature set: CVC&lt;br /&gt;
Lite supported quantifiers where its predecessors did not.  CVC3 was a&lt;br /&gt;
major overhaul of portions of CVC Lite: it added better decision&lt;br /&gt;
procedure implementations, added support for using MiniSat in the&lt;br /&gt;
core, and had generally better performance.&lt;br /&gt;
&lt;br /&gt;
[[File:cvc4-logo.png|thumb|border|100px|The CVC4 logo.]]&lt;br /&gt;
CVC4 is the new version, the fifth generation of this validity checker&lt;br /&gt;
line that is now celebrating sixteen years of heritage.  It represents&lt;br /&gt;
a complete re-evaluation of the core architecture to be both&lt;br /&gt;
performant and to serve as a cutting-edge research vehicle for the&lt;br /&gt;
next several years.  Rather than taking CVC3 and redesigning problem&lt;br /&gt;
parts, we've taken a clean-room approach, starting from scratch.&lt;br /&gt;
Before using any designs from CVC3, we have thoroughly scrutinized,&lt;br /&gt;
vetted, and updated them.  Many parts of CVC4 bear only a superficial&lt;br /&gt;
resemblance, if any, to their correspondent in CVC3.&lt;br /&gt;
&lt;br /&gt;
However, CVC4 is fundamentally similar to CVC3 and many other modern&lt;br /&gt;
SMT solvers: it is a DPLL(T) solver, with a SAT solver at its core and&lt;br /&gt;
a delegation path to different decision procedure implementations,&lt;br /&gt;
each in charge of solving formulas in some background theory.&lt;br /&gt;
&lt;br /&gt;
The re-evaluation and ground-up rewrite was necessitated, we felt, by&lt;br /&gt;
the performance characteristics of CVC3.  CVC3 has many useful&lt;br /&gt;
features, but some core aspects of the design led to high memory use,&lt;br /&gt;
and the use of heavyweight computation (where more nimble engineering&lt;br /&gt;
approaches could suffice) makes CVC3 a much slower prover than other&lt;br /&gt;
tools.  As these designs are central to CVC3, a new version was&lt;br /&gt;
preferable to a selective re-engineering, which would have ballooned&lt;br /&gt;
in short order.&lt;/div&gt;</summary>
		<author><name>Mdeters</name></author>	</entry>

	<entry>
		<id>http://cvc4.stanford.edu/w/index.php?title=SMT-LIB_Compliance&amp;diff=5300</id>
		<title>SMT-LIB Compliance</title>
		<link rel="alternate" type="text/html" href="http://cvc4.stanford.edu/w/index.php?title=SMT-LIB_Compliance&amp;diff=5300"/>
				<updated>2014-09-27T17:47:16Z</updated>
		
		<summary type="html">&lt;p&gt;Mdeters: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;CVC4 is mostly SMT-LIB-conforming with ''--lang smt''.  With the ''--smtlib-strict'' command line option, though, you get additional strictness and standards conformance.&lt;br /&gt;
&lt;br /&gt;
There are areas where we don't support full functionality, or where we are not compliant:&lt;br /&gt;
&lt;br /&gt;
* We do not yet adequately support nonlinear-arithmetic (the QF_NIA, QF_NRA, QF_UFNRA, UFNRA, and AUFNIRA logics)&lt;br /&gt;
* We do not yet support all the features of the recent (September 2014) draft of SMT-LIB 2.5&lt;br /&gt;
&lt;br /&gt;
Also, please note that CVC4 is not intended as a compliance-checker for SMT-LIB input.  That is, it is a bit lenient in accepting non-conforming input.&lt;/div&gt;</summary>
		<author><name>Mdeters</name></author>	</entry>

	</feed>