UMinho Haskell Libraries (2004.07.02)ContentsIndex
Data.Relation.SetOfPairs
Portability portable
Stability experimental
Maintainer joost.visser@di.uminho.pt
Contents
Representation
Building relations
Basic operations
Closures
Selections (project, slice, chop)
Description
An implementation of relations as sets of pairs.
Synopsis
type Rel a b = Set (a, b)
emptyRel :: Rel a b
mkRel :: (Ord a, Ord b) => [(a, b)] -> Rel a b
identityRel :: Ord a => Set a -> Rel a a
totalRel :: Ord a => Set a -> Rel a a
chainRel :: (Enum n, Num n, Ord n) => n -> Rel n n
dom :: Ord a => Rel a b -> Set a
rng :: Ord b => Rel a b -> Set b
ent :: Ord a => Rel a a -> Set a
pairs :: (Ord a, Ord b) => Rel a b -> [(a, b)]
inv :: (Ord a, Ord b) => Rel a b -> Rel b a
comp :: (Ord a, Eq b, Ord c) => Rel b c -> Rel a b -> Rel a c
reflClose :: Ord a => Rel a a -> Rel a a
symmClose :: Ord a => Rel a a -> Rel a a
transClose :: Ord a => Rel a a -> Rel a a
reflTransClose :: Ord a => Rel a a -> Rel a a
equiv :: Ord b => Rel b b -> Rel b b
project :: (Ord a, Ord b) => Set a -> Rel a b -> Rel a b
projectBackward :: (Ord a, Ord b) => Set b -> Rel a b -> Rel a b
slice :: Ord a => Set a -> Rel a a -> Rel a a
sliceUntil :: Ord a => Set a -> Set a -> Rel a a -> Rel a a
sliceBackward :: Ord a => Set a -> Rel a a -> Rel a a
chop :: Ord a => Set a -> Set a -> Rel a a -> Rel a a
Representation
type Rel a b = Set (a, b)
Type of relations
Building relations
emptyRel :: Rel a b
Build an empty relation.
mkRel :: (Ord a, Ord b) => [(a, b)] -> Rel a b
Build a relation from a list of pairs.
identityRel :: Ord a => Set a -> Rel a a
Build identity relation, which contains an edge from each node to itself.
totalRel :: Ord a => Set a -> Rel a a
Build total relation, which contains an edge from each node to each other node and to itself.
chainRel :: (Enum n, Num n, Ord n) => n -> Rel n n
Build a chain relation of given number of numerals.
Basic operations
dom :: Ord a => Rel a b -> Set a
Obtain the domain of a relation
rng :: Ord b => Rel a b -> Set b
Obtain the range of a relation
ent :: Ord a => Rel a a -> Set a
Obtain all entities in a relation (union of domain and range)
pairs :: (Ord a, Ord b) => Rel a b -> [(a, b)]
Convert relation to a list of pairs.
inv :: (Ord a, Ord b) => Rel a b -> Rel b a
Take the inverse of a relation
comp :: (Ord a, Eq b, Ord c) => Rel b c -> Rel a b -> Rel a c
Compose two relations
Closures
reflClose :: Ord a => Rel a a -> Rel a a
Compute the reflective closure
symmClose :: Ord a => Rel a a -> Rel a a
Compute the symmetric closure
transClose :: Ord a => Rel a a -> Rel a a
Compute the transitive closure
reflTransClose :: Ord a => Rel a a -> Rel a a
Compute the reflexive, transitive closure
equiv :: Ord b => Rel b b -> Rel b b
Compute the reflexive, transitive, symmetric closure, i.e. the induced equivalence relation.
Selections (project, slice, chop)
project :: (Ord a, Ord b) => Set a -> Rel a b -> Rel a b
Projection of set through relation
projectBackward :: (Ord a, Ord b) => Set b -> Rel a b -> Rel a b
Projection of set backward through relation
slice :: Ord a => Set a -> Rel a a -> Rel a a
Compute forward slice starting from seeds.
sliceUntil :: Ord a => Set a -> Set a -> Rel a a -> Rel a a
Compute forward slice starting from seeds, stopping at stoppers.
sliceBackward :: Ord a => Set a -> Rel a a -> Rel a a
Compute backward slice starting from seeds.
chop :: Ord a => Set a -> Set a -> Rel a a -> Rel a a
Compute chop between seeds and sinks.
Produced by Haddock version 0.6