void sort(T *array, int size, LessThan lt)
carl::mpl_variant_of< TermTypes >::type TermType
Variant type for all terms.
carl::mpl_variant_of< VariableTypes >::type VariableType
Variant type for all variables.
Class to create the formulas for axioms.
carl::Formula< Poly > FormulaT
Base class for all theories.
Implements the theory of bitvectors.
bool handleITE(const FormulaT &ifterm, const types::TermType &thenterm, const types::TermType &elseterm, types::TermType &result, TheoryError &errors)
Resolve an if-then-else operator.
bool resolveSymbol(const Identifier &identifier, types::TermType &result, TheoryError &errors)
Resolve a symbol that was not declared within the ParserState.
bool handleDistinct(const std::vector< types::TermType > &arguments, types::TermType &result, TheoryError &errors)
Resolve a distinct operator.
conversion::VectorVariantConverter< types::BVTerm > vectorConverter
BitvectorTheory(ParserState *state)
bool refreshVariable(const types::VariableType &var, types::VariableType &subject, TheoryError &errors)
bool declareVariable(const std::string &name, const carl::Sort &sort, types::VariableType &result, TheoryError &errors)
Declare a new variable with the given name and the given sort.
conversion::VariantConverter< types::BVTerm > termConverter
bool instantiate(const types::VariableType &var, const types::TermType &replacement, types::TermType &subject, TheoryError &errors)
Instantiate a variable within a term.
static void addSimpleSorts(qi::symbols< char, carl::Sort > &sorts)
carl::BVTermType OperatorType
bool functionCall(const Identifier &identifier, const std::vector< types::TermType > &arguments, types::TermType &result, TheoryError &errors)
Resolve another unknown function call.