ordered_semigroup_concept.h

Back to Algebra

pastel/sys/algebra/

// Description: Ordered group concept
// Documentation: algebra.txt

#ifndef PASTELSYS_ORDERED_SEMIGROUP_CONCEPT_H
#define PASTELSYS_ORDERED_SEMIGROUP_CONCEPT_H

#include "pastel/sys/algebra/semigroup_concept.h"
#include "pastel/sys/algebra/ordered_element_concept.h"

namespace Pastel
{

    //! An ordered additive semi-group.
    /*! 
   An ordered additive semi-group is
   a semi-group (X, +, 0) which is also
   an ordered set such that
       
           x <= y ==> c + x <= c + y,
       
   for all c, x, y in X.
   */
    template <typename T>
    concept Ordered_Additive_SemiGroup_Concept_ =
        Additive_SemiGroup_Concept<T> && 
        Ordered_Element_Concept<T>;

    template <typename T>
    concept Ordered_Additive_SemiGroup_Concept =
        Ordered_Additive_SemiGroup_Concept_<RemoveCvRef<T>>;

}

#endif