{-# LANGUAGE MultiParamTypeClasses #-}
module Math.Grads.Algo.Isomorphism.Types
( VertexIndex
, VComparator
, EComparator
, GComparable(..)
) where
import Math.Grads.Graph (Graph, GraphEdge)
type VertexIndex = Int
type VComparator v1 v2 = VertexIndex -> VertexIndex -> Bool
type EComparator e1 e2 = GraphEdge e1 -> GraphEdge e2 -> Bool
class (Graph g1, Graph g2) => GComparable g1 v1 e1 g2 v2 e2 where
vComparator :: g1 v1 e1 -> g2 v2 e2 -> VComparator v1 v2
eComparator :: g1 v1 e1 -> g2 v2 e2 -> EComparator e1 e2