#############################################################################
##
#W  basics.gd               Manuel Delgado <mdelgado@fc.up.pt>
#W                          Pedro Garcia-Sanchez <pedro@ugr.es>
#W                          Jose Morais <jjoao@netcabo.pt>
##
##
#H  @(#)$Id: basics.gd,v 0.92 $
##
#Y  Copyright 2005 by Manuel Delgado, 
#Y  Pedro Garcia-Sanchez and Jose Joao Morais
#Y  We adopt the copyright regulations of GAP as detailed in the 
#Y  copyright notice in the GAP manual.
##
#############################################################################

#############################################################################
##
#A  MultiplicityOfNumericalSemigroup(S)
## 
##  Returns the multiplicity of the numerical
##  semigroup S.
##
#############################################################################
DeclareAttribute( "MultiplicityOfNumericalSemigroup", IsNumericalSemigroup);


#############################################################################
##
#A  FrobeniusNumberOfNumericalSemigroup(S)
## 
##  Returns the Frobenius number of the numerical
##  semigroup S.
##
#############################################################################
DeclareAttribute( "FrobeniusNumberOfNumericalSemigroup", IsNumericalSemigroup);

DeclareSynonymAttr( "FrobeniusNumber", FrobeniusNumberOfNumericalSemigroup);


#############################################################################
##
#F  GeneratorsOfNumericalSemigroup(S)
##
##  Returns a set of generators of the numerical
##  semigroup S. If a minimal generating system has already been computed, this
##  is the set returned.
##
#############################################################################
DeclareGlobalFunction( "GeneratorsOfNumericalSemigroup");


#############################################################################
##
#F  GeneratorsOfNumericalSemigroupNC(S)
##
##  Returns a set of generators of the numerical
##  semigroup S.
##
#############################################################################
DeclareGlobalFunction( "GeneratorsOfNumericalSemigroupNC");


#############################################################################
##
#A  MinimalGeneratingSystemOfNumericalSemigroup(S)
## 
##  Returns the minimal generating system of the numerical
##  semigroup S.
##
#############################################################################
DeclareAttribute( "MinimalGeneratingSystemOfNumericalSemigroup", IsNumericalSemigroup);


#############################################################################
##
#A  FundamentalGapsOfNumericalSemigroup(S)
## 
##  Returns the fundamental gaps of the numerical
##  semigroup S.
##
#############################################################################
DeclareAttribute( "FundamentalGapsOfNumericalSemigroup",IsNumericalSemigroup);


#############################################################################
##
#A  PseudoFrobeniusOfNumericalSemigroup(S)
## 
##  Returns the pseudo Frobenius number of the numerical
##  semigroup S.
##
#############################################################################
DeclareAttribute( "PseudoFrobeniusOfNumericalSemigroup",IsNumericalSemigroup);


#############################################################################
##
#A  SpecialGapsOfNumericalSemigroup(S)
## 
##  Returns the special gaps of the numerical
##  semigroup S.
##
#############################################################################
DeclareAttribute( "SpecialGapsOfNumericalSemigroup",IsNumericalSemigroup);


#############################################################################
##
#O  BelongsToNumericalSemigroup(n,S)
## 
##  Tests if the integer n belongs to the numerical
##  semigroup S.
##
#############################################################################
DeclareOperation( "BelongsToNumericalSemigroup", [IsInt, IsNumericalSemigroup]);

#############################################################################
##
#O  AperyListOfNumericalSemigroupWRTElement(S,n)
## 
##  Returns the Apery list of the numerical
##  semigroup S with respect to n.
##
#############################################################################
DeclareOperation( "AperyListOfNumericalSemigroupWRTElement",[IsNumericalSemigroup,IsInt]);


#############################################################################
##
#F  DrawAperyListOfNumericalSemigroup(ap)
## 
##  <ap> is the Apéry set of a numerical semigroup.
##  This function draws a graph whose vertices are
##  the elements of <ap> and the arrow u -> v exists
##  iff v - u is in <ap>.
##
#############################################################################
DeclareGlobalFunction("DrawAperyListOfNumericalSemigroup");



#############################################################################
##
#F  AperyListOfNumericalSemigroupAsGraph(ap)
## 
##  <ap> is the Apéry set of a numerical semigroup.
##  This function returns the adjacency list of the graph 
##  whose vertices are
##  the elements of <ap> and the arrow u -> v exists
##  iff v - u is in <ap>.
##  The 0 is ignored.
##
#############################################################################
DeclareGlobalFunction("AperyListOfNumericalSemigroupAsGraph");

