Module Make.Domain

val num_shifts : int
val shifts : 'n Degree_bound.t -> shifts:( log2_size:int -> Impl.Field.Constant.t array ) -> Impl.Field.t Pickles_types.Plonk_types.Shifts.t

Compute the 'shifts' used by the kimchi permutation argument.

These values are selected deterministically-randomly to appear outside of the domain, so that every choice of i and shift results in a distinct value for shift * domain_generator ^ i.

val generator : 'n Degree_bound.t -> domain_generator:( log2_size:int -> Impl.Field.t ) -> Impl.Field.t
type nonrec 'n t = ( Plonk_checks.Domain.t, 'n ) t
val to_domain : shifts:( log2_size:int -> Impl.Field.Constant.t array ) -> domain_generator:( log2_size:int -> Impl.Field.t ) -> 'n t -> Impl.Field.t Plonk_checks.plonk_domain