Point Counting in Reed-Solomon Codes/Lattices

Point Counting

To count vectors in the intersections of cosets of the "Construction A" lattice from the specified Reed-Solomon code and the specified body.

Code

Field: (prime(s) in the range)

Dual dimension:

Evaluation set (and its order):
g is the "smallest" generator of F^*

Body

Radius (in ℓ1): (if constant: )

Center:

Restrictions:
`balanced` is ignored for `binary`

Optimization

Cosets/syndromes to count: (with syndrome starting from degree )

Counting method:
`split in q` method is exact and gives same results as `direct`
`split in h` method takes the positive h/2-body self-convolved as the (balanced) h-body; hence it requires h to be even, only counts balanced cosets, and introduces overcounting (strictly) inside the h-sphere even when a sphere body is specified

Embedding hypercube in coset

To count the minimum sizes of intersections of cosets and body when fixing (the last) several coordinates to be binary; the minimum is taken over all binary choices. If the minimum size is at least 1 (i.e., for every binary choice, the intersection of coset and body is nonempty), then it means a hypercube can be trivially embedded in the coset.
by default the evaluation set is ordered as (0,1,…,q-1), so the last several coordinates corresponds to the "largest" field elements


0 has no effect

Fourier Analysis

To compute the kernel function (at origin) by summing Fourier series.

Field: same q as above

Kernel:
base function is the indicator function over columns in the parity-check matrix of the Reed-Solomon code with the same k as above
number of (function copies in) self-convolution is the same h as above
`balanced` means half of the copies are instead over minus columns

Experiments


`max`, `max2`, `min`, `mean`, `stddev`: statistics of counting over cosets ("max2" is second max, and max2/min is unset if same as max/max2)
`syndromes*`: cosets/syndromes achieving max/max2/min
`samplePoints*`: sample vectors in one (usually the first) coset achieving max/max2/min
for embedding hypercube: `samplePoints*` only includes one sample vector for each binary choice; an extra property `ranges` records the maximum counting besides the minimum for all cosets (similarly, max is unset if same as min); an extra property `samplePointsMaxMin` records the sample vectors for the binary choices achieving the minimum counting


`max`, `max2`, `min`, `mean`, `stddev`: statistics of sub-sums grouped by the highest dual variable (the dual variable corresponding to the highest-degree syndrome), thus over its q values
`sum`: the entire sum
`highestDualVars*`: values of the highest dual variable achieving max/max2/min

Tools

Common parameters:

Syndrome( , ) ?

Affine( , , ) ?

AffineAll( ) ?

SyndromeAffineTransform( , , ) ?