#############################################################################
##
#W  pcpelms.gd                   Polycyc                         Bettina Eick
##

#############################################################################
##
## Introduce the category of pcp elements
##
DeclareCategory( "IsPcpElement", IsMultiplicativeElementWithInverse );
DeclareCategoryFamily( "IsPcpElement" );
DeclareCategoryCollections( "IsPcpElement" );

#############################################################################
##
## Introduce the representation of pcp elements
##
DeclareRepresentation( "IsPcpElementRep", 
                        IsComponentObjectRep,
                        ["collector", 
                         "exponents", 
                         "depth",
                         "leading",
                         "name" ] );

#############################################################################
##
## Some functions
##
DeclareGlobalFunction( "PcpElementConstruction" );
DeclareGlobalFunction( "PcpElementByExponentsNC" );
DeclareGlobalFunction( "PcpElementByExponents" );
DeclareGlobalFunction( "PcpElementByGenExpListNC" );
DeclareGlobalFunction( "PcpElementByGenExpList" );

#############################################################################
##
## Some attributes
##
DeclareAttribute( "RelativeOrderPcp", IsPcpElement );
DeclareAttribute( "RelativeIndex", IsPcpElement );
DeclareAttribute( "FactorOrder",   IsPcpElement );
 
