# Parma_Polyhedra_Library::Constraints_Reduction< D1, D2 > Class Template Reference
[C++ Language Interface]

This class provides the reduction method for the Constraints_Product domain. More...

`#include <ppl.hh>`

List of all members.

## Public Member Functions

| Constraints_Reduction ()
| Default constructor.
void | product_reduce (D1 &d1, D2 &d2)
| The constraints reduction operator for sharing constraints between the domains.
| ~Constraints_Reduction ()
| Destructor.

## Detailed Description

### template<typename D1, typename D2>
class Parma_Polyhedra_Library::Constraints_Reduction< D1, D2 >

This class provides the reduction method for the Constraints_Product domain.

The reduction classes are used to instantiate the Partially_Reduced_Product domain. This class adds the constraints defining each of the component domains to the other component.

## Member Function Documentation

template<typename D1 , typename D2 >

void Parma_Polyhedra_Library::Constraints_Reduction< D1, D2 >::product_reduce | ( | D1 & | d1,
|  | D2 & | d2 |
| ) |  |  | `[inline]`

The constraints reduction operator for sharing constraints between the domains.

The minimized constraint system defining the domain element `d1` is added to `d2` and the minimized constraint system defining `d2` is added to `d1`. In each case, the donor domain must provide a constraint system in minimal form; this must define a polyhedron in which the donor element is contained. The recipient domain selects a subset of these constraints that it can add to the recipient element. For example: if the domain `D1` is the Grid domain and `D2` the NNC Polyhedron domain, then only the equality constraints are copied from `d1` to `d2` and from `d2` to `d1`.

Parameters:

  | d1 | A pointset domain element;
  | d2 | A pointset domain element;

The documentation for this class was generated from the following file:

- ppl.hh