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

Safe HaskellNone
LanguageHaskell2010

Algebra.Ring.Polynomial.Labeled

Synopsis

Documentation

class UniqueList xs => IsUniqueList xs Source #

Instances

UniqueList xs => IsUniqueList xs Source # 

data LabPolynomial poly vars where Source #

Constructors

LabelPolynomial :: (IsUniqueList vars, Length vars ~ Arity poly) => {..} -> LabPolynomial poly vars 

Fields

Instances

(KnownSymbol symb, SingI [Symbol] vars, UniqueList vars, IsPolynomial poly, Wraps vars poly, (~) Bool (Elem Symbol symb vars) True) => IsLabel symb (LabPolynomial poly vars) Source #

This instance allows something like #x :: LabPolynomial (OrderedPolynomial Integer Grevlex 3) '["x", "y", "z"].

Methods

fromLabel :: Proxy# Symbol symb -> LabPolynomial poly vars #

(Wraps vars poly, LeftModule Integer poly) => LeftModule Integer (LabPolynomial poly vars) Source # 

Methods

(.*) :: Integer -> LabPolynomial poly vars -> LabPolynomial poly vars #

(Wraps vars poly, LeftModule Natural poly) => LeftModule Natural (LabPolynomial poly vars) Source # 

Methods

(.*) :: Natural -> LabPolynomial poly vars -> LabPolynomial poly vars #

(Wraps vars poly, RightModule Integer poly) => RightModule Integer (LabPolynomial poly vars) Source # 

Methods

(*.) :: LabPolynomial poly vars -> Integer -> LabPolynomial poly vars #

(Wraps vars poly, RightModule Natural poly) => RightModule Natural (LabPolynomial poly vars) Source # 

Methods

(*.) :: LabPolynomial poly vars -> Natural -> LabPolynomial poly vars #

(Wraps vars poly, LeftModule (Scalar r) poly) => LeftModule (Scalar r) (LabPolynomial poly vars) Source # 

Methods

(.*) :: Scalar r -> LabPolynomial poly vars -> LabPolynomial poly vars #

(Wraps vars poly, RightModule (Scalar r) poly) => RightModule (Scalar r) (LabPolynomial poly vars) Source # 

Methods

(*.) :: LabPolynomial poly vars -> Scalar r -> LabPolynomial poly vars #

(Wraps vars poly, Eq poly) => Eq (LabPolynomial poly vars) Source # 

Methods

(==) :: LabPolynomial poly vars -> LabPolynomial poly vars -> Bool #

(/=) :: LabPolynomial poly vars -> LabPolynomial poly vars -> Bool #

(UniqueList vars, (~) Nat (Arity poly) (Length Symbol vars), Num poly) => Num (LabPolynomial poly vars) Source # 

Methods

(+) :: LabPolynomial poly vars -> LabPolynomial poly vars -> LabPolynomial poly vars #

(-) :: LabPolynomial poly vars -> LabPolynomial poly vars -> LabPolynomial poly vars #

(*) :: LabPolynomial poly vars -> LabPolynomial poly vars -> LabPolynomial poly vars #

negate :: LabPolynomial poly vars -> LabPolynomial poly vars #

abs :: LabPolynomial poly vars -> LabPolynomial poly vars #

signum :: LabPolynomial poly vars -> LabPolynomial poly vars #

fromInteger :: Integer -> LabPolynomial poly vars #

(Wraps vars poly, Ord poly) => Ord (LabPolynomial poly vars) Source # 

Methods

compare :: LabPolynomial poly vars -> LabPolynomial poly vars -> Ordering #

(<) :: LabPolynomial poly vars -> LabPolynomial poly vars -> Bool #

(<=) :: LabPolynomial poly vars -> LabPolynomial poly vars -> Bool #

(>) :: LabPolynomial poly vars -> LabPolynomial poly vars -> Bool #

(>=) :: LabPolynomial poly vars -> LabPolynomial poly vars -> Bool #

max :: LabPolynomial poly vars -> LabPolynomial poly vars -> LabPolynomial poly vars #

min :: LabPolynomial poly vars -> LabPolynomial poly vars -> LabPolynomial poly vars #

(PrettyCoeff (Coefficient poly), IsOrderedPolynomial poly, SingI [Symbol] vars) => Show (LabPolynomial poly vars) Source # 

Methods

showsPrec :: Int -> LabPolynomial poly vars -> ShowS #

show :: LabPolynomial poly vars -> String #

showList :: [LabPolynomial poly vars] -> ShowS #

(IntegralDomain poly, Wraps vars poly) => IntegralDomain (LabPolynomial poly vars) Source # 

Methods

divides :: LabPolynomial poly vars -> LabPolynomial poly vars -> Bool #

maybeQuot :: LabPolynomial poly vars -> LabPolynomial poly vars -> Maybe (LabPolynomial poly vars) #

