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

Portabilityportable
Stabilityprovisional
Maintainermasahiro.sakai@gmail.com
Safe HaskellNone

Data.Polynomial

Contents

Description

Synopsis

Polynomial type

data Polynomial r v Source

Polynomial over commutative ring r

Instances

Typeable2 Polynomial 
SQFree (UPolynomial Integer) 
SQFree (UPolynomial Rational) 
Nat p => SQFree (UPolynomial (PrimeField p)) 
Factor (UPolynomial Integer) 
Factor (UPolynomial Rational) 
Nat p => Factor (UPolynomial (PrimeField p)) 
(Eq r, Eq v) => Eq (Polynomial r v) 
(Eq k, Num k, Ord v) => Num (Polynomial k v) 
(Ord r, Ord v) => Ord (Polynomial r 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) 
(Eq k, Num k, Ord v) => Vars (Polynomial k v) v 
(Eq k, Num k, Ord v) => Var (Polynomial k v) v 

Conversion

class Vars a v => Var a v | a -> v whereSource

Methods

var :: v -> aSource

Instances

Ord v => Var (Monomial v) v 
(Eq k, Num k, Ord v) => Var (Polynomial k v) v 

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

construct a polynomial from a constant

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

list of monomials

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

construct a polynomial from a list of monomials

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

fromTerm :: (Eq k, Num k, Ord v) => Term 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 (Monomial v) 
Degree (Polynomial k v) 

class Ord v => Vars a v | a -> v whereSource

Methods

vars :: a -> Set vSource

Instances

Ord v => Vars (Monomial v) v 
(Eq k, Num k, Ord v) => Vars (Polynomial k v) v 

lt :: (Eq k, Num k, Ord v) => MonomialOrder v -> Polynomial k v -> Term k vSource

leading term with respect to a given monomial order

lc :: (Eq k, Num k, Ord v) => MonomialOrder v -> Polynomial k v -> kSource

leading coefficient with respect to a given monomial order

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

leading monomial with respect to a given monomial order

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

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

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

Operations

class Factor a whereSource

Factorization of polynomials

Methods

factor :: a -> [(a, Integer)]Source

factor a polynomial p into p1 ^ n1 + p2 ^ n2 + .. and return a list [(p1,n1), (p2,n2), ..].

class SQFree a whereSource

Square-free factorization of polynomials

Methods

sqfree :: a -> [(a, Integer)]Source

factor a polynomial p into p1 ^ n1 + p2 ^ n2 + .. and return a list [(p1,n1), (p2,n2), ..].

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

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

Substitution or bind

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

divModMP :: 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

Univariate polynomials

type UPolynomial r = Polynomial r XSource

Univariate polynomials over commutative ring r

type UTerm k = Term k XSource

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

division of univariate polynomials

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

division of univariate polynomials

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

division of univariate polynomials

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

GCD of univariate polynomials

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

LCM of univariate polynomials

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

Extended GCD algorithm

pdivMod :: (Eq r, Num r) => UPolynomial r -> UPolynomial r -> (r, UPolynomial r, UPolynomial r)Source

pseudo division

pdiv :: (Eq r, Num r) => UPolynomial r -> UPolynomial r -> UPolynomial rSource

pseudo quotient

pmod :: (Eq r, Num r) => UPolynomial r -> UPolynomial r -> UPolynomial rSource

pseudo reminder

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

GCD of univariate polynomials

Term

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

tmult :: (Num k, Ord v) => Term k v -> Term k v -> Term k vSource

tdivides :: (Fractional k, Ord v) => Term k v -> Term k v -> BoolSource

tdiv :: (Fractional k, Ord v) => Term k v -> Term k v -> Term k vSource

tderiv :: (Eq k, Num k, Ord v) => Term k v -> v -> Term k vSource

tintegral :: (Eq k, Fractional k, Ord v) => Term k v -> v -> Term k vSource

Monic monomial

data Monomial v Source

Monic monomials

Instances

Typeable1 Monomial 
Eq v => Eq (Monomial v) 
Ord v => Ord (Monomial v) 
(Ord v, Show v) => Show (Monomial v) 
NFData v => NFData (Monomial v) 
Degree (Monomial v) 
Ord v => Vars (Monomial v) v 
Ord v => Var (Monomial v) v 

mindices :: Ord v => Monomial v -> [(v, Integer)]Source

mderiv :: Ord v => Monomial v -> v -> (Integer, Monomial v)Source

Monomial order

lex :: Ord v => MonomialOrder vSource

Lexicographic order

revlex :: Ord v => Monomial v -> Monomial 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