GAP (NumericalSgps) - Chapter 7: Ideals of numerical semigroups

Goto Chapter: Top 1 2 3 4 5 6 7 8 9 10 11 A B C Bib Ind
[Top of Book] [Contents] [Previous Chapter] [Next Chapter]

[MathJax on]

7 Ideals of numerical semigroups
7.1 Definitions and basic operations
7.1-1 IdealOfNumericalSemigroup
7.1-2 IsIdealOfNumericalSemigroup
7.1-3 MinimalGeneratingSystemOfIdealOfNumericalSemigroup
7.1-4 GeneratorsOfIdealOfNumericalSemigroup
7.1-5 AmbientNumericalSemigroupOfIdeal
7.1-6 SmallElementsOfIdealOfNumericalSemigroup
7.1-7 BelongsToIdealOfNumericalSemigroup
7.1-8 SumIdealsOfNumericalSemigroup
7.1-9 MultipleOfIdealOfNumericalSemigroup
7.1-10 SubtractIdealsOfNumericalSemigroup
7.1-11 DifferenceOfIdealsOfNumericalSemigroup
7.1-12 TranslationOfIdealOfNumericalSemigroup
7.1-13 IntersectionIdealsOfNumericalSemigroup
7.1-14 MaximalIdealOfNumericalSemigroup
7.1-15 CanonicalIdealOfNumericalSemigroup
7.2 Other functions for ideals
7.2-1 HilbertFunctionOfIdealOfNumericalSemigroup
7.2-2 BlowUpIdealOfNumericalSemigroup
7.2-3 ReductionNumberIdealNumericalSemigroup
7.2-4 BlowUpOfNumericalSemigroup
7.2-5 MicroInvariantsOfNumericalSemigroup
7.2-6 IsGradedAssociatedRingNumericalSemigroupCM
7.2-7 IsMonomialNumericalSemigroup
7.2-8 AperyListOfIdealOfNumericalSemigroupWRTElement
7.2-9 AperyTableOfNumericalSemigroup
7.2-10 StarClosureOfIdealOfNumericalSemigroup

### 7 Ideals of numerical semigroups

Let S be a numerical semigroup. A set I of integers is an ideal relative to a numerical semigroup S provided that I+S⊆ I and that there exists d∈ S such that d+I⊆ S.

If {i_1,...,i_k} is a subset of Z, then the set I={i_1,...,i_k}+S=⋃_n=1^k i_n+S is an ideal relative to S, and {i_1,..., i_k} is a system of generators of I. A system of generators M is minimal if no proper subset of M generates the same ideal. Usually, ideals are specified by means of its generators and the ambient numerical semigroup to which they are ideals (for more information see for instance [BDF97]).

#### 7.1 Definitions and basic operations

##### 7.1-1 IdealOfNumericalSemigroup

`‣ IdealOfNumericalSemigroup`( l, S ) | ( function )

S is a numerical semigroup and l a list of integers.

The output is the ideal of S generated by l

There are several shortcuts for this function, as shown in the example.

    gap> IdealOfNumericalSemigroup([3,5],NumericalSemigroup(9,11));
    <Ideal of numerical semigroup>
    gap> [3,5]+NumericalSemigroup(9,11);
    <Ideal of numerical semigroup>
    gap> last=last2;
    true
    gap> 3+NumericalSemigroup(5,9);
    <Ideal of numerical semigroup>

##### 7.1-2 IsIdealOfNumericalSemigroup

`‣ IsIdealOfNumericalSemigroup`( Obj ) | ( function )

Tests if the object Obj is an ideal of a numerical semigroup.

    gap> I:=[1..7]+NumericalSemigroup(7,19);;
    gap> IsIdealOfNumericalSemigroup(I);
    true
    gap> IsIdealOfNumericalSemigroup(2);
    false

##### 7.1-3 MinimalGeneratingSystemOfIdealOfNumericalSemigroup

`‣ MinimalGeneratingSystemOfIdealOfNumericalSemigroup`( I ) | ( function )

`‣ MinimalGeneratingSystem`( I ) | ( function )

I is an ideal of a numerical semigroup.

The output is the minimal system of generators of I.

    gap> I:=[3,5,9]+NumericalSemigroup(2,11);;
    gap> MinimalGeneratingSystemOfIdealOfNumericalSemigroup(I);
    [ 3 ]
    gap> MinimalGeneratingSystem(I);
    [ 3 ]

##### 7.1-4 GeneratorsOfIdealOfNumericalSemigroup

