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

Safe HaskellNone
LanguageHaskell2010

Algebra.Prelude.Core

Synopsis

Documentation

(%) :: (IsPolynomial poly, Division (Coefficient poly)) => Coefficient poly -> Coefficient poly -> poly infixl 7 Source #

newtype Scalar r Source #

Scalar r provides almost the same type-instances as r, but it can also behave as a Module over r itself.

Constructors

Scalar 

Fields

Instances

LeftModule Integer r => LeftModule Integer (Scalar r) Source # 

Methods

(.*) :: Integer -> Scalar r -> Scalar r #

Semiring r => LeftModule r (Scalar r) Source # 

Methods

(.*) :: r -> Scalar r -> Scalar r #

LeftModule Natural r => LeftModule Natural (Scalar r) Source # 

Methods

(.*) :: Natural -> Scalar r -> Scalar r #

RightModule Integer r => RightModule Integer (Scalar r) Source # 

Methods

(*.) :: Scalar r -> Integer -> Scalar r #

Semiring r => RightModule r (Scalar r) Source # 

Methods

(*.) :: Scalar r -> r -> Scalar r #

RightModule Natural r => RightModule Natural (Scalar r) Source # 

Methods

(*.) :: Scalar r -> Natural -> Scalar r #

Enum r => Enum (Scalar r) Source # 

Methods

succ :: Scalar r -> Scalar r #

pred :: Scalar r -> Scalar r #

toEnum :: Int -> Scalar r #

fromEnum :: Scalar r -> Int #

enumFrom :: Scalar r -> [Scalar r] #

enumFromThen :: Scalar r -> Scalar r -> [Scalar r] #

enumFromTo :: Scalar r -> Scalar r -> [Scalar r] #

enumFromThenTo :: Scalar r -> Scalar r -> Scalar r -> [Scalar r] #

Eq r => Eq (Scalar r) Source # 

Methods

(==) :: Scalar r -> Scalar r -> Bool #

(/=) :: Scalar r -> Scalar r -> Bool #

Fractional r => Fractional (Scalar r) Source # 

Methods

(/) :: Scalar r -> Scalar r -> Scalar r #

recip :: Scalar r -> Scalar r #

fromRational :: Rational -> Scalar r #

Integral r => Integral (Scalar r) Source # 

Methods

quot :: Scalar r -> Scalar r -> Scalar r #

rem :: Scalar r -> Scalar r -> Scalar r #

div :: Scalar r -> Scalar r -> Scalar r #

mod :: Scalar r -> Scalar r -> Scalar r #

quotRem :: Scalar r -> Scalar r -> (Scalar r, Scalar r) #

divMod :: Scalar r -> Scalar r -> (Scalar r, Scalar r) #

toInteger :: Scalar r -> Integer #

Num r => Num (Scalar r) Source # 

Methods

(+) :: Scalar r -> Scalar r -> Scalar r #

(-) :: Scalar r -> Scalar r -> Scalar r #

(*) :: Scalar r -> Scalar r -> Scalar r #

negate :: Scalar r -> Scalar r #

abs :: Scalar r -> Scalar r #

signum :: Scalar r -> Scalar r #

fromInteger :: Integer -> Scalar r #

Ord r => Ord (Scalar r) Source # 

Methods

compare :: Scalar r -> Scalar r -> Ordering #

(<) :: Scalar r -> Scalar r -> Bool #

(<=) :: Scalar r -> Scalar r -> Bool #

(>) :: Scalar r -> Scalar r -> Bool #

(>=) :: Scalar r -> Scalar r -> Bool #

max :: Scalar r -> Scalar r -> Scalar r #

min :: Scalar r -> Scalar r -> Scalar r #

Read r => Read (Scalar r) Source # 
Real r => Real (Scalar r) Source # 

Methods

toRational :: Scalar r -> Rational #

Show r => Show (Scalar r) Source # 

Methods

showsPrec :: Int -> Scalar r -> ShowS #

show :: Scalar r -> String #

showList :: [Scalar r] -> ShowS #

Commutative r => Commutative (Scalar r) Source # 
UnitNormalForm r => UnitNormalForm (Scalar r) Source # 

Methods

splitUnit :: Scalar r -> (Scalar r, Scalar r) #

Ring r => Ring (Scalar r) Source # 

Methods

fromInteger :: Integer -> Scalar r #

Rig r => Rig (Scalar r) Source # 

Methods

fromNatural :: Natural -> Scalar r #

DecidableUnits r => DecidableUnits (Scalar r) Source # 

Methods

recipUnit :: Scalar r -> Maybe (Scalar r) #

isUnit :: Scalar r -> Bool #

(^?) :: Integral n => Scalar r -> n -> Maybe (Scalar r) #

DecidableAssociates r => DecidableAssociates (Scalar r) Source # 

Methods

isAssociate :: Scalar r -> Scalar r -> Bool #

Division r => Division (Scalar r) Source # 

Methods

recip :: Scalar r -> Scalar r #

(/) :: Scalar r -> Scalar r -> Scalar r #

(\\) :: Scalar r -> Scalar r -> Scalar r #

(^) :: Integral n => Scalar r -> n -> Scalar r #

Unital r => Unital (Scalar r) Source # 

Methods

one :: Scalar r #

pow :: Scalar r -> Natural -> Scalar r #

productWith :: Foldable f => (a -> Scalar r) -> f a -> Scalar r #

Group r => Group (Scalar r) Source # 

Methods

(-) :: Scalar r -> Scalar r -> Scalar r #

negate :: Scalar r -> Scalar r #

subtract :: Scalar r -> Scalar r -> Scalar r #

times :: Integral n => n -> Scalar r -> Scalar r #

Multiplicative r => Multiplicative (Scalar r) Source # 

Methods

(*) :: Scalar r -> Scalar r -> Scalar r #

pow1p :: Scalar r -> Natural -> Scalar r #

productWith1 :: Foldable1 f => (a -> Scalar r) -> f a -> Scalar r #

