Add previous concat handling for CBQI BV as heuristic for EQ. (#1528)
[cvc5.git] / README
1 This is CVC4 release version 1.5. For build and installation notes,
2 please see the INSTALL file included with this distribution.
3
4 The project leaders are Clark Barrett (Stanford University) and Cesare
5 Tinelli (The University of Iowa). For a full list of authors, please
6 refer to the AUTHORS file in the source distribution.
7
8 CVC4 is a tool for determining the satisfiability of a first order
9 formula modulo a first order theory (or a combination of such
10 theories). It is the fourth in the Cooperating Validity Checker
11 family of tools (CVC, CVC Lite, CVC3) but does not directly
12 incorporate code from any previous version.
13
14 CVC4 is intended to be an open and extensible SMT engine. It can be
15 used as a stand-alone tool or as a library. It has been designed to
16 increase the performance and reduce the memory overhead of its
17 predecessors. It is written entirely in C++ and is released under an
18 open-source software license (see the file COPYING in the source
19 distribution).
20
21 *** Getting started with CVC4
22
23 For help installing CVC4, see the INSTALL file that comes with this
24 distribution.
25
26 We recommend that you visit our CVC4 tutorials online at:
27
28 http://cvc4.cs.stanford.edu/wiki/Tutorials
29
30 for help getting started using CVC4.
31
32 *** Contributing to the CVC4 project
33
34 We are always happy to hear feedback from our users:
35
36 * if you need help with using CVC4, please refer to
37 http://cvc4.stanford.edu/#Technical_Support.
38
39 * if you need to report a bug with CVC4, or make a feature request,
40 please visit our bugtracker at https://github.com/CVC4/CVC4/issues or
41 write to the cvc-bugs@cs.stanford.edu mailing list. We are very
42 grateful for bug reports, as they help us improve CVC4, and patches
43 are generally reviewed and accepted quickly.
44
45 * if you are using CVC4 in your work, or incorporating it into
46 software of your own, we'd like to invite you to leave a description
47 and link to your project/software on our "Third Party Applications"
48 page at
49 http://cvc4.cs.stanford.edu/wiki/Public:Third_Party_Applications
50
51 * if you are interested in contributing code (for example, a new
52 decision procedure implementation) to the CVC4 project, please
53 contact one of the project leaders. We'd be happy to point you to
54 some internals documentation to help you out.
55
56 Thank you for using CVC4!
57
58 *** The History of CVC4
59
60 The Cooperating Validity Checker series has a long history. The
61 Stanford Validity Checker (SVC) came first in 1996, incorporating
62 theories and its own SAT solver. Its successor, the Cooperating
63 Validity Checker (CVC), had a more optimized internal design, produced
64 proofs, used the Chaff SAT solver, and featured a number of usability
65 enhancements. Its name comes from the cooperative nature of decision
66 procedures in Nelson-Oppen theory combination, which share amongst
67 each other equalities between shared terms. CVC Lite, first made
68 available in 2003, was a rewrite of CVC that attempted to make CVC
69 more flexible (hence the "lite") while extending the feature set: CVC
70 Lite supported quantifiers where its predecessors did not. CVC3 was a
71 major overhaul of portions of CVC Lite: it added better decision
72 procedure implementations, added support for using MiniSat in the
73 core, and had generally better performance.
74
75 CVC4 is the new version, the fifth generation of this validity checker
76 line that is now celebrating twenty-one years of heritage. It
77 represents a complete re-evaluation of the core architecture to be
78 both performant and to serve as a cutting-edge research vehicle for
79 the next several years. Rather than taking CVC3 and redesigning
80 problem parts, we've taken a clean-room approach, starting from
81 scratch. Before using any designs from CVC3, we have thoroughly
82 scrutinized, vetted, and updated them. Many parts of CVC4 bear only a
83 superficial resemblance, if any, to their correspondent in CVC3.
84
85 However, CVC4 is fundamentally similar to CVC3 and many other modern
86 SMT solvers: it is a DPLL(T) solver, with a SAT solver at its core and
87 a delegation path to different decision procedure implementations,
88 each in charge of solving formulas in some background theory.
89
90 The re-evaluation and ground-up rewrite was necessitated, we felt, by
91 the performance characteristics of CVC3. CVC3 has many useful
92 features, but some core aspects of the design led to high memory use,
93 and the use of heavyweight computation (where more nimble engineering
94 approaches could suffice) makes CVC3 a much slower prover than other
95 tools. As these designs are central to CVC3, a new version was
96 preferable to a selective re-engineering, which would have ballooned
97 in short order.
98
99 *** For more information
100
101 More information about CVC4 is available at:
102 http://cvc4.cs.stanford.edu/