CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In

Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.

| Download

GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it

Views: 418346
#############################################################################
##
#W  other-families-ns.gi
#W                          Manuel Delgado <[email protected]>
#W                          Pedro Garcia-Sanchez <[email protected]>
##
#Y  Copyright 2017-- Centro de Matemática da Universidade do Porto, Portugal and Universidad de Granada, Spain
#############################################################################



#############################################################################
##
#P  IsAcuteNumericalSemigroup(s)
##
##  Checks whether or not the nuemrical semigroup s is acute.
##
#############################################################################
InstallMethod(IsAcuteNumericalSemigroup,
  "Tests wheter the semigroup is acute",
  [IsNumericalSemigroup],1,
  function(s)
    local ds, nds;

    if not(IsNumericalSemigroup(s)) then
      Error("The argument must be a numerical semigroup");
    fi;

    ds:=DesertsOfNumericalSemigroup(s);
    nds:=Length(ds);
    if nds<=1 then
      return true;
    fi;

    return Length(ds[nds])<=Length(ds[nds-1]);
  end);

InstallTrueMethod(IsAcuteNumericalSemigroup, IsIrreducibleNumericalSemigroup);

#############################################################################
##
#P  IsOrdinaryNumericalSemigroup(s)
##
##  Checks whether or not the nuemrical semigroup s is acute.
##
#############################################################################
InstallMethod(IsOrdinaryNumericalSemigroup,
  "Tests wheter the semigroup is ordinary",
  [IsNumericalSemigroup],1,
  function(s)
  local ds, nds;

  if not(IsNumericalSemigroup(s)) then
    Error("The argument must be a numerical semigroup");
  fi;

  if HasMultiplicity(s) and HasConductor(s) then
    return Multiplicity(s)=Conductor(s);
  fi;
  ds:=DesertsOfNumericalSemigroup(s);
  nds:=Length(ds);

  return nds<=1;
end);

InstallTrueMethod(IsAcuteNumericalSemigroup, IsOrdinaryNumericalSemigroup);