module Data.Graph.Morphisms where

import Data.Graph.DGraph
import Data.Graph.Types
import Data.Graph.UGraph

-- | Tell if two graphs are isomorphic
-- TODO: check first: same number of vertices, same number of edges
areIsomorphic :: Graph g => g v e -> g v' e' -> Bool
areIsomorphic = undefined

isomorphism :: Graph g => g v e -> g v' e' -> (v -> v')
isomorphism = undefined

-- | Tell if a 'UGraph' is regular
-- | An undirected graph is @regular@ if each vertex has the same degree
isURegular :: UGraph v e -> Bool
isURegular = undefined

-- | Tell if a 'DGraph' is regular
-- | A directed graph is @regular@ if each vertex has the same indigree and |
-- | outdegree
isDRegular :: DGraph v e -> Bool
isDRegular = undefined