SMT-RAT  24.02
Toolbox for Strategic and Parallel Satisfiability-Modulo-Theories Solving
smtrat::cadcells Namespace Reference

A framework for sample-based CAD algorithms. More...

Namespaces

 algorithms
 Various algorithms as well as helper functions for developing new algorithms.
 
 datastructures
 Main datastructures.
 
 helper
 
 operators
 Projection operators.
 
 representation
 Heuristics for computing representations.
 

Typedefs

using VariableOrdering = std::vector< carl::Variable >
 
using Polynomial = carl::ContextPolynomial< Rational >
 
using Constraint = carl::BasicConstraint< Polynomial >
 
using MultivariateRoot = carl::MultivariateRoot< Polynomial >
 
using VariableComparison = carl::VariableComparison< Polynomial >
 
using Atom = std::variant< Constraint, VariableComparison >
 
using Disjunction = std::vector< Atom >
 
using DNF = std::vector< Disjunction >
 
using RAN = Polynomial::RootType
 
using Assignment = carl::Assignment< RAN >
 

Variables

static const Assignment empty_assignment
 

Detailed Description

A framework for sample-based CAD algorithms.

This is a highly modular framework for sample-based CAD algorithms, i.e. single cell construction and coverings.

The basic idea is to have properties (of some polynomials or real root functions); each property has a level w.r.t. to a variable ordering (i.e. the index of the main variable of a polynomial) and rules operating on them, each replacing a property by a "simpler" set of properties (eventually reducing the level). At some stage, we delineate properties (that is, ordering the root under a partial sample), determine an ordering and cell boundaries (called representation) to continue proving properties. For more details on the general framework, we refer to the paper.

The structure of this implementation is as follows:

  • cadcells::datastructures contains the main datastructures. Read here for more details on the general structure of the framework.
  • cadcells::operators defines the properties, the rules and methods to delineate properties. These are used by operators which provide an interface for performing projections on certain steps.
  • cadcells::representation provides heuristics for computing the representations for cells, coverings and delineations.
  • cadcells::algorithms contains helper methods, building blocks for algorithms as well as algorithms themselves. Go here for usage of the framework and high-level interfaces.

Quick start

For an introduction, we refer to the code of algorithms::onecell.

Typedef Documentation

◆ Assignment

using smtrat::cadcells::Assignment = typedef carl::Assignment<RAN>

Definition at line 25 of file common.h.

◆ Atom

using smtrat::cadcells::Atom = typedef std::variant<Constraint, VariableComparison>

Definition at line 21 of file common.h.

◆ Constraint

using smtrat::cadcells::Constraint = typedef carl::BasicConstraint<Polynomial>

Definition at line 18 of file common.h.

◆ Disjunction

using smtrat::cadcells::Disjunction = typedef std::vector<Atom>

Definition at line 22 of file common.h.

◆ DNF

using smtrat::cadcells::DNF = typedef std::vector<Disjunction>

Definition at line 23 of file common.h.

◆ MultivariateRoot

using smtrat::cadcells::MultivariateRoot = typedef carl::MultivariateRoot<Polynomial>

Definition at line 19 of file common.h.

◆ Polynomial

using smtrat::cadcells::Polynomial = typedef carl::ContextPolynomial<Rational>

Definition at line 16 of file common.h.

◆ RAN

using smtrat::cadcells::RAN = typedef Polynomial::RootType

Definition at line 24 of file common.h.

◆ VariableComparison

using smtrat::cadcells::VariableComparison = typedef carl::VariableComparison<Polynomial>

Definition at line 20 of file common.h.

◆ VariableOrdering

using smtrat::cadcells::VariableOrdering = typedef std::vector<carl::Variable>

Definition at line 11 of file common.h.

Variable Documentation

◆ empty_assignment

const Assignment smtrat::cadcells::empty_assignment
static

Definition at line 27 of file common.h.