cvc4, pcvc4 - an automated theorem prover
cvc4 [ options ] [ file ]
pcvc4 [ options ] [ file ]
cvc4 is an automated theorem prover for first-order
formulas with respect to background theories of interest. pcvc4 is
CVC4's "portfolio" variant, which is capable of running multiple
CVC4 instances in parallel, configured differently.
With file , commands are read from file and
executed. CVC4 supports the SMT-LIB (versions 1.2 and 2.0) input format, as
well as its own native “presentation language” , which is
similar in many respects to CVC3's presentation language, but not
identical.
If file is unspecified, standard input is read (and the
CVC4 presentation language is assumed). If file is unspecified
and CVC4 is connected to a terminal, interactive mode is assumed.
- --debug=TAG | -d
TAG
- debug something (e.g. -d arith), can repeat
- --parse-only
- exit after parsing input [*]
- --preprocess-only
- exit after preprocessing input [*]
- --print-success
- print the "success" output required of SMT-LIBv2 [*]
- --stats-every-query
- in incremental mode, print stats after every satisfiability or validity
query [*]
- --stats-hide-zeros
- hide statistics which are zero [*]
- --trace=TAG | -t
TAG
- trace something (e.g. -t pushpop), can repeat
- --smtlib-strict
- SMT-LIBv2 compliance mode (implies other options)
- --bitblast-aig
- bitblast by first converting to AIG (implies --bitblast=eager) [*]
- --bitblast=MODE
- choose bitblasting mode, see --bitblast=help
- --bool-to-bv
- convert booleans to bit-vectors of size 1 when possible [*]
- --bv-abstraction
- mcm benchmark abstraction (EXPERTS only) [*]
- --bv-aig-simp=COMMAND
- abc command to run AIG simplifications (implies --bitblast-aig, default is
"balance;drw") (EXPERTS only)
- --bv-alg-extf
- algebraic inferences for extended functions [*]
- --bv-algebraic-budget
- the budget allowed for the algebraic solver in number of SAT conflicts
(EXPERTS only)
- --bv-algebraic-solver
- turn on the algebraic solver for the bit-vector theory (only if
--bitblast=lazy) [*]
- --bv-div-zero-const
- always return -1 on division by zero [*]
- --bv-eager-explanations
- compute bit-blasting propagation explanations eagerly (EXPERTS only)
[*]
- --bv-eq-slicer=MODE
- turn on the slicing equality solver for the bit-vector theory (only if
--bitblast=lazy)
- --bv-eq-solver
- use the equality engine for the bit-vector theory (only if
--bitblast=lazy) [*]
- --bv-extract-arith
- enable rewrite pushing extract [i:0] over arithmetic operations (can blow
up) (EXPERTS only) [*]
- --bv-gauss-elim
- simplify formula via Gaussian Elimination if applicable (EXPERTS only)
[*]
- --bv-inequality-solver
- turn on the inequality solver for the bit-vector theory (only if
--bitblast=lazy) [*]
- --bv-intro-pow2
- introduce bitvector powers of two as a preprocessing pass (EXPERTS only)
[*]
- --bv-lazy-reduce-extf
- reduce extended functions like bv2nat and int2bv at last call instead of
full effort [*]
- --bv-lazy-rewrite-extf
- lazily rewrite extended functions like bv2nat and int2bv [*]
- --bv-num-func=NUM
- number of function symbols in conflicts that are generalized (EXPERTS
only)
- --bv-propagate
- use bit-vector propagation in the bit-blaster [*]
- --bv-quick-xplain
- minimize bv conflicts using the QuickXplain algorithm (EXPERTS only)
[*]
- --bv-sat-solver=MODE
- choose which sat solver to use, see --bv-sat-solver=help (EXPERTS
only)
- --bv-skolemize
- skolemize arguments for bv abstraction (only does something if
--bv-abstraction is on) (EXPERTS only) [*]
- --bv-to-bool
- lift bit-vectors of size 1 to booleans when possible [*]
- --mmap
- memory map file input [*]
- --ag-miniscope-quant
- perform aggressive miniscoping for quantifiers [*]
- --cbqi
- turns on counterexample-based quantifier instantiation [*]
- --cbqi-all
- apply counterexample-based instantiation to all quantified formulas
[*]
- --cbqi-bv
- use word-level inversion approach for counterexample-guided quantifier
instantiation for bit-vectors [*]
- --cbqi-bv-concat-inv
- compute inverse for concat over equalities rather than producing an
invertibility condition [*]
- --cbqi-bv-ineq=MODE
- choose mode for handling bit-vector inequalities with
counterexample-guided instantiation
- --cbqi-bv-interleave-value
- interleave model value instantiation with word-level inversion approach
[*]
- --cbqi-bv-linear
- linearize adder chains for variables [*]
- --cbqi-bv-rm-extract
- replaces extract terms with variables for counterexample-guided
instantiation for bit-vectors [*]
- --cbqi-bv-solve-nl
- try to solve non-linear bv literals using model value projections [*]
- --cbqi-full
- turns on full effort counterexample-based quantifier instantiation, which
may resort to model-value instantiation [*]
- --cbqi-innermost
- only process innermost quantified formulas in counterexample-based
quantifier instantiation [*]
- --cbqi-lit-dep
- dependency lemmas for quantifier alternation in counterexample-based
quantifier instantiation [*]
- --cbqi-midpoint
- choose substitutions based on midpoints of lower and upper bounds for
counterexample-based quantifier instantiation [*]
- --cbqi-min-bounds
- use minimally constrained lower/upper bound for counterexample-based
quantifier instantiation [*]
- --cbqi-model
- guide instantiations by model values for counterexample-based quantifier
instantiation [*]
- --cbqi-multi-inst
- when applicable, do multi instantiations per quantifier per round in
counterexample-based quantifier instantiation [*]
- --cbqi-nested-qe
- process nested quantified formulas with quantifier elimination in
counterexample-based quantifier instantiation [*]
- --cbqi-nopt
- non-optimal bounds for counterexample-based quantifier instantiation
[*]
- --cbqi-prereg-inst
- preregister ground instantiations in counterexample-based quantifier
instantiation [*]
- --cbqi-recurse
- turns on recursive counterexample-based quantifier instantiation [*]
- --cbqi-repeat-lit
- solve literals more than once in counterexample-based quantifier
instantiation [*]
- --cbqi-round-up-lia
- round up integer lower bounds in substitutions for counterexample-based
quantifier instantiation [*]
- --cbqi-sat
- answer sat when quantifiers are asserted with counterexample-based
quantifier instantiation [*]
- --cbqi-use-inf-int
- use integer infinity for vts in counterexample-based quantifier
instantiation [*]
- --cbqi-use-inf-real
- use real infinity for vts in counterexample-based quantifier instantiation
[*]
- --cegis-sample=MODE
- mode for using samples in the counterexample-guided inductive synthesis
loop
- --cegqi
- counterexample-guided quantifier instantiation for sygus [*]
- --cegqi-si-abort
- abort if synthesis conjecture is not single invocation [*]
- --cegqi-si-partial
- combined techniques for synthesis conjectures that are partially single
invocation [*]
- --cegqi-si-reconstruct
- reconstruct solutions for single invocation conjectures in original
grammar [*]
- --cegqi-si-reconstruct-const
- include constants when reconstruct solutions for single invocation
conjectures in original grammar [*]
- --cegqi-si-sol-min-core
- minimize solutions for single invocation conjectures based on unsat core
[*]
- --cegqi-si-sol-min-inst
- minimize individual instantiations for single invocation conjectures based
on unsat core [*]
- --cegqi-si=MODE
- mode for processing single invocation synthesis conjectures
- --cond-rewrite-quant
- conditional rewriting of quantified formulas [*]
- --cond-var-split-agg-quant
- aggressive split quantified formulas that lead to variable eliminations
[*]
- --cond-var-split-quant
- split quantified formulas that lead to variable eliminations [*]
- --conjecture-filter-active-terms
- filter based on active terms [*]
- --conjecture-filter-canonical
- filter based on canonicity [*]
- --conjecture-filter-model
- filter based on model [*]
- --conjecture-gen
- generate candidate conjectures for inductive proofs [*]
- --conjecture-gen-gt-enum=N
- number of ground terms to generate for model filtering
- --conjecture-gen-max-depth=N
- maximum depth of terms to consider for conjectures
- --conjecture-gen-per-round=N
- number of conjectures to generate per instantiation round
- --conjecture-gen-uee-intro
- more aggressive merging for universal equality engine, introduces terms
[*]
- --conjecture-no-filter
- do not filter conjectures [*]
- --dt-stc-ind
- apply strengthening for existential quantification over datatypes based on
structural induction [*]
- --dt-var-exp-quant
- expand datatype variables bound to one constructor in quantifiers [*]
- --e-matching
- whether to do heuristic E-matching [*]
- --elim-ext-arith-quant
- eliminate extended arithmetic symbols in quantified formulas [*]
- --elim-taut-quant
- eliminate tautological disjuncts of quantified formulas [*]
- --finite-model-find
- use finite model finding heuristic for quantifier instantiation [*]
- --fmf-bound
- finite model finding on bounded quantification [*]
- --fmf-bound-int
- finite model finding on bounded integer quantification [*]
- --fmf-bound-lazy
- enforce bounds for bounded quantification lazily via use of proxy
variables [*]
- --fmf-bound-min-mode=MODE
- mode for which types of bounds to minimize via first decision
heuristics
- --fmf-empty-sorts
- allow finite model finding to assume sorts that do not occur in ground
assertions are empty [*]
- --fmf-fmc-simple
- simple models in full model check for finite model finding [*]
- --fmf-fresh-dc
- use fresh distinguished representative when applying Inst-Gen techniques
[*]
- --fmf-fun
- find models for recursively defined functions, assumes functions are
admissible [*]
- --fmf-fun-rlv
- find models for recursively defined functions, assumes functions are
admissible, allows empty type when function is irrelevant [*]
- --fmf-inst-engine
- use instantiation engine in conjunction with finite model finding [*]
- --fmf-inst-gen
- enable Inst-Gen instantiation techniques for finite model finding [*]
- --fmf-inst-gen-one-quant-per-round
- only perform Inst-Gen instantiation techniques on one quantifier per round
[*]
- --fs-interleave
- interleave full saturate instantiation with other techniques [*]
- --full-saturate-quant
- when all other quantifier instantiation strategies fail, instantiate with
ground terms from relevant domain, then arbitrary ground terms before
answering unknown [*]
- --full-saturate-quant-rd
- whether to use relevant domain first for full saturation instantiation
strategy [*]
- --global-negate
- do global negation of input formula [*]
- --ho-matching
- do higher-order matching algorithm for triggers with variable operators
[*]
- --ho-matching-var-priority
- give priority to variable arguments over constant arguments [*]
- --ho-merge-term-db
- merge term indices modulo equality [*]
- --increment-triggers
- generate additional triggers as needed during search [*]
- --infer-arith-trigger-eq
- infer equalities for trigger terms based on solving arithmetic equalities
[*]
- --infer-arith-trigger-eq-exp
- record explanations for inferArithTriggerEq [*]
- --inst-level-input-only
- only input terms are assigned instantiation level zero [*]
- --inst-max-level=N
- maximum inst level of terms used to instantiate quantified formulas with
(-1 == no limit, default)
- --inst-no-entail
- do not consider instances of quantified formulas that are currently
entailed [*]
- --inst-no-model-true
- do not consider instances of quantified formulas that are currently true
in model, if it is available [*]
- --inst-prop
- internal propagation for instantiations for selecting relevant instances
[*]
- --inst-when-phase=N
- instantiation rounds quantifiers takes (>=1) before allowing theory
combination to happen
- --inst-when-strict-interleave
- ensure theory combination and standard quantifier effort strategies take
turns [*]
- --inst-when-tc-first
- allow theory combination to happen once initially, before quantifier
strategies are run [*]
- --inst-when=MODE
- when to apply instantiation
- --int-wf-ind
- apply strengthening for integers based on well-founded induction [*]
- --ite-dtt-split-quant
- split ites with dt testers as conditions [*]
- --ite-lift-quant=MODE
- ite lifting mode for quantified formulas
- --literal-matching=MODE
- choose literal matching mode
- --local-t-ext
- do instantiation based on local theory extensions [*]
- --lte-partial-inst
- partially instantiate local theory quantifiers [*]
- --lte-restrict-inst-closure
- treat arguments of inst closure as restricted terms for instantiation
[*]
- --macros-quant
- perform quantifiers macro expansion [*]
- --macros-quant-mode=MODE
- mode for quantifiers macro expansion
- --mbqi-interleave
- interleave model-based quantifier instantiation with other techniques
[*]
- --mbqi-one-inst-per-round
- only add one instantiation per quantifier per round for mbqi [*]
- --mbqi-one-quant-per-round
- only add instantiations for one quantifier per round for mbqi [*]
- --mbqi=MODE
- choose mode for model-based quantifier instantiation
- --miniscope-quant
- miniscope quantifiers [*]
- --miniscope-quant-fv
- miniscope quantifiers for ground subformulas [*]
- --multi-trigger-cache
- caching version of multi triggers [*]
- --multi-trigger-linear
- implementation of multi triggers where maximum number of instantiations is
linear wrt number of ground terms [*]
- --multi-trigger-priority
- only try multi triggers if single triggers give no instantiations [*]
- --multi-trigger-when-single
- select multi triggers when single triggers exist [*]
- --partial-triggers
- use triggers that do not contain all free variables [*]
- --pre-skolem-quant
- apply skolemization eagerly to bodies of quantified formulas [*]
- --pre-skolem-quant-agg
- apply skolemization to quantified formulas aggressively [*]
- --pre-skolem-quant-nested
- apply skolemization to nested quantified formulas [*]
- --prenex-quant-user
- prenex quantified formulas with user patterns [*]
- --prenex-quant=MODE
- prenex mode for quantified formulas
- --pure-th-triggers
- use pure theory terms as single triggers [*]
- --purify-dt-triggers
- purify dt triggers, match all constructors of correct form instead of
selectors [*]
- --purify-triggers
- purify triggers, e.g. f( x+1 ) becomes f( y ), x mapsto y-1 [*]
- --qcf-all-conflict
- add all available conflicting instances during conflict-based
instantiation [*]
- --qcf-eager-check-rd
- optimization, eagerly check relevant domain of matched position [*]
- --qcf-eager-test
- optimization, test qcf instances eagerly [*]
- --qcf-nested-conflict
- consider conflicts for nested quantifiers [*]
- --qcf-skip-rd
- optimization, skip instances based on possibly irrelevant portions of
quantified formulas [*]
- --qcf-tconstraint
- enable entailment checks for t-constraints in qcf algorithm [*]
- --qcf-vo-exp
- qcf experimental variable ordering [*]
- --quant-alpha-equiv
- infer alpha equivalence between quantified formulas [*]
- --quant-anti-skolem
- perform anti-skolemization for quantified formulas [*]
- --quant-cf
- enable conflict find mechanism for quantifiers [*]
- --quant-cf-mode=MODE
- what effort to apply conflict find mechanism
- --quant-cf-when=MODE
- when to invoke conflict find mechanism for quantifiers
- --quant-dsplit-mode=MODE
- mode for dynamic quantifiers splitting
- --quant-epr
- infer whether in effectively propositional fragment, use for cbqi [*]
- --quant-epr-match
- use matching heuristics for EPR instantiation [*]
- --quant-fun-wd
- assume that function defined by quantifiers are well defined [*]
- --quant-ind
- use all available techniques for inductive reasoning [*]
- --quant-model-ee
- use equality engine of model for last call effort [*]
- --quant-rep-mode=MODE
- selection mode for representatives in quantifiers engine
- --quant-split
- apply splitting to quantified formulas based on variable disjoint
disjuncts [*]
- --register-quant-body-terms
- consider ground terms within bodies of quantified formulas for matching
[*]
- --relational-triggers
- choose relational triggers such as x = f(y), x >= f(y) [*]
- --relevant-triggers
- prefer triggers that are more relevant based on SInE style analysis
[*]
- --rewrite-rules
- use rewrite rules module [*]
- --rr-one-inst-per-round
- add one instance of rewrite rule per round [*]
- --strict-triggers
- only instantiate quantifiers with user patterns based on triggers [*]
- --sygus-add-const-grammar
- statically add constants appearing in conjecture to grammars [*]
- --sygus-auto-unfold
- enable approach which automatically unfolds transition systems for
directly solving invariant synthesis problems [*]
- --sygus-bool-ite-return-const
- Only use Boolean constants for return values in unification-based function
synthesis [*]
- --sygus-eval-unfold
- do unfolding of sygus evaluation functions [*]
- --sygus-eval-unfold-bool
- do unfolding of Boolean evaluation functions that appear in refinement
lemmas [*]
- --sygus-ext-rew
- use extended rewriter for sygus [*]
- --sygus-grammar-norm
- statically normalize sygus grammars based on flattening (linearization)
[*]
- --sygus-inference
- attempt to preprocess arbitrary inputs to sygus conjectures [*]
- --sygus-inv-templ-when-sg
- use invariant templates (with solution reconstruction) for syntax guided
problems [*]
- --sygus-inv-templ=MODE
- template mode for sygus invariant synthesis (weaken pre-condition,
strengthen post-condition, or none)
- --sygus-min-grammar
- statically minimize sygus grammars [*]
- --sygus-pbe
- enable approach which unifies conditional solutions, specialized for
programming-by-examples (pbe) conjectures [*]
- --sygus-qe-preproc
- use quantifier elimination as a preprocessing step for sygus [*]
- --sygus-ref-eval
- direct evaluation of refinement lemmas for conflict analysis [*]
- --sygus-repair-const
- use approach to repair constants in sygus candidate solutions [*]
- --sygus-rr
- use sygus to enumerate and verify correctness of rewrite rules via
sampling [*]
- --sygus-rr-synth
- use sygus to enumerate candidate rewrite rules via sampling [*]
- --sygus-rr-synth-accel
- add dynamic symmetry breaking clauses based on candidate rewrites [*]
- --sygus-rr-synth-check
- use satisfiability check to verify correctness of candidate rewrites
[*]
- --sygus-rr-synth-filter-cong
- filter candidate rewrites based on congruence [*]
- --sygus-rr-synth-filter-match
- filter candidate rewrites based on matching [*]
- --sygus-rr-synth-filter-order
- filter candidate rewrites based on variable ordering [*]
- --sygus-rr-verify
- use sygus to verify the correctness of rewrite rules via sampling [*]
- --sygus-rr-verify-abort
- abort when sygus-rr-verify finds an instance of unsoundness [*]
- --sygus-sample-grammar
- when applicable, use grammar for choosing sample points [*]
- --sygus-samples=N
- number of points to consider when doing sygus rewriter sample testing
- --sygus-stream
- enumerate a stream of solutions instead of terminating after the first one
[*]
- --sygus-templ-embed-grammar
- embed sygus templates into grammars [*]
- --sygus-unif
- Unification-based function synthesis [*]
- --term-db-mode
- which ground terms to consider for instantiation
- --track-inst-lemmas
- track instantiation lemmas (for proofs, unsat cores, qe and synthesis
minimization) [*]
- --trigger-active-sel
- selection mode to activate triggers
- --trigger-sel
- selection mode for triggers
- --user-pat=MODE
- policy for handling user-provided patterns for quantifier
instantiation
- --var-elim-quant
- enable simple variable elimination for quantified formulas [*]
- --var-ineq-elim-quant
- enable variable elimination based on infinite projection of unbound
arithmetic variables [*]
- --abstract-values
- in models, output arrays (and in future, maybe others) using abstract
values, as required by the SMT-LIB standard [*]
- --bitblast-step
- amount of resources spent for each bitblast step (EXPERTS only)
- --bv-sat-conflict-step
- amount of resources spent for each sat conflict (bitvectors) (EXPERTS
only)
- --check-models
- after SAT/INVALID/UNKNOWN, check that the generated model satisfies user
assertions [*]
- --check-proofs
- after UNSAT/VALID, machine-check the generated proof [*]
- --check-synth-sol
- checks whether produced solutions to functions-to-synthesize satisfy the
conjecture [*]
- --check-unsat-cores
- after UNSAT/VALID, produce and check an unsat core (expensive) [*]
- --cnf-step
- amount of resources spent for each call to cnf conversion (EXPERTS
only)
- --decision-step
- amount of getNext decision calls in the decision engine (EXPERTS
only)
- --dump-instantiations
- output instantiations of quantified formulas after every UNSAT/VALID
response [*]
- --dump-models
- output models after every SAT/INVALID/UNKNOWN response [*]
- --dump-proofs
- output proofs after every UNSAT/VALID response [*]
- --dump-synth
- output solution for synthesis conjectures after every UNSAT/VALID response
[*]
- --dump-unsat-cores
- output unsat cores after every UNSAT/VALID response [*]
- --dump-unsat-cores-full
- dump the full unsat core, including unlabeled assertions [*]
- --ext-rew-prep
- use extended rewriter as a preprocessing pass [*]
- --ext-rew-prep-agg
- use aggressive extended rewriter as a preprocessing pass [*]
- --force-logic=LOGIC
- set the logic, and override all further user attempts to change it
(EXPERTS only)
- --force-no-limit-cpu-while-dump
- Force no CPU limit when dumping models and proofs [*]
- --ite-simp
- turn on ite simplification (Kim (and Somenzi) et al., SAT 2009) [*]
- --lemma-step
- amount of resources spent when adding lemmas (EXPERTS only)
- --model-u-dt-enum
- in models, output uninterpreted sorts as datatype enumerations [*]
- --omit-dont-cares
- When producing a model, omit variables whose value does not matter
[*]
- --on-repeat-ite-simp
- do the ite simplification pass again if repeating simplification [*]
- --parse-step
- amount of resources spent for each command/expression parsing (EXPERTS
only)
- --preprocess-step
- amount of resources spent for each preprocessing step in SmtEngine
(EXPERTS only)
- --produce-assignments
- support the get-assignment command [*]
- --produce-unsat-assumptions
- turn on unsat assumptions generation [*]
- --produce-unsat-cores
- turn on unsat core generation [*]
- --proof
- turn on proof generation [*]
- --quantifier-step
- amount of resources spent for quantifier instantiations (EXPERTS
only)
- --repeat-simp
- make multiple passes with nonclausal simplifier [*]
- --restart-step
- amount of resources spent for each theory restart (EXPERTS only)
- --rewrite-apply-to-const
- eliminate function applications, rewriting e.g. f(5) to a new symbol f_5
(EXPERTS only) [*]
- --rewrite-step
- amount of resources spent for each rewrite step (EXPERTS only)
- --sat-conflict-step
- amount of resources spent for each sat conflict (main sat solver) (EXPERTS
only)
- --simp-ite-compress
- enables compressing ites after ite simplification [*]
- --simp-ite-hunt-zombies
- post ite compression enables zombie removal while the number of nodes is
above this threshold
- --simp-with-care
- enables simplifyWithCare in ite simplificiation [*]
- --simplification=MODE
- choose simplification mode, see --simplification=help
- --sort-inference
- calculate sort inference of input problem, convert the input based on
monotonic sorts [*]
- --static-learning
- use static learning (on by default) [*]
- --sygus-out=MODE
- output mode for sygus
- --sygus-print-callbacks
- use sygus print callbacks to print sygus terms in the user-provided form
(disable for debugging) [*]
- --symmetry-breaker-exp
- generate symmetry breaking constraints after symmetry detection [*]
- --theory-check-step
- amount of resources spent for each theory check call (EXPERTS only)
- --unconstrained-simp
- turn on unconstrained simplification (see Bruttomesso/Brummayer PhD
thesis) [*]
- --no-simplification
- turn off all simplification (same as --simplification=none)
CVC4 reports all syntactic and semantic errors on standard
error.
The CVC4 effort is the culmination of fifteen years of
theorem proving research, starting with the Stanford Validity Checker
(SVC) in 1996.
SVC's successor, the Cooperating Validity Checker (CVC),
had a more optimized internal design, produced proofs, used the Chaff
SAT solver, and featured a number of usability enhancements. Its name comes
from the cooperative nature of decision procedures in Nelson-Oppen theory
combination, which share amongst each other equalities between shared
terms.
CVC Lite, first made available in 2003, was a rewrite of CVC that
attempted to make CVC more flexible (hence the “lite”) while
extending the feature set: CVCLite supported quantifiers where its
predecessors did not. CVC3 was a major overhaul of portions of CVC Lite: it
added better decision procedure implementations, added support for using
MiniSat in the core, and had generally better performance.
CVC4 is the new version, the fifth generation of this validity
checker line that is now celebrating fifteen years of heritage. It
represents a complete re-evaluation of the core architecture to be both
performant and to serve as a cutting-edge research vehicle for the next
several years. Rather than taking CVC3 and redesigning problem parts, we've
taken a clean-room approach, starting from scratch. Before using any designs
from CVC3, we have thoroughly scrutinized, vetted, and updated them. Many
parts of CVC4 bear only a superficial resemblance, if any, to their
correspondent in CVC3.
However, CVC4 is fundamentally similar to CVC3 and many other
modern SMT solvers: it is a DPLL( T ) solver, with a SAT solver at
its core and a delegation path to different decision procedure
implementations, each in charge of solving formulas in some background
theory.
The re-evaluation and ground-up rewrite was necessitated, we felt,
by the performance characteristics of CVC3. CVC3 has many useful features,
but some core aspects of the design led to high memory use, and the use of
heavyweight computation (where more nimble engineering approaches could
suffice) makes CVC3 a much slower prover than other tools. As these designs
are central to CVC3, a new version was preferable to a selective
re-engineering, which would have ballooned in short order.
This manual page refers to CVC4 version 1.6.
An issue tracker for the CVC4 project is maintained at
https://github.com/CVC4/CVC4/issues.
CVC4 is developed by a team of researchers at Stanford
University and the University of Iowa. See the AUTHORS file in the
distribution for a full list of contributors.
The CVC4 wiki contains useful information about the design and
internals of CVC4. It is maintained at
http://cvc4.cs.stanford.edu/wiki/.