`‣ GeneratorsOfIdealOfNumericalSemigroup`( I ) | ( function )

`‣ GeneratorsOfIdealOfNumericalSemigroupNC`( I ) | ( function )

I is an ideal of a numerical semigroup.

The output of `GeneratorsOfIdealOfNumericalSemigroup` is a system of generators of the ideal. If the minimal system of generators is known, then it is used as output. `GeneratorsOfIdealOfNumericalSemigroupNC` always returns the set of generators stored in I!.generators.

    gap> I:=[3,5,9]+NumericalSemigroup(2,11);;
    gap> GeneratorsOfIdealOfNumericalSemigroup(I);
    [ 3, 5, 9 ]
    gap> MinimalGeneratingSystemOfIdealOfNumericalSemigroup(I);
    [ 3 ]
    gap> GeneratorsOfIdealOfNumericalSemigroup(I);
    [ 3 ]
    gap> GeneratorsOfIdealOfNumericalSemigroupNC(I);
    [ 3, 5, 9 ]

##### 7.1-5 AmbientNumericalSemigroupOfIdeal

`‣ AmbientNumericalSemigroupOfIdeal`( I ) | ( function )

I is an ideal of a numerical semigroup, say S.

The output is S.

    gap> I:=[3,5,9]+NumericalSemigroup(2,11);;
    gap> AmbientNumericalSemigroupOfIdeal(I);
    <Modular numerical semigroup satisfying 11x mod 22 <= x >

##### 7.1-6 SmallElementsOfIdealOfNumericalSemigroup

`‣ SmallElementsOfIdealOfNumericalSemigroup`( I ) | ( function )

`‣ SmallElements`( I ) | ( function )

I is an ideal of a numerical semigroup.

The output is a list with the elements in I that are less than or equal to the greatest integer not belonging to the ideal plus one.

    gap> I:=[3,5,9]+NumericalSemigroup(2,11);;
    gap> SmallElementsOfIdealOfNumericalSemigroup(I);
    [ 3, 5, 7, 9, 11, 13 ]
    gap> SmallElements(I) = SmallElementsOfIdealOfNumericalSemigroup(I);
    true
    gap> J:=[2,11]+NumericalSemigroup(2,11);;
    gap> SmallElementsOfIdealOfNumericalSemigroup(J);
    [ 2, 4, 6, 8, 10 ]

##### 7.1-7 BelongsToIdealOfNumericalSemigroup

`‣ BelongsToIdealOfNumericalSemigroup`( n, I ) | ( function )

I is an ideal of a numerical semigroup, n is an integer.

The output is true if n belongs to I.

n in I can be used for short.

    gap> J:=[2,11]+NumericalSemigroup(2,11);;
    gap> BelongsToIdealOfNumericalSemigroup(9,J);
    false
    gap> 9 in J;
    false
    gap> BelongsToIdealOfNumericalSemigroup(10,J);
    true
    gap> 10 in J;
    true

##### 7.1-8 SumIdealsOfNumericalSemigroup

`‣ SumIdealsOfNumericalSemigroup`( I, J ) | ( function )

I, J are ideals of a numerical semigroup.

The output is the sum of both ideals { i+j | i∈ I, j∈ J}.

I + J is a synonym of this function.

    gap> I:=[3,5,9]+NumericalSemigroup(2,11);;
    gap> J:=[2,11]+NumericalSemigroup(2,11);;
    gap> I+J;
    <Ideal of numerical semigroup>
    gap> MinimalGeneratingSystemOfIdealOfNumericalSemigroup(last);
    [ 5, 14 ]
    gap> SumIdealsOfNumericalSemigroup(I,J);
    <Ideal of numerical semigroup>
    gap> MinimalGeneratingSystemOfIdealOfNumericalSemigroup(last);
    [ 5, 14 ]

##### 7.1-9 MultipleOfIdealOfNumericalSemigroup

`‣ MultipleOfIdealOfNumericalSemigroup`( n, I ) | ( function )

I is an ideal of a numerical semigroup, n is a non negative integer.

The output is the ideal I+⋯+I (n times).

n * I can be used for short.

    gap> I:=[0,1]+NumericalSemigroup(3,5,7);;
    gap> MinimalGeneratingSystemOfIdealOfNumericalSemigroup(2*I);
    [ 0, 1, 2 ]

##### 7.1-10 SubtractIdealsOfNumericalSemigroup

`‣ SubtractIdealsOfNumericalSemigroup`( I, J ) | ( function )

