SMT-RAT
24.02
Toolbox for Strategic and Parallel Satisfiability-Modulo-Theories Solving
|
#include <BVDirectEncoder.h>
Public Member Functions | |
const FormulaSetT & | encode (const FormulaT &_inputFormula) |
const std::set< carl::Variable > & | introducedVariables () const |
const carl::FastMap< BitVec, Variables > | bitvectorBlastings () const |
BVDirectEncoder () | |
~BVDirectEncoder () | |
Private Types | |
typedef carl::Variable | Variable |
typedef std::vector< Variable > | Variables |
typedef FormulaT | Bit |
typedef std::vector< Bit > | Bits |
typedef carl::BVTerm | BitVecTerm |
typedef carl::BVConstraint | BitVecConstr |
typedef carl::BVVariable | BitVec |
typedef FormulaT | Formula |
Private Member Functions | |
const Bit | const0 () |
const Bit | const1 () |
void | boolAssert (const Formula &_formula) |
Bits | encodeConstant (const carl::BVValue &_value) |
Bits | encodeVariable (const BitVec &_variable) |
Bits | encodeIte (const Bit &_condition, const Bits &_then, const Bits &_else) |
Bits | encodeConcat (const Bits &_first, const Bits &_second) |
Bits | encodeExtract (const Bits &_operand, std::size_t _highest, std::size_t _lowest) |
Bits | encodeNot (const Bits &_operand) |
Bits | encodeNeg (const Bits &_operand) |
Bits | encodeAnd (const Bits &_first, const Bits &_second) |
Bits | encodeOr (const Bits &_first, const Bits &_second) |
Bits | encodeXor (const Bits &_first, const Bits &_second) |
Bits | encodeNand (const Bits &_first, const Bits &_second) |
Bits | encodeNor (const Bits &_first, const Bits &_second) |
Bits | encodeXnor (const Bits &_first, const Bits &_second) |
Bits | encodeAdd (const Bits &_first, const Bits &_second) |
Bits | encodeSub (const Bits &_first, const Bits &_second) |
Bits | encodeAdderNetwork (const Bits &_first, const Bits &_second, bool _carryInValue=false, bool _withCarryOut=false, bool _allowOverflow=true) |
Bits | encodeMul (const Bits &_first, const Bits &_second) |
Bits | encodeMultiplicationNetwork (const Bits &_first, const Bits &_second, bool _allowOverflow=true) |
Bits | encodeDivU (const Bits &_first, const Bits &_second) |
Bits | encodeDivisionNetwork (const Bits &_first, const Bits &_second, bool _returnRemainder=false) |
Bits | encodeDivS (const Bits &_first, const Bits &_second) |
Bits | encodeModU (const Bits &_first, const Bits &_second) |
Bits | encodeModS1 (const Bits &_first, const Bits &_second) |
Bits | encodeModS2 (const Bits &_first, const Bits &_second) |
Bits | encodeComp (const Bits &_first, const Bits &_second) |
Bits | encodeLshift (const Bits &_first, const Bits &_second) |
Bits | encodeShiftNetwork (const Bits &_first, const Bits &_second, bool _left, bool _arithmetic=false) |
Bits | encodeRshiftLogic (const Bits &_first, const Bits &_second) |
Bits | encodeRshiftArith (const Bits &_first, const Bits &_second) |
Bits | encodeLrotate (const Bits &_operand, std::size_t _index) |
Bits | encodeRrotate (const Bits &_operand, std::size_t _index) |
Bits | encodeExtU (const Bits &_operand, std::size_t _index) |
Bits | encodeExtS (const Bits &_operand, std::size_t _index) |
Bits | encodeRepeat (const Bits &_operand, std::size_t _index) |
Bits | encodeTerm (const BitVecTerm &_term) |
Bit | encodeConstraint (const BitVecConstr &_constraint) |
Bit | encodeEq (const Bits &_lhs, const Bits &_rhs) |
Bit | encodeNeq (const Bits &_lhs, const Bits &_rhs) |
Bit | encodeUlt (const Bits &_lhs, const Bits &_rhs) |
Bit | encodeUle (const Bits &_lhs, const Bits &_rhs) |
Bit | encodeUgt (const Bits &_lhs, const Bits &_rhs) |
Bit | encodeUge (const Bits &_lhs, const Bits &_rhs) |
Bit | encodeSlt (const Bits &_lhs, const Bits &_rhs) |
Bit | encodeSle (const Bits &_lhs, const Bits &_rhs) |
Bit | encodeSgt (const Bits &_lhs, const Bits &_rhs) |
Bit | encodeSge (const Bits &_lhs, const Bits &_rhs) |
Bit | createBit (const FormulaT &_formula) |
Bits | createBits (std::size_t _n) |
Variable | createVariable () |
Variables | createVariables (std::size_t _n) |
Bits | createBits (const Bits &_original) |
Bits | createBits (const Variables &_variables) |
Bit | boolNot (const Bit &_operand) |
Bit | boolImplies (const Bit &_first, const Bit &_second) |
Bit | boolAnd (const Bit &_first, const Bit &_second) |
Bit | boolAnd (const Bits &_operands) |
Bit | boolOr (const Bit &_first, const Bit &_second) |
Bit | boolOr (const Bits &_operands) |
Bit | boolXor (const Bit &_first, const Bit &_second) |
Bit | boolIff (const Bit &_first, const Bit &_second) |
Bit | boolIte (const Bit &_condition, const Bit &_then, const Bit &_else) |
FormulaT | encodeBVConstraints (const FormulaT _original) |
Private Attributes | |
std::set< Variable > | mIntroducedVariables |
carl::FastMap< BitVec, Variables > | mBitVecBits |
carl::FastMap< BitVecTerm, Bits > | mTermBits |
carl::FastMap< BitVecConstr, Bit > | mConstraintBits |
carl::FastMap< BitVecTerm, FormulaSetT > | mTermEncodings |
carl::FastMap< BitVecConstr, FormulaSetT > | mConstraintEncodings |
FormulaSetT | mCurrentEncodings |
std::optional< BitVecConstr > | mCurrentConstraint |
std::optional< BitVecTerm > | mCurrentTerm |
Definition at line 40 of file BVDirectEncoder.h.
|
private |
Definition at line 44 of file BVDirectEncoder.h.
|
private |
Definition at line 45 of file BVDirectEncoder.h.
|
private |
Definition at line 48 of file BVDirectEncoder.h.
|
private |
Definition at line 47 of file BVDirectEncoder.h.
|
private |
Definition at line 46 of file BVDirectEncoder.h.
|
private |
Definition at line 49 of file BVDirectEncoder.h.
|
private |
Definition at line 42 of file BVDirectEncoder.h.
|
private |
Definition at line 43 of file BVDirectEncoder.h.
|
inline |
Definition at line 996 of file BVDirectEncoder.h.
|
inline |
Definition at line 1003 of file BVDirectEncoder.h.
Definition at line 991 of file BVDirectEncoder.h.
Definition at line 936 of file BVDirectEncoder.h.
|
inlineprivate |
Definition at line 944 of file BVDirectEncoder.h.
|
inlineprivate |
Definition at line 83 of file BVDirectEncoder.h.
|
inlineprivate |
Definition at line 90 of file BVDirectEncoder.h.
Definition at line 872 of file BVDirectEncoder.h.
|
inlineprivate |
Definition at line 883 of file BVDirectEncoder.h.
|
inlineprivate |
Definition at line 888 of file BVDirectEncoder.h.
|
inlineprivate |
Definition at line 897 of file BVDirectEncoder.h.
|
inline |
Definition at line 251 of file BVDirectEncoder.h.
|
inlineprivate |
Definition at line 261 of file BVDirectEncoder.h.
Definition at line 197 of file BVDirectEncoder.h.
Definition at line 960 of file BVDirectEncoder.h.
|
inlineprivate |
Definition at line 469 of file BVDirectEncoder.h.
|
inlineprivate |
Definition at line 153 of file BVDirectEncoder.h.
|
inlineprivate |
Definition at line 115 of file BVDirectEncoder.h.
|
inlineprivate |
Definition at line 713 of file BVDirectEncoder.h.
|
inlineprivate |
TODO: Create a direct encoding of this instead of an equation to a constant.
Definition at line 339 of file BVDirectEncoder.h.
|
inlineprivate |
Definition at line 374 of file BVDirectEncoder.h.
|
inlineprivate |
Definition at line 334 of file BVDirectEncoder.h.
Definition at line 783 of file BVDirectEncoder.h.
|
inlineprivate |
Definition at line 160 of file BVDirectEncoder.h.
|
inlineprivate |
Definition at line 580 of file BVDirectEncoder.h.
|
inlineprivate |
Definition at line 571 of file BVDirectEncoder.h.
|
inlineprivate |
Definition at line 143 of file BVDirectEncoder.h.
|
inlineprivate |
Definition at line 549 of file BVDirectEncoder.h.
|
inlineprivate |
Definition at line 476 of file BVDirectEncoder.h.
|
inlineprivate |
Definition at line 405 of file BVDirectEncoder.h.
|
inlineprivate |
Definition at line 431 of file BVDirectEncoder.h.
|
inlineprivate |
Definition at line 400 of file BVDirectEncoder.h.
Definition at line 297 of file BVDirectEncoder.h.
|
inlineprivate |
Definition at line 302 of file BVDirectEncoder.h.
|
inlineprivate |
Definition at line 224 of file BVDirectEncoder.h.
Definition at line 174 of file BVDirectEncoder.h.
Definition at line 795 of file BVDirectEncoder.h.
Definition at line 233 of file BVDirectEncoder.h.
Definition at line 165 of file BVDirectEncoder.h.
Definition at line 206 of file BVDirectEncoder.h.
|
inlineprivate |
Definition at line 589 of file BVDirectEncoder.h.
|
inlineprivate |
Definition at line 561 of file BVDirectEncoder.h.
|
inlineprivate |
Definition at line 544 of file BVDirectEncoder.h.
|
inlineprivate |
Definition at line 539 of file BVDirectEncoder.h.
Definition at line 867 of file BVDirectEncoder.h.
Definition at line 862 of file BVDirectEncoder.h.
|
inlineprivate |
Definition at line 481 of file BVDirectEncoder.h.
Definition at line 843 of file BVDirectEncoder.h.
Definition at line 824 of file BVDirectEncoder.h.
Definition at line 256 of file BVDirectEncoder.h.
|
inlineprivate |
Definition at line 599 of file BVDirectEncoder.h.
Definition at line 818 of file BVDirectEncoder.h.
Definition at line 813 of file BVDirectEncoder.h.
Definition at line 805 of file BVDirectEncoder.h.
Definition at line 800 of file BVDirectEncoder.h.
Definition at line 125 of file BVDirectEncoder.h.
|
inlineprivate |
Definition at line 242 of file BVDirectEncoder.h.
Definition at line 215 of file BVDirectEncoder.h.
|
inline |
Definition at line 986 of file BVDirectEncoder.h.
Definition at line 57 of file BVDirectEncoder.h.
|
private |
Definition at line 61 of file BVDirectEncoder.h.
|
private |
Definition at line 69 of file BVDirectEncoder.h.
|
private |
Definition at line 75 of file BVDirectEncoder.h.
|
private |
Definition at line 72 of file BVDirectEncoder.h.
|
private |
Definition at line 76 of file BVDirectEncoder.h.
|
private |
Definition at line 53 of file BVDirectEncoder.h.
|
private |
Definition at line 59 of file BVDirectEncoder.h.
|
private |
Definition at line 67 of file BVDirectEncoder.h.