/smats

SMT symbolic evaluator

Primary LanguageC++

Smats

smats CI Docs CI

Satisfability Modulo Arithmetic Theories Symbols (Smats) provides a simple to use symbolic representation of arithmetic expressions for SMT (Satisfiability Modulo Theories) solvers.

Utility commands

# Build the main application.
# The executable can be found in the bazel-bin/smats directory
bazel build //smats
# Run the main application and pass an argument (e.g. 2)
bazel run //smats -- 2
# Build the main application in debug mode
bazel build //smats --config=dbg
# Build the main application in release mode
bazel run //smats --config=opt
# Run all the tests
bazel test //tests/...
# Only run a specific tagged test
bazel test //tests/... --test_tag_filters=calculator
# Lint all the code
bazel test //smats/...
# Build the documentation
# The documentation can be found in the bazel-bin/docs directory
bazel build //docs
# Remove all the build files
bazel clean
# Get some information about the cpp toolchain as bazel sees it
bazel cquery "@bazel_tools//tools/cpp:compiler" --output starlark --starlark:expr 'providers(target)'
# Get the dependencies of the main application.
# See https://docs.bazel.build/versions/main/query-how-to.html
bazel query --noimplicit_deps --notool_deps 'deps(//smats)'
# Check the include directives
CXX=clang bazel build --config=iwyu //smats/...
# Check the target dependencies
bazel build --config=dwyu //smats