I, J are ideals of a numerical semigroup.

The output is the ideal { z∈ Z | z+J⊆ I}.

I - J is a synonym of this function.

S-J is a synonym of (0+S)-J, if S is the ambient semigroup of I and J. The following example appears in [HS04].

    gap> S:=NumericalSemigroup(14, 15, 20, 21, 25);;
    gap> I:=[0,1]+S;;
    gap> II:=S-I;;
    gap> MinimalGeneratingSystemOfIdealOfNumericalSemigroup(I);
    [ 0, 1 ]
    gap> MinimalGeneratingSystemOfIdealOfNumericalSemigroup(II);
    [ 14, 20 ]
    gap> MinimalGeneratingSystemOfIdealOfNumericalSemigroup(I+II);
    [ 14, 15, 20, 21 ]

##### 7.1-11 DifferenceOfIdealsOfNumericalSemigroup

`‣ DifferenceOfIdealsOfNumericalSemigroup`( I, J ) | ( function )

I, J are ideals of a numerical semigroup. J must be contained in I.

The output is the set I∖ J.

    gap> S:=NumericalSemigroup(14, 15, 20, 21, 25);;
    gap> I:=[0,1]+S;
    <Ideal of numerical semigroup>
    gap> 2*I-2*I;
    <Ideal of numerical semigroup>
    gap> I-I;
    <Ideal of numerical semigroup>
    gap> DifferenceOfIdealsOfNumericalSemigroup(last2,last);
    [ 26, 27, 37, 38 ]

##### 7.1-12 TranslationOfIdealOfNumericalSemigroup

`‣ TranslationOfIdealOfNumericalSemigroup`( k, I ) | ( function )

Given an ideal I of a numerical semigroup S and an integer k returns an ideal of the numerical semigroup S generated by {i_1+k,...,i_n+k} where {i_1,...,i_n} is the system of generators of I.

As a synonym to `TranslationOfIdealOfNumericalSemigroup(k, I)` the expression `k + I` may be used.

    gap> s:=NumericalSemigroup(13,23);;
    gap> l:=List([1..6], _ -> Random([8..34]));
    [ 22, 29, 34, 25, 10, 12 ]
    gap> I:=IdealOfNumericalSemigroup(l, s);;
    gap> It:=TranslationOfIdealOfNumericalSemigroup(7,I);
    <Ideal of numerical semigroup>
    gap> It2:=7+I;
    <Ideal of numerical semigroup>
    gap> It2=It;
    true

##### 7.1-13 IntersectionIdealsOfNumericalSemigroup

`‣ IntersectionIdealsOfNumericalSemigroup`( I, J ) | ( function )

Given two ideals I and J of a numerical semigroup S returns the ideal of the numerical semigroup S which is the intersection of the ideals I and J.

    gap> i:=IdealOfNumericalSemigroup([75,89],s);;
    gap> j:=IdealOfNumericalSemigroup([115,289],s);;
    gap> IntersectionIdealsOfNumericalSemigroup(i,j);
    <Ideal of numerical semigroup>

##### 7.1-14 MaximalIdealOfNumericalSemigroup

`‣ MaximalIdealOfNumericalSemigroup`( S ) | ( function )

Returns the maximal ideal of the numerical semigroup S.

    gap> MaximalIdealOfNumericalSemigroup(NumericalSemigroup(3,7));
    <Ideal of numerical semigroup>

##### 7.1-15 CanonicalIdealOfNumericalSemigroup

`‣ CanonicalIdealOfNumericalSemigroup`( S ) | ( function )

Computes a canonical ideal of S ([BF06]): { x ∈ Z | g-x not ∈ S}.

    gap> s:=NumericalSemigroup(4,6,11);;
    gap> m:=MaximalIdealOfNumericalSemigroup(s);;
    gap> c:=CanonicalIdealOfNumericalSemigroup(s);
    <Ideal of numerical semigroup>
    gap> (m-c)-c=m;
    true
    gap> id:=3+s;
    <Ideal of numerical semigroup>
    gap> (id-c)-c=id;
    true

#### 7.2 Other functions for ideals

##### 7.2-1 HilbertFunctionOfIdealOfNumericalSemigroup

`‣ HilbertFunctionOfIdealOfNumericalSemigroup`( n, I ) | ( function )

I is an ideal of a numerical semigroup, n is a non negative integer. I must be contained in its ambient semigroup.

