# UndirectedGraph SΒΆ

- 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
- =: (%, %) -> Boolean
- from BasicType
- ~=: (%, %) -> Boolean
- from BasicType
- 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- createWidth: NonNegativeInteger -> NonNegativeInteger
- from FiniteGraph S
- createX: (NonNegativeInteger, NonNegativeInteger) -> NonNegativeInteger
- from FiniteGraph S
- createY: (NonNegativeInteger, NonNegativeInteger) -> NonNegativeInteger
- from FiniteGraph S
- 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 altenative 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
- hash: % -> SingleInteger
- from SetCategory
- hashUpdate!: (HashState, %) -> HashState
- from SetCategory
- 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