Resolve/C++ Catalog
AT/General/Are_Equivalent.h
Copyright © 2010, Reusable Software Research Group, The Ohio State University

//  /*-------------------------------------------------------------------*\
//  |   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