The output is the cardinality of the set nI∖ (n+1)I.

    gap> I:=[6,9,11]+NumericalSemigroup(6,9,11);;
    gap> List([1..7],n->HilbertFunctionOfIdealOfNumericalSemigroup(n,I));
    [ 3, 5, 6, 6, 6, 6, 6 ]

##### 7.2-2 BlowUpIdealOfNumericalSemigroup

`‣ BlowUpIdealOfNumericalSemigroup`( I ) | ( function )

I is an ideal of a numerical semigroup.

The output is the ideal ⋃_n≥ 0 nI-nI.

    gap> I:=[0,2]+NumericalSemigroup(6,9,11);;
    gap> BlowUpIdealOfNumericalSemigroup(I);;
    gap> SmallElementsOfIdealOfNumericalSemigroup(last);
    [ 0, 2, 4, 6, 8 ]

##### 7.2-3 ReductionNumberIdealNumericalSemigroup

`‣ ReductionNumberIdealNumericalSemigroup`( I ) | ( function )

I is an ideal of a numerical semigroup.

The output is the least integer such that n I + i=(n+1)I, where i=min(I).

    gap> I:=[0,2]+NumericalSemigroup(6,9,11);;
    gap> ReductionNumberIdealNumericalSemigroup(I);
    2

##### 7.2-4 BlowUpOfNumericalSemigroup

`‣ BlowUpOfNumericalSemigroup`( S ) | ( function )

If M is the maximal ideal of the numerical semigroup, then the output is the numerical semigroup ⋃_n≥ 0 nM-nM.

    gap> s:=NumericalSemigroup(30, 35, 42, 47, 148, 153, 157, 169, 181, 193);;
    gap> BlowUpOfNumericalSemigroup(s);
    <Numerical semigroup with 10 generators>
    gap> SmallElementsOfNumericalSemigroup(last);
    [ 0, 5, 10, 12, 15, 17, 20, 22, 24, 25, 27, 29, 30, 32, 34, 35, 36, 37, 39,
      40, 41, 42, 44 ]
    gap> m:=MaximalIdealOfNumericalSemigroup(s);
    <Ideal of numerical semigroup>
    gap> BlowUpIdealOfNumericalSemigroup(m);
    <Ideal of numerical semigroup>
    gap> SmallElementsOfIdealOfNumericalSemigroup(last);
    [ 0, 5, 10, 12, 15, 17, 20, 22, 24, 25, 27, 29, 30, 32, 34, 35, 36, 37, 39,
      40, 41, 42, 44 ]

##### 7.2-5 MicroInvariantsOfNumericalSemigroup

`‣ MicroInvariantsOfNumericalSemigroup`( S ) | ( function )

Returns the microinvariants of the numerical semigroup S defined in [Eli01]. For their computation we have used the formula given in [BF06]. The Ap\'ery set of S and its blow up are involved in this computation.

    gap> s:=NumericalSemigroup(30, 35, 42, 47, 148, 153, 157, 169, 181, 193);;
    gap> bu:=BlowUpOfNumericalSemigroup(s);;
    gap> ap:=AperyListOfNumericalSemigroupWRTElement(s,30);;
    gap> apbu:=AperyListOfNumericalSemigroupWRTElement(bu,30);;
    gap> (ap-apbu)/30;
    [ 0, 4, 4, 3, 2, 1, 3, 4, 4, 3, 2, 3, 1, 4, 4, 3, 3, 1, 4, 4, 4, 3, 2, 4, 2,
      5, 4, 3, 3, 2 ]
    gap> MicroInvariantsOfNumericalSemigroup(s)=last;
    true

##### 7.2-6 IsGradedAssociatedRingNumericalSemigroupCM

`‣ IsGradedAssociatedRingNumericalSemigroupCM`( S ) | ( function )

Returns true if the graded ring associated to K[[S]] is Cohen-Macaulay, and false otherwise. This test is the implementation of the algorithm given in [BF06].

    gap> s:=NumericalSemigroup(30, 35, 42, 47, 148, 153, 157, 169, 181, 193);;
    gap> IsGradedAssociatedRingNumericalSemigroupCM(s);
    false
    gap> MicroInvariantsOfNumericalSemigroup(s);
    [ 0, 4, 4, 3, 2, 1, 3, 4, 4, 3, 2, 3, 1, 4, 4, 3, 3, 1, 4, 4, 4, 3, 2, 4, 2,
      5, 4, 3, 3, 2 ]
    gap> List(AperyListOfNumericalSemigroupWRTElement(s,30),
    > w->MaximumDegreeOfElementWRTNumericalSemigroup (w,s));
    [ 0, 1, 4, 1, 2, 1, 3, 1, 4, 3, 2, 3, 1, 1, 4, 3, 3, 1, 4, 1, 4, 3, 2, 4, 2,
      5, 4, 3, 1, 2 ]
    gap> last=last2;
    false
    gap> s:=NumericalSemigroup(4,6,11);;
    gap> IsGradedAssociatedRingNumericalSemigroupCM(s);
    true
    gap> MicroInvariantsOfNumericalSemigroup(s);
    [ 0, 2, 1, 1 ]
    gap> List(AperyListOfNumericalSemigroupWRTElement(s,4),
    > w->MaximumDegreeOfElementWRTNumericalSemigroup(w,s));
    [ 0, 2, 1, 1 ]