Semiring r => Semiring (Scalar r) Source # 
Monoidal r => Monoidal (Scalar r) Source # 

Methods

zero :: Scalar r #

sinnum :: Natural -> Scalar r -> Scalar r #

sumWith :: Foldable f => (a -> Scalar r) -> f a -> Scalar r #

Additive r => Additive (Scalar r) Source # 

Methods

(+) :: Scalar r -> Scalar r -> Scalar r #

sinnum1p :: Natural -> Scalar r -> Scalar r #

sumWith1 :: Foldable1 f => (a -> Scalar r) -> f a -> Scalar r #

Abelian r => Abelian (Scalar r) Source # 
Normed r => Normed (Scalar r) Source # 

Associated Types

type Norm (Scalar r) :: * Source #

Methods

norm :: Scalar r -> Norm (Scalar r) Source #

liftNorm :: Norm (Scalar r) -> Scalar r Source #

LeftModule (Scalar (Fraction Integer)) Algebraic # 
RightModule (Scalar (Fraction Integer)) Algebraic # 
Semiring r => LeftModule (Scalar r) (Scalar r) Source # 

Methods

(.*) :: Scalar r -> Scalar r -> Scalar r #

(DecidableZero r, Semiring r) => LeftModule (Scalar r) (Unipol r) # 

Methods

(.*) :: Scalar r -> Unipol r -> Unipol r #

(DecidableZero r, Semiring r, Multiplicative r) => LeftModule (Scalar r) (Matrix r) # 

Methods

(.*) :: Scalar r -> Matrix r -> Matrix r #

Semiring r => RightModule (Scalar r) (Scalar r) Source # 

Methods

(*.) :: Scalar r -> Scalar r -> Scalar r #

(DecidableZero r, Semiring r) => RightModule (Scalar r) (Unipol r) # 

Methods

(*.) :: Unipol r -> Scalar r -> Unipol r #

(DecidableZero r, Semiring r, Multiplicative r) => RightModule (Scalar r) (Matrix r) # 

Methods

(*.) :: Matrix r -> Scalar r -> Matrix r #

(Wraps vars poly, LeftModule (Scalar r) poly) => LeftModule (Scalar r) (LabPolynomial poly vars) # 

Methods

(.*) :: Scalar r -> LabPolynomial poly vars -> LabPolynomial poly vars #

(Wraps vars poly, RightModule (Scalar r) poly) => RightModule (Scalar r) (LabPolynomial poly vars) # 

Methods

(*.) :: LabPolynomial poly vars -> Scalar r -> LabPolynomial poly vars #

(KnownNat n, IsMonomialOrder n ord, IsPolynomial poly, LeftModule (Scalar r) poly) => LeftModule (Scalar r) (PadPolyL n ord poly) # 

Methods

(.*) :: Scalar r -> PadPolyL n ord poly -> PadPolyL n ord poly #

((~) * r (Coefficient poly), Field (Coefficient poly), IsOrderedPolynomial poly) => LeftModule (Scalar r) (Quotient k poly ideal) # 

Methods

(.*) :: Scalar r -> Quotient k poly ideal -> Quotient k poly ideal #

(KnownNat n, IsMonomialOrder n ord, IsPolynomial poly, RightModule (Scalar r) poly) => RightModule (Scalar r) (PadPolyL n ord poly) # 

Methods

(*.) :: PadPolyL n ord poly -> Scalar r -> PadPolyL n ord poly #

((~) * r (Coefficient poly), IsOrderedPolynomial poly) => RightModule (Scalar r) (Quotient k poly ideal) # 

Methods

(*.) :: Quotient k poly ideal -> Scalar r -> Quotient k poly ideal #

(IsMonomialOrder n order, CoeffRing r, KnownNat n) => LeftModule (Scalar r) (OrderedPolynomial * r order n) # 

Methods

(.*) :: Scalar r -> OrderedPolynomial * r order n -> OrderedPolynomial * r order n #

(IsMonomialOrder n order, CoeffRing r, KnownNat n) => RightModule (Scalar r) (OrderedPolynomial * r order n) # 

Methods

(*.) :: OrderedPolynomial * r order n -> Scalar r -> OrderedPolynomial * r order n #

type Norm (Scalar r) Source # 
type Norm (Scalar r) = Norm r

(.*.) :: Module (Scalar r) m => r -> m -> m infixr 8 Source #

od :: QuasiQuoter #

Quasiquoter for ordinal indexed by GHC's built-n Nat.

Since 0.7.0.0

type Ordinal n = Ordinal Nat n #

Set-theoretic (finite) ordinals:

n = {0, 1, ..., n-1}

So, Ordinal n has exactly n inhabitants. So especially Ordinal 0 is isomorphic to Void. This module exports a variant of polymorphic Ordinal specialised to GHC's builtin numeral Nat.

Since 0.7.0.0

enumOrdinal :: Sing Nat n -> [Ordinal n] #

Enumerate all Ordinals less than n.

Since 0.7.0.0

newtype OrderedPolynomial r order n Source #

n-ary polynomial ring over some noetherian ring R.

Constructors

Polynomial 

Fields

Instances

(IsMonomialOrder n order, CoeffRing r, KnownNat n) => LeftModule Integer (OrderedPolynomial * r order n) Source # 

Methods

(.*) :: Integer -> OrderedPolynomial * r order n -> OrderedPolynomial * r order n #

(IsMonomialOrder n order, CoeffRing r, KnownNat n) => LeftModule Natural (OrderedPolynomial * r order n) Source # 

Methods

(.*) :: Natural -> OrderedPolynomial * r order n -> OrderedPolynomial * r order n #

(IsMonomialOrder n order, CoeffRing r, KnownNat n) => RightModule Integer (OrderedPolynomial * r order n) Source # 

Methods

(*.) :: OrderedPolynomial * r order n -> Integer -> OrderedPolynomial * r order n #

(IsMonomialOrder n order, CoeffRing r, KnownNat n) => RightModule Natural (OrderedPolynomial * r order n) Source # 

Methods

