Canonical coset:

odd coset setup

CirclePointIndex is just a wrapper of usize, which represent actually the order of the coset generator.

when creating a new coset, we need a generator and shiftoffset, the shiftoffset mostly be the generator of the subgroup of one log size bigger

so here, CirclePointIndex::subgroup_gen is a domain of size one log bigger. it shift the generator of subgroup of log_size.

Talking about the structure of the coset

use group of 8 as example, the initial point is shifted by the group generator of size 16 group

\([w^0,w^1,w^2,w^3,w^4,w^5,w^6,w^7,w^8,\)

\(w^9,w^{10},w^{11},w^{12},w^{13},w^{14},w^{15}]\)

us \(w\) to shift the group that is created by \(w^2\)

group that is created by \([w^0, w^2,w^4,w^6,w^8,w^{10},w^{12},w^{14}]\)

then shift:

\([w^1,w^3,w^5,w^7,w^9,w^{11},w^{13},w^{15}]\)

Initial_index is the shifted generator

Now again look at what all these parameters means:

initial_index ——–> is the shiftoffset

initial ————-> the actual point

step_size ————–>non shifted group generator Index

step —————-> non shifted group generator point

log_size ——–> the size of the shifted set.