polynomial-algebra-0.1.0.1: Multivariate polynomial rings

Safe HaskellNone
LanguageHaskell2010

Math.Algebra.Polynomial.Monomial.Indexed

Contents

Description

Multivariate monomials where the variable set looks like {x_1, x_2, ... , x_N}

Synopsis

Monomials

newtype XS (var :: Symbol) (n :: Nat) Source #

Monomials of the variables x1,x2,...,xn. The internal representation is the dense array of exponents: x1^e1*x2^e2*...*xn^en is represented by [e1,e2,...,en].

The type is indexed by the name of the variables, and then the number of variables.

Note that we require here that the array has bounds (1,n)

Constructors

XS (UArray Int Int) 
Instances
Eq (XS var n) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Monomial.Indexed

Methods

(==) :: XS var n -> XS var n -> Bool #

(/=) :: XS var n -> XS var n -> Bool #

Ord (XS var n) Source #

Note: this must be a monomial ordering!

Instance details

Defined in Math.Algebra.Polynomial.Monomial.Indexed

Methods

compare :: XS var n -> XS var n -> Ordering #

(<) :: XS var n -> XS var n -> Bool #

(<=) :: XS var n -> XS var n -> Bool #

(>) :: XS var n -> XS var n -> Bool #

(>=) :: XS var n -> XS var n -> Bool #

max :: XS var n -> XS var n -> XS var n #

min :: XS var n -> XS var n -> XS var n #

Show (XS var n) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Monomial.Indexed

Methods

showsPrec :: Int -> XS var n -> ShowS #

show :: XS var n -> String #

showList :: [XS var n] -> ShowS #

KnownNat n => Semigroup (XS var n) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Monomial.Indexed

Methods

(<>) :: XS var n -> XS var n -> XS var n #

sconcat :: NonEmpty (XS var n) -> XS var n #

stimes :: Integral b => b -> XS var n -> XS var n #

KnownNat n => Monoid (XS var n) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Monomial.Indexed

Methods

mempty :: XS var n #

mappend :: XS var n -> XS var n -> XS var n #

mconcat :: [XS var n] -> XS var n #

KnownSymbol var => Pretty (XS var n) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Monomial.Indexed

Methods

pretty :: XS var n -> String Source #

prettyInParens :: XS var n -> String Source #

(KnownNat n, KnownSymbol v) => Monomial (XS v n) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Monomial.Indexed

Associated Types

type VarM (XS v n) :: Type Source #

Methods

normalizeM :: XS v n -> XS v n Source #

isNormalM :: XS v n -> Bool Source #

fromListM :: [(VarM (XS v n), Int)] -> XS v n Source #

toListM :: XS v n -> [(VarM (XS v n), Int)] Source #

emptyM :: XS v n Source #

isEmptyM :: XS v n -> Bool Source #

variableM :: VarM (XS v n) -> XS v n Source #

singletonM :: VarM (XS v n) -> Int -> XS v n Source #

mulM :: XS v n -> XS v n -> XS v n Source #

productM :: [XS v n] -> XS v n Source #

powM :: XS v n -> Int -> XS v n Source #

divM :: XS v n -> XS v n -> Maybe (XS v n) Source #

diffM :: Num c => VarM (XS v n) -> Int -> XS v n -> Maybe (XS v n, c) Source #

maxDegM :: XS v n -> Int Source #

totalDegM :: XS v n -> Int Source #

evalM :: Num c => (VarM (XS v n) -> c) -> XS v n -> c Source #

varSubsM :: (VarM (XS v n) -> VarM (XS v n)) -> XS v n -> XS v n Source #

termSubsM :: Num c => (VarM (XS v n) -> Maybe c) -> (XS v n, c) -> (XS v n, c) Source #

type VarM (XS v n) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Monomial.Indexed

type VarM (XS v n) = Index

xsVar :: KnownSymbol var => XS var n -> String Source #

Name of the variables

nOfXS :: KnownNat n => XS var n -> Int Source #

Number of variables

emptyness

emptyXS :: KnownNat n => XS v n Source #

normalization

conversion

xsFromList :: KnownNat n => [(Index, Int)] -> XS v n Source #

from (variable,exponent) pairs

xsToList :: XS v n -> [(Index, Int)] Source #

to (variable,exponent) pairs

xsFromExponents :: KnownNat n => [Int] -> XS v n Source #

from exponent list

xsToExponents :: KnownNat n => XS v n -> [Int] Source #

to exponent list

creation

singletonXS :: KnownNat n => Index -> Int -> XS v n Source #

multiplication

mulXS :: KnownNat n => XS v n -> XS v n -> XS v n Source #

productXS :: (KnownNat n, Foldable f) => f (XS v n) -> XS v n Source #

powXS :: XS v n -> Int -> XS v n Source #

divXS :: KnownNat n => XS v n -> XS v n -> Maybe (XS v n) Source #

degree

maxDegXS :: XS v n -> Int Source #

evaluation and substituion

evalXS :: Num c => (Index -> c) -> XS v n -> c Source #

varSubsXS :: KnownNat n => (Index -> Index) -> XS v n -> XS v n Source #

termSubsXS :: (KnownNat n, Num c) => (Index -> Maybe c) -> (XS v n, c) -> (XS v n, c) Source #

differentiation

diffXS :: Num c => Index -> Int -> XS v n -> Maybe (XS v n, c) Source #

changing the number of variables

embedXS :: (KnownNat n, KnownNat m) => XS v n -> XS v m Source #

You can always increase the number of variables; you can also decrease, if don't use the last few ones.

This will throw an error if you try to eliminate variables which are in fact used. To do that, you can instead substitute 1 into them.