(*.) :: OrderedPolynomial * r order n -> Natural -> OrderedPolynomial * r order n #

(IsMonomialOrder n order, CoeffRing r, KnownNat n) => LeftModule (Scalar r) (OrderedPolynomial * r order n) Source # 

Methods

(.*) :: Scalar r -> OrderedPolynomial * r order n -> OrderedPolynomial * r order n #

(IsMonomialOrder n order, CoeffRing r, KnownNat n) => RightModule (Scalar r) (OrderedPolynomial * r order n) Source # 

Methods

(*.) :: OrderedPolynomial * r order n -> Scalar r -> OrderedPolynomial * r order n #

Eq r => Eq (OrderedPolynomial k r order n) Source # 

Methods

(==) :: OrderedPolynomial k r order n -> OrderedPolynomial k r order n -> Bool #

(/=) :: OrderedPolynomial k r order n -> OrderedPolynomial k r order n -> Bool #

(IsMonomialOrder n order, CoeffRing r, KnownNat n) => Num (OrderedPolynomial * r order n) Source #

We provide Num instance to use trivial injection R into R[X]. Do not use signum or abs.

Methods

(+) :: OrderedPolynomial * r order n -> OrderedPolynomial * r order n -> OrderedPolynomial * r order n #

(-) :: OrderedPolynomial * r order n -> OrderedPolynomial * r order n -> OrderedPolynomial * r order n #

(*) :: OrderedPolynomial * r order n -> OrderedPolynomial * r order n -> OrderedPolynomial * r order n #

negate :: OrderedPolynomial * r order n -> OrderedPolynomial * r order n #

abs :: OrderedPolynomial * r order n -> OrderedPolynomial * r order n #

signum :: OrderedPolynomial * r order n -> OrderedPolynomial * r order n #

fromInteger :: Integer -> OrderedPolynomial * r order n #

(CoeffRing r, IsOrder n ord, Ord r) => Ord (OrderedPolynomial * r ord n) Source # 

Methods

compare :: OrderedPolynomial * r ord n -> OrderedPolynomial * r ord n -> Ordering #

(<) :: OrderedPolynomial * r ord n -> OrderedPolynomial * r ord n -> Bool #

(<=) :: OrderedPolynomial * r ord n -> OrderedPolynomial * r ord n -> Bool #

(>) :: OrderedPolynomial * r ord n -> OrderedPolynomial * r ord n -> Bool #

(>=) :: OrderedPolynomial * r ord n -> OrderedPolynomial * r ord n -> Bool #

max :: OrderedPolynomial * r ord n -> OrderedPolynomial * r ord n -> OrderedPolynomial * r ord n #

min :: OrderedPolynomial * r ord n -> OrderedPolynomial * r ord n -> OrderedPolynomial * r ord n #

(KnownNat n, CoeffRing r, IsMonomialOrder n order, PrettyCoeff r) => Show (OrderedPolynomial * r order n) Source # 

Methods

showsPrec :: Int -> OrderedPolynomial * r order n -> ShowS #

show :: OrderedPolynomial * r order n -> String #

showList :: [OrderedPolynomial * r order n] -> ShowS #

(Eq r, DecidableUnits r, DecidableZero r, KnownNat n, Field r, IsMonomialOrder n ord, ZeroProductSemiring r) => IntegralDomain (OrderedPolynomial * r ord n) Source # 

Methods

divides :: OrderedPolynomial * r ord n -> OrderedPolynomial * r ord n -> Bool #

maybeQuot :: OrderedPolynomial * r ord n -> OrderedPolynomial * r ord n -> Maybe (OrderedPolynomial * r ord n) #

(Eq r, DecidableUnits r, DecidableZero r, Field r, IsMonomialOrder 1 ord, ZeroProductSemiring r) => IntegralDomain (OrderedPolynomial * r ord 1) Source # 

Methods

divides :: OrderedPolynomial * r ord 1 -> OrderedPolynomial * r ord 1 -> Bool #

maybeQuot :: OrderedPolynomial * r ord 1 -> OrderedPolynomial * r ord 1 -> Maybe (OrderedPolynomial * r ord 1) #

(Eq r, DecidableUnits r, DecidableZero r, Field r, IsMonomialOrder 1 ord, ZeroProductSemiring r) => GCDDomain (OrderedPolynomial * r ord 1) Source # 

Methods

gcd :: OrderedPolynomial * r ord 1 -> OrderedPolynomial * r ord 1 -> OrderedPolynomial * r ord 1 #

reduceFraction :: OrderedPolynomial * r ord 1 -> OrderedPolynomial * r ord 1 -> (OrderedPolynomial * r ord 1, OrderedPolynomial * r ord 1) #

lcm :: OrderedPolynomial * r ord 1 -> OrderedPolynomial * r ord 1 -> OrderedPolynomial * r ord 1 #

(Eq r, DecidableUnits r, DecidableZero r, Field r, IsMonomialOrder 1 ord, ZeroProductSemiring r) => UFD (OrderedPolynomial * r ord 1) Source # 
(Eq r, DecidableUnits r, DecidableZero r, Field r, IsMonomialOrder 1 ord, ZeroProductSemiring r) => PID (OrderedPolynomial * r ord 1) Source # 

Methods

egcd :: OrderedPolynomial * r ord 1 -> OrderedPolynomial * r ord 1 -> (OrderedPolynomial * r ord 1, OrderedPolynomial * r ord 1, OrderedPolynomial * r ord 1) #

(Eq r, DecidableUnits r, DecidableZero r, Field r, IsMonomialOrder 1 ord, ZeroProductSemiring r) => Euclidean (OrderedPolynomial * r ord 1) Source # 

Methods

degree :: OrderedPolynomial * r ord 1 -> Maybe Natural #

divide :: OrderedPolynomial * r ord 1 -> OrderedPolynomial * r ord 1 -> (OrderedPolynomial * r ord 1, OrderedPolynomial * r ord 1) #

quot :: OrderedPolynomial * r ord 1 -> OrderedPolynomial * r ord 1 -> OrderedPolynomial * r ord 1 #

