h*g.\}      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                                                                                             5.8.3.0 Safe-Inferred"7fglOrdGr comes equipped with an Ord instance, so that graphs can be used as e.g. Map keys.fgl Merge the  into the .Context adjacencies should only refer to either a Node already in a graph or the node in the Context itself (for loops).(Behaviour is undefined if the specified   already exists in the graph.fglMinimum implementation: , , ,  ,  fgl An empty .fglTrue if the given  is empty.fgl Decompose a  into the - found for the given node and the remaining . fgl Create a  from the list of s and s.&For graphs that are also instances of , mkGraph ns es should be equivalent to (7 es . 6 ns) . fglA list of all  s in the . fglDecompose a graph into the  for an arbitrarily-chosen   and the remaining . fglThe number of  s in a . fglThe minimum and maximum   in a .fglA list of all  s in the .fglUnlabeled decomposition.fglUnlabeled context.fgl The same as , only more sure of itself.fgl, decomposition - the context removed from a , and the rest of the .fgl Links to the  , the  ! itself, a label, links from the  .In other words, this captures all information regarding the specified   within a graph.fglLabeled links to or from a  .fglQuasi-unlabeled pathfgl Labeled pathfglUnlabeled pathfglQuasi-unlabeled edgefgl Labeled edgefglUnlabeled edgefglQuasi-unlabeled nodefgl Labeled node fglUnlabeled node!fglA synonym for ;, to avoid conflicts with the similarly named operator in  Data.Function."fgl0The number of nodes in the graph. An alias for  .#fgl!The number of edges in the graph.Note that this counts every edge found, so if you are representing an unordered graph by having each edge mirrored this will be incorrect.If you created an unordered graph by either mirroring every edge (including loops!) or using the undir function in Data.Graph.Inductive.Basic9 then you can safely halve the value returned by this.$fgl6Fold a function over the graph by recursively calling .%fgl5Map a function over the graph by recursively calling .&fglMap a function over the   labels in a graph.'fglMap a function over the  labels in a graph.(fglMap functions over both the   and  labels in a graph.)fgl List all   s in the .*fgl List all  s in the .+fgl$Drop the label component of an edge.,fglAdd a label to an edge.-fglThe label in an edge..fglList N available  s, i.e.  s that are not used in the ./fgl if the   is present in the .0fgl Insert a  into the .1fgl Insert a  into the .2fgl Remove a   from the .3fgl Remove an  from the .6NOTE: in the case of multiple edges, this will delete all such edges from the graph as there is no way to distinguish between them. If you need to delete only a single such edge, please use 4.4fgl Remove an  from the .NOTE: in the case of multiple edges with the same label, this will only delete the first5 such edge. To delete all such edges, please use 5.5fgl,Remove all edges equal to the one specified.6fglInsert multiple  s into the .7fglInsert multiple  s into the .8fglRemove multiple   s from the .9fglRemove multiple  s from the .:fglBuild a  from a list of s.2The list should be in the order such that earlier 1s depend upon later ones (i.e. as produced by $ (:) []).;fglBuild a quasi-unlabeled .<fglBuild a graph out of the contexts for which the predicate is satisfied by recursively calling .=fglReturns the subgraph only containing the labelled nodes which satisfy the given predicate.>fglReturns the subgraph only containing the nodes which satisfy the given predicate.?fglReturns the subgraph only containing the nodes whose labels satisfy the given predicate.@fgl3Returns the subgraph induced by the supplied nodes.AfglFind the context for the given  . Causes an error if the   is not present in the .BfglFind the label for a  .CfglFind the neighbors for a  .Dfgl4Find the labelled links coming into or going from a .Efgl Find all  "s that have a link from the given  .Ffgl Find all  s that link to to the given  .Gfgl Find all  !s that are linked from the given   and the label of each link.Hfgl Find all  s that link to the given   and the label of each link.IfglFind all outward-bound s for the given  .JfglFind all inward-bound s for the given  .Kfgl The outward-bound degree of the  .LfglThe inward-bound degree of the  .MfglThe degree of the  .NfglThe   in a .OfglThe label in a .PfglThe  from a .QfglAll  s linked to or from in a .Rfgl/All labelled links coming into or going from a .SfglAll  s linked to in a .TfglAll  s linked from in a .UfglAll  s linked from in a , and the label of the links.VfglAll  s linked from in a , and the label of the links.WfglAll outward-directed s in a .XfglAll inward-directed s in a .YfglThe outward degree of a .ZfglThe inward degree of a .[fglThe degree of a .\fgl5Checks if there is a directed edge between two nodes.]fgl8Checks if there is an undirected edge between two nodes.^fgl5Checks if there is a labelled edge between two nodes._fglChecks if there is an undirected labelled edge between two nodes.afglPretty-print the graph. Note that this loses a lot of information, such as edge inverses, etc.bfgl!Pretty-print the graph to stdout.  !"#$%&'()*+-,./0123456789:;<>=?@ABCDEFGHIJKLM\]^_`NOPQRSTVUWXYZ[ab  !"#$%&'()*+-,./0123456789:;<>=?@ABCDEFGHIJKLM\]^_`NOPQRSTVUWXYZ[ab Safe-Inferred#&monpqrstuvwxyz{|}monpqrstuvwxyz{|} Safe-Inferred#n Safe-Inferred$fgl>Find the first path in a tree that starts with the given node./Returns an empty list if there is no such path.fgl8Return the distance to the given node in the given tree.Returns $ if the given node is not reachable. Safe-Inferred$   Safe-Inferred(~ fgl#Reverse the direction of all edges.fglMake the graph undirected, i.e. for every edge from A to B, there exists an edge from B to A.fglRemove all labels.fgl Return all 's for which the given function returns .fglFilter based on edge property.fgl$Filter based on edge label property.fgl/ if the graph has any edges of the form (A, A).fglThe inverse of .fglDirected graph fold.fgl Flatten a ', returning the elements in post-order.fglFlatten multiple s in post-order.fgl Flatten a 6, returning the elements in pre-order. Equivalent to  in .fglFlatten multiple s in pre-order.fgldirection of foldfgldepth aggregationfglbreadth/level aggregation   Safe-Inferred(fgl graph fold Safe-Inferred*Afglfilter list (of successors/predecessors) through a boolean ST array representing deleted marksfgl)Please note that this instance is unsafe.fgl)Please note that this instance is unsafe.  Safe-Inferred+/fglfilter list (of successors/predecessors) through a boolean ST array representing deleted marksfgl(Please not that this instance is unsafe.  Safe-Inferred1qfgl3Graph construction monad; handles passing both the  and the .fglCreate a new, empty mapping.fgl;Generate a mapping containing the nodes in the given graph.fglIs the node in the map ?fglLookup for the node in the map.fglGenerate a labelled node from the given label. Will return the same node for the same label.fglAct as #, but return also a boolean set as True% if the node was already in the map.fgl5Generate a labelled node and throw away the modified .fgl Generate a  from the node labels.fglGenerates a list of s.fglConstruct a list of nodes.fgl6Construct a list of nodes and throw away the modified .fglAct as #, but return also a boolean set as True% if the node was already in the map.fglPartial function: raises exception if passed nodes that are not in the graph.fglPartial function: raises exception if passed nodes that are not in the graph.fglPartial function: raises exception if passed nodes that are not in the graph.fglPartial function: raises exception if passed nodes that are not in the graph.fglPartial function: raises exception if passed a node that is not in the graph.fglRun a construction; return the value of the computation, the modified , and the modified .fgl'Run a construction and only return the .fglMonadic node construction.''  Safe-Inferred<29  Safe-Inferred3fgl generate list of unlabeled nodesfglgenerate list of labeled nodesfgldenote unlabeled edgesfglempty (unlabeled) edge list33  Safe-Inferred5DfglFinds the articulation points for a connected undirected graph, by using the low numbers criteria:a) The root node is an articulation point iff it has two or more children.b) An non-root node v is an articulation point iff there exists at least one child w of v such that lowNumber(w) >= dfsNumber(v). Safe-Inferred5n   Safe-Inferred> fglMany functions take a list of nodes to visit as an explicit argument. fixNodes is a convenience function that adds all the nodes present in a graph as that list.fglMost general DFS algorithm to create a list of results. The other list-returning functions such as ) are all defined in terms of this one.  d f vs =  .  d f vs fglDepth-first search.fglUndirected depth-first search, obtained by following edges regardless of their direction.fgl?Reverse depth-first search, obtained by following predecessors.fglMost general DFS algorithm to create a forest of results, otherwise very similar to /. The other forest-returning functions such as ) are all defined in terms of this one.fgl(Discard the graph part of the result of . +xdffWith d f vs g = fst (xdfWith d f vs g) fglDirected depth-first forest.fglUndirected depth-first forest, obtained by following edges regardless of their direction.fgl?Reverse depth-first forest, obtained by following predecessors.fgl"Collection of connected componentsfglNumber of connected componentsfglIs the graph connected?fgl Flatten a  in reverse orderfgl!Flatten a forest in reverse orderfgl 0http://en.wikipedia.org/wiki/Topological_sortingTopological sorting, i.e. a list of  s so that if there's an edge between a source and a target node, the source appears earlier in the result.fgl), returning only the labels of the nodes.fgl+Collection of strongly connected componentsfgl4Collection of nodes reachable from a starting point.fglThe condensation of the given graph, i.e., the graph of its strongly connected components.fglMapping from a node to its neighbours to be visited as well. S for example makes ? traverse the graph following the edge directions, while T means reversed directions.fglMapping from the  of a node to a result value.fglNodes to be visited.   Safe-Inferred?fglFinds the bi-connected components of an undirected connected graph. It first finds the articulation points of the graph. Then it disconnects the graph on each articulation point and computes the connected components. Safe-Inferred@fglreturn immediate dominators for each reachable node of a graph, given a rootfglreturn the set of dominators of the reachable nodes of a graph, given a root Safe-InferredACfglCalculate the maximum independent node set of the specified graph.fgl5The maximum independent node set along with its size. Safe-InferredAq Safe-InferredJfgl  i 0 For each edge a--->b this function returns edge b--->a . i Edges a<--->b are ignored j fgl  i 0 For each edge a--->b insert into graph the edge a<---b . Then change the i (i,0,i) label of every edge from a---->b to a------->b where label (x,y,z)=(Max Capacity, Current flow, Residual capacity)fgl/Given a successor or predecessor list for node u and given node v*, find the label corresponding to edge (u,v) and update the flow and residual capacity of that edge's label. Then return the updated list.fgl=Update flow and residual capacity along augmenting path from s to t in graph @G. For a path  [u,v,w,...] find the node u in G and its successor and predecessor list, then update the corresponding edges (u,v) and (v,u)@ on those lists by using the minimum residual capacity of the path.fglCompute the flow from s to t, on a graph whose edges are labeled with 5(x,y,z)=(max capacity,current flow,residual capacity)" and all edges are of the form a<---->b. First compute the residual graph, that is, delete those edges whose residual capacity is zero. Then compute the shortest augmenting path from s to t, and finally update the flow and residual capacity along that path by using the minimum capacity of that path. Repeat this process until no shortest path from s to t exist.fglCompute the flow from s to t on a graph whose edges are labeled with x, which is the max capacity and where not all edges need to be of the form a<---->b. Return the flow as a graph whose edges are labeled with (x,y,z)=(max capacity,current flow,residual capacity) and all edges are of the form a<---->bfglCompute the maximum flow from s to t on a graph whose edges are labeled with x, which is the max capacity and where not all edges need to be of the form a<---->b. Return the flow as a graph whose edges are labeled with (y,x) = (current flow, max capacity).fgl"Compute the value of a maximumflow Safe-InferredJ Safe-InferredLfgl0encapsulates a simple recursion schema on graphsfgl2Monadic graph algorithms are defined in two steps: define the (possibly parameterized) graph transformer (e.g., dfsGT)=run the graph transformer (applied to arguments) (e.g., dfsM)fgl+depth-first search yielding number of nodesfgl&depth-first search yielding dfs forest##8 Safe-InferredQfgl#Dijkstra's shortest path algorithm.The edge labels of type b are the edge weights; negative edge weights are not supported.fglTree of shortest paths from a certain node to the rest of the (reachable) nodes.Corresponds to  applied to a heap in which the only known node is the starting node, with a path of length 0 leading to it.The edge labels of type b are the edge weights; negative edge weights are not supported.fgl6Length of the shortest path between two nodes, if any.Returns  if there is no path, and  pathlength otherwise.The edge labels of type b are the edge weights; negative edge weights are not supported.fgl(Shortest path between two nodes, if any.Returns  if the destination is not reachable from the start node, and  path otherwise.The edge labels of type b are the edge weights; negative edge weights are not supported.fgl.Initial heap of known paths and their lengths.fglStartfgl DestinationfglStartfgl Destinationmm Safe-InferredV+fgl)Representation of a shortest path forest.fglProduce a shortest path forest (the roots of which are those nodes specified) from nodes in the graph to( one of the root nodes (if possible).fglProduce a shortest path forest (the roots of which are those nodes specified) from nodes in the graph from( one of the root nodes (if possible).fgl=?@ABCDEFGHIJKLM\]^_`NOPQRSTVUWXYZ[ab!!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@&A'                                                                                                                                     "fgl-5.8.3.0-Hj1tFRmQP2s9m6j59TlBSAData.Graph.Inductive.Graph"Data.Graph.Inductive.Internal.Heap#Data.Graph.Inductive.Internal.Queue&Data.Graph.Inductive.Internal.RootPath$Data.Graph.Inductive.Internal.ThreadData.Graph.Inductive.BasicData.Graph.Inductive.Monad"Data.Graph.Inductive.Monad.IOArray"Data.Graph.Inductive.Monad.STArrayData.Graph.Inductive.NodeMap!Data.Graph.Inductive.PatriciaTreeData.Graph.Inductive.Example#Data.Graph.Inductive.Query.ArtPointData.Graph.Inductive.Query.BFSData.Graph.Inductive.Query.DFSData.Graph.Inductive.Query.BCC%Data.Graph.Inductive.Query.Dominators Data.Graph.Inductive.Query.IndepData.Graph.Inductive.Query.MST"Data.Graph.Inductive.Query.MaxFlow#Data.Graph.Inductive.Query.MaxFlow2 Data.Graph.Inductive.Query.MonadData.Graph.Inductive.Query.SPData.Graph.Inductive.Query.GVD$Data.Graph.Inductive.Query.TransClosData.Graph.Inductive.TreeData.Graph.InductivefglDataTreeData.Graph.Inductive.Query Paths_fglOrdGrunOrdGrDynGraph&GraphemptyisEmptymatchmkGraphlabNodesmatchAnynoNodes nodeRangelabEdgesUDecompUContextGDecompDecompMContextContextAdjUPathLPathLPunLPathPathUEdgeLEdgeEdgeUNodeLNodeNodeinsertordersizeufoldgmapnmapemapnemapnodesedgestoEdgetoLEdge edgeLabelnewNodesgeleminsNodeinsEdgedelNodedelEdgedelLEdge delAllLEdgeinsNodesinsEdgesdelNodesdelEdgesbuildGrmkUGraph gfiltermap labnfilternfilter labfiltersubgraphcontextlab neighbors lneighborssucprelsuclpreoutinnoutdegindegdegnode'lab'labNode' neighbors' lneighbors'suc'pre'lsuc'lpre'out'inn'outdeg'indeg'deg'hasEdge hasNeighborhasLEdgehasNeighborAdjequalprettify prettyPrint $fOrdLPath $fEqLPath $fShowLPath$fEqGroupEdges $fOrdOrdGr $fEqOrdGr $fReadOrdGr $fShowOrdGr$fShowGroupEdges$fReadGroupEdgesHeapEmpty prettyHeapprintPrettyHeapunitmergemergeAllfindMin deleteMinsplitMinbuildtoListheapsort $fNFDataHeap$fEqHeap $fShowHeap $fReadHeapQueueMkQueuemkQueuequeuePut queuePutListqueueGet queueEmptyRTreeLRTreegetPathgetLPath getDistance getLPathNodesSplitMCollectThreadSplit threadList' threadList threadMaybe' threadMaybesplitPar splitParMgrevundirunlabgselefilterelfilterhasLoopisSimplegfold postorder postorderFpreorder preorderFGraphMemptyMisEmptyMmatchMmkGraphM labNodesM matchAnyMnoNodesM nodeRangeM labEdgesMufoldMnodesMedgesM newNodesMdelNodeM delNodesM mkUGraphMcontextMlabMUSGrContext'GraphRepSGrdefaultGraphSizeemptyN removeDel $fGraphMIOSGr$fShowIO $fShowSGr $fGraphMSTSGrNodeMapMNodeMapnew fromGraph memberNode lookupNodemkNode mkLookupNodemkNode_mkEdgemkEdgesmkNodesmkNodes_ insMapNodeinsMapLookupNode insMapNode_ insMapEdge delMapNode delMapEdge insMapNodes insMapNodes_ insMapEdges delMapNodes delMapEdges mkMapGraphrunrun_mkNodeMmkNodesMmkEdgeMmkEdgesM insMapNodeM insMapEdgeM delMapNodeM delMapEdgeM insMapNodesM insMapEdgesM delMapNodesM delMapEdgesM$fNFDataNodeMap $fEqNodeMap $fShowNodeMap $fReadNodeMapUGrGr $fBifunctorGr $fFunctorGr $fNFDataGr $fDynGraphGr $fGraphGr$fReadGr$fShowGr$fEqGr$fEqFromListCounting$fShowFromListCounting$fReadFromListCounting $fGenericGr genUNodes genLNodes labUEdgesnoEdgesabcee3loopababbcyc3dag3dag4d1d3g3g3ba'b'c'e'e3'loop'ab'abb'dag3'dag4'd1'd3'ucyclestarucycleMstarMclr479clr486clr489clr508clr528clr595gr1kin248vorclr479'clr486'clr489'clr508'clr528'kin248'vor'ap $fEqLOWTree $fShowLOWTree $fReadLOWTree $fEqDFSTree $fShowDFSTree $fReadDFSTreebfsnWithbfsnbfsWithbfslevellevelnbfenbfebftesplbftlespCFunxdfsWithdfsdfsWithdfsWith'dfs'udfsudfs'rdfsrdfs'xdfWithxdffWithdffdffWithdffWith'dff'udffudffWith udffWith'udff'rdffrdffWith rdffWith'rdff' components noComponents isConnectedtopsorttopsort'scc reachable condensationbcciDomdomindep indepSizemsTreeAtmsTreemsPath getRevEdges augmentGraph updAdjList updateFlowmfmgmf maxFlowgraphmaxFlowNetworkekFusedekSimpleekList $fEqDirection$fOrdDirection$fShowDirection$fReadDirectionGTMGTmapFstmapSnd><orPapplyapply' applyWith applyWith'runGTcondMGT'recMGT'condMGTrecMGTgetNode getContext getNodes'getNodessucGTsucMgraphRec graphRec' graphUFold graphNodesM0 graphNodesM graphNodes graphFilterM graphFilterdfsGTdfsMdfsM'dffMgraphDff graphDff' $fMonadGT$fApplicativeGT $fFunctorGTdijkstraspTreespLengthspVoronoigvdIngvdOut voronoiSet nearestNode nearestDist nearestPathtctrcrcversionghc-prim GHC.TypesTruefindPbase GHC.MaybeNothingcontainers-0.6.7 Data.TreeflattenfixNodes postflatten postflattenFJust maybePath getBinDir getLibDir getDynLibDir getDataDir getLibexecDirgetDataFileName getSysconfDir