1:- module(
    2  graph_ext,
    3  [
    4    arcs_to_vertices/2, % +Arcs, -Vertices
    5    edges_to_vertices/2  % +Edges, -Vertices
    6  ]
    7).

Generic support for graphs

*/

   13:- use_module(library(aggregate)).   14:- use_module(library(lists)).
 arcs_to_vertices(+Arcs:list(compound), -Vertices:ordset) is det
   22arcs_to_vertices(Arcs, Vertices) :-
   23  aggregate_all(
   24    set(Vertice),
   25    (
   26      member(arc(X,_,Y), Arcs),
   27      member(Vertice, [X,Y])
   28    ),
   29    Vertices
   30  ).
 edges_to_vertices(+Edges:list(compound), -Vertices:ordset) is det
   36edges_to_vertices(Edges, Vertices) :-
   37  aggregate_all(
   38    set(Vertice),
   39    (
   40      member(edge(X,_,Y), Edges),
   41      member(Vertice, [X,Y])
   42    ),
   43    Vertices
   44  )