Safe Haskell | Safe-Infered |
---|

- data Interval a = Iv (Poset a) (a, a)
- ivPoset :: Interval t -> Poset t
- intervalIsos :: (Ord a1, Ord a) => Interval a -> Interval a1 -> [[(a, a1)]]
- isIntervalIso :: (Eq b, Eq a) => Interval a -> Interval b -> Bool
- intervalIsoMap :: Ord b => Poset b -> Map (Interval b) (Maybe (Interval b))
- 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 :: (Eq k, Num 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 :: (Eq a, Fractional a, Ord t) => 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 :: (Eq k, Num k, Ord a) => 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, FiniteField 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

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.

(Eq k, Num k, Ord a) => Coalgebra k (Interval a) | |

(Eq k, Num k, Ord a) => Algebra k (Interval a) | 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 ]. |

Eq a => Eq (Interval a) | |

Ord a => Ord (Interval a) | |

Show a => Show (Interval a) | |

(Eq k, Fractional k, Ord a, Show a) => HasInverses (Vect k (Interval a)) |

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

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

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

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.