(GCDDomain poly, Wraps vars poly) => GCDDomain (LabPolynomial poly vars) Source # 

Methods

gcd :: LabPolynomial poly vars -> LabPolynomial poly vars -> LabPolynomial poly vars #

reduceFraction :: LabPolynomial poly vars -> LabPolynomial poly vars -> (LabPolynomial poly vars, LabPolynomial poly vars) #

lcm :: LabPolynomial poly vars -> LabPolynomial poly vars -> LabPolynomial poly vars #

(UFD poly, Wraps vars poly) => UFD (LabPolynomial poly vars) Source # 
(PID poly, Wraps vars poly) => PID (LabPolynomial poly vars) Source # 

Methods

egcd :: LabPolynomial poly vars -> LabPolynomial poly vars -> (LabPolynomial poly vars, LabPolynomial poly vars, LabPolynomial poly vars) #

(Euclidean poly, Wraps vars poly) => Euclidean (LabPolynomial poly vars) Source # 

Methods

degree :: LabPolynomial poly vars -> Maybe Natural #

divide :: LabPolynomial poly vars -> LabPolynomial poly vars -> (LabPolynomial poly vars, LabPolynomial poly vars) #

quot :: LabPolynomial poly vars -> LabPolynomial poly vars -> LabPolynomial poly vars #

rem :: LabPolynomial poly vars -> LabPolynomial poly vars -> LabPolynomial poly vars #

(Wraps vars poly, Commutative poly) => Commutative (LabPolynomial poly vars) Source # 
(UnitNormalForm poly, Wraps vars poly) => UnitNormalForm (LabPolynomial poly vars) Source # 

Methods

splitUnit :: LabPolynomial poly vars -> (LabPolynomial poly vars, LabPolynomial poly vars) #

(ZeroProductSemiring poly, Wraps vars poly) => ZeroProductSemiring (LabPolynomial poly vars) Source # 
(Wraps vars poly, Ring poly) => Ring (LabPolynomial poly vars) Source # 

Methods

fromInteger :: Integer -> LabPolynomial poly vars #

(Wraps vars poly, Rig poly) => Rig (LabPolynomial poly vars) Source # 

Methods

fromNatural :: Natural -> LabPolynomial poly vars #

(Wraps vars poly, DecidableZero poly) => DecidableZero (LabPolynomial poly vars) Source # 

Methods

isZero :: LabPolynomial poly vars -> Bool #

(DecidableUnits poly, Wraps vars poly) => DecidableUnits (LabPolynomial poly vars) Source # 

Methods

recipUnit :: LabPolynomial poly vars -> Maybe (LabPolynomial poly vars) #

isUnit :: LabPolynomial poly vars -> Bool #

(^?) :: Integral n => LabPolynomial poly vars -> n -> Maybe (LabPolynomial poly vars) #

(DecidableAssociates poly, Wraps vars poly) => DecidableAssociates (LabPolynomial poly vars) Source # 

Methods

isAssociate :: LabPolynomial poly vars -> LabPolynomial poly vars -> Bool #

(Wraps vars poly, Unital poly) => Unital (LabPolynomial poly vars) Source # 

Methods

one :: LabPolynomial poly vars #

pow :: LabPolynomial poly vars -> Natural -> LabPolynomial poly vars #

productWith :: Foldable f => (a -> LabPolynomial poly vars) -> f a -> LabPolynomial poly vars #

(Wraps vars poly, Group poly) => Group (LabPolynomial poly vars) Source # 

Methods

(-) :: LabPolynomial poly vars -> LabPolynomial poly vars -> LabPolynomial poly vars #

negate :: LabPolynomial poly vars -> LabPolynomial poly vars #

subtract :: LabPolynomial poly vars -> LabPolynomial poly vars -> LabPolynomial poly vars #

times :: Integral n => n -> LabPolynomial poly vars -> LabPolynomial poly vars #

(Wraps vars poly, Multiplicative poly) => Multiplicative (LabPolynomial poly vars) Source # 

Methods

(*) :: LabPolynomial poly vars -> LabPolynomial poly vars -> LabPolynomial poly vars #

pow1p :: LabPolynomial poly vars -> Natural -> LabPolynomial poly vars #

productWith1 :: Foldable1 f => (a -> LabPolynomial poly vars) -> f a -> LabPolynomial poly vars #

(Wraps vars poly, Semiring poly) => Semiring (LabPolynomial poly vars) Source # 
(Wraps vars poly, Monoidal poly) => Monoidal (LabPolynomial poly vars) Source # 

Methods

zero :: LabPolynomial poly vars #

sinnum :: Natural -> LabPolynomial poly vars -> LabPolynomial poly vars #

sumWith :: Foldable f => (a -> LabPolynomial poly vars) -> f a -> LabPolynomial poly vars #

