FiniteCategories-0.2.0.0: Finite categories and usual categorical constructions on them.
CopyrightGuillaume Sabbagh 2022
LicenseGPL-3
Maintainerguillaumesabbagh@protonmail.com
Stabilityexperimental
Portabilityportable
Safe HaskellSafe-Inferred
LanguageHaskell2010

Math.Categories.FinGrph

Description

The FinGrph category has finite multidigraphs as objects and multidigraph homomorphisms as morphisms.

Synopsis

Graph

data Arrow n e Source #

An Arrow is composed of a source node, a target node and a label.

Constructors

Arrow 

Fields

Instances

Instances details
(Eq n, Eq e) => Eq (Arrow n e) Source # 
Instance details

Defined in Math.Categories.FinGrph

Methods

(==) :: Arrow n e -> Arrow n e -> Bool

(/=) :: Arrow n e -> Arrow n e -> Bool

(Show n, Show e) => Show (Arrow n e) Source # 
Instance details

Defined in Math.Categories.FinGrph

Methods

showsPrec :: Int -> Arrow n e -> ShowS

show :: Arrow n e -> String

showList :: [Arrow n e] -> ShowS

(PrettyPrint n, PrettyPrint e) => PrettyPrint (Arrow n e) Source # 
Instance details

Defined in Math.Categories.FinGrph

Methods

pprint :: Arrow n e -> String Source #

data Graph n e Source #

A Graph is a set of nodes and a set of Arrows.

Graph is private, use smart constructor graph.

Instances

Instances details
(Eq n, Eq e) => Eq (Graph n e) Source # 
Instance details

Defined in Math.Categories.FinGrph

Methods

(==) :: Graph n e -> Graph n e -> Bool

(/=) :: Graph n e -> Graph n e -> Bool

(Show n, Show e) => Show (Graph n e) Source # 
Instance details

Defined in Math.Categories.FinGrph

Methods

showsPrec :: Int -> Graph n e -> ShowS

show :: Graph n e -> String

showList :: [Graph n e] -> ShowS

(PrettyPrint n, PrettyPrint e, Eq n, Eq e) => PrettyPrint (Graph n e) Source # 
Instance details

Defined in Math.Categories.FinGrph

Methods

pprint :: Graph n e -> String Source #

(Eq n, Eq e) => Morphism (GraphHomomorphism n e) (Graph n e) Source # 
Instance details

Defined in Math.Categories.FinGrph

(Eq n, Eq e, Show n, Show e) => Category (FinGrph n e) (GraphHomomorphism n e) (Graph n e) Source # 
Instance details

Defined in Math.Categories.FinGrph

Methods

identity :: FinGrph n e -> Graph n e -> GraphHomomorphism n e Source #

ar :: FinGrph n e -> Graph n e -> Graph n e -> Set (GraphHomomorphism n e) Source #

genAr :: FinGrph n e -> Graph n e -> Graph n e -> Set (GraphHomomorphism n e) Source #

decompose :: FinGrph n e -> GraphHomomorphism n e -> [GraphHomomorphism n e] Source #

Getters

nodes :: Graph n e -> Set n Source #

The set of nodes of the graph.

edges :: Graph n e -> Set (Arrow n e) Source #

The set of arrows of the graph.

Smart constructors

graph :: Eq n => Set n -> Set (Arrow n e) -> Maybe (Graph n e) Source #

Smart constructor of Graph.

unsafeGraph :: Set n -> Set (Arrow n e) -> Graph n e Source #

Unsafe constructor of Graph, does not check the Graph structure.

Graph homomorphism

data GraphHomomorphism n e Source #

A GraphHomomorphism is composed of a map between the nodes of the graphs, a map between the edges of the graphs, and the target Graph so that we can recover it from the morphism.

It must follow axioms such that the image of an arrow is not torn appart, that is why the constructor is private. Use the smart constructor graphHomomorphism instead.

Instances

Instances details
(Eq n, Eq e) => Eq (GraphHomomorphism n e) Source # 
Instance details

Defined in Math.Categories.FinGrph

Methods

(==) :: GraphHomomorphism n e -> GraphHomomorphism n e -> Bool

