Numerical semigroup admitting a pattern
Definition
Let \(S\) be a numerical semigroup and let \(a_1 x_1 + \cdots a_n x_n\) be a pattern \(P\). It is said that \(S\) admits the pattern \(P\) if for every \(s_1, \ldots, s_n \in S\) with \(s_1 \ge s_2 \ge \ldots \ge s_n\), the element \(a_1s_1 + \cdots + a_n s_n\) belongs to \(S\). It is denoted by \(\mathcal{S}(P)\) the set of all numerical semigroups admitting the pattern \(P\).
Examples
\(\circ\) The set \(\mathcal{P}(x_1 + x_2 - x_3)\) is the set of Arf numerical semigroups.
\(\circ\) Let \(a_1x_1 + \cdots + a_nx_n\) be a pattern \(P\). Let us prove that \(\mathbb{N} \in \mathcal{S}(P)\) if, and only if, \(\mathcal{S}(P)\) is non-empty. The sufficient condition is obvious. On the other hand, if the set is non-empty, there exists \(S \in \mathcal{S}(P)\) such that for every \(s_1, \ldots, s_n \in S\) with \(s_1 \ge s_2 \ge \ldots \ge s_n\), the element \(a_1s_1 + \cdots + a_n s_n\) belongs to \(S\). If we take \(s = s_1 = s_2 = \cdots = s_n \in S^*\), since \(a_1 s_1 + \cdots + a_n s_n \in S\), it must be \(\sum_{i = 1}^n a_i \ge 0\). Then, given \(m_1 \ge m_2 \ge \cdots \ge m_n\) non-negative integers, it can be proven by induction that
\[ a_1 m_1 + \cdots + a_n m_n \ge a_1 m_n + \cdots + a_nm_n = \left( \sum_{i = 0}^n a_i \right) m_n \ge 0 \]
Therefore, \(\mathbb{N} \in \mathcal{S}(P)\).
Examples with GAP
The following example is made with the package NumericalSgps in GAP.
\(\diamond\) Let \(S = \langle 4, 7, 10 \rangle\), in GAP:
gap> S := NumericalSemigroup(4, 7, 10);
<Numerical semigroup with 3 generators>
Given a strongly admissible pattern \(p(x_1, \ldots, x_n) = a_1x_1 + \cdots + a_nx_n\) and a numerical semigroup \(S\), the function ApplyPatternToNumericalSemigroup
returns a list \([d, p(S)/d]\): \(d\) is the great common divisor of \(a_1, \ldots, a_n\) and \(p(S)/d = \{s'/d, ~ | ~ s' \in p(S)\}\), where \(p(S) = \{p(s_1, \ldots, s_n) ~ | ~ s_1 \ge \cdots \ge s_n, ~~ s_i \in S\}\).
gap> p := [1, 3, -1];
1, 3, -1 ]
[ gap> L := ApplyPatternToNumericalSemigroup(p, S);
1, <Ideal of numerical semigroup> ]
[ gap> pS := L[2];
<Ideal of numerical semigroup>
gap> SmallElements(pS);
0, 4, 7, 8, 10, 11, 12, 14 ] [
Then, \(p(S) = \{ 0, 4, 7, 8, 10, 11, 12, 14, \rightarrow\}\). Moreover, if \(p\) is a strongly admissible pattern and \(S, T\) are numerical semigroups, the function IsAdmittedPatternByNumericalSemigroup
returns true if \(p(S) \subseteq T\). In particular, if \(T = S\), this function returns true if \(S\) admits the pattern \(p\).
gap> IsAdmittedPatternByNumericalSemigroup(p, S, S);
true
References
https://gap-packages.github.io/
numericalsgps
.