# 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( , , ) ?