(Wraps vars poly, Additive poly) => Additive (LabPolynomial poly vars) Source # 

Methods

(+) :: LabPolynomial poly vars -> LabPolynomial poly vars -> LabPolynomial poly vars #

sinnum1p :: Natural -> LabPolynomial poly vars -> LabPolynomial poly vars #

sumWith1 :: Foldable1 f => (a -> LabPolynomial poly vars) -> f a -> LabPolynomial poly vars #

(Wraps vars poly, Abelian poly) => Abelian (LabPolynomial poly vars) Source # 
(IsOrderedPolynomial poly, Wraps vars poly) => IsOrderedPolynomial (LabPolynomial poly vars) Source # 

Associated Types

type MOrder (LabPolynomial poly vars) :: * Source #

Methods

coeff :: OrderedMonomial * (MOrder (LabPolynomial poly vars)) (Arity (LabPolynomial poly vars)) -> LabPolynomial poly vars -> Coefficient (LabPolynomial poly vars) Source #

terms :: LabPolynomial poly vars -> Map (OrderedMonomial * (MOrder (LabPolynomial poly vars)) (Arity (LabPolynomial poly vars))) (Coefficient (LabPolynomial poly vars)) Source #

leadingTerm :: LabPolynomial poly vars -> (Coefficient (LabPolynomial poly vars), OrderedMonomial * (MOrder (LabPolynomial poly vars)) (Arity (LabPolynomial poly vars))) Source #

leadingMonomial :: LabPolynomial poly vars -> OrderedMonomial * (MOrder (LabPolynomial poly vars)) (Arity (LabPolynomial poly vars)) Source #

leadingCoeff :: LabPolynomial poly vars -> Coefficient (LabPolynomial poly vars) Source #

orderedMonomials :: LabPolynomial poly vars -> Set (OrderedMonomial * (MOrder (LabPolynomial poly vars)) (Arity (LabPolynomial poly vars))) Source #

fromOrderedMonomial :: OrderedMonomial * (MOrder (LabPolynomial poly vars)) (Arity (LabPolynomial poly vars)) -> LabPolynomial poly vars Source #

toPolynomial :: (Coefficient (LabPolynomial poly vars), OrderedMonomial * (MOrder (LabPolynomial poly vars)) (Arity (LabPolynomial poly vars))) -> LabPolynomial poly vars Source #

polynomial :: Map (OrderedMonomial * (MOrder (LabPolynomial poly vars)) (Arity (LabPolynomial poly vars))) (Coefficient (LabPolynomial poly vars)) -> LabPolynomial poly vars Source #

(>*) :: OrderedMonomial * (MOrder (LabPolynomial poly vars)) (Arity (LabPolynomial poly vars)) -> LabPolynomial poly vars -> LabPolynomial poly vars Source #

(*<) :: LabPolynomial poly vars -> OrderedMonomial * (MOrder (LabPolynomial poly vars)) (Arity (LabPolynomial poly vars)) -> LabPolynomial poly vars Source #

_Terms :: Iso' (LabPolynomial poly vars) (Map (OrderedMonomial * (MOrder (LabPolynomial poly vars)) (Arity (LabPolynomial poly vars))) (Coefficient (LabPolynomial poly vars))) Source #

diff :: Ordinal Nat (Arity (LabPolynomial poly vars)) -> LabPolynomial poly vars -> LabPolynomial poly vars Source #

mapMonomialMonotonic :: (OrderedMonomial * (MOrder (LabPolynomial poly vars)) (Arity (LabPolynomial poly vars)) -> OrderedMonomial * (MOrder (LabPolynomial poly vars)) (Arity (LabPolynomial poly vars))) -> LabPolynomial poly vars -> LabPolynomial poly vars Source #

(IsPolynomial poly, Wraps vars poly) => IsPolynomial (LabPolynomial poly vars) Source # 

Associated Types

type Coefficient (LabPolynomial poly vars) :: * Source #

type Arity (LabPolynomial poly vars) :: Nat Source #

Methods

liftMap :: (Module (Scalar (Coefficient (LabPolynomial poly vars))) alg, Ring alg, Commutative alg) => (Ordinal Nat (Arity (LabPolynomial poly vars)) -> alg) -> LabPolynomial poly vars -> alg Source #

subst :: (Ring alg, Commutative alg, Module (Scalar (Coefficient (LabPolynomial poly vars))) alg) => Sized (Arity (LabPolynomial poly vars)) alg -> LabPolynomial poly vars -> alg Source #

substWith :: (Unital r, Monoidal m) => (Coefficient (LabPolynomial poly vars) -> r -> m) -> Sized (Arity (LabPolynomial poly vars)) r -> LabPolynomial poly vars -> m Source #

sArity' :: LabPolynomial poly vars -> SNat (Arity (LabPolynomial poly vars)) Source #

