polynomial-algebra-0.1: Multivariate polynomial rings
Safe HaskellNone
LanguageHaskell2010

Math.Algebra.Polynomial.Multivariate.Infinite

Description

Multivariate polynomials where the variable set is the countably infinite set {x_1, x_2, x_3, ...}

Synopsis

Documentation

newtype Poly (coeff :: *) (var :: Symbol) Source #

A multivariate polynomial in with a given coefficient ring.

It is also indexed by the (shared) name of the variables and the number of variable. For example Polyn Rational "x" 3 the type of polynomials in the variables x1, x2, x3 with rational coefficients.

Constructors

Poly (FreeMod coeff (XInf var)) 

Instances

Instances details
Eq coeff => Eq (Poly coeff var) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Multivariate.Infinite

Methods

(==) :: Poly coeff var -> Poly coeff var -> Bool #

(/=) :: Poly coeff var -> Poly coeff var -> Bool #

(Ring c, KnownSymbol v) => Num (Poly c v) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Multivariate.Infinite

Methods

(+) :: Poly c v -> Poly c v -> Poly c v #

(-) :: Poly c v -> Poly c v -> Poly c v #

(*) :: Poly c v -> Poly c v -> Poly c v #

negate :: Poly c v -> Poly c v #

abs :: Poly c v -> Poly c v #

signum :: Poly c v -> Poly c v #

fromInteger :: Integer -> Poly c v #

Ord coeff => Ord (Poly coeff var) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Multivariate.Infinite

Methods

compare :: Poly coeff var -> Poly coeff var -> Ordering #

(<) :: Poly coeff var -> Poly coeff var -> Bool #

(<=) :: Poly coeff var -> Poly coeff var -> Bool #

(>) :: Poly coeff var -> Poly coeff var -> Bool #

(>=) :: Poly coeff var -> Poly coeff var -> Bool #

max :: Poly coeff var -> Poly coeff var -> Poly coeff var #

min :: Poly coeff var -> Poly coeff var -> Poly coeff var #

Show coeff => Show (Poly coeff var) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Multivariate.Infinite

Methods

showsPrec :: Int -> Poly coeff var -> ShowS #

show :: Poly coeff var -> String #

showList :: [Poly coeff var] -> ShowS #

FreeModule (Poly c v) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Multivariate.Infinite

Associated Types

type BaseF (Poly c v) Source #

type CoeffF (Poly c v) Source #

Methods

toFreeModule :: Poly c v -> FreeMod (CoeffF (Poly c v)) (BaseF (Poly c v)) Source #

fromFreeModule :: FreeMod (CoeffF (Poly c v)) (BaseF (Poly c v)) -> Poly c v Source #

IsSigned (Poly c v) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Multivariate.Infinite

Methods

signOf :: Poly c v -> Maybe Sign Source #

(Ring c, KnownSymbol v, Pretty (XInf v)) => Pretty (Poly c v) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Multivariate.Infinite

(Ring c, KnownSymbol v) => Polynomial (Poly c v) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Multivariate.Infinite

Methods

evalP :: Num d => (CoeffP (Poly c v) -> d) -> (VarP (Poly c v) -> d) -> Poly c v -> d Source #

varSubsP :: (VarP (Poly c v) -> VarP (Poly c v)) -> Poly c v -> Poly c v Source #

coeffSubsP :: (VarP (Poly c v) -> Maybe (CoeffP (Poly c v))) -> Poly c v -> Poly c v Source #

subsP :: (VarP (Poly c v) -> Poly c v) -> Poly c v -> Poly c v Source #

(Ring c, KnownSymbol v) => AlmostPolynomial (Poly c v) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Multivariate.Infinite

Associated Types

type CoeffP (Poly c v) Source #

type MonomP (Poly c v) Source #

type VarP (Poly c v) Source #

Methods

fromListP :: [(MonomP (Poly c v), CoeffP (Poly c v))] -> Poly c v Source #

toListP :: Poly c v -> [(MonomP (Poly c v), CoeffP (Poly c v))] Source #

zeroP :: Poly c v Source #

isZeroP :: Poly c v -> Bool Source #

oneP :: Poly c v Source #

variableP :: VarP (Poly c v) -> Poly c v Source #

singletonP :: VarP (Poly c v) -> Int -> Poly c v Source #

monomP :: MonomP (Poly c v) -> Poly c v Source #

monomP' :: MonomP (Poly c v) -> CoeffP (Poly c v) -> Poly c v Source #

scalarP :: CoeffP (Poly c v) -> Poly c v Source #

addP :: Poly c v -> Poly c v -> Poly c v Source #

subP :: Poly c v -> Poly c v -> Poly c v Source #

negP :: Poly c v -> Poly c v Source #

sumP :: [Poly c v] -> Poly c v Source #

