Skip to main content

Module smt

Module smt 

Expand description

A generic interface for SMT solvers.

We do not want libLISA to depend on a specific SMT solver. This pulls in unwanted C dependencies that make the library less portable.

The generic SmtSolver trait abstracts over the SMT solver implementation. This allows us to specify operations that use an SMT solver, but leave the actual implementation up to a separate crate (liblisa-z3) that can be imported when necessary.

Modules§

z3
This module contains glue code that implements liblisa::smt::SmtSolver. To use this module, the feature z3 needs to be enabled.

Structs§

AssertionHash
A hash for a set of assertions executed on a solver. Used as the key for the solver cache.
CacheBV
Cacheable SMT BV type.
CacheBVArray
Cacheable SMT Array type.
CacheBool
Cacheable SMT Bool type.
CacheHitCounter
A wrapper around a SolverCache that counts the number of cache hits and misses.
CacheInt
Cacheable SMT Int type.
CacheModel
Cacheable SMT model that is returned when the assertions are satisfiable.
CacheModelRef
A reference to a CacheModel.
CachedSolver
A solver that uses caching.
CachedSolverProvider
A solver provider that returns CachedSolvers.
FileCache
A SolverCache that persists its cache to disk.
MemoryCache
A solver cache backed by a HashMap.
SharedCache
A solver cache wrapped in a Mutex.

Enums§

CacheResult
A cached SAT solver result
Dynamic
An expression that is dynamically typed.
SatResult
The result of running a SAT solver on a set of assertions.
Sort
The sort of an expression.
SortKind
The sort kind of an expression.

Traits§

SmtBV
BitVector expressions in the SMT solver.
SmtBVArray
Array expressions in the SMT solver.
SmtBool
Boolean expressions in the SMT solver.
SmtInt
Integer expressions in the SMT solver.
SmtModel
Model for satisfied assertions.
SmtModelRef
Reference to SmtModel.
SmtSolver
An SMT solver.
SolverCache
Methods that allow the type to be used as a cache for SMT solver assertions.
SolverProvider
Provides SmtSolvers without having to know all of the configuration details of the individual solvers.