(/=) :: GraphHomomorphism n e -> GraphHomomorphism n e -> Bool

(Show n, Show e) => Show (GraphHomomorphism n e) Source # 
Instance details

Defined in Math.Categories.FinGrph

Methods

showsPrec :: Int -> GraphHomomorphism n e -> ShowS

show :: GraphHomomorphism n e -> String

showList :: [GraphHomomorphism n e] -> ShowS

(PrettyPrint n, PrettyPrint e, Eq n, Eq e) => PrettyPrint (GraphHomomorphism n e) Source # 
Instance details

Defined in Math.Categories.FinGrph

(Eq n, Eq e) => Morphism (GraphHomomorphism n e) (Graph n e) Source # 
Instance details

Defined in Math.Categories.FinGrph

(Eq n, Eq e, Show n, Show e) => Category (FinGrph n e) (GraphHomomorphism n e) (Graph n e) Source # 
Instance details

Defined in Math.Categories.FinGrph

Methods

identity :: FinGrph n e -> Graph n e -> GraphHomomorphism n e Source #

ar :: FinGrph n e -> Graph n e -> Graph n e -> Set (GraphHomomorphism n e) Source #

genAr :: FinGrph n e -> Graph n e -> Graph n e -> Set (GraphHomomorphism n e) Source #

decompose :: FinGrph n e -> GraphHomomorphism n e -> [GraphHomomorphism n e] Source #

Getters

nodeMap :: GraphHomomorphism n e -> Map n n Source #

The mapping of nodes.

edgeMap :: GraphHomomorphism n e -> Map (Arrow n e) (Arrow n e) Source #

The mapping of edges.

Smart constructor

checkGraphHomomorphism :: (Eq n, Eq e) => GraphHomomorphism n e -> Bool Source #

Check wether the structure of GraphHomomorphism is respected or not.

graphHomomorphism :: (Eq n, Eq e) => Map n n -> Map (Arrow n e) (Arrow n e) -> Graph n e -> Maybe (GraphHomomorphism n e) Source #

The smart constructor of GraphHomomorphism.

unsafeGraphHomomorphism :: Map n n -> Map (Arrow n e) (Arrow n e) -> Graph n e -> GraphHomomorphism n e Source #

Unsafe constructor of GraphHomomorphism which does not check the structure of the GraphHomomorphism.

FinGrph

data FinGrph n e Source #

The category of finite graphs.

Constructors

FinGrph 

Instances

Instances details
Eq (FinGrph n e) Source # 
Instance details

Defined in Math.Categories.FinGrph

Methods

(==) :: FinGrph n e -> FinGrph n e -> Bool

(/=) :: FinGrph n e -> FinGrph n e -> Bool

Show (FinGrph n e) Source # 
Instance details

Defined in Math.Categories.FinGrph

Methods

showsPrec :: Int -> FinGrph n e -> ShowS

show :: FinGrph n e -> String

showList :: [FinGrph n e] -> ShowS

(PrettyPrint n, PrettyPrint e, Eq n, Eq e) => PrettyPrint (FinGrph n e) Source # 
Instance details

Defined in Math.Categories.FinGrph

Methods

pprint :: FinGrph n e -> String Source #

(Eq n, Eq e, Show n, Show e) => Category (FinGrph n e) (GraphHomomorphism n e) (Graph n e) Source # 
Instance details

Defined in Math.Categories.FinGrph

Methods

identity :: FinGrph n e -> Graph n e -> GraphHomomorphism n e Source #

ar :: FinGrph n e -> Graph n e -> Graph n e -> Set (GraphHomomorphism n e) Source #

genAr :: FinGrph n e -> Graph n e -> Graph n e -> Set (GraphHomomorphism n e) Source #

decompose :: FinGrph n e -> GraphHomomorphism n e -> [GraphHomomorphism n e] Source #

underlyingGraph :: (FiniteCategory c m o, Morphism m o) => c -> Graph o m Source #

Return the underlying graph of a FiniteCategory.

underlyingGraphFormat :: (FiniteCategory c m o, Morphism m o) => (o -> a) -> (m -> b) -> c -> Graph a b Source #

Return the underlying graph of a FiniteCategory and apply formatting functions on objects and arrows.