-- | \( \def\Z{\mathbb{Z}} \) -- \( \def\C{\mathbb{C}} \) -- \( \def\Q{\mathbb{Q}} \) -- \( \def\R{\mathbb{R}} \) -- \( \def\F{\mathbb{F}} \) -- \( \def\O{\mathcal{O}} \) -- -- This module re-exports primary interfaces, and should be the only import -- needed for most cryptographic application implmenetations. To instantiate an -- application with concrete types, you will also need to import -- "Crypto.Lol.Types". -- -- Below is a brief mathematical background which serves as reference -- material for reading the documentation. -- -- * \( \Z \) denotes the ring of integers, \( \Q \) is the rational numbers, -- \( \R \) denotes the real numbers, and \( \C \) represents the complex -- numbers. -- -- * \( \Z_q = \Z/(q\Z) \) is the integers mod \( q \). \( \Z_q \) is -- implemented in "Crypto.Lol.Types.ZqBasic". -- -- * The finite field of order \( p \) is denoted \( \F_{p} \), and is -- implemented in "Crypto.Lol.Types.FiniteField". -- -- * \( \zeta_m \in R \) is an arbitrary element of order \( m \) in a -- ring \( R \). -- -- * Throughout, \( m \) denotes a cyclotomic /index/. In code, the cyclotomic -- index is represented by the type parameter @m :: 'Factored'@. -- -- * The ring \( R=\O_m=\Z[\zeta_m] \) is the \( m \)th cyclotomic ring. -- We denote the quotient ring \( \Z_q[\zeta_m]) \) by \( R_q \). -- We refer to \( \Z \) or \( \Z_q \) as the /base ring/. -- Cyclotomic rings are encapsulated by "Crypto.Lol.Cyclotomic.Cyc". -- -- * \( n=\varphi(m) \) is the totient function of the cyclotomic index. -- This is the dimension of a cyclotomic ring over the base ring. module Crypto.Lol ( module X ) where import Crypto.Lol.Cyclotomic.Cyc as X import Crypto.Lol.Cyclotomic.Linear as X import Crypto.Lol.Cyclotomic.RescaleCyc as X import Crypto.Lol.Gadget as X import Crypto.Lol.Prelude as X