Factorization homomorphism
Definition
Let \(S\) be a numerical semigroup with minimal set of generators \(\{n_1, n_2, \ldots, n_p\}\). It is defined the factorization homomorphism of \(S\) as the application \(\phi\) such that
\[ \phi: \mathbb{N}^p \to S, ~~~ \phi(a_1, a_2, \ldots, a_p) = \sum_{i = 1}^p a_i n_i. \]
It can be proven that \(\phi\) is a monoid epimorphism, and consequently \(S\) is isomorphic to \(\mathbb{N}^p / \ker(\phi)\) by the first isomorphism theorem, where \(\ker(\phi)\) is the kernel congruence of \(\phi\),
\[ \ker(\phi) = \{(a, b) \in \mathbb{N}^p \times \mathbb{N}^p ~ | ~ \phi(a) = \phi(b)\}. \]
Examples
\(\circ\) Let \(S = \langle 10, 17, 21 \rangle\). The factorization homomorphism of \(S\) is defined as
\[ \phi: \mathbb{N}^3 \to S ~ ; ~ (a_1, a_2, a_3) \to 10a_1 + 17a_2 + 21a_3. \]
Minimal generators only have a single preimage by definition of minimal set of generators, which is \(n_i = \phi(e^i)\) with \(e_i^i = 1\) and \(e_i^j = 0\) for all \(j \ne i\). Furthermore, there are always elements with more than one preimage. In this case, for example \(68 = 10 \cdot 0 + 17 \cdot 4 + 21 \cdot 0 = \phi(0, 4, 0)\) and \(68 = 10 \cdot 3 + 17 \cdot 1 + 21 \cdot 1 = \phi(3,1,1)\).
Examples with GAP
Nowadays, there are no functions in package NumericalSgps related to factorization homomorphism of a numerical semigroup. However, given a numerical semigroup \(S\) and a list of integers \(I\), the following function returns the image by \(\phi_S\) of the tuple defined by the list \(I\) .
gap> ImageHomomorfismOfNumericalSemigroup := function(S, I)
> local Min_gen, p, j, sum, a;
> if not IsNumericalSemigroup(S) then
> Error("First argument must be a Numerical Semigroup");
> fi;
> if not IsList(I) or I = [] then
> Error("Second argument must be a non-empty list of positive integers");
> fi;
> Min_gen := MinimalGenerators(S);
> p := Length(Min_gen);
> if not p = Length(I) then
> Error("Length of minimal system of generators and length of second argument are different");
> fi;
> sum := 0;
> j := 1;
> for a in I do
> if not IsInt(a) then
> Error("Second argument must be a list of positive integers");
> fi;
> if a < 0 then
> Error("Second argument must be a list of positive integers");
> fi;
> sum := sum + a * Min_gen[j];
> j := j + 1;
> od;
> return sum;
> end;
function( S, Is ) ... end
\(\diamond\) Let \(S = \langle 14, 30, 71, 73 \rangle\), in GAP:
gap> S := NumericalSemigroup(14, 30, 71, 73);
<Numerical semigroup with 4 generators>
The image of \((0, 1, 2, 1)\) by \(\phi_S\) is as follows.
gap> ImageHomomorfismOfNumericalSemigroup(S, [0, 1, 2, 1]);
245
Then, \(0 \cdot 14 + 1 \cdot 30 + 2 \cdot 71 + 1 \cdot 73 = 245\).
References
https://gap-packages.github.io/
numericalsgps
.