##### 7.2-7 IsMonomialNumericalSemigroup

`‣ IsMonomialNumericalSemigroup`( S ) | ( function )

S is a numerical semigroup.

Tests whether S a monomial numerical semigroup.

Let R a Noetherian ring such that K ⊆ R ⊆ K[[t]], K is a field of characteristic zero, the algebraic closure of R is K[[t]], and the conductor (R : K[[t]]) is not zero. If v : K((t))-> Z is the natural valuation for K((t)), then v(R) is a numerical semigroup.

Let S be a numerical semigroup minimally generated by {n_1,...,n_e}. The semigroup ring associated to S is K[[S]]=K[[t^n_1,...,t^n_e]]. A ring is called a semigroup ring if it is of the form K[[S]], for some numerical semigroup S. We say that S is a monomial numerical semigroup if for any R as above with v(R)=S, R is a semigroup ring. See [Mic02] for details.

    gap> IsMonomialNumericalSemigroup(NumericalSemigroup(4,6,7));
    true
    gap> IsMonomialNumericalSemigroup(NumericalSemigroup(4,6,11));
    false

##### 7.2-8 AperyListOfIdealOfNumericalSemigroupWRTElement

`‣ AperyListOfIdealOfNumericalSemigroupWRTElement`( I, n ) | ( function )

Computes the sets of elements x of I such that x-n not in the ideal I, where n is supposed to be in the ambient semigroup of I. The element in the ith position of the output list (starting in 0) is congruent with i modulo n.

    gap> s:=NumericalSemigroup(10,11,13);;
    gap> i:=[12,14]+s;;
    gap> AperyListOfIdealOfNumericalSemigroupWRTElement(i,10);
    [ 40, 51, 12, 23, 14, 25, 36, 27, 38, 49 ]

##### 7.2-9 AperyTableOfNumericalSemigroup

`‣ AperyTableOfNumericalSemigroup`( s ) | ( function )

Computes the Apéry table associated to the numerical semigroup s as explained in [BJA13], that is, a list containing the Apéry list of s with respect to its multiplicity and the Apéry lists of kM (with M the maximal ideal of s) with respect to the multiplicity of s, for k∈{1,...,r}, where r is the reduction number of M (see ReductionNumberIdealNumericalSemigroup).

    gap> s:=NumericalSemigroup(10,11,13);;
    gap> AperyTableOfNumericalSemigroup(s);
    [ [ 0, 11, 22, 13, 24, 35, 26, 37, 48, 39 ],
      [ 10, 11, 22, 13, 24, 35, 26, 37, 48, 39 ],
      [ 20, 21, 22, 23, 24, 35, 26, 37, 48, 39 ],
      [ 30, 31, 32, 33, 34, 35, 36, 37, 48, 39 ],
      [ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49 ] ]

##### 7.2-10 StarClosureOfIdealOfNumericalSemigroup

`‣ StarClosureOfIdealOfNumericalSemigroup`( i, is ) | ( function )

i is an ideal and is is a set of ideals (all from the same numerical semigroups). The output is i^*_is, where *_is is the star operation generated by is: (s-(s-i))⋂_k∈ is (k-(k-i)). The implementation uses Section 3 of [Spi14].

    gap> s:=NumericalSemigroup(3,5,7);;
    gap> StarClosureOfIdealOfNumericalSemigroup([0,2]+s,[[0,4]+s]);;
    gap> MinimalGeneratingSystemOfIdealOfNumericalSemigroup(last);
    [ 0, 2, 4 ]

[Top of Book] [Contents] [Previous Chapter] [Next Chapter]
Goto Chapter: Top 1 2 3 4 5 6 7 8 9 10 11 A B C Bib Ind

generated by GAPDoc2HTML