HaskellForMaths-0.4.9: Combinatorics, group theory, commutative algebra, non-commutative algebra

Safe Haskell | None
Language | Haskell98

Math.Combinatorics.IncidenceAlgebra

Synopsis

- data Interval a = Iv (Poset a) (a, a)
- ivPoset :: Interval t -> Poset t
- intervalIsos :: (Ord a, Ord b) => Interval a -> Interval b -> [[(a, b)]]
- isIntervalIso :: (Ord a, Ord b) => Interval a -> Interval b -> Bool
- intervalIsoMap :: Ord a => Poset a -> Map (Interval a) (Maybe (Interval a))
- intervalIsoClasses :: Ord a => Poset a -> [Interval a]
- unitIA :: (Eq k, Num k, Ord a) => Poset a -> Vect k (Interval a)
- basisIA :: Num k => Poset a -> [Vect k (Interval a)]
- zetaIA :: (Eq k, Num k, Ord a) => Poset a -> Vect k (Interval a)
- muIA1 :: (Num k, Eq k, Ord a, Show a) => Poset a -> Vect k (Interval a)
- muIA :: (Eq k, Num k, Ord a) => Poset a -> Vect k (Interval a)
- invIA1 :: forall t a. (Fractional a, Ord t, Eq a) => Vect a (Interval t) -> Vect a (Interval t)
- invIA :: (Eq k, Fractional k, Ord a) => Vect k (Interval a) -> Maybe (Vect k (Interval a))
- numChainsIA :: (Ord a, Show a) => Poset a -> Vect Q (Interval a)
- etaIA :: (Num k, Ord a, Eq k) => Poset a -> Vect k (Interval a)
- numMaximalChainsIA :: (Ord a, Show a) => Poset a -> Vect Q (Interval a)
- muC :: (Eq k, Num k) => Int -> Vect k (Interval Int)
- muB :: (Eq k, Num k) => Int -> Vect k (Interval [Int])
- muL :: (Ord a, Num a) => Int -> [a] -> Vect Int (Interval [[a]])
- toIsoClasses :: (Eq k, Num k, Ord a) => Vect k (Interval a) -> Vect k (Interval a)
- toIsoClasses' :: (Eq k, Num k, Ord a) => Poset a -> Vect k (Interval a) -> Vect k (Interval a)

# Documentation

data Interval a Source #

A type to represent an interval in a poset. The (closed) interval [x,y] is the set {z | x <= z <= y} within the poset. Note that the "empty interval" is not an interval - that is, the interval [x,y] is only defined for x <= y. The (closed) intervals within a poset form a basis for the incidence algebra as a k-vector space.

Constructors

Iv (Poset a) (a, a) |

#### Instances

Instances details

(Eq k, Num k, Ord a) => Coalgebra k (Interval a) Source # |
Instance details Defined in Math.Combinatorics.IncidenceAlgebra Methods counit :: Vect k (Interval a) -> k Source # comult :: Vect k (Interval a) -> Vect k (Tensor (Interval a) (Interval a)) Source #

(Eq k, Num k, Ord a) => Algebra k (Interval a) Source #

The incidence algebra of a poset is the free k-vector space having as its basis the set of intervals in the poset, with multiplication defined by concatenation of intervals. The incidence algebra can also be thought of as the vector space of functions from intervals to k, with multiplication defined by the convolution (f*g)(x,y) = sum [ f(x,z) g(z,y) | x <= z <= y ].

