# 4D Moser brute force search

The brute force search program requires first building a preliminary lookup table, and then a refined lookup table, to determine the Pareto-optimal statistics for all forbidden Level 2 sets. Details of the lookup table construction are here.

The basic idea is to run over pairs of Level 1 slices and Level 3 slices, which are 3D Moser sets. For each such pair, compute the forbidden Level 2 set, then use the lookup table to find the optimal statistics for that pair, add that to a global table of feasible (a,b,c,d,e) statistics for 4D Moser sets, and iterate. However, the total number of such pairs is [math]3813884 \times 3813884 \sim 1.4 \times 10^{13}[/math], which is computationally infeasible.

However, one can use symmetries to cut this number down. Look at the "a" corners of the Level 1 and Level 3 sets; these are two 8-bit strings (which we call the "a-signatures" of the Level1 and Level3 sets), so there are [math]2^{16}[/math] possible choices for these. Actually we can eliminate those choices for which a=1 and a=2, because if (0,b,c,d,e) is a feasible statistic then (1,b,c,d,e) and (2,b,c,d,e) is feasible also (just pick a "b", "c", "d", or "e" point which is not in the set, and then pick a pair of "a" points with that midpoint). In fact (3,b,c,d,e) is also feasible, see Lemma below.

For the remaining configurations, one exploits the symmetry group of [math][3]^4[/math], which has order [math]4! \times 2^4 = 384[/math]. There are 391 remaining equivalence classes; for each equivalence class, we pick a representative which minimises the number of Level1 x Level3 pairs. A table of these representatives can be found here. A table of how many Moser sets there are for each a-signature can be found here.

With these reductions, the number of pairs to check drops to 62 billion (or more precisely, 62009590818).

The code to scan the pairs is here. When compiled (say, as scan.exe), the format is

scan x y

which will scan the signature-pair classes from x to y, where [math]0 \leq x \leq y \leq 390[/math], and output the relevant feasible statistics to stdout and to an output file. If instead one types

scan x y count

then this will indicate what percentage of the scan range is covered by x to y.

In the case x=372 and y=390 (which only takes about a minute to run), here is the stdout output and file output (for testing purposes).

**Lemma** Suppose that (0,b,c,d,e) is a feasible statistic for a 4D Moser set. Then (3,b,c,d,e) is also feasible.

**Proof** Let A be a 4D Moser set with statistics (0,b,c,d,e). It suffices to show that we can add three "a" points to A and still have a Moser set, i.e. one can find three "a" points whose three midpoints are omitted by A. We assume for contradiction that this is not possible.

Suppose first that A contains a "d" point, such as 2221. Then A must omit either 2211 or 2231; without loss of generality we may assume that it omits 2211. Similarly we may assume it omits 2121 and 1221. Then we can add 1131, 1311, 3111 to A, a contradiction. Thus we may assume that A contains no "d" points.

Now suppose that A omits a "c" point, such as 2211. Then one can add 3333, 3111, 1311 to A, a contradiction. Thus we may assume that A contains all "c" points, which in particular implies that A omits the "e" point 2222.

Since A contains all the "c" points, it must omit a "b" point, such as 2111. But then 3111, 1111, 3333 can be added to the set, a contradiction.

## Pareto Maxima and Extremal Points

This routine was run on a Linux cluster, taking around two hours. The output files were collated, there were 387 Pareto maxima including the following fifty maxima:

( 0, 16, 24, 0, 0), ( 4, 15, 24, 0, 0), ( 4, 16, 8, 4, 1), ( 4, 16, 23, 0, 0), ( 5, 12, 12, 4, 1), ( 5, 15, 9, 4, 1), ( 5, 15, 12, 3, 1), ( 5, 15, 18, 3, 0), ( 5, 16, 7, 4, 1), ( 5, 16, 10, 3, 1), ( 5, 16, 12, 2, 1), ( 5, 20, 18, 0, 0), ( 6, 8, 12, 8, 0), ( 6, 12, 18, 4, 0), ( 6, 14, 9, 4, 1), ( 6, 14, 9, 7, 0), ( 6, 14, 12, 6, 0), ( 6, 14, 21, 0, 0), ( 6, 15, 7, 4, 1), ( 6, 16, 18, 2, 0), ( 7, 12, 12, 3, 1), ( 7, 14, 6, 4, 1), ( 7, 14, 6, 7, 0), ( 7, 16, 12, 0, 1), ( 7, 23, 6, 3, 0), ( 7, 28, 6, 0, 0), ( 7, 30, 1, 0, 0), ( 8, 8, 0, 8, 0), ( 8, 8, 9, 7, 0), ( 8, 8, 12, 6, 0), ( 8, 9, 9, 4, 1), ( 8, 9, 12, 3, 1), ( 8, 11, 6, 4, 1), ( 8, 12, 12, 1, 1), ( 8, 12, 18, 0, 0), ( 8, 13, 12, 0, 1), ( 8, 14, 0, 7, 0), ( 8, 14, 6, 6, 0), ( 8, 15, 6, 3, 1), ( 8, 16, 4, 3, 1), ( 8, 16, 6, 2, 1), ( 8, 16, 9, 0, 1), ( 8, 16, 16, 0, 0), ( 8, 23, 0, 3, 0), ( 8, 24, 8, 0, 0), ( 8, 28, 3, 0, 0), ( 9, 24, 4, 0, 0), (11, 8, 4, 4, 0), (12, 16, 0, 0, 0), (16, 0, 0, 0, 0).

Note that the first extremal (0,16,24,0,0) should actually be a (3,16,24,0,0), because the (a,b,c,d,e) statistics with a=1,2,3 were ignored by the scan (thanks to the lemma).