rem :: OrderedPolynomial * r ord 1 -> OrderedPolynomial * r ord 1 -> OrderedPolynomial * r ord 1 #

(IsMonomialOrder n order, CoeffRing r, KnownNat n) => Commutative (OrderedPolynomial * r order n) Source # 
(Eq r, Euclidean r, KnownNat n, IsMonomialOrder n ord) => UnitNormalForm (OrderedPolynomial * r ord n) Source # 

Methods

splitUnit :: OrderedPolynomial * r ord n -> (OrderedPolynomial * r ord n, OrderedPolynomial * r ord n) #

(Eq r, DecidableUnits r, DecidableZero r, KnownNat n, Field r, IsMonomialOrder n ord, ZeroProductSemiring r) => ZeroProductSemiring (OrderedPolynomial * r ord n) Source # 
(IsMonomialOrder n order, CoeffRing r, KnownNat n) => Ring (OrderedPolynomial * r order n) Source # 

Methods

fromInteger :: Integer -> OrderedPolynomial * r order n #

(IsMonomialOrder n ord, Characteristic r, KnownNat n, CoeffRing r) => Characteristic (OrderedPolynomial * r ord n) Source # 

Methods

char :: proxy (OrderedPolynomial * r ord n) -> Natural #

(IsMonomialOrder n order, CoeffRing r, KnownNat n) => Rig (OrderedPolynomial * r order n) Source # 

Methods

fromNatural :: Natural -> OrderedPolynomial * r order n #

(CoeffRing r, KnownNat n, IsMonomialOrder n ord) => DecidableZero (OrderedPolynomial * r ord n) Source # 

Methods

isZero :: OrderedPolynomial * r ord n -> Bool #

(CoeffRing r, IsMonomialOrder n ord, DecidableUnits r, KnownNat n) => DecidableUnits (OrderedPolynomial * r ord n) Source # 

Methods

recipUnit :: OrderedPolynomial * r ord n -> Maybe (OrderedPolynomial * r ord n) #

isUnit :: OrderedPolynomial * r ord n -> Bool #

(^?) :: Integral n => OrderedPolynomial * r ord n -> n -> Maybe (OrderedPolynomial * r ord n) #

(Eq r, KnownNat n, Euclidean r, IsMonomialOrder n ord) => DecidableAssociates (OrderedPolynomial * r ord n) Source # 

Methods

isAssociate :: OrderedPolynomial * r ord n -> OrderedPolynomial * r ord n -> Bool #

(IsMonomialOrder n order, CoeffRing r, KnownNat n) => Unital (OrderedPolynomial * r order n) Source # 

Methods

one :: OrderedPolynomial * r order n #

pow :: OrderedPolynomial * r order n -> Natural -> OrderedPolynomial * r order n #

productWith :: Foldable f => (a -> OrderedPolynomial * r order n) -> f a -> OrderedPolynomial * r order n #

(IsMonomialOrder n order, CoeffRing r, KnownNat n) => Group (OrderedPolynomial * r order n) Source # 

Methods

(-) :: OrderedPolynomial * r order n -> OrderedPolynomial * r order n -> OrderedPolynomial * r order n #

negate :: OrderedPolynomial * r order n -> OrderedPolynomial * r order n #

subtract :: OrderedPolynomial * r order n -> OrderedPolynomial * r order n -> OrderedPolynomial * r order n #

times :: Integral n => n -> OrderedPolynomial * r order n -> OrderedPolynomial * r order n #

(IsMonomialOrder n order, CoeffRing r, KnownNat n) => Multiplicative (OrderedPolynomial * r order n) Source # 

Methods

(*) :: OrderedPolynomial * r order n -> OrderedPolynomial * r order n -> OrderedPolynomial * r order n #

pow1p :: OrderedPolynomial * r order n -> Natural -> OrderedPolynomial * r order n #

productWith1 :: Foldable1 f => (a -> OrderedPolynomial * r order n) -> f a -> OrderedPolynomial * r order n #

(IsMonomialOrder n order, CoeffRing r, KnownNat n) => Semiring (OrderedPolynomial * r order n) Source # 
(IsMonomialOrder n order, CoeffRing r, KnownNat n) => Monoidal (OrderedPolynomial * r order n) Source # 

Methods

zero :: OrderedPolynomial * r order n #

sinnum :: Natural -> OrderedPolynomial * r order n -> OrderedPolynomial * r order n #

sumWith :: Foldable f => (a -> OrderedPolynomial * r order n) -> f a -> OrderedPolynomial * r order n #

(IsMonomialOrder n order, CoeffRing r, KnownNat n) => Additive (OrderedPolynomial * r order n) Source # 

Methods

(+) :: OrderedPolynomial * r order n -> OrderedPolynomial * r order n -> OrderedPolynomial * r order n #

sinnum1p :: Natural -> OrderedPolynomial * r order n -> OrderedPolynomial * r order n #

sumWith1 :: Foldable1 f => (a -> OrderedPolynomial * r order n) -> f a -> OrderedPolynomial * r order n #

(IsMonomialOrder n order, CoeffRing r, KnownNat n) => Abelian (OrderedPolynomial * r order n) Source # 
Hashable r => Hashable (OrderedPolynomial k r ord n) Source # 

Methods

hashWithSalt :: Int -> OrderedPolynomial k r ord n -> Int #

hash :: OrderedPolynomial k r ord n -> Int #

NFData r => NFData (OrderedPolynomial k r order n) Source # 

Methods

rnf :: OrderedPolynomial k r order n -> () #

(KnownNat n, CoeffRing r, IsMonomialOrder n order) => Wrapped (OrderedPolynomial * r order n) Source # 

Associated Types

type Unwrapped (OrderedPolynomial * r order n) :: * #

Methods

_Wrapped' :: Iso' (OrderedPolynomial * r order n) (Unwrapped (OrderedPolynomial * r order n)) #

(KnownNat n, CoeffRing r, IsMonomialOrder n ord) => IsOrderedPolynomial (OrderedPolynomial * r ord n) Source # 