Instance details Defined in Math.Combinatorics.IncidenceAlgebra Methods unit :: k -> Vect k (Interval a) Source # mult :: Vect k (Tensor (Interval a) (Interval a)) -> Vect k (Interval a) Source #
Eq a => Eq (Interval a) Source # |
Instance details Defined in Math.Combinatorics.IncidenceAlgebra Methods (==) :: Interval a -> Interval a -> Bool (/=) :: Interval a -> Interval a -> Bool
Ord a => Ord (Interval a) Source # |
Instance details Defined in Math.Combinatorics.IncidenceAlgebra Methods compare :: Interval a -> Interval a -> Ordering (<) :: Interval a -> Interval a -> Bool (<=) :: Interval a -> Interval a -> Bool (>) :: Interval a -> Interval a -> Bool (>=) :: Interval a -> Interval a -> Bool max :: Interval a -> Interval a -> Interval a min :: Interval a -> Interval a -> Interval a
Show a => Show (Interval a) Source # |
Instance details Defined in Math.Combinatorics.IncidenceAlgebra Methods showsPrec :: Int -> Interval a -> ShowS show :: Interval a -> String showList :: [Interval a] -> ShowS
(Eq k, Fractional k, Ord a, Show a) => HasInverses (Vect k (Interval a)) Source # |
Instance details Defined in Math.Combinatorics.IncidenceAlgebra Methods inverse :: Vect k (Interval a) -> Vect k (Interval a) Source #

ivPoset :: Interval t -> Poset t Source #

intervalIsos :: (Ord a, Ord b) => Interval a -> Interval b -> [[(a, b)]] Source #

isIntervalIso :: (Ord a, Ord b) => Interval a -> Interval b -> Bool Source #

intervalIsoMap :: Ord a => Poset a -> Map (Interval a) (Maybe (Interval a)) Source #

intervalIsoClasses :: Ord a => Poset a -> [Interval a] Source #

List representatives of the order isomorphism classes of intervals in a poset

unitIA :: (Eq k, Num k, Ord a) => Poset a -> Vect k (Interval a) Source #

The unit of the incidence algebra of a poset

basisIA :: Num k => Poset a -> [Vect k (Interval a)] Source #

zetaIA :: (Eq k, Num k, Ord a) => Poset a -> Vect k (Interval a) Source #

The zeta function of a poset

muIA1 :: (Num k, Eq k, Ord a, Show a) => Poset a -> Vect k (Interval a) Source #

muIA :: (Eq k, Num k, Ord a) => Poset a -> Vect k (Interval a) Source #

The Mobius function of a poset

invIA1 :: forall t a. (Fractional a, Ord t, Eq a) => Vect a (Interval t) -> Vect a (Interval t) Source #

invIA :: (Eq k, Fractional k, Ord a) => Vect k (Interval a) -> Maybe (Vect k (Interval a)) Source #

The inverse of an element in the incidence algebra of a poset. This is only defined for elements which are non-zero on all intervals (x,x)

numChainsIA :: (Ord a, Show a) => Poset a -> Vect Q (Interval a) Source #

A function (ie element of the incidence algebra) that counts the total number of chains in each interval

etaIA :: (Num k, Ord a, Eq k) => Poset a -> Vect k (Interval a) Source #

numMaximalChainsIA :: (Ord a, Show a) => Poset a -> Vect Q (Interval a) Source #

A function (ie element of the incidence algebra) that counts the number of maximal chains in each interval

muC :: (Eq k, Num k) => Int -> Vect k (Interval Int) Source #

muB :: (Eq k, Num k) => Int -> Vect k (Interval [Int]) Source #

muL :: (Ord a, Num a) => Int -> [a] -> Vect Int (Interval [[a]]) Source #

toIsoClasses :: (Eq k, Num k, Ord a) => Vect k (Interval a) -> Vect k (Interval a) Source #

`toIsoClasses` is the linear map from the incidence Hopf algebra of a poset to itself, in which each interval is mapped to (the minimal representative of) its isomorphism class. Thus the result can be considered as a linear combination of isomorphism classes of intervals, rather than of intervals themselves. Note that if this operation is to be performed repeatedly for the same poset, then it is more efficient to use `toIsoClasses' poset`, which memoizes the isomorphism class lookup table.

toIsoClasses' :: (Eq k, Num k, Ord a) => Poset a -> Vect k (Interval a) -> Vect k (Interval a) Source #

Given a poset, `toIsoClasses' poset` is the linear map from the incidence Hopf algebra of the poset to itself, in which each interval is mapped to (the minimal representative of) its isomorphism class.