# Graphs

Author(s): Francisco Bueno.

This module implements utilities for work with graphs

## Documentation on exports

REGTYPE
dgraph(Graph)

A directed graph is a term graph(V,E) where V is a list of vertices and E is a list of edges (none necessarily sorted). Edges are pairs of vertices which are directed, i.e., (a,b) represents a->b. Two vertices a and b are equal only if a==b.

Usage: dgraph(Graph)

• Description: Graph is a directed graph.

REGTYPE
dlgraph(Graph)

A labeled directed graph is a directed graph where edges are triples of the form (a,l,b) where l is the label of the edge (a,b).

Usage: dlgraph(Graph)

• Description: Graph is a directed labeled graph.

PREDICATE

Usage: dgraph_to_ugraph(Graph,UGraph)

• Description: Converts Graph to UGraph.
• The following properties should hold at call time:
(term_typing:nonvar/1)Graph is currently a term which is not a free variable.
(term_typing:var/1)UGraph is a free variable.
(graphs:dgraph/1)Graph is a directed graph.
(term_typing:var/1)UGraph is a free variable.
• The following properties should hold upon exit:
(graphs:dgraph/1)Graph is a directed graph.
(ugraphs:ugraph/1)UGraph is an ugraph.

PREDICATE

Usage: dlgraph_to_lgraph(Graph,LGraph)

• Description: Converts Edges to LGraph.
• The following properties should hold at call time:
(term_typing:nonvar/1)Graph is currently a term which is not a free variable.
(term_typing:var/1)LGraph is a free variable.
(graphs:dlgraph/1)Graph is a directed labeled graph.
(term_typing:var/1)LGraph is a free variable.
• The following properties should hold upon exit:
(graphs:dlgraph/1)Graph is a directed labeled graph.
(lgraphs:lgraph/2)LGraph is a labeled graph of term terms.

PREDICATE

Usage: edges_to_ugraph(Edges,UGraph)

• Description: Converts Graph to UGraph.
• The following properties should hold at call time:
(term_typing:nonvar/1)Edges is currently a term which is not a free variable.
(term_typing:var/1)UGraph is a free variable.
(basic_props:list/2)Edges is a list of pairs.
(term_typing:var/1)UGraph is a free variable.
• The following properties should hold upon exit:
(basic_props:list/2)Edges is a list of pairs.
(ugraphs:ugraph/1)UGraph is an ugraph.

PREDICATE

Usage: edges_to_lgraph(Edges,LGraph)

• Description: Converts Edges to LGraph.
• The following properties should hold at call time:
(term_typing:nonvar/1)Edges is currently a term which is not a free variable.
(term_typing:var/1)LGraph is a free variable.
(basic_props:list/2)Edges is a list of triples.
(term_typing:var/1)LGraph is a free variable.
• The following properties should hold upon exit:
(basic_props:list/2)Edges is a list of triples.
(lgraphs:lgraph/2)LGraph is a labeled graph of term terms.

## Documentation on internals

REGTYPE

Usage: pair(P)

• Description: P is a pair (_,_).

REGTYPE

Usage: triple(P)

• Description: P is a triple (_,_,_).