# UndirectedGraph S¶

graph.spad line 3402 [edit on github]

S: SetCategory

allows us to model graph theory

- *: (%, %) -> UndirectedGraph Product(S, S)
tensor product : the tensor product

`G*H`

of graphs`G`

and`H`

is a graph such that the vertex set of`G*H`

is the Cartesian product`V`

(`G`

) times`V`

(`H`

); and any two vertices (`u`

, u’) and (`v`

,`v'`

) are adjacent in`G`

times`H`

if and only if u’ is adjacent with`v'`

and`u`

is adjacent with`v`

.

- +: (%, %) -> %
from FiniteGraph S

- addArrow!: (%, Record(name: String, arrType: NonNegativeInteger, fromOb: NonNegativeInteger, toOb: NonNegativeInteger, xOffset: Integer, yOffset: Integer, map: List NonNegativeInteger)) -> %
from FiniteGraph S

- addArrow!: (%, String, NonNegativeInteger, NonNegativeInteger) -> %
from FiniteGraph S

- addArrow!: (%, String, NonNegativeInteger, NonNegativeInteger, List NonNegativeInteger) -> %
from FiniteGraph S

- addArrow!: (%, String, S, S) -> %
from FiniteGraph S

- addObject!: (%, Record(value: S, posX: NonNegativeInteger, posY: NonNegativeInteger)) -> %
from FiniteGraph S

- addObject!: (%, S) -> %
from FiniteGraph S

- adjacencyMatrix: % -> Matrix NonNegativeInteger
from FiniteGraph S

- arrowName: (%, NonNegativeInteger, NonNegativeInteger) -> String
from FiniteGraph S

- arrowsFromArrow: (%, NonNegativeInteger) -> List NonNegativeInteger
from FiniteGraph S

- arrowsFromNode: (%, NonNegativeInteger) -> List NonNegativeInteger
from FiniteGraph S

- arrowsToArrow: (%, NonNegativeInteger) -> List NonNegativeInteger
from FiniteGraph S

- arrowsToNode: (%, NonNegativeInteger) -> List NonNegativeInteger
from FiniteGraph S

- cartesian: (%, %) -> UndirectedGraph Product(S, S)
Cartesian product: the vertex set of

`G`

`o`

`H`

is the Cartesian product`V`

(`G`

) times`V`

(`H`

) and any two vertices (`u`

, u’) and (`v`

,`v'`

) are adjacent in`G`

`o`

`H`

if and only if either`u`

=`v`

and u’ is adjacent with`v'`

in`H`

, or u’ =`v'`

and`u`

is adjacent with`v`

in`G`

.

- closedCartesian: (%, %, (S, S) -> S) -> %
as Cartesian product but returns %.

- closedTensor: (%, %, (S, S) -> S) -> %
as tensor product but returns %.

- coerce: % -> OutputForm
from CoercibleTo OutputForm

- coerce: FinitePoset S -> %
`coerce FinitePoset`

to graph

- cycleClosed: (List S, String) -> %
from FiniteGraph S

- cycleOpen: (List S, String) -> %
from FiniteGraph S

- deepDiagramSvg: (String, %, Boolean) -> Void
from FiniteGraph S

- diagramHeight: % -> NonNegativeInteger
from FiniteGraph S

- diagramsSvg: (String, List %, Boolean) -> Void
from FiniteGraph S

- diagramSvg2: (String, %, Boolean) -> Void
diagramSvg(fileName,

`n`

, dispArrowName) creates an`SVG`

diagram. This is an alternative version which does not shorten lines. fileName: String is the name of the`SVG`

file that will be created`n:`

% is the graph that will be written dispArrowName: Boolean is`true`

to include the name of each arrow

- diagramSvg: (String, %, Boolean) -> Void
from FiniteGraph S

- diagramWidth: % -> NonNegativeInteger
from FiniteGraph S

- distance: (%, NonNegativeInteger, NonNegativeInteger) -> Integer
from FiniteGraph S

- distanceMatrix: % -> Matrix Integer
from FiniteGraph S

- flatten: DirectedGraph % -> %
from FiniteGraph S

- getArrowIndex: (%, NonNegativeInteger, NonNegativeInteger) -> NonNegativeInteger
from FiniteGraph S

- getArrows: % -> List Record(name: String, arrType: NonNegativeInteger, fromOb: NonNegativeInteger, toOb: NonNegativeInteger, xOffset: Integer, yOffset: Integer, map: List NonNegativeInteger)
from FiniteGraph S

- getVertexIndex: (%, S) -> NonNegativeInteger
from FiniteGraph S

- getVertices: % -> List Record(value: S, posX: NonNegativeInteger, posY: NonNegativeInteger)
from FiniteGraph S

