{-# LANGUAGE FlexibleContexts, TypeFamilies #-} -- | \( \def\Z{\mathbb{Z}} \) -- A class for integers mod a prime power. module Crypto.Lol.Types.ZPP ( ZPP(..) ) where import Crypto.Lol.Prelude import Crypto.Lol.Types.FiniteField -- | Represents integers modulo a prime power. class (PrimeField (ZpOf zq), Ring zq) => ZPP zq where -- | An implementation of the integers modulo the prime base. type ZpOf zq -- | The prime and exponent of the modulus. modulusZPP :: Tagged zq PP -- | Lift from \(\Z_p\) to a representative. liftZp :: ZpOf zq -> zq