SMT-RAT  24.02
Toolbox for Strategic and Parallel Satisfiability-Modulo-Theories Solving
heuristics_approximation.h
Go to the documentation of this file.
2 
4 
6 
7 // the following distinction is better to implement as different cell heuristics
8 // enum ApxStrategy {ONLY_BOUNDS, BETWEEN}; // For CHAIN, only BETWEEN makes sense, for LDB we might need another option
9 // constexpr ApxStrategy approximation_strategy = ApxStrategy::ONLY_BOUNDS;
10 
11 template <>
13  template<typename T>
15  bool enable_weak = true;
16  LocalDelMode ldel_mode = LocalDelMode::ALL;
17 
19  datastructures::Delineation reduced_delineation = der->delin();
20  if (ldel_mode == LocalDelMode::ONLY_INDEPENDENT) {
21  handle_local_del_simplify_non_independent(reduced_delineation);
22  } else if (ldel_mode == LocalDelMode::SIMPLIFY) {
23  handle_local_del_simplify_all(reduced_delineation);
24  }
25  auto reduced_cell = reduced_delineation.delineate_cell(der->main_var_sample());
26 
28  response.description = apx.compute_cell();
29 
30  response.ordering.biggest_cell_wrt = response.description;
31  if (der->cell().is_section()) {
32  handle_local_del_simplify_non_independent(reduced_delineation);
33  handle_local_del(der, reduced_delineation, response);
34  handle_section_all_equational(reduced_delineation, response);
35  } else { // sector
36  handle_local_del(der, reduced_delineation, response);
37  handle_cell_reduction(reduced_delineation, reduced_cell, response);
38  util::simplest_biggest_cell_ordering(der->proj(), reduced_delineation, reduced_cell, response.description, response.ordering, enable_weak);
39  }
40  handle_connectedness(der, response, enable_weak);
41  handle_ordering_polys(der, response);
42  return response;
43  }
44 };
45 
46 }
Represents the delineation of a set of polynomials (at a sample), that is.
Definition: delineation.h:118
auto delineate_cell(const RAN &sample) const
Computes the bounds of the interval around the given sample w.r.t.
Definition: delineation.h:154
std::optional< SymbolicInterval > biggest_cell_wrt
Definition: roots.h:418
std::shared_ptr< SampledDerivation< Properties > > SampledDerivationRef
Definition: derivation.h:25
void simplest_biggest_cell_ordering(datastructures::Projections &, const datastructures::Delineation &delin, const datastructures::DelineationInterval &delin_interval, const datastructures::SymbolicInterval &interval, datastructures::IndexedRootOrdering &ordering, bool enable_weak=false)
Definition: util.h:89
Heuristics for computing representations.
void handle_section_all_equational(const datastructures::Delineation &delin, datastructures::CellRepresentation< T > &response)
void handle_cell_reduction(datastructures::Delineation &reduced_delineation, datastructures::DelineationInterval &reduced_cell, datastructures::CellRepresentation< T > &response)
void handle_connectedness(datastructures::SampledDerivationRef< T > &der, datastructures::CellRepresentation< T > &response, bool enable_weak=false)
void handle_local_del_simplify_non_independent(datastructures::Delineation &reduced_delineation)
void handle_local_del_simplify_all(datastructures::Delineation &reduced_delineation)
void handle_ordering_polys(datastructures::SampledDerivationRef< T > &der, datastructures::CellRepresentation< T > &response)
void handle_local_del(datastructures::SampledDerivationRef< T > &der, datastructures::Delineation &reduced_delineation, datastructures::CellRepresentation< T > &response)
IndexedRootOrdering ordering
An ordering on the roots that protects the cell.
SymbolicInterval description
Description of a cell.
Represents the i-th root of a multivariate polynomial at its main variable (given an appropriate samp...
Definition: roots.h:15
static datastructures::CellRepresentation< T > compute(datastructures::SampledDerivationRef< T > &der)
Note: If connected(i) holds, then the indexed root ordering must contain an ordering between the inte...
Definition: heuristics.h:24