computational-algebra-0.5.0.0: Well-kinded computational algebra library, currently supporting Groebner basis.

Safe HaskellNone
LanguageHaskell2010

Algebra.Field.Finite

Synopsis

Documentation

data F p Source #

Prime field of characteristic p. p should be prime, and not statically checked.

Instances

Reifies k p Integer => LeftModule Integer (F k p) Source # 

Methods

(.*) :: Integer -> F k p -> F k p #

Reifies k p Integer => LeftModule Natural (F k p) Source # 

Methods

(.*) :: Natural -> F k p -> F k p #

Reifies k p Integer => RightModule Integer (F k p) Source # 

Methods

(*.) :: F k p -> Integer -> F k p #

Reifies k p Integer => RightModule Natural (F k p) Source # 

Methods

(*.) :: F k p -> Natural -> F k p #

ConwayPolynomial p n => Reifies * (Conway Nat Nat p n) (Unipol (F Nat p)) # 

Methods

reflect :: proxy (Unipol (F Nat p)) -> a #

Eq (F k p) Source # 

Methods

(==) :: F k p -> F k p -> Bool #

(/=) :: F k p -> F k p -> Bool #

Reifies k p Integer => Fractional (F k p) Source # 

Methods

(/) :: F k p -> F k p -> F k p #

recip :: F k p -> F k p #

fromRational :: Rational -> F k p #

Reifies k p Integer => Num (F k p) Source # 

Methods

(+) :: F k p -> F k p -> F k p #

(-) :: F k p -> F k p -> F k p #

(*) :: F k p -> F k p -> F k p #

negate :: F k p -> F k p #

abs :: F k p -> F k p #

signum :: F k p -> F k p #

fromInteger :: Integer -> F k p #

Reifies k p Integer => Show (F k p) Source # 

Methods

showsPrec :: Int -> F k p -> ShowS #

show :: F k p -> String #

showList :: [F k p] -> ShowS #

Reifies k p Integer => Random (F k p) Source # 

Methods

randomR :: RandomGen g => (F k p, F k p) -> g -> (F k p, g) #

random :: RandomGen g => g -> (F k p, g) #

randomRs :: RandomGen g => (F k p, F k p) -> g -> [F k p] #

randoms :: RandomGen g => g -> [F k p] #

randomRIO :: (F k p, F k p) -> IO (F k p) #

randomIO :: IO (F k p) #

Reifies k p Integer => IntegralDomain (F k p) Source # 

Methods

divides :: F k p -> F k p -> Bool #

maybeQuot :: F k p -> F k p -> Maybe (F k p) #

Reifies k p Integer => GCDDomain (F k p) Source # 

Methods

gcd :: F k p -> F k p -> F k p #

reduceFraction :: F k p -> F k p -> (F k p, F k p) #

lcm :: F k p -> F k p -> F k p #

Reifies k p Integer => UFD (F k p) Source # 
Reifies k p Integer => PID (F k p) Source # 

Methods

egcd :: F k p -> F k p -> (F k p, F k p, F k p) #

Reifies k p Integer => Euclidean (F k p) Source # 

Methods

degree :: F k p -> Maybe Natural #

divide :: F k p -> F k p -> (F k p, F k p) #

quot :: F k p -> F k p -> F k p #

rem :: F k p -> F k p -> F k p #

Reifies k p Integer => Commutative (F k p) Source # 
Reifies k p Integer => UnitNormalForm (F k p) Source # 

Methods

splitUnit :: F k p -> (F k p, F k p) #

Reifies k p Integer => ZeroProductSemiring (F k p) Source # 
Reifies k p Integer => Ring (F k p) Source # 

Methods

fromInteger :: Integer -> F k p #

Reifies k p Integer => Characteristic (F k p) Source # 

Methods

char :: proxy (F k p) -> Natural #

Reifies k p Integer => Rig (F k p) Source # 

Methods

fromNatural :: Natural -> F k p #

