lol-0.3.0.0: A library for lattice cryptography.

Safe HaskellNone
LanguageHaskell2010

Crypto.Lol.Types.FiniteField

Description

Basic (unoptimized) finite field arithmetic.

Synopsis

Documentation

data GF fp d Source

A finite field of given degree over F_p.

Instances

GFCtx k fp d => CRTrans Maybe (GF k fp d) Source 
(Eq fp, C fp) => Eq (GF k fp d) Source 
Show fp => Show (GF k fp d) Source 
NFData fp => NFData (GF k fp d) Source 
GFCtx k fp d => C (GF k fp d) Source 
GFCtx k fp d => C (GF k fp d) Source 
C fp => C (GF k fp d) Source 
C fp => C (GF k fp d) Source 
GFCtx k fp d => Enumerable (GF k fp d) Source 
(Additive fp, Ring (GF k fp d), Reflects k d Int) => C (GF k fp d) (TensorCoeffs fp) Source 
(GFCtx k fp d, Fact m, Additive (CT m fp)) => C (GF k fp d) (CT m fp) 
(GFCtx k fp d, Fact m, Additive (RT m fp)) => C (GF k fp d) (RT m fp) 
(GFCtx k fp d, Fact m, CElt t fp) => C (GF k fp d) (Cyc t m fp)

Rp is an F_{p^d}-module when d divides phi(m), by applying d-dimensional Fp-linear transform on d-dim chunks of powerful basis coeffs

(GFCtx k fp d, Fact m, Tensor t, TElt t fp) => C (GF k fp d) (UCyc t m P fp)

Rp is an F_{p^d}-module when d divides phi(m), by applying d-dimensional Fp-linear transform on d-dim chunks of powerful basis coeffs

type PrimeField fp = (Enumerable fp, Field fp, Eq fp, ZeroTestable fp, Prime (CharOf fp), IrreduciblePoly fp) Source

Constraint synonym for a prime field.

type GFCtx fp d = (PrimeField fp, Reflects d Int) Source

Constraint synonym for a finite field.

size :: GFCtx fp d => Tagged (GF fp d) Int Source

The order of the field: size (GF fp d) = p^d

trace :: forall fp d. GFCtx fp d => GF fp d -> fp Source

Trace into the prime subfield.

toList :: forall fp d. (Reflects d Int, Additive fp) => GF fp d -> [fp] Source

Yield a list of length exactly d (i.e., including trailing zeros) of the fp-coefficients with respect to the power basis.

fromList :: forall fp d. Reflects d Int => [fp] -> GF fp d Source

Yield a field element given up to d coefficients with respect to the power basis.

class Field fp => IrreduciblePoly fp where Source

Represents fields over which we can get irreducible polynomials of desired degrees. (An instance of this class is defined in IrreducibleChar2 and exported from Lol.)

data X Source

Convenience data type for writing IrreduciblePoly instances.

Constructors

X 

(^^) :: Ring a => X -> Int -> Polynomial a Source

Convenience function for writing IrreduciblePoly instances.

newtype TensorCoeffs a Source

This wrapper for a list of coefficients is used to define a GF(p^d)-module structure for tensors over F_p of dimension n, where d | n.

Constructors

Coeffs 

Fields

unCoeffs :: [a]
 

Instances

C a => C (TensorCoeffs a) Source 
(Additive fp, Ring (GF k fp d), Reflects k d Int) => C (GF k fp d) (TensorCoeffs fp) Source