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

Safe HaskellNone
LanguageHaskell2010

Algebra.Ring.Polynomial

Contents

Synopsis

Documentation

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 #

Orphan instances