// /*-------------------------------------------------------------------*\
// | Abstract Template : General_Are_Equivalent
// \*-------------------------------------------------------------------*/
#ifndef AT_GENERAL_ARE_EQUIVALENT
#define AT_GENERAL_ARE_EQUIVALENT 1
///------------------------------------------------------------------------
/// Interface -------------------------------------------------------------
///------------------------------------------------------------------------
abstract_template <
concrete_instance class T
>
utility_class General_Are_Equivalent
{
public:
/*!
math definition ARE_EQUIVALENT (
x: T,
y: T
): boolean satisfies restriction
for all x, y, z: T
(ARE_EQUIVALENT(x,x) and
(if ARE_EQUIVALENT(x,y) then ARE_EQUIVALENT(y,x)) and
(if (ARE_EQUIVALENT(x,y) and ARE_EQUIVALENT(y,z))
then ARE_EQUIVALENT(x,z)))
!*/
utility_function Boolean Are_Equivalent (
preserves T& x,
preserves T& y
);
/*!
ensures
Are_Equivalent = ARE_EQUIVALENT (x, y)
!*/
};
//-------------------------------------------------------------------------
#endif // AT_GENERAL_ARE_EQUIVALENT
Last modified: Thu Jan 11 17:05:57 EST 2007