sArity :: proxy (LabPolynomial poly vars) -> SNat (Arity (LabPolynomial poly vars)) Source #

arity :: proxy (LabPolynomial poly vars) -> Integer Source #

injectCoeff :: Coefficient (LabPolynomial poly vars) -> LabPolynomial poly vars Source #

injectCoeff' :: proxy (LabPolynomial poly vars) -> Coefficient (LabPolynomial poly vars) -> LabPolynomial poly vars Source #

monomials :: LabPolynomial poly vars -> HashSet (Monomial (Arity (LabPolynomial poly vars))) Source #

terms' :: LabPolynomial poly vars -> Map (Monomial (Arity (LabPolynomial poly vars))) (Coefficient (LabPolynomial poly vars)) Source #

coeff' :: Monomial (Arity (LabPolynomial poly vars)) -> LabPolynomial poly vars -> Coefficient (LabPolynomial poly vars) Source #

constantTerm :: LabPolynomial poly vars -> Coefficient (LabPolynomial poly vars) Source #

fromMonomial :: Monomial (Arity (LabPolynomial poly vars)) -> LabPolynomial poly vars Source #

toPolynomial' :: (Coefficient (LabPolynomial poly vars), Monomial (Arity (LabPolynomial poly vars))) -> LabPolynomial poly vars Source #

polynomial' :: Map (Monomial (Arity (LabPolynomial poly vars))) (Coefficient (LabPolynomial poly vars)) -> LabPolynomial poly vars Source #

totalDegree' :: LabPolynomial poly vars -> Natural Source #

var :: Ordinal Nat (Arity (LabPolynomial poly vars)) -> LabPolynomial poly vars Source #

mapCoeff' :: (Coefficient (LabPolynomial poly vars) -> Coefficient (LabPolynomial poly vars)) -> LabPolynomial poly vars -> LabPolynomial poly vars Source #

(>|*) :: Monomial (Arity (LabPolynomial poly vars)) -> LabPolynomial poly vars -> LabPolynomial poly vars Source #

(*|<) :: LabPolynomial poly vars -> Monomial (Arity (LabPolynomial poly vars)) -> LabPolynomial poly vars Source #

(!*) :: Coefficient (LabPolynomial poly vars) -> LabPolynomial poly vars -> LabPolynomial poly vars Source #

_Terms' :: Iso' (LabPolynomial poly vars) (Map (Monomial (Arity (LabPolynomial poly vars))) (Coefficient (LabPolynomial poly vars))) Source #

mapMonomial :: (Monomial (Arity (LabPolynomial poly vars)) -> Monomial (Arity (LabPolynomial poly vars))) -> LabPolynomial poly vars -> LabPolynomial poly vars Source #

type MOrder (LabPolynomial poly vars) Source # 
type MOrder (LabPolynomial poly vars) = MOrder poly
type Coefficient (LabPolynomial poly vars) Source # 
type Coefficient (LabPolynomial poly vars) = Coefficient poly
type Arity (LabPolynomial poly vars) Source # 
type Arity (LabPolynomial poly vars) = Arity poly

type family LabPolynomial' r ord vars where ... Source #

Convenient type-synonym for LabPlynomial wrapping OrderedPolynomial and Unipol.

Equations

LabPolynomial' r ord '[x] = LabPolynomial (Unipol r) '[x] 
LabPolynomial' r ord vars = LabPolynomial (OrderedPolynomial r ord (Length vars)) vars 

type LabUnipol r sym = LabPolynomial (Unipol r) '[sym] Source #

Convenient type-synonym for LabPlynomial wrapping univariate polynomial Unipol.

canonicalMap :: forall xs ys poly poly'. (SingI xs, SingI ys, IsSubsetOf xs ys, Wraps xs poly, Wraps ys poly', IsPolynomial poly, IsPolynomial poly', Coefficient poly ~ Coefficient poly') => LabPolynomial poly xs -> LabPolynomial poly' ys Source #

canonicalMap' :: (SingI xs, SingI ys, IsSubsetOf xs ys, Wraps xs poly, Wraps ys poly', IsPolynomial poly, IsPolynomial poly', Coefficient poly ~ Coefficient poly') => proxy poly' -> proxy' ys -> LabPolynomial poly xs -> LabPolynomial poly' ys Source #

class All ((FlipSym0 @@ ElemSym0) @@ ys) xs ~ True => IsSubsetOf xs ys Source #

Instances

(~) Bool (All a ((@@) [a] (TyFun a Bool -> Type) ((@@) (TyFun a (TyFun [a] Bool -> Type) -> Type) (TyFun [a] (TyFun a Bool -> Type) -> Type) (FlipSym0 [a] a Bool) (ElemSym0 a)) ys) xs) True => IsSubsetOf a xs ys Source # 

Methods

_suppress :: proxy ys -> proxy ys -> x -> x