mulP :: Poly c v -> Poly c v -> Poly c v Source #

productP :: [Poly c v] -> Poly c v Source #

coeffOfP :: MonomP (Poly c v) -> Poly c v -> CoeffP (Poly c v) Source #

mulByMonomP :: MonomP (Poly c v) -> Poly c v -> Poly c v Source #

scaleP :: CoeffP (Poly c v) -> Poly c v -> Poly c v Source #

(Ring c, KnownSymbol v) => Ring (Poly c v) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Multivariate.Infinite

Methods

isZeroR :: Poly c v -> Bool Source #

signumR :: Poly c v -> Maybe Sign Source #

absR :: Poly c v -> Poly c v Source #

isSignedR :: Proxy (Poly c v) -> Bool Source #

isAtomicR :: Proxy (Poly c v) -> Bool Source #

type BaseF (Poly c v) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Multivariate.Infinite

type BaseF (Poly c v) = XInf v
type CoeffF (Poly c v) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Multivariate.Infinite

type CoeffF (Poly c v) = c
type CoeffP (Poly c v) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Multivariate.Infinite

type CoeffP (Poly c v) = c
type MonomP (Poly c v) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Multivariate.Infinite

type MonomP (Poly c v) = XInf v
type VarP (Poly c v) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Multivariate.Infinite

type VarP (Poly c v) = Index

unPoly :: Poly c v -> FreeMod c (XInf v) Source #

polyVar :: KnownSymbol var => Poly c var -> String Source #

Name of the variables

renamePolyVar :: Poly c var1 -> Poly c var2 Source #

fromZPoly :: (Ring c, KnownSymbol v) => Poly Integer v -> Poly c v Source #

Change the coefficient ring (from integers)

fromQPoly :: (Field c, KnownSymbol v) => Poly Rational v -> Poly c v Source #

Change the coefficient field (from rationals)

truncate :: (Eq c, Num c, KnownNat n) => Poly c v -> Poly c v n Source #

We can always truncate to a given number of variables, simply by substituting zero to the rest

newtype XInf (var :: Symbol) Source #

Monomials of the variables x1,x2,x3,.... The internal representation is a list of exponents: x1^e1*x2^e2*x3^e3... is represented by [e1,e2,e3,...].

We assume that only finitely many nonzero exponents appear.

The type is indexed by the name of the variables.

Constructors

XInf [Int] 

Instances

Instances details
Eq (XInf var) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Monomial.Infinite

Methods

(==) :: XInf var -> XInf var -> Bool #

(/=) :: XInf var -> XInf var -> Bool #

Ord (XInf var) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Monomial.Infinite

Methods

compare :: XInf var -> XInf var -> Ordering #

(<) :: XInf var -> XInf var -> Bool #

(<=) :: XInf var -> XInf var -> Bool #

(>) :: XInf var -> XInf var -> Bool #

(>=) :: XInf var -> XInf var -> Bool #

max :: XInf var -> XInf var -> XInf var #

min :: XInf var -> XInf var -> XInf var #

Show (XInf var) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Monomial.Infinite

Methods

showsPrec :: Int -> XInf var -> ShowS #

show :: XInf var -> String #

showList :: [XInf var] -> ShowS #

Semigroup (XInf var) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Monomial.Infinite

Methods

(<>) :: XInf var -> XInf var -> XInf var #

sconcat :: NonEmpty (XInf var) -> XInf var #

stimes :: Integral b => b -> XInf var -> XInf var #

Monoid (XInf var) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Monomial.Infinite

Methods

mempty :: XInf var #

mappend :: XInf var -> XInf var -> XInf var #

mconcat :: [XInf var] -> XInf var #

KnownSymbol var => Pretty (XInf var) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Monomial.Infinite

KnownSymbol v => Monomial (XInf v) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Monomial.Infinite

Associated Types

type VarM (XInf v) Source #

Methods

normalizeM :: XInf v -> XInf v Source #

isNormalM :: XInf v -> Bool Source #

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

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

emptyM :: XInf v Source #

isEmptyM :: XInf v -> Bool Source #

variableM :: VarM (XInf v) -> XInf v Source #

singletonM :: VarM (XInf v) -> Int -> XInf v Source #

mulM :: XInf v -> XInf v -> XInf v Source #

productM :: [XInf v] -> XInf v Source #

powM :: XInf v -> Int -> XInf v Source #

divM :: XInf v -> XInf v -> Maybe (XInf v) Source #

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

maxDegM :: XInf v -> Int Source #

totalDegM :: XInf v -> Int Source #

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

varSubsM :: (VarM (XInf v) -> VarM (XInf v)) -> XInf v -> XInf v Source #

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

type VarM (XInf v) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Monomial.Infinite

type VarM (XInf v) = Index