dReal4
|
Contractor for forall constraints. More...
#include </home/soonhokong/work/dreal4/dreal/contractor/contractor_forall.h>
Public Member Functions | |
ContractorForall (Formula f, const Box &box, double epsilon, double inner_delta, const Config &config) | |
Constructs Forall contractor using f and box . More... | |
ContractorForall (const ContractorForall &)=delete | |
Deleted copy constructor. | |
ContractorForall (ContractorForall &&)=delete | |
Deleted move constructor. | |
ContractorForall & | operator= (const ContractorForall &)=delete |
Deleted copy assign operator. | |
ContractorForall & | operator= (ContractorForall &&)=delete |
Deleted move assign operator. | |
bool | PruneWithCounterexample (ContractorStatus *cs, Box *const current_box, const Box &counterexample) const |
~ContractorForall () override=default | |
Default destructor. | |
void | Prune (ContractorStatus *cs) const override |
Performs pruning on cs . | |
std::ostream & | display (std::ostream &os) const override |
Outputs this contractor to os . | |
![]() | |
ContractorCell (Contractor::Kind kind, DynamicBitset input, Config config) | |
Constructs a cell with kind and input . | |
ContractorCell ()=delete | |
Deleted default constructor. | |
ContractorCell (const ContractorCell &)=delete | |
Deleted copy constructor. | |
ContractorCell (ContractorCell &&)=delete | |
Deleted move constructor. | |
void | operator= (const ContractorCell &)=delete |
Deleted copy assign operator. | |
void | operator= (ContractorCell &&)=delete |
Deleted move assign operator. | |
virtual | ~ContractorCell ()=default |
Default destructor. | |
Contractor::Kind | kind () const |
Returns its kind. | |
const DynamicBitset & | input () const |
Returns its input. | |
DynamicBitset & | mutable_input () |
Returns its input. | |
const Config & | config () const |
Returns config. | |
bool | include_forall () const |
Returns true if this contractor includes a forall contractor. | |
void | set_include_forall () |
Sets include_forall true. | |
Contractor for forall constraints.
See the following problem definition and our approach.
Problem: Given a box B ∈ IRⁿ and a formula F = ∃x₁...xₙ. ∀y₁....yₘ. φ(x₁, ..., xₙ, y₁, ..., yₘ), design a contractor reducing B into B' where B' ⊆ B.
Approach: Find a counterexample (a₁, ..., aₙ, b₁, ..., bₘ) such that ¬φ(a₁, ..., aₙ, b₁, ..., bₘ) holds while (a₁, ..., aₙ) ∈ B. We do this by computing Solve(strengthen(¬φ, ε), δ) where ε > δ.
Case 2: Found a CE, (a₁, ..., aₙ, b₁, ..., bₘ). Use the CE to reduce B into B'. That is compute,
B' = Contract(φ(x₁, ..., xₙ, b₁, ..., bₘ), B)
|
inline |
Constructs Forall contractor using f
and box
.
epsilon
is used to strengthen ¬φ and inner_delta
is used to solve (¬φ)⁻ᵟ¹.