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

Math.Algebra.Polynomial.Exterior.Indexed

Description

Exterior algebra where the variable set looks like {x_1, x_2, ... , x_N}

See https://en.wikipedia.org/wiki/Exterior_algebra

Synopsis

Documentation

newtype ExtAlg (coeff :: *) (var :: Symbol) (n :: Nat) Source #

An exterior 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 ExtAlgn Rational "x" 3 the type of polynomials in the variables x1, x2, x3 with rational coefficients.

Constructors

ExtAlg (FreeMod coeff (Ext var n)) 

Instances

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

Defined in Math.Algebra.Polynomial.Exterior.Indexed

Methods

(==) :: ExtAlg coeff var n -> ExtAlg coeff var n -> Bool #

(/=) :: ExtAlg coeff var n -> ExtAlg coeff var n -> Bool #

(Ring c, KnownSymbol v, KnownNat n) => Num (ExtAlg c v n) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Exterior.Indexed

Methods

(+) :: ExtAlg c v n -> ExtAlg c v n -> ExtAlg c v n #

(-) :: ExtAlg c v n -> ExtAlg c v n -> ExtAlg c v n #

(*) :: ExtAlg c v n -> ExtAlg c v n -> ExtAlg c v n #

negate :: ExtAlg c v n -> ExtAlg c v n #

abs :: ExtAlg c v n -> ExtAlg c v n #

signum :: ExtAlg c v n -> ExtAlg c v n #

fromInteger :: Integer -> ExtAlg c v n #

Ord coeff => Ord (ExtAlg coeff var n) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Exterior.Indexed

Methods

compare :: ExtAlg coeff var n -> ExtAlg coeff var n -> Ordering #

(<) :: ExtAlg coeff var n -> ExtAlg coeff var n -> Bool #

(<=) :: ExtAlg coeff var n -> ExtAlg coeff var n -> Bool #

(>) :: ExtAlg coeff var n -> ExtAlg coeff var n -> Bool #

(>=) :: ExtAlg coeff var n -> ExtAlg coeff var n -> Bool #

max :: ExtAlg coeff var n -> ExtAlg coeff var n -> ExtAlg coeff var n #

min :: ExtAlg coeff var n -> ExtAlg coeff var n -> ExtAlg coeff var n #

Show coeff => Show (ExtAlg coeff var n) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Exterior.Indexed

Methods

showsPrec :: Int -> ExtAlg coeff var n -> ShowS #

show :: ExtAlg coeff var n -> String #

showList :: [ExtAlg coeff var n] -> ShowS #

FreeModule (ExtAlg c v n) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Exterior.Indexed

Associated Types

type BaseF (ExtAlg c v n) Source #

type CoeffF (ExtAlg c v n) Source #

Methods

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

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

IsSigned (ExtAlg c v n) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Exterior.Indexed

Methods

signOf :: ExtAlg c v n -> Maybe Sign Source #

(Ring c, KnownSymbol v, KnownNat n, Pretty (Ext v n)) => Pretty (ExtAlg c v n) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Exterior.Indexed

Methods

pretty :: ExtAlg c v n -> String Source #

prettyInParens :: ExtAlg c v n -> String Source #

(Ring c, KnownSymbol v, KnownNat n) => AlmostPolynomial (ExtAlg c v n) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Exterior.Indexed

Associated Types

type CoeffP (ExtAlg c v n) Source #

type MonomP (ExtAlg c v n) Source #

type VarP (ExtAlg c v n) Source #

Methods

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

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

zeroP :: ExtAlg c v n Source #

isZeroP :: ExtAlg c v n -> Bool Source #

oneP :: ExtAlg c v n Source #

variableP :: VarP (ExtAlg c v n) -> ExtAlg c v n Source #

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

monomP :: MonomP (ExtAlg c v n) -> ExtAlg c v n Source #

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

scalarP :: CoeffP (ExtAlg c v n) -> ExtAlg c v n Source #

addP :: ExtAlg c v n -> ExtAlg c v n -> ExtAlg c v n Source #

subP :: ExtAlg c v n -> ExtAlg c v n -> ExtAlg c v n Source #

negP :: ExtAlg c v n -> ExtAlg c v n Source #

sumP :: [ExtAlg c v n] -> ExtAlg c v n Source #

mulP :: ExtAlg c v n -> ExtAlg c v n -> ExtAlg c v n Source #

productP :: [ExtAlg c v n] -> ExtAlg c v n Source #

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

mulByMonomP :: MonomP (ExtAlg c v n) -> ExtAlg c v n -> ExtAlg c v n Source #

scaleP :: CoeffP (ExtAlg c v n) -> ExtAlg c v n -> ExtAlg c v n Source #

(Ring c, KnownSymbol v, KnownNat n) => Ring (ExtAlg c v n) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Exterior.Indexed

Methods

isZeroR :: ExtAlg c v n -> Bool Source #

signumR :: ExtAlg c v n -> Maybe Sign Source #

absR :: ExtAlg c v n -> ExtAlg c v n Source #

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

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

type BaseF (ExtAlg c v n) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Exterior.Indexed

type BaseF (ExtAlg c v n) = Ext v n
type CoeffF (ExtAlg c v n) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Exterior.Indexed

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

Defined in Math.Algebra.Polynomial.Exterior.Indexed

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

Defined in Math.Algebra.Polynomial.Exterior.Indexed

type MonomP (ExtAlg c v n) = Ext v n
type VarP (ExtAlg c v n) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Exterior.Indexed

type VarP (ExtAlg c v n) = Index

unExtAlg :: ExtAlg c v n -> FreeMod c (Ext v n) Source #

polyVar :: KnownSymbol var => ExtAlg c var n -> String Source #

Name of the variables

nOfExtAlg :: KnownNat n => ExtAlg c var n -> Int Source #

Number of variables

embed :: (Ring c, KnownNat n, KnownNat m) => ExtAlg c v n -> ExtAlg c 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 or 0 into them.

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

Exterior monomials of the variables x1,x2,...,xn. The internal representation is a bit vector encoded as an Integer

Constructors

Ext Integer 

Instances

Instances details
Eq (Ext var n) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Monomial.Exterior.Indexed

Methods

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

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

Ord (Ext var n) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Monomial.Exterior.Indexed

Methods

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

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

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

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

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

max :: Ext var n -> Ext var n -> Ext var n #

min :: Ext var n -> Ext var n -> Ext var n #

Show (Ext var n) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Monomial.Exterior.Indexed

Methods

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

show :: Ext var n -> String #

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

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

Defined in Math.Algebra.Polynomial.Monomial.Exterior.Indexed

Methods

pretty :: Ext var n -> String Source #

prettyInParens :: Ext var n -> String Source #