toysolver-0.0.5: Assorted decision procedures for SAT, Max-SAT, PB, MIP, etc

Portabilitynon-portable (ScopedTypeVariables, TypeFamilies, BangPatterns, DeriveDataTypeable)
Stabilityprovisional
Maintainermasahiro.sakai@gmail.com
Safe HaskellNone

Data.Polynomial

Contents

Description

Synopsis

Polynomial type

data Polynomial k v Source

Polynomial over commutative ring r

Instances

Typeable2 Polynomial 
(Eq k, Num k) => Variables (Polynomial k) 
(Eq k, Eq v) => Eq (Polynomial k v) 
(Eq k, Num k, Ord v) => Num (Polynomial k v) 
(Ord k, Ord v) => Ord (Polynomial k v) 
(Show v, Ord v, Show k) => Show (Polynomial k v) 
(NFData k, NFData v) => NFData (Polynomial k v) 
(Ord k, Num k, Ord v, PrettyCoeff k, PrettyVar v) => Pretty (Polynomial k v) 
(Eq k, Num k, Ord v) => VectorSpace (Polynomial k v) 
(Eq k, Num k, Ord v) => AdditiveGroup (Polynomial k v) 
(Num c, Ord c, PrettyCoeff c, Ord v, PrettyVar v) => PrettyCoeff (Polynomial c v) 
Degree (Polynomial k v) 

type UPolynomial r = Polynomial r XSource

Univariate polynomials over commutative ring r

data X Source

Constructors

X 

Conversion

class Variables f whereSource

Methods

var :: Ord v => v -> f vSource

variables :: Ord v => f v -> Set vSource

Instances

constant :: (Eq k, Num k, Ord v) => k -> Polynomial k vSource

construct a polynomial from a constant

terms :: Polynomial k v -> [Monomial k v]Source

list of monomials

fromTerms :: (Eq k, Num k, Ord v) => [Monomial k v] -> Polynomial k vSource

construct a polynomial from a list of monomials

fromCoeffMap :: (Eq k, Num k, Ord v) => Map (MonicMonomial v) k -> Polynomial k vSource

fromMonomial :: (Eq k, Num k, Ord v) => Monomial k v -> Polynomial k vSource

construct a polynomial from a monomial

Query

class Degree t whereSource

total degree of a given polynomial

Methods

deg :: t -> IntegerSource

Instances

Degree AReal

Degree of the algebraic number.

If the algebraic number's minimalPolynomial has degree n, then the algebraic number is said to be degree n.

Degree (MonicMonomial v) 
Degree (Polynomial k v) 

leadingTerm :: (Eq k, Num k, Ord v) => MonomialOrder v -> Polynomial k v -> Monomial k vSource

leading term with respect to a given monomial order

coeff :: (Num k, Ord v) => MonicMonomial v -> Polynomial k v -> kSource

isPrimitive :: (Eq k, Num k, ContPP k, Ord v) => Polynomial k v -> BoolSource

Operations

class ContPP k whereSource

Methods

cont :: Ord v => Polynomial k v -> kSource

Content of a polynomial

pp :: Ord v => Polynomial k v -> Polynomial k vSource

Primitive part of a polynomial

Instances

deriv :: (Eq k, Num k, Ord v) => Polynomial k v -> v -> Polynomial k vSource

Formal derivative of polynomials

integral :: (Eq k, Fractional k, Ord v) => Polynomial k v -> v -> Polynomial k vSource

Formal integral of polynomials

eval :: (Num k, Ord v) => (v -> k) -> Polynomial k v -> kSource

Evaluation

evalA :: forall k v f. (Num k, Ord v, Applicative f) => (v -> f k) -> Polynomial k v -> f kSource

Evaluation

evalM :: (Num k, Ord v, Monad m) => (v -> m k) -> Polynomial k v -> m kSource

Evaluation

subst :: (Eq k, Num k, Ord v1, Ord v2) => Polynomial k v1 -> (v1 -> Polynomial k v2) -> Polynomial k v2Source

Substitution or bind

substA :: forall k v1 v2 f. (Eq k, Num k, Ord v1, Ord v2, Applicative f) => Polynomial k v1 -> (v1 -> f (Polynomial k v2)) -> f (Polynomial k v2)Source

Substitution or bind

substM :: (Eq k, Num k, Ord v1, Ord v2, Monad m) => Polynomial k v1 -> (v1 -> m (Polynomial k v2)) -> m (Polynomial k v2)Source

Substitution or bind

isRootOf :: (Eq k, Num k) => k -> UPolynomial k -> BoolSource

mapVar :: (Eq k, Num k, Ord v1, Ord v2) => (v1 -> v2) -> Polynomial k v1 -> Polynomial k v2Source

mapCoeff :: (Eq k1, Num k1, Ord v) => (k -> k1) -> Polynomial k v -> Polynomial k1 vSource

polyDiv :: (Eq k, Fractional k) => UPolynomial k -> UPolynomial k -> UPolynomial kSource

division of univariate polynomials

polyMod :: (Eq k, Fractional k) => UPolynomial k -> UPolynomial k -> UPolynomial kSource

division of univariate polynomials

polyDivMod :: (Eq k, Fractional k) => UPolynomial k -> UPolynomial k -> (UPolynomial k, UPolynomial k)Source

division of univariate polynomials

polyGCD :: (Eq k, Fractional k) => UPolynomial k -> UPolynomial k -> UPolynomial kSource

GCD of univariate polynomials

polyLCM :: (Eq k, Fractional k) => UPolynomial k -> UPolynomial k -> UPolynomial kSource

LCM of univariate polynomials

prem :: (Eq r, Integral r) => UPolynomial r -> UPolynomial r -> UPolynomial rSource

pseudo reminder

polyGCD' :: (Eq r, Integral r) => UPolynomial r -> UPolynomial r -> UPolynomial rSource

GCD of univariate polynomials

polyMDivMod :: forall k v. (Eq k, Fractional k, Ord v) => MonomialOrder v -> Polynomial k v -> [Polynomial k v] -> ([Polynomial k v], Polynomial k v)Source

Multivariate division algorithm

reduce :: (Eq k, Fractional k, Ord v) => MonomialOrder v -> Polynomial k v -> [Polynomial k v] -> Polynomial k vSource

Multivariate division algorithm

Monomial

type Monomial k v = (k, MonicMonomial v)Source

monomialProd :: (Num k, Ord v) => Monomial k v -> Monomial k v -> Monomial k vSource

monomialDiv :: (Fractional k, Ord v) => Monomial k v -> Monomial k v -> Monomial k vSource

monomialDeriv :: (Eq k, Num k, Ord v) => Monomial k v -> v -> Monomial k vSource

monomialIntegral :: (Eq k, Fractional k, Ord v) => Monomial k v -> v -> Monomial k vSource

Monic monomial

mmMapVar :: (Ord v1, Ord v2) => (v1 -> v2) -> MonicMonomial v1 -> MonicMonomial v2Source

Monomial order

lex :: Ord v => MonomialOrder vSource

Lexicographic order

revlex :: Ord v => MonicMonomial v -> MonicMonomial v -> OrderingSource

Reverse lexicographic order Note that revlex is NOT a monomial order.

grlex :: Ord v => MonomialOrder vSource

graded lexicographic order

grevlex :: Ord v => MonomialOrder vSource

graded reverse lexicographic order

Pretty Printing

class PrettyVar a whereSource

Instances