- incidenceMatrix: % -> Matrix Integer
from FiniteGraph S

- inDegree: (%, NonNegativeInteger) -> NonNegativeInteger
from FiniteGraph S

- initial: () -> %
from FiniteGraph S

- isAcyclic?: % -> Boolean
from FiniteGraph S

- isDirected?: () -> Boolean
from FiniteGraph S

- isDirectSuccessor?: (%, NonNegativeInteger, NonNegativeInteger) -> Boolean
from FiniteGraph S

- isFixPoint?: (%, NonNegativeInteger) -> Boolean
from FiniteGraph S

- isFunctional?: % -> Boolean
from FiniteGraph S

- isGreaterThan?: (%, NonNegativeInteger, NonNegativeInteger) -> Boolean
from FiniteGraph S

- kgraph: (List S, String) -> %
from FiniteGraph S

- laplacianMatrix: % -> Matrix Integer
from FiniteGraph S

- latex: % -> String
from SetCategory

- loopsArrows: % -> List Loop
from FiniteGraph S

- loopsAtNode: (%, NonNegativeInteger) -> List Loop
from FiniteGraph S

- loopsNodes: % -> List Loop
from FiniteGraph S

- looseEquals: (%, %) -> Boolean
from FiniteGraph S

- map: (%, List NonNegativeInteger, List S, Integer, Integer) -> %
from FiniteGraph S

- mapContra: (%, List NonNegativeInteger, List S, Integer, Integer) -> %
from FiniteGraph S

- max: % -> NonNegativeInteger
from FiniteGraph S

- max: (%, List NonNegativeInteger) -> NonNegativeInteger
from FiniteGraph S

- merge: (%, %) -> %
from FiniteGraph S

- min: % -> NonNegativeInteger
from FiniteGraph S

- min: (%, List NonNegativeInteger) -> NonNegativeInteger
from FiniteGraph S

- nodeFromArrow: (%, NonNegativeInteger) -> List NonNegativeInteger
from FiniteGraph S

- nodeFromNode: (%, NonNegativeInteger) -> List NonNegativeInteger
from FiniteGraph S

- nodeToArrow: (%, NonNegativeInteger) -> List NonNegativeInteger
from FiniteGraph S

- nodeToNode: (%, NonNegativeInteger) -> List NonNegativeInteger
from FiniteGraph S

- outDegree: (%, NonNegativeInteger) -> NonNegativeInteger
from FiniteGraph S

- routeArrows: (%, NonNegativeInteger, NonNegativeInteger) -> List NonNegativeInteger
from FiniteGraph S

- routeNodes: (%, NonNegativeInteger, NonNegativeInteger) -> List NonNegativeInteger
from FiniteGraph S

- spanningForestArrow: % -> List Tree Integer
from FiniteGraph S

- spanningForestNode: % -> List Tree Integer
from FiniteGraph S

- spanningTreeArrow: (%, NonNegativeInteger) -> Tree Integer
from FiniteGraph S

- spanningTreeNode: (%, NonNegativeInteger) -> Tree Integer
from FiniteGraph S

- subdiagramSvg: (Scene SCartesian 2, %, Boolean, Boolean) -> Void
from FiniteGraph S

- terminal: S -> %
from FiniteGraph S

- undirectedGraph: (List Record(value: S, posX: NonNegativeInteger, posY: NonNegativeInteger), List Record(name: String, arrType: NonNegativeInteger, fromOb: NonNegativeInteger, toOb: NonNegativeInteger, xOffset: Integer, yOffset: Integer, map: List NonNegativeInteger)) -> %
constructor for graph with given objects and arrows more objects and arrows can be added later if required.

- undirectedGraph: (List S, List List NonNegativeInteger) -> %
constructor for graph with given objects and adjacency matrix.

- undirectedGraph: (List S, List Record(fromOb: NonNegativeInteger, toOb: NonNegativeInteger)) -> %
`undirectedGraph(obs, ars)`

constructs graph with objects`obs`

and arrows ars. This constructor just has pure abstract graph information without decoration information.

- undirectedGraph: FinitePoset S -> %
`undirectedGraph(poset)`

constructs graph from a partially ordered set. This will be a graph with, at most, one arrow between any two nodes (in each direction).

- undirectedGraph: List Record(value: S, posX: NonNegativeInteger, posY: NonNegativeInteger) -> %
constructor for graph with given objects more objects and arrows can be added later if required.

- undirectedGraph: List S -> %
constructor for graph with given list of object names. Use this version of the constructor if you don

`'t`

intend to create diagrams and therefore don`'t`

care about`x`

,`y`

coordinates. more objects and arrows can be added later if required.

- unit: (List S, String) -> %
from FiniteGraph S