12 #include <carl-formula/formula/functions/PNF.h>
14 #include <boost/container/flat_map.hpp>
18 template<
typename PropertiesSet>
23 template<
typename PropertiesSet>
26 const auto& cell_a = a->cell();
27 const auto& cell_b = b->cell();
31 template<
typename PropertiesSet>
36 template<
typename PropertiesSet>
39 std::optional<std::vector<Interval<PropertiesSet>>>
m_intervals;
77 template<
typename PropertiesSet>
90 os <<
"Failed Projection" ;
102 std::optional<cadcells::datastructures::SymbolicInterval>
interval;
103 std::optional<cadcells::Assignment>
sample;
111 for (
const auto& child :
children) {
112 if (child.status !=
status) {
113 status = boost::indeterminate;
117 if (!boost::indeterminate(
status)) {
124 for (
const auto& child :
children) {
125 if (child.status !=
status) {
126 status = boost::indeterminate;
130 if (!boost::indeterminate(
status)) {
135 assert(!boost::indeterminate(st));
143 os <<
" (" << std::endl;
144 for (
const auto& child : tree.
children) {
145 os << child << std::endl;
153 boost::container::flat_map<carl::Variable, carl::Quantifier>
m_var_types;
165 [[nodiscard]] carl::Quantifier
var_type(
const carl::Variable&
var)
const{
168 return carl::Quantifier::FREE;
173 bool has(
const carl::Variable&
var)
const{
185 os <<
"(" <<
type <<
" " <<
var <<
")";
A symbolic interal whose bounds are defined by indexed root expressions.
bool has(const carl::Variable &var) const
const auto & var_types() const
void set_var_type(const carl::Variable &var, carl::Quantifier type)
boost::container::flat_map< carl::Variable, carl::Quantifier > m_var_types
carl::Quantifier var_type(const carl::Variable &var) const
Returns the type of the given variable.
bool upper_lt_upper(const DelineationInterval &del1, const DelineationInterval &del2)
Compares the upper bounds of two DelineationIntervals.
bool lower_lt_lower(const DelineationInterval &del1, const DelineationInterval &del2)
Compares the lower bounds of two DelineationIntervals.
bool lower_eq_lower(const DelineationInterval &del1, const DelineationInterval &del2)
Compares the lower bounds of two DelineationIntervals.
std::shared_ptr< SampledDerivation< Properties > > SampledDerivationRef
carl::Assignment< RAN > Assignment
std::set< Interval< PropertiesSet >, IntervalCompare< PropertiesSet > > IntervalSet
std::ostream & operator<<(std::ostream &os, const CoveringResult< PropertiesSet > &result)
cadcells::datastructures::SampledDerivationRef< PropertiesSet > Interval
QuantifierType type(const std::pair< QuantifierType, std::vector< carl::Variable >> &p)
const auto & sample() const
std::optional< std::vector< Interval< PropertiesSet > > > m_intervals
bool is_parameter() const
CoveringResult(Status s, const std::optional< cadcells::Assignment > &ass)
CoveringResult(Status s, const cadcells::Assignment &ass)
CoveringResult(Status s, const std::optional< cadcells::Assignment > &ass, const std::vector< Interval< PropertiesSet >> &inter)
CoveringResult(Status s, const cadcells::Assignment &ass, const std::vector< Interval< PropertiesSet >> &inter)
CoveringResult(Status s, std::vector< Interval< PropertiesSet >> &&inter)
const auto & intervals() const
CoveringResult(Status s, std::vector< Interval< PropertiesSet >> &inter)
bool is_failed_projection() const
std::optional< cadcells::Assignment > m_sample
Sorts interval by their lower bounds.
constexpr bool operator()(const Interval< PropertiesSet > &a, const Interval< PropertiesSet > &b) const
ParameterTree(const carl::Variable &v, const cadcells::datastructures::SymbolicInterval &i, const cadcells::Assignment &s, std::vector< ParameterTree > &&c)
std::vector< ParameterTree > children
std::optional< cadcells::Assignment > sample
std::optional< cadcells::datastructures::SymbolicInterval > interval
ParameterTree(std::vector< ParameterTree > &&c)
ParameterTree(boost::tribool st, const carl::Variable &v, const cadcells::datastructures::SymbolicInterval &i, const cadcells::Assignment &s)
std::optional< carl::Variable > variable