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
1
<?xml version="1.0" encoding="UTF-8"?>
2
<Section>
3
<Heading>
4
Constructing the set of all numerical semigroups containing a given numerical semigroup
5
</Heading>
6
In order to construct the set of numerical semigroups containing a fixed numerical
7
semigroup <M>S</M>, one first constructs its unitary extensions, that is to say, the
8
sets <M>S\cup\{g\}</M> that are numerical semigroups with <M>g</M> a positive integer.
9
This is achieved by constructing the special gaps of the semigroup, and then adding each
10
of them to the numerical semigroup. Then we repeat the process for each of this new
11
numerical semigroups until we reach <M> {\mathbb N} </M>.
12
13
<P/>
14
These procedures are described in <Cite Key="RGGJ03"></Cite>.
15
16
17
18
<ManSection>
19
<Func Arg="s" Name="OverSemigroupsNumericalSemigroup"></Func>
20
<Description>
21
<A>s</A> is a numerical semigroup. The output is the set of numerical semigroups
22
containing it.
23
<Example><![CDATA[
24
gap> OverSemigroupsNumericalSemigroup(NumericalSemigroup(3,5,7));
25
[ <The numerical semigroup N>, <Numerical semigroup with 2 generators>,
26
<Numerical semigroup with 3 generators>,
27
<Numerical semigroup with 3 generators> ]
28
gap> List(last,s->MinimalGenerators(s));
29
[ [ 1 ], [ 2, 3 ], [ 3 .. 5 ], [ 3, 5, 7 ] ]
30
]]></Example>
31
</Description>
32
</ManSection>
33
34
</Section>
35
36
<Section>
37
<Heading> Constructing the set of numerical semigroup with given Frobenius number</Heading>
38
<ManSection>
39
<Func Arg="f" Name="NumericalSemigroupsWithFrobeniusNumber"></Func>
40
<Description>
41
<A>f</A> is an non zero integer greater than or equal to -1. The output is the
42
set of numerical semigroups with Frobenius number <A>f</A>.
43
The algorithm implemented is given in <Cite Key="RGGJ04"/>.
44
<Example><![CDATA[
45
gap> Length(NumericalSemigroupsWithFrobeniusNumber(15));
46
200
47
]]></Example>
48
</Description>
49
</ManSection>
50
51
</Section>
52
53
<Section>
54
<Heading>
55
Constructing the set of numerical semigroups with genus g, that is, numerical
56
semigroups with exactly g gaps
57
</Heading>
58
Given a numerical semigroup of genus g, removing minimal generators, one
59
obtains numerical semigroups of genus g+1. In order to avoid repetitions,
60
we only remove minimal generators greater than the Frobenius number of
61
the numerical semigroup (this is accomplished with the local function sons).
62
63
<P/>
64
These procedures are described in <Cite Key="RGGB03"></Cite> and <Cite Key="B-A08"></Cite>.
65
66
67
68
<ManSection>
69
<Func Arg="g" Name="NumericalSemigroupsWithGenus"></Func>
70
<Description>
71
<A>g</A> is a nonnegative integer. The output is the set of numerical semigroups
72
with genus <A>g</A>.
73
<Example><![CDATA[
74
gap> NumericalSemigroupsWithGenus(5);
75
[ <Numerical semigroup with 6 generators>,
76
<Numerical semigroup with 5 generators>,
77
<Numerical semigroup with 5 generators>,
78
<Numerical semigroup with 5 generators>,
79
<Numerical semigroup with 5 generators>,
80
<Numerical semigroup with 4 generators>,
81
<Numerical semigroup with 4 generators>,
82
<Numerical semigroup with 4 generators>,
83
<Numerical semigroup with 4 generators>,
84
<Numerical semigroup with 3 generators>,
85
<Numerical semigroup with 3 generators>,
86
<Numerical semigroup with 2 generators> ]
87
gap> List(last,MinimalGenerators);
88
[ [ 6 .. 11 ], [ 5, 7, 8, 9, 11 ], [ 5, 6, 8, 9 ], [ 5, 6, 7, 9 ],
89
[ 5, 6, 7, 8 ], [ 4, 6, 7 ], [ 4, 7, 9, 10 ], [ 4, 6, 9, 11 ],
90
[ 4, 5, 11 ], [ 3, 8, 10 ], [ 3, 7, 11 ], [ 2, 11 ] ]
91
]]></Example>
92
</Description>
93
</ManSection>
94
95
</Section>
96
<Section>
97
<Heading>
98
Constructing the set of numerical semigroups with a given set of pseudo-Frobenius numbers
99
</Heading>
100
Refer to <Ref Func="PseudoFrobeniusOfNumericalSemigroup" />.
101
102
<P/>
103
These procedures are described in <Cite Key="DGSRP15"></Cite>.
104
<ManSection>
105
<Func Arg="PF" Name="ForcedIntegersForPseudoFrobenius"></Func>
106
<Description>
107
<A>PF</A> is a list of positive integers (given as a list or individual elements). The output is:
108
<List><Item>
109
in case there exists a numerical semigroup <M>S</M> such that <M>PF(S)=PF</M>:
110
<List><Item>
111
a list <M>[forced\_gaps,forced\_elts]</M> such that:
112
<List><Item>
113
<M>forced\_gaps</M> is contained in <M>{\mathbb N} - S</M> for any numerical semigroup S such that <M>PF(S)=\{g\_1,\ldots,g\_n\}</M>
114
</Item><Item>
115
forced_elts is contained in <M>S</M> for any numerical semigroup <M>S</M> such that <M>PF(S)=\{g\_1,\ldots,g\_n\}</M>
116
</Item></List>
117
</Item></List>
118
</Item><Item>
119
"fail" in case it is found some condition that fails.
120
</Item></List>
121
<Example><![CDATA[
122
gap> pf := [ 58, 64, 75 ];
123
[ 58, 64, 75 ]
124
gap> ForcedIntegersForPseudoFrobenius(pf);
125
[ [ 1, 2, 3, 4, 5, 6, 7, 8, 11, 15, 16, 17, 25, 29, 32, 58, 64, 75 ],
126
[ 0, 59, 60, 67, 68, 69, 70, 71, 72, 73, 74, 76 ] ]
127
]]></Example>
128
</Description>
129
</ManSection>
130
<ManSection>
131
<Func Arg="fg,fe,PF" Name="SimpleForcedIntegersForPseudoFrobenius"></Func>
132
<Description>
133
Is just a quicker version of <Ref Func="ForcedIntegersForPseudoFrobenius"/>
134
<P/>
135
<A>fg</A> is a list of integers that we require to be gaps of the semigroup; <A>fe</A> is a list of integers that we require to be elements of the semigroup; <A>PF</A> is a list of positive integers. The output is:
136
<List><Item>
137
in case there exists a numerical semigroup <M>S</M> such that <M>PF(S)=PF</M>:
138
<List><Item>
139
a list <M>[forced\_gaps,forced\_elts]</M> such that:
140
<List><Item>
141
<M>forced\_gaps</M> is contained in <M>{\mathbb N} - S</M> for any numerical semigroup S such that <M>PF(S)=\{g\_1,\ldots,g\_n\}</M>
142
</Item><Item>
143
forced_elts is contained in <M>S</M> for any numerical semigroup <M>S</M> such that <M>PF(S)=\{g\_1,\ldots,g\_n\}</M>
144
</Item></List>
145
</Item></List>
146
</Item><Item>
147
"fail" in case it is found some condition that fails.
148
</Item></List>
149
<Example><![CDATA[
150
gap> pf := [ 15, 20, 27, 35 ];;
151
gap> fint := ForcedIntegersForPseudoFrobenius(pf);
152
[ [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 15, 16, 20, 27, 35 ],
153
[ 0, 19, 23, 25, 26, 28, 29, 30, 31, 32, 33, 34, 36 ] ]
154
gap> free := Difference([1..Maximum(pf)],Union(fint));
155
[ 11, 13, 14, 17, 18, 21, 22, 24 ]
156
gap> SimpleForcedIntegersForPseudoFrobenius(fint[1],Union(fint[2],[free[1]]),pf);
157
[ [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 15, 16, 20, 24, 27, 35 ],
158
[ 0, 11, 19, 22, 23, 25, 26, 28, 29, 30, 31, 32, 33, 34, 36 ] ]
159
]]></Example>
160
</Description>
161
</ManSection>
162
163
<ManSection>
164
<Func Arg="g" Name="NumericalSemigroupsWithPseudoFrobeniusNumbers"></Func>
165
<Description>
166
<A>PF</A> is a list of positive integers (given as a list or individual elements). The output is: a list of numerical semigroups S such that PF(S)=PF.
167
When Length(PF)=1, it makes use of the function <Ref Func="NumericalSemigroupsWithFrobeniusNumber"/>
168
<P/>
169
<Example><![CDATA[
170
gap> pf := [ 58, 64, 75 ];
171
[ 58, 64, 75 ]
172
gap> Length(NumericalSemigroupsWithPseudoFrobeniusNumbers(pf));
173
561
174
gap> pf := [11,19,22];;
175
gap> NumericalSemigroupsWithPseudoFrobeniusNumbers(pf);
176
[ <Numerical semigroup>, <Numerical semigroup>, <Numerical semigroup>,
177
<Numerical semigroup>, <Numerical semigroup> ]
178
gap> List(last,MinimalGenerators);
179
[ [ 7, 9, 17, 20 ], [ 7, 10, 13, 16, 18 ], [ 9, 12, 14, 15, 16, 17, 20 ],
180
[ 10, 13, 14, 15, 16, 17, 18, 21 ],
181
[ 12, 13, 14, 15, 16, 17, 18, 20, 21, 23 ] ]
182
]]></Example>
183
</Description>
184
</ManSection>
185
186
<ManSection>
187
<Func Arg="g" Name="ANumericalSemigroupWithPseudoFrobeniusNumbers"></Func>
188
<Description>
189
<A>PF</A> is a list of positive integers (given as a list or individual elements). Alternatively, a record with fields "pseudo_frobenius" and "max_attempts" option
190
The output is: A numerical semigroup S such that PF(S)=PF. Returns fail if it concludes that it exists and suggests to use NumericalSemigroupsWithPseudoFrobeniusNumbers if it is not able to conclude...
191
<P/>
192
It makes use of the function <Ref Func="AnIrreducibleNumericalSemigroupWithFrobeniusNumber"/>, when Length(PF)=1 or Length(PF)=2 and 2*PF[1] = PF[2].
193
<P/>
194
<Example><![CDATA[
195
gap> pf := [ 83, 169, 173, 214, 259 ];;
196
gap> ANumericalSemigroupWithPseudoFrobeniusNumbers(pf);
197
<Numerical semigroup>
198
gap> gen := MinimalGeneratingSystem(last);
199
[ 38, 57, 64, 72, 79, 98, 99, 106, 118, 120, 124, 132, 134, 146, 147, 154,
200
165, 168, 179 ]
201
gap> ns := NumericalSemigroup(gen);
202
<Numerical semigroup with 19 generators>
203
gap> PseudoFrobeniusOfNumericalSemigroup(ns);
204
[ 83, 169, 173, 214, 259 ]
205
]]></Example>
206
</Description>
207
</ManSection>
208
</Section>
209
210