138 typedef std::list<FormulaWithOrigins>
super;
187 if( carl::PROP_IS_PURE_CONJUNCTION <=
mProperties )
188 return !(carl::PROP_CONTAINS_BOOLEAN <=
mProperties) && !(carl::PROP_CONTAINS_UNINTERPRETED_EQUATIONS <=
mProperties);
199 if( carl::PROP_IS_LITERAL_CONJUNCTION <=
mProperties )
200 return !(carl::PROP_CONTAINS_BOOLEAN <=
mProperties) && !(carl::PROP_CONTAINS_UNINTERPRETED_EQUATIONS <=
mProperties);
247 return carl::PROP_CONTAINS_BITVECTOR <=
mProperties;
265 return carl::PROP_CONTAINS_REAL_VALUED_VARS <=
mProperties;
274 return carl::PROP_CONTAINS_INTEGER_VALUED_VARS <=
mProperties;
283 return carl::PROP_CONTAINS_UNINTERPRETED_EQUATIONS <=
mProperties;
292 return !(carl::PROP_CONTAINS_BITVECTOR <=
mProperties)
293 && !(carl::PROP_CONTAINS_UNINTERPRETED_EQUATIONS <=
mProperties)
294 && !(carl::PROP_CONTAINS_INTEGER_VALUED_VARS <=
mProperties)
295 && !(carl::PROP_CONTAINS_REAL_VALUED_VARS <=
mProperties)
296 && !(carl::PROP_CONTAINS_PSEUDOBOOLEAN <=
properties());
318 return super::back();
323 return super::begin();
333 return super::begin();
342 return super::rbegin();
346 return super::rend();
351 return super::empty();
356 return super::size();
383 for (
const auto& f: *
this) {
384 carl::variables(f.formula(),
vars);
392 return (*i1) < (*i2);
399 for(
auto& fwo : *
this )
400 subFormulas.push_back( fwo.formula() );
406 assert( _formula !=
end() );
407 if( !_formula->hasOrigins() )
409 _formula->mOrigins = std::shared_ptr<FormulasT>(
new FormulasT() );
411 _formula->mOrigins->push_back( _origin );
419 assert( _formula !=
end() );
420 if( _formula->hasOrigins() )
422 _formula->mOrigins =
nullptr;
430 std::pair<iterator,bool>
add(
const FormulaT& _formula,
bool _mightBeConjunction =
true )
432 return add( _formula,
false,
FormulaT( carl::FormulaType::FALSE ),
nullptr, _mightBeConjunction );
435 std::pair<iterator,bool>
add(
const FormulaT& _formula,
const FormulaT& _origins,
bool _mightBeConjunction =
true )
437 return add( _formula,
true, _origins,
nullptr, _mightBeConjunction );
440 std::pair<iterator,bool>
add(
const FormulaT& _formula,
const std::shared_ptr<FormulasT>& _origins,
bool _mightBeConjunction =
true )
442 return add( _formula,
false,
FormulaT( carl::FormulaType::FALSE ), _origins, _mightBeConjunction );
445 std::pair<iterator,bool>
add(
const FormulaT& _formula,
bool _hasSingleOrigin,
const FormulaT& _origin,
const std::shared_ptr<FormulasT>& _origins,
bool _mightBeConjunction =
true );
450 for (
const auto& fwo : mi) os <<
" " << fwo.formula();
455 template<
typename AnnotationType>
A base class for all kind of theory solving methods.
std::vector< carl::Variable > vars(const std::pair< QuantifierType, std::vector< carl::Variable >> &p)
Class to create the formulas for axioms.
carl::Formula< Poly > FormulaT
carl::Assignment< Rational > RationalAssignment
carl::Model< Rational, Poly > Model
std::ostream & operator<<(std::ostream &os, CMakeOptionPrinter cmop)
carl::Formulas< Poly > FormulasT
void annotateFormula(const FormulaT &, const std::vector< AnnotationType > &)