CVC4 architecture#

Citation#

Clark W. Barrett, Christopher L. Conway, Morgan Deters, Liana Hadarean, Dejan Jovanovic, Tim King, Andrew Reynolds, Cesare Tinelli:
CVC4. CAV 2011.

Role in Primo#

This paper is used as an architectural reference, not as a direct algorithmic specification.

What we use#

  • modular SMT engine

  • typed terms

  • theory solvers

  • SMT-LIB orientation

  • model construction

  • incremental solving as a design concern

What we do not implement initially#

  • full SMT-LIB

  • quantifiers

  • arrays

  • bit-vectors

  • datatypes

  • strings

  • proof production

Implementation notes#

Primo should keep clear boundaries between:

  • SMT-LIB frontend

  • core term representation

  • SAT layer

  • SMT/DPLL(T) layer

  • theory solvers

  • model construction

Milestones#

  • M0: core term and SMT-LIB scaffold

  • M1: Boolean abstraction and IPASIR-UP/CaDiCaL SAT interface

  • M2: lazy DPLL(T)

  • M3: QF_UF theory solver