6 #include <carl-formula/formula/functions/Substitution.h>
14 bool convert(
const std::vector<types::TermType>& from, std::vector<T>& to)
const {
16 return converter(from, to);
19 bool convert(
const std::vector<types::TermType>& from, std::vector<T>& to,
TheoryError& errors)
const {
21 return converter(from, to, errors);
24 errors.
next() <<
"Instantiation of this function is not supported.";
31 bool convert(
const std::vector<types::TermType>& from, std::vector<T>& to)
const {
33 return converter(from, to);
36 errors.
next() <<
"Instantiation of this function is not supported.";
41 template<
typename V,
typename T>
48 template<
typename Res>
56 template<
typename TYPE = T>
57 typename std::enable_if<std::is_same<TYPE,Poly>::value,
bool>
::type
66 template<
typename VAR = V>
67 typename std::enable_if<std::is_same<VAR,types::BVVariable>::value,
bool>
::type
72 template<
typename VAR = V>
73 typename std::enable_if<std::is_same<VAR,types::BVVariable>::value,
bool>
::type
75 std::map<types::BVVariable,types::BVTerm> m;
83 if (boost::apply_visitor(*
this, subject)) {
bool substitute(const FormulaT &constr, const carl::Variable var, const carl::vs::Term< Poly > &term, FormulaT &result)
carl::BVVariable BVVariable
carl::mpl_variant_of< TermTypes >::type TermType
Variant type for all terms.
carl::BVTerm BVTerm
Typedef for bitvector term.
QuantifierType type(const std::pair< QuantifierType, std::vector< carl::Variable >> &p)
Class to create the formulas for axioms.
carl::Formula< Poly > FormulaT
carl::MultivariatePolynomial< Rational > Poly
carl::Formulas< Poly > FormulasT
bool convert(const std::vector< types::TermType > &from, std::vector< T > &to, TheoryError &errors) const
virtual ~FunctionInstantiator()
bool convert(const std::vector< types::TermType > &from, std::vector< T > &to) const
virtual bool operator()(const std::vector< types::TermType > &, types::TermType &, TheoryError &errors) const
virtual ~IndexedFunctionInstantiator()
bool convert(const std::vector< types::TermType > &from, std::vector< T > &to) const
virtual bool operator()(const std::vector< std::size_t > &, const std::vector< types::TermType > &, types::TermType &, TheoryError &errors) const
std::enable_if< std::is_same< VAR, types::BVVariable >::value, bool >::type operator()(const types::BVVariable &v)
bool operator()(const FormulaT &f)
std::enable_if< std::is_same< TYPE, Poly >::value, bool >::type operator()(const Poly &p)
std::enable_if< std::is_same< VAR, types::BVVariable >::value, bool >::type operator()(const types::BVTerm &t)
bool operator()(const Res &)
bool operator()(carl::Variable v)
bool instantiate(V v, const T &repl, types::TermType &subject)
std::vector< types::VariableType > arguments
std::set< types::VariableType > auxiliaries
types::TermType definition
UserFunctionInstantiator(const std::vector< types::VariableType > &arguments, const carl::Sort &sort, const types::TermType &definition, const std::set< types::VariableType > &auxiliaries)
Converts a vector of variants to a vector of some type using the Converter class.