I am attempting to write a code in the GAP System that will allow me to construct the two-fold sumset of a set with itself. Essentially, this is just the set of elements that can be written as a sum of two elements of a given set. Explicitly, if S is the set (or list) in question, then its two-fold sumset is the set (or list) S + S.
In the GAP System, I have devised the following code to achieve this construction. I am going to provide a test set for demonstrative purposes, but the user should be able to provide the test set in general.
A := [8, 11, 15, 16, 17, 19, 20, 22, 23, 24, 25,
26, 27, 28, 30, 31, 32, 33, 34, 35, 36, 37];
L := [ ];
for i in A do
for j in A do
Add(L, i + j);
od;
od;
I expect this code to add all possible pairs of elements of A
and collect them in an (initially empty) list L
; however, when I implement the code, the element 22 = 11 + 11 is mysteriously absent from L
!
I admit that I am a novice programmer and perhaps this construction could be implemented in a more efficient manner, but this is the first thing that came to mind. I would appreciate any insight or advice on this matter. I thank everyone in advance for their time and consideration.
AddSet
instead ofAdd
to eliminate duplicates, or at least sort the resulting listL
b+a
after you have already calculateda+b
(you said you want "set (or list) S + S" so it's not exactly clear).