algebraic-graphs-0.5: A library for algebraic graph construction and transformation

Algebra.Graph.Relation.Transitive

Contents

Description

An abstract implementation of transitive binary relations. Use Algebra.Graph.Class for polymorphic construction and manipulation.

Synopsis

# Data structure

The TransitiveRelation data type represents a transitive binary relation over a set of elements. Transitive relations satisfy all laws of the Transitive type class and, in particular, the closure axiom:

y /= empty ==> x * y + x * z + y * z == x * y + y * z

For example, the following holds:

path xs == (clique xs :: TransitiveRelation Int)

The Show instance produces transitively closed expressions:

show (1 * 2         :: TransitiveRelation Int) == "edge 1 2"
show (1 * 2 + 2 * 3 :: TransitiveRelation Int) == "edges [(1,2),(1,3),(2,3)]"
Instances
 Ord a => Eq (TransitiveRelation a) Source # Instance detailsDefined in Algebra.Graph.Relation.Transitive Methods (Ord a, Num a) => Num (TransitiveRelation a) Source # Instance detailsDefined in Algebra.Graph.Relation.Transitive Methods Ord a => Ord (TransitiveRelation a) Source # Instance detailsDefined in Algebra.Graph.Relation.Transitive Methods (Ord a, Show a) => Show (TransitiveRelation a) Source # Instance detailsDefined in Algebra.Graph.Relation.Transitive MethodsshowList :: [TransitiveRelation a] -> ShowS # Source # Instance detailsDefined in Algebra.Graph.Relation.Transitive Methodsrnf :: TransitiveRelation a -> () # Source # Instance detailsDefined in Algebra.Graph.Relation.Transitive Ord a => Graph (TransitiveRelation a) Source # Instance detailsDefined in Algebra.Graph.Relation.Transitive Associated Typestype Vertex (TransitiveRelation a) :: Type Source # Methods type Vertex (TransitiveRelation a) Source # Instance detailsDefined in Algebra.Graph.Relation.Transitive type Vertex (TransitiveRelation a) = a

Construct a transitive relation from a Relation. Complexity: O(1) time.

Extract the underlying relation. Complexity: O(n * m * log(m)) time.