lol-0.3.0.0: A library for lattice cryptography.

Safe HaskellNone
LanguageHaskell2010

Crypto.Lol.CRTrans

Description

Classes and helper methods for the Chinese remainder transform and ring extensions.

Synopsis

Documentation

class (Monad mon, Ring r) => CRTrans mon r where Source

A ring that (possibly) supports invertible Chinese remainder transformations of various indices.

The values of crtInfo for different indices m should be consistent, in the sense that if omega, omega' are respectively the roots of unity used for m, m' where m divides m', then it should be the case that omega'^(m'/m)=omega.

Methods

crtInfo :: Reflects m Int => TaggedT m mon (CRTInfo r) Source

CRTInfo for a given index m. The method itself may be slow, but the function it returns should be fast, e.g., via internal memoization.

Instances

CRTrans Maybe Double Source

Returns Nothing

CRTrans Maybe Int Source

Returns Nothing

CRTrans Maybe Int64 Source

Returns Nothing

CRTrans Maybe Integer Source

Returns Nothing

(Monad mon, Transcendental a) => CRTrans mon (Complex a) Source

Complex numbers have CRTrans for any index m

(CRTrans mon a, CRTrans mon b) => CRTrans mon (a, b) Source

Product ring

GFCtx k fp d => CRTrans Maybe (GF k fp d) Source 
(Reflects k q z, ToInteger z, PID z, Enumerable (ZqBasic k q z)) => CRTrans Maybe (ZqBasic k q z) Source 

class (Ring r, Ring (CRTExt r)) => CRTEmbed r where Source

A ring with a ring embedding into some ring CRTExt r that has an invertible CRT transformation for every positive index m.

Associated Types

type CRTExt r Source

Methods

toExt :: r -> CRTExt r Source

Embeds from r to CRTExt r

fromExt :: CRTExt r -> r Source

Projects from CRTExt r to r

Instances

CRTEmbed Double Source

Embeds into complex numbers

CRTEmbed Int Source

Embeds into complex numbers

CRTEmbed Int64 Source

Embeds into complex numbers

CRTEmbed Integer Source

Embeds into complex numbers. (May not have sufficient precision.)

Transcendental a => CRTEmbed (Complex a) Source

Self-embed

(CRTEmbed a, CRTEmbed b) => CRTEmbed (a, b) Source

Product ring

(Reflects k q z, ToInteger z, Ring (ZqBasic k q z)) => CRTEmbed (ZqBasic k q z) Source

Embeds into complex numbers

type CRTInfo r = (Int -> r, r) Source

Information that characterizes the (invertible) Chinese remainder transformation over a ring r, namely:

  1. a function that returns the ith power of some principal mth root of unity (for any integer i)
  2. the multiplicative inverse of \hat{m} in r.