Skip to content
/ pact Public
forked from cvc5/cvc5

pact is an approximate model counter targeting projected counting on hybrid SMT formulas

License

Notifications You must be signed in to change notification settings

meelgroup/pact

 
 

Repository files navigation

License: BSD

pact: Partition And Count on Theories

pact is a hashing-based projected approximate model counter for hybrid SMT formulas. pact takes input an SMT formula over any theory combination and returns the count projected over bitvector and Boolean variables. Please refer to our DAC'25 paper for details about pact.

Build for Counting

./configure.sh --auto-download --cryptominisat 
cd build
make

Use for Counting

Count as pact, projected on bitvectors.

./cvc5 -S --hashsm xor <filename>

Count as pact, projected on Booleans

./cvc5 -S --projcount <filename>

Count with different hashing mode

./cvc5 -S --hashsm prime or ./cvc5 -S --hashsm shift

Count with varying epsilon and delta

./cvc5 -S --delta <value> --epsilon <value> <filename>

Count with varying starting slicesize

./cvc5 -S --slicesize <value> <filename>

Count by enumeration.

./cvc5 -e <filename>

Issue ./cvc5 -h and look for Model Counting Module for more options.

Build and Dependencies

pact can be built on Linux and macOS. For Windows, pact can be cross-compiled using Mingw-w64.

For detailed build and installation instructions on these platforms, see file INSTALL.rst.

Authors

The counting part of pact is written by Arijit Shaw and Kuldeep S. Meel. pact depends on mammoth work done by cvc5. For a full list of cvc5's authors, please refer to the AUTHORS file. Please refer to cvc5's readme for more details about cvc5.

About

pact is an approximate model counter targeting projected counting on hybrid SMT formulas

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • SMT 68.3%
  • C++ 28.1%
  • Java 0.9%
  • CMake 0.7%
  • Python 0.6%
  • Shell 0.6%
  • Other 0.8%