Associated Types

type MOrder (OrderedPolynomial * r ord n) :: * Source #

Methods

coeff :: OrderedMonomial * (MOrder (OrderedPolynomial * r ord n)) (Arity (OrderedPolynomial * r ord n)) -> OrderedPolynomial * r ord n -> Coefficient (OrderedPolynomial * r ord n) Source #

terms :: OrderedPolynomial * r ord n -> Map (OrderedMonomial * (MOrder (OrderedPolynomial * r ord n)) (Arity (OrderedPolynomial * r ord n))) (Coefficient (OrderedPolynomial * r ord n)) Source #

leadingTerm :: OrderedPolynomial * r ord n -> (Coefficient (OrderedPolynomial * r ord n), OrderedMonomial * (MOrder (OrderedPolynomial * r ord n)) (Arity (OrderedPolynomial * r ord n))) Source #

leadingMonomial :: OrderedPolynomial * r ord n -> OrderedMonomial * (MOrder (OrderedPolynomial * r ord n)) (Arity (OrderedPolynomial * r ord n)) Source #

leadingCoeff :: OrderedPolynomial * r ord n -> Coefficient (OrderedPolynomial * r ord n) Source #

orderedMonomials :: OrderedPolynomial * r ord n -> Set (OrderedMonomial * (MOrder (OrderedPolynomial * r ord n)) (Arity (OrderedPolynomial * r ord n))) Source #

fromOrderedMonomial :: OrderedMonomial * (MOrder (OrderedPolynomial * r ord n)) (Arity (OrderedPolynomial * r ord n)) -> OrderedPolynomial * r ord n Source #

toPolynomial :: (Coefficient (OrderedPolynomial * r ord n), OrderedMonomial * (MOrder (OrderedPolynomial * r ord n)) (Arity (OrderedPolynomial * r ord n))) -> OrderedPolynomial * r ord n Source #

polynomial :: Map (OrderedMonomial * (MOrder (OrderedPolynomial * r ord n)) (Arity (OrderedPolynomial * r ord n))) (Coefficient (OrderedPolynomial * r ord n)) -> OrderedPolynomial * r ord n Source #

(>*) :: OrderedMonomial * (MOrder (OrderedPolynomial * r ord n)) (Arity (OrderedPolynomial * r ord n)) -> OrderedPolynomial * r ord n -> OrderedPolynomial * r ord n Source #

(*<) :: OrderedPolynomial * r ord n -> OrderedMonomial * (MOrder (OrderedPolynomial * r ord n)) (Arity (OrderedPolynomial * r ord n)) -> OrderedPolynomial * r ord n Source #

_Terms :: Iso' (OrderedPolynomial * r ord n) (Map (OrderedMonomial * (MOrder (OrderedPolynomial * r ord n)) (Arity (OrderedPolynomial * r ord n))) (Coefficient (OrderedPolynomial * r ord n))) Source #

diff :: Ordinal Nat (Arity (OrderedPolynomial * r ord n)) -> OrderedPolynomial * r ord n -> OrderedPolynomial * r ord n Source #

mapMonomialMonotonic :: (OrderedMonomial * (MOrder (OrderedPolynomial * r ord n)) (Arity (OrderedPolynomial * r ord n)) -> OrderedMonomial * (MOrder (OrderedPolynomial * r ord n)) (Arity (OrderedPolynomial * r ord n))) -> OrderedPolynomial * r ord n -> OrderedPolynomial * r ord n Source #

(KnownNat n, IsMonomialOrder n ord, CoeffRing r) => IsPolynomial (OrderedPolynomial * r ord n) Source # 

Associated Types

type Coefficient (OrderedPolynomial * r ord n) :: * Source #

type Arity (OrderedPolynomial * r ord n) :: Nat Source #

Methods

liftMap :: (Module (Scalar (Coefficient (OrderedPolynomial * r ord n))) alg, Ring alg, Commutative alg) => (Ordinal Nat (Arity (OrderedPolynomial * r ord n)) -> alg) -> OrderedPolynomial * r ord n -> alg Source #

subst :: (Ring alg, Commutative alg, Module (Scalar (Coefficient (OrderedPolynomial * r ord n))) alg) => Sized (Arity (OrderedPolynomial * r ord n)) alg -> OrderedPolynomial * r ord n -> alg Source #

substWith :: (Unital r, Monoidal m) => (Coefficient (OrderedPolynomial * r ord n) -> r -> m) -> Sized (Arity (OrderedPolynomial * r ord n)) r -> OrderedPolynomial * r ord n -> m Source #

sArity' :: OrderedPolynomial * r ord n -> SNat (Arity (OrderedPolynomial * r ord n)) Source #

sArity :: proxy (OrderedPolynomial * r ord n) -> SNat (Arity (OrderedPolynomial * r ord n)) Source #

arity :: proxy (OrderedPolynomial * r ord n) -> Integer Source #

injectCoeff :: Coefficient (OrderedPolynomial * r ord n) -> OrderedPolynomial * r ord n Source #

injectCoeff' :: proxy (OrderedPolynomial * r ord n) -> Coefficient (OrderedPolynomial * r ord n) -> OrderedPolynomial * r ord n Source #

monomials :: OrderedPolynomial * r ord n -> HashSet (Monomial (Arity (OrderedPolynomial * r ord n))) Source #

terms' :: OrderedPolynomial * r ord n -> Map (Monomial (Arity (OrderedPolynomial * r ord n))) (Coefficient (OrderedPolynomial * r ord n)) Source #

coeff' :: Monomial (Arity (OrderedPolynomial * r ord n)) -> OrderedPolynomial * r ord n -> Coefficient (OrderedPolynomial * r ord n) Source #

constantTerm :: OrderedPolynomial * r ord n -> Coefficient (OrderedPolynomial * r ord n) Source #

fromMonomial :: Monomial (Arity (OrderedPolynomial * r ord n)) -> OrderedPolynomial * r ord n Source #

toPolynomial' :: (Coefficient (OrderedPolynomial * r ord n), Monomial (Arity (OrderedPolynomial * r ord n))) -> OrderedPolynomial * r ord n Source #

polynomial' :: Map (Monomial (Arity (OrderedPolynomial * r ord n))) (Coefficient (OrderedPolynomial * r ord n)) -> OrderedPolynomial * r ord n Source #

totalDegree' :: OrderedPolynomial * r ord n -> Natural Source #

var :: Ordinal Nat (Arity (OrderedPolynomial * r ord n)) -> OrderedPolynomial * r ord n Source #

mapCoeff' :: (Coefficient (OrderedPolynomial * r ord n) -> Coefficient (OrderedPolynomial * r ord n)) -> OrderedPolynomial * r ord n -> OrderedPolynomial * r ord n Source #

(>|*) :: Monomial (Arity (OrderedPolynomial * r ord n)) -> OrderedPolynomial * r ord n -> OrderedPolynomial * r ord n Source #

(*|<) :: OrderedPolynomial * r ord n -> Monomial (Arity (OrderedPolynomial * r ord n)) -> OrderedPolynomial * r ord n Source #

(!*) :: Coefficient (OrderedPolynomial * r ord n) -> OrderedPolynomial * r ord n -> OrderedPolynomial * r ord n Source #

_Terms' :: Iso' (OrderedPolynomial * r ord n) (Map (Monomial (Arity (OrderedPolynomial * r ord n))) (Coefficient (OrderedPolynomial * r ord n))) Source #

mapMonomial :: (Monomial (Arity (OrderedPolynomial * r ord n)) -> Monomial (Arity (OrderedPolynomial * r ord n))) -> OrderedPolynomial * r ord n -> OrderedPolynomial * r ord n Source #