Reifies k p Integer => DecidableZero (F k p) Source # 

Methods

isZero :: F k p -> Bool #

Reifies k p Integer => DecidableUnits (F k p) Source # 

Methods

recipUnit :: F k p -> Maybe (F k p) #

isUnit :: F k p -> Bool #

(^?) :: Integral n => F k p -> n -> Maybe (F k p) #

Reifies k p Integer => DecidableAssociates (F k p) Source # 

Methods

isAssociate :: F k p -> F k p -> Bool #

Reifies k p Integer => Division (F k p) Source # 

Methods

recip :: F k p -> F k p #

(/) :: F k p -> F k p -> F k p #

(\\) :: F k p -> F k p -> F k p #

(^) :: Integral n => F k p -> n -> F k p #

Reifies k p Integer => Unital (F k p) Source # 

Methods

one :: F k p #

pow :: F k p -> Natural -> F k p #

productWith :: Foldable f => (a -> F k p) -> f a -> F k p #

Reifies k p Integer => Group (F k p) Source # 

Methods

(-) :: F k p -> F k p -> F k p #

negate :: F k p -> F k p #

subtract :: F k p -> F k p -> F k p #

times :: Integral n => n -> F k p -> F k p #

Reifies k p Integer => Multiplicative (F k p) Source # 

Methods

(*) :: F k p -> F k p -> F k p #

pow1p :: F k p -> Natural -> F k p #

productWith1 :: Foldable1 f => (a -> F k p) -> f a -> F k p #

Reifies k p Integer => Semiring (F k p) Source # 
Reifies k p Integer => Monoidal (F k p) Source # 

Methods

zero :: F k p #

sinnum :: Natural -> F k p -> F k p #

sumWith :: Foldable f => (a -> F k p) -> f a -> F k p #

Reifies k p Integer => Additive (F k p) Source # 

Methods

(+) :: F k p -> F k p -> F k p #

sinnum1p :: Natural -> F k p -> F k p #

sumWith1 :: Foldable1 f => (a -> F k p) -> f a -> F k p #

Reifies k p Integer => Abelian (F k p) Source # 
NFData (F k p) Source # 

Methods

rnf :: F k p -> () #

Reifies k p Integer => Normed (F k p) Source # 

Associated Types

type Norm (F k p) :: * Source #

Methods

norm :: F k p -> Norm (F k p) Source #

liftNorm :: Norm (F k p) -> F k p Source #

Reifies k p Integer => PrettyCoeff (F k p) Source # 

Methods

showsCoeff :: Int -> F k p -> ShowSCoeff Source #

Reifies k p Integer => FiniteField (F k p) Source # 

Methods

power :: proxy (F k p) -> Natural Source #

elements :: proxy (F k p) -> [F k p] Source #

type Norm (F k p) Source # 
type Norm (F k p) = Integer

reifyPrimeField :: Integer -> (forall p. KnownNat p => Proxy (F p) -> a) -> a Source #

withPrimeField :: Integer -> (forall p. KnownNat p => F p) -> Integer Source #

modNat :: Reifies (p :: k) Integer => Integer -> F p Source #

modNat' :: forall proxy p. Reifies p Integer => proxy (F p) -> Integer -> F p Source #

class (Field k, Characteristic k) => FiniteField k where Source #

Minimal complete definition

power, elements

Methods

power :: proxy k -> Natural Source #

elements :: proxy k -> [k] Source #

Instances

Reifies k p Integer => FiniteField (F k p) Source # 

Methods

power :: proxy (F k p) -> Natural Source #

elements :: proxy (F k p) -> [F k p] Source #

(KnownNat n, IsGF' * p n f) => FiniteField (GF' Nat p n f) Source # 

Methods

power :: proxy (GF' Nat p n f) -> Natural Source #

elements :: proxy (GF' Nat p n f) -> [GF' Nat p n f] Source #

order :: FiniteField k => proxy k -> Natural Source #