PPL
1.2
|
This class provides the reduction method for the Congruences_Product domain. More...
#include <Partially_Reduced_Product_defs.hh>
Public Member Functions | |
Congruences_Reduction () | |
Default constructor. More... | |
void | product_reduce (D1 &d1, D2 &d2) |
The congruences reduction operator for detect emptiness or any equalities implied by each of the congruences defining one of the components and the bounds of the other component. It is assumed that the components are already constraints reduced. More... | |
~Congruences_Reduction () | |
Destructor. More... | |
This class provides the reduction method for the Congruences_Product domain.
The reduction classes are used to instantiate the Partially_Reduced_Product domain.
This class uses the minimized congruences defining each of the components. For each of the congruences, it checks if the other component intersects none, one or more than one hyperplane defined by the congruence and adds equalities or emptiness as appropriate; in more detail: Letting the components be d1 and d2, then, for each congruence cg representing d1:
Definition at line 199 of file Partially_Reduced_Product_defs.hh.
|
inline |
Default constructor.
Definition at line 791 of file Partially_Reduced_Product_inlines.hh.
|
inline |
void Parma_Polyhedra_Library::Congruences_Reduction< D1, D2 >::product_reduce | ( | D1 & | d1, |
D2 & | d2 | ||
) |
The congruences reduction operator for detect emptiness or any equalities implied by each of the congruences defining one of the components and the bounds of the other component. It is assumed that the components are already constraints reduced.
The minimized congruence system defining the domain element d1
is used to check if d2
intersects none, one or more than one of the hyperplanes defined by the congruences: if it intersects none, then product is set empty; if it intersects one, then the equality defining this hyperplane is added to both components; otherwise, the product is unchanged. In each case, the donor domain must provide a congruence system in minimal form.
d1 | A pointset domain element; |
d2 | A pointset domain element; |
Definition at line 634 of file Partially_Reduced_Product_templates.hh.
References Parma_Polyhedra_Library::Congruence_System::begin(), Parma_Polyhedra_Library::Congruence_System::end(), Parma_Polyhedra_Library::Congruence::is_equality(), Parma_Polyhedra_Library::Smash_Reduction< D1, D2 >::product_reduce(), and Parma_Polyhedra_Library::shrink_to_congruence_no_check().
Referenced by Parma_Polyhedra_Library::Shape_Preserving_Reduction< D1, D2 >::product_reduce().