class base graph[readonly data vertice type, readonly data edge type]
private class edge[readonly data vertice type, readonly data edge type]
protected equivalence relation[vertice type] equivalence
private dictionary[vertice type, set[edge[vertice type, edge type]]] all edges
overload base graph()
override readonly set[vertice type] vertices()
override immutable set[vertice type] adjacent(vertice type from) pure