
/*!
\ingroup PkgAlgebraicKernelDConceptsBi
\cgalConcept

Computes an isolating interval for the second coordinate of an `AlgebraicKernel_d_2::Algebraic_real_2` 
with respect to the real roots of a univariate polynomial. 

\cgalRefines `AdaptableBinaryFunction` 

\sa `AlgebraicKernel_d_2::IsolateX_2`
\sa `AlgebraicKernel_d_2::ComputePolynomialX_2`
\sa `AlgebraicKernel_d_2::ComputePolynomialY_2`

*/

class AlgebraicKernel_d_2::IsolateY_2 {
public:

/// \name Types 
/// @{

/*!

*/ 
typedef std::pair<AlgebraicKernel_d_2::Bound,AlgebraicKernel_d_2::Bound> result_type; 

/*!

*/ 
typedef AlgebraicKernel_d_2::Algebraic_real_2 first_argument_type; 

/*!

*/ 
typedef AlgebraicKernel_d_2::Polynomial_1 second_argument_type; 

/// @} 

/// \name Operations 
/// @{

/*!
Computes an open isolating interval \f$ I=(l,u)\f$ for the second coordinate \f$ y\f$ of \f$ a\f$ with respect to the real roots of \f$ p\f$. 
It is not required that \f$ x\f$ is a root of \f$ p\f$. 
\post \f$ y \in I\f$. 
\post \f$ p(\alpha) \neq0 | \forall\alpha\in\overline{I}\backslash y\f$. 

*/ 
result_type operator()(first_argument_type a, second_argument_type p); 

/// @}

}; /* end AlgebraicKernel_d_2::IsolateY_2 */