(KnownNat n, CoeffRing r, IsMonomialOrder n ord, (~) * t (OrderedPolynomial k q ord' m)) => Rewrapped (OrderedPolynomial * r ord n) t Source # 
type Unwrapped (OrderedPolynomial * r order n) Source # 
type Unwrapped (OrderedPolynomial * r order n) = Map (OrderedMonomial * order n) r
type MOrder (OrderedPolynomial * r ord n) Source # 
type MOrder (OrderedPolynomial * r ord n) = ord
type Coefficient (OrderedPolynomial * r ord n) Source # 
type Coefficient (OrderedPolynomial * r ord n) = r
type Arity (OrderedPolynomial * r ord n) Source # 
type Arity (OrderedPolynomial * r ord n) = n

allVars :: forall k ord n. (IsMonomialOrder n ord, CoeffRing k, KnownNat n) => Sized n (OrderedPolynomial k ord n) Source #

substVar :: (CoeffRing r, KnownNat n, IsMonomialOrder n ord, (1 :<= n) ~ True) => Ordinal n -> OrderedPolynomial r ord n -> OrderedPolynomial r ord n -> OrderedPolynomial r ord n Source #

substVar n f substitutes n-th variable with polynomial f, without changing arity.

homogenize :: forall k ord n. (CoeffRing k, KnownNat n, IsMonomialOrder (n + 1) ord, IsMonomialOrder n ord) => OrderedPolynomial k ord n -> OrderedPolynomial k ord (n + 1) Source #

Calculate the homogenized polynomial of given one, with additional variable is the last variable.

unhomogenize :: forall k ord n. (CoeffRing k, KnownNat n, IsMonomialOrder n ord, IsMonomialOrder (n + 1) ord) => OrderedPolynomial k ord (Succ n) -> OrderedPolynomial k ord n Source #

varX :: forall r n order. (CoeffRing r, KnownNat n, IsMonomialOrder n order, (0 :< n) ~ True) => OrderedPolynomial r order n Source #

getTerms :: OrderedPolynomial k order n -> [(k, OrderedMonomial order n)] Source #

shiftR :: forall k r n ord. (CoeffRing r, KnownNat n, IsMonomialOrder n ord, IsMonomialOrder (k + n) ord) => SNat k -> OrderedPolynomial r ord n -> OrderedPolynomial r ord (k :+ n) Source #

mapCoeff :: (KnownNat n, CoeffRing b, IsMonomialOrder n ord) => (a -> b) -> OrderedPolynomial a ord n -> OrderedPolynomial b ord n Source #

eval :: (CoeffRing r, IsMonomialOrder n order, KnownNat n) => Sized n r -> OrderedPolynomial r order n -> r Source #

Evaluate polynomial at some point.

evalUnivariate :: (CoeffRing b, IsMonomialOrder 1 order) => b -> OrderedPolynomial b order 1 -> b Source #

substUnivariate :: (Module (Scalar r) b, Unital b, CoeffRing r, IsMonomialOrder 1 order) => b -> OrderedPolynomial r order 1 -> b Source #

Substitute univariate polynomial using Horner's rule

class IsOrder n ordering where Source #

Class to lookup ordering from its (type-level) name.

Minimal complete definition

cmpMonomial

Methods

cmpMonomial :: Proxy ordering -> MonomialOrder n Source #

Instances

newtype PadPolyL n ord poly Source #

Constructors

PadPolyL 

Fields

Instances

(KnownNat n, IsMonomialOrder n ord, IsPolynomial poly) => LeftModule Integer (PadPolyL n ord poly) Source # 

Methods

(.*) :: Integer -> PadPolyL n ord poly -> PadPolyL n ord poly #

(KnownNat n, IsMonomialOrder n ord, IsPolynomial poly) => LeftModule Natural (PadPolyL n ord poly) Source # 

Methods

(.*) :: Natural -> PadPolyL n ord poly -> PadPolyL n ord poly #

(KnownNat n, IsMonomialOrder n ord, IsPolynomial poly) => RightModule Integer (PadPolyL n ord poly) Source # 

Methods

(*.) :: PadPolyL n ord poly -> Integer -> PadPolyL n ord poly #

(KnownNat n, IsMonomialOrder n ord, IsPolynomial poly) => RightModule Natural (PadPolyL n ord poly) Source # 

Methods

(*.) :: PadPolyL n ord poly -> Natural -> PadPolyL n ord poly #

(KnownNat n, IsMonomialOrder n ord, IsPolynomial poly, LeftModule (Scalar r) poly) => LeftModule (Scalar r) (PadPolyL n ord poly) Source # 

Methods

(.*) :: Scalar r -> PadPolyL n ord poly -> PadPolyL n ord poly #

(KnownNat n, IsMonomialOrder n ord, IsPolynomial poly, RightModule (Scalar r) poly) => RightModule (Scalar r) (PadPolyL n ord poly) Source # 

Methods

(*.) :: PadPolyL n ord poly -> Scalar r -> PadPolyL n ord poly #

(KnownNat n, IsMonomialOrder n ord, IsPolynomial poly) => Eq (PadPolyL n ord poly) Source # 

Methods

(==) :: PadPolyL n ord poly -> PadPolyL n ord poly -> Bool #

(/=) :: PadPolyL n ord poly -> PadPolyL n ord poly -> Bool #

(KnownNat n, IsMonomialOrder n ord, IsPolynomial poly) => Commutative (PadPolyL n ord poly) Source # 
(KnownNat n, IsMonomialOrder n ord, IsPolynomial poly) => Ring (PadPolyL n ord poly) Source # 

Methods

fromInteger :: Integer -> PadPolyL n ord poly #

(KnownNat n, IsMonomialOrder n ord, IsPolynomial poly) => Rig (PadPolyL n ord poly) Source # 

Methods

fromNatural :: Natural -> PadPolyL n ord poly #

(KnownNat n, IsMonomialOrder n ord, IsPolynomial poly) => DecidableZero (PadPolyL n ord poly) Source # 

Methods

isZero :: PadPolyL n ord poly -> Bool #

(KnownNat n, IsMonomialOrder n ord, IsPolynomial poly) => Unital (PadPolyL n ord poly) Source # 

Methods

one :: PadPolyL n ord poly #

pow :: PadPolyL n ord poly -> Natural -> PadPolyL n ord poly #

productWith :: Foldable f => (a -> PadPolyL n ord poly) -> f a -> PadPolyL n ord poly #

(KnownNat n, IsMonomialOrder n ord, IsPolynomial poly) => Group (PadPolyL n ord poly) Source # 

Methods

(-) :: PadPolyL n ord poly -> PadPolyL n ord poly -> PadPolyL n ord poly #

negate :: PadPolyL n ord poly -> PadPolyL n ord poly #

subtract :: PadPolyL n ord poly -> PadPolyL n ord poly -> PadPolyL n ord poly #

times :: Integral n => n -> PadPolyL n ord poly -> PadPolyL n ord poly #

(KnownNat n, IsMonomialOrder n ord, IsPolynomial poly) => Multiplicative (PadPolyL n ord poly) Source # 

Methods

(*) :: PadPolyL n ord poly -> PadPolyL n ord poly -> PadPolyL n ord poly #

pow1p :: PadPolyL n ord poly -> Natural -> PadPolyL n ord poly #

productWith1 :: Foldable1 f => (a -> PadPolyL n ord poly) -> f a -> PadPolyL n ord poly #

(KnownNat n, IsMonomialOrder n ord, IsPolynomial poly) => Semiring (PadPolyL n ord poly) Source # 
(KnownNat n, IsMonomialOrder n ord, IsPolynomial poly) => Monoidal (PadPolyL n ord poly) Source # 

Methods

zero :: PadPolyL n ord poly #

sinnum :: Natural -> PadPolyL n ord poly -> PadPolyL n ord poly #

sumWith :: Foldable f => (a -> PadPolyL n ord poly) -> f a -> PadPolyL n ord poly #

(KnownNat n, IsMonomialOrder n ord, IsPolynomial poly) => Additive (PadPolyL n ord poly) Source # 

Methods

(+) :: PadPolyL n ord poly -> PadPolyL n ord poly -> PadPolyL n ord poly #

sinnum1p :: Natural -> PadPolyL n ord poly -> PadPolyL n ord poly #

sumWith1 :: Foldable1 f => (a -> PadPolyL n ord poly) -> f a -> PadPolyL n ord poly #

(KnownNat n, IsMonomialOrder n ord, IsPolynomial poly) => Abelian (PadPolyL n ord poly) Source # 
(SingI [Nat] (Replicate Nat n 1), KnownNat n, IsMonomialOrder n ord, IsOrderedPolynomial poly) => IsOrderedPolynomial (PadPolyL n ord poly) Source # 

Associated Types

type MOrder (PadPolyL n ord poly) :: * Source #

Methods

coeff :: OrderedMonomial * (MOrder (PadPolyL n ord poly)) (Arity (PadPolyL n ord poly)) -> PadPolyL n ord poly -> Coefficient (PadPolyL n ord poly) Source #

terms :: PadPolyL n ord poly -> Map (OrderedMonomial * (MOrder (PadPolyL n ord poly)) (Arity (PadPolyL n ord poly))) (Coefficient (PadPolyL n ord poly)) Source #

leadingTerm :: PadPolyL n ord poly -> (Coefficient (PadPolyL n ord poly), OrderedMonomial * (MOrder (PadPolyL n ord poly)) (Arity (PadPolyL n ord poly))) Source #

leadingMonomial :: PadPolyL n ord poly -> OrderedMonomial * (MOrder (PadPolyL n ord poly)) (Arity (PadPolyL n ord poly)) Source #

leadingCoeff :: PadPolyL n ord poly -> Coefficient (PadPolyL n ord poly) Source #

orderedMonomials :: PadPolyL n ord poly -> Set (OrderedMonomial * (MOrder (PadPolyL n ord poly)) (Arity (PadPolyL n ord poly))) Source #

fromOrderedMonomial :: OrderedMonomial * (MOrder (PadPolyL n ord poly)) (Arity (PadPolyL n ord poly)) -> PadPolyL n ord poly Source #

toPolynomial :: (Coefficient (PadPolyL n ord poly), OrderedMonomial * (MOrder (PadPolyL n ord poly)) (Arity (PadPolyL n ord poly))) -> PadPolyL n ord poly Source #

polynomial :: Map (OrderedMonomial * (MOrder (PadPolyL n ord poly)) (Arity (PadPolyL n ord poly))) (Coefficient (PadPolyL n ord poly)) -> PadPolyL n ord poly Source #

(>*) :: OrderedMonomial * (MOrder (PadPolyL n ord poly)) (Arity (PadPolyL n ord poly)) -> PadPolyL n ord poly -> PadPolyL n ord poly Source #

(*<) :: PadPolyL n ord poly -> OrderedMonomial * (MOrder (PadPolyL n ord poly)) (Arity (PadPolyL n ord poly)) -> PadPolyL n ord poly Source #

_Terms :: Iso' (PadPolyL n ord poly) (Map (OrderedMonomial * (MOrder (PadPolyL n ord poly)) (Arity (PadPolyL n ord poly))) (Coefficient (PadPolyL n ord poly))) Source #

diff :: Ordinal Nat (Arity (PadPolyL n ord poly)) -> PadPolyL n ord poly -> PadPolyL n ord poly Source #

mapMonomialMonotonic :: (OrderedMonomial * (MOrder (PadPolyL n ord poly)) (Arity (PadPolyL n ord poly)) -> OrderedMonomial * (MOrder (PadPolyL n ord poly)) (Arity (PadPolyL n ord poly))) -> PadPolyL n ord poly -> PadPolyL n ord poly Source #

(KnownNat n, IsMonomialOrder n ord, IsPolynomial poly) => IsPolynomial (PadPolyL n ord poly) Source # 

Associated Types

type Coefficient (PadPolyL n ord poly) :: * Source #

type Arity (PadPolyL n ord poly) :: Nat Source #

Methods

liftMap :: (Module (Scalar (Coefficient (PadPolyL n ord poly))) alg, Ring alg, Commutative alg) => (Ordinal Nat (Arity (PadPolyL n ord poly)) -> alg) -> PadPolyL n ord poly -> alg Source #

subst :: (Ring alg, Commutative alg, Module (Scalar (Coefficient (PadPolyL n ord poly))) alg) => Sized (Arity (PadPolyL n ord poly)) alg -> PadPolyL n ord poly -> alg Source #

substWith :: (Unital r, Monoidal m) => (Coefficient (PadPolyL n ord poly) -> r -> m) -> Sized (Arity (PadPolyL n ord poly)) r -> PadPolyL n ord poly -> m Source #

sArity' :: PadPolyL n ord poly -> SNat (Arity (PadPolyL n ord poly)) Source #

sArity :: proxy (PadPolyL n ord poly) -> SNat (Arity (PadPolyL n ord poly)) Source #

arity :: proxy (PadPolyL n ord poly) -> Integer Source #

injectCoeff :: Coefficient (PadPolyL n ord poly) -> PadPolyL n ord poly Source #

injectCoeff' :: proxy (PadPolyL n ord poly) -> Coefficient (PadPolyL n ord poly) -> PadPolyL n ord poly Source #

monomials :: PadPolyL n ord poly -> HashSet (Monomial (Arity (PadPolyL n ord poly))) Source #

terms' :: PadPolyL n ord poly -> Map (Monomial (Arity (PadPolyL n ord poly))) (Coefficient (PadPolyL n ord poly)) Source #

coeff' :: Monomial (Arity (PadPolyL n ord poly)) -> PadPolyL n ord poly -> Coefficient (PadPolyL n ord poly) Source #

constantTerm :: PadPolyL n ord poly -> Coefficient (PadPolyL n ord poly) Source #

fromMonomial :: Monomial (Arity (PadPolyL n ord poly)) -> PadPolyL n ord poly Source #

toPolynomial' :: (Coefficient (PadPolyL n ord poly), Monomial (Arity (PadPolyL n ord poly))) -> PadPolyL n ord poly Source #

polynomial' :: Map (Monomial (Arity (PadPolyL n ord poly))) (Coefficient (PadPolyL n ord poly)) -> PadPolyL n ord poly Source #

totalDegree' :: PadPolyL n ord poly -> Natural Source #

var :: Ordinal Nat (Arity (PadPolyL n ord poly)) -> PadPolyL n ord poly Source #

mapCoeff' :: (Coefficient (PadPolyL n ord poly) -> Coefficient (PadPolyL n ord poly)) -> PadPolyL n ord poly -> PadPolyL n ord poly Source #

(>|*) :: Monomial (Arity (PadPolyL n ord poly)) -> PadPolyL n ord poly -> PadPolyL n ord poly Source #

(*|<) :: PadPolyL n ord poly -> Monomial (Arity (PadPolyL n ord poly)) -> PadPolyL n ord poly Source #

(!*) :: Coefficient (PadPolyL n ord poly) -> PadPolyL n ord poly -> PadPolyL n ord poly Source #

_Terms' :: Iso' (PadPolyL n ord poly) (Map (Monomial (Arity (PadPolyL n ord poly))) (Coefficient (PadPolyL n ord poly))) Source #

mapMonomial :: (Monomial (Arity (PadPolyL n ord poly)) -> Monomial (Arity (PadPolyL n ord poly))) -> PadPolyL n ord poly -> PadPolyL n ord poly Source #

type MOrder (PadPolyL n ord poly) Source # 
type MOrder (PadPolyL n ord poly) = ProductOrder n (Arity poly) (Graded ord) (MOrder poly)
type Coefficient (PadPolyL n ord poly) Source # 
type Coefficient (PadPolyL n ord poly) = Coefficient poly
type Arity (PadPolyL n ord poly) Source # 
type Arity (PadPolyL n ord poly) = (+) n (Arity poly)

padLeftPoly :: (IsMonomialOrder n ord, IsPolynomial poly) => Sing n -> ord -> poly -> PadPolyL n ord poly Source #