The standard library `Graph_By_Edge_Hashtable` api defines graph representations which use hashtables to yield O(1) tests for existence of an edge in the graph.
At present these are used mainly in the compiler.

The `Graph_By_Edge_Hashtable` api is implemented by the graph_by_edge_hashtable package.

The `Graph_By_Edge_Hashtable` api source code is in src/lib/std/src/graph-by-edge-hashtable.api.

*The above information is manually maintained and may contain errors.*

api { Bucket = BUCKET (Int , Int , Bucket) | NIL; Hashtable = LARGE (Ref(Rw_Vector(Bucket ) ) , Unt) | SMALL (Ref(Rw_Vector(List(Unt ) ) ) , Unt); Graph_By_Edge_Hashtable = GRAPH_BY_EDGE_HASHTABLE {edge_count:Ref(Int ), table:Hashtable}; empty_graph : Graph_By_Edge_Hashtable; get_hashchains_count : Graph_By_Edge_Hashtable -> Int; get_edge_count : Graph_By_Edge_Hashtable -> Int; insert_edge : Graph_By_Edge_Hashtable -> (Int , Int) -> Bool; edge_exists : Graph_By_Edge_Hashtable -> (Int , Int) -> Bool;};

Comments and suggestions to: bugs@mythryl.org