͏,c      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab Safe-Inferred cdefghijklmnodjklmno cdefghijklmno Safe-Inferred      Safe-InferredH  Merge the  into the  . Minimum implementation:  , , , ,   An empty  .True if the given   is empty. Decompose a   into the - found for the given node and the remaining  . Create a   from the list of %s and "s.A list of all % s in the  .Decompose a graph into the  for an arbitrarily-chosen & and the remaining  .The number of &s in a  .The minimum and maximum & in a  .A list of all " s in the  .Unlabeled decomposition.Unlabeled context. The same as , only more sure of itself. , decomposition - the context removed from a  , and the rest of the  . Links to the &, the &! itself, a label, links from the &.Labeled links to or from a &.Quasi-unlabeled path Labeled path Unlabeled path!Quasi-unlabeled edge" Labeled edge#Unlabeled edge$Quasi-unlabeled node% Labeled node&Unlabeled node'Fold a function over the graph.(Map a function over the graph.)Map a function over the & labels in a graph.*Map a function over the # labels in a graph.+ List all & s in the  ., List all # s in the  .-List N available &s, i.e. &s that are not used in the  ..p if the & is present in the  ./ Insert a % into the  .0 Insert a " into the  .1 Remove a & from the  .2 Remove an # from the  .3 Remove an " from the  .4Insert multiple % s into the  .5Insert multiple " s into the  .6Remove multiple & s from the  .7Remove multiple # s from the  .8Build a   from a list of s.9Build a quasi-unlabeled  .:Find the context for the given &. Causes an error if the & is not present in the  .;Find the label for a &.<Find the neighbors for a &.= Find all &"s that have a link from the given &.> Find all &s that link to to the given &.? Find all &!s that are linked from the given & and the label of each link.@ Find all &s that link to the given & and the label of each link.AFind all outward-bound "s for the given &.BFind all inward-bound "s for the given &.C The outward-bound degree of the &.DThe inward-bound degree of the &.EThe degree of the &.FThe & in a .GThe label in a .HThe % from a .IAll &s linked to or from in a .JAll &s linked to in a .KAll &s linked from in a .LAll &s linked from in a , and the label of the links.MAll &s linked from in a , and the label of the links.NAll outward-directed "s in a .OAll inward-directed "s in a .PThe outward degree of a .QThe inward degree of a .RThe degree of a .TbPretty-print the graph. Note that this loses a lot of information, such as edge inverses, etc.U!Pretty-print the graph to stdout.W  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRqrstSuvwxyzTU{L  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUL&%$#"!   '()*+,-./0123456789:;<=>?@ABCDESFGHIJKMLNOPQRTUL   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRqrstSuvwxyzTU{ Safe-Inferred V#Reverse the direction of all edges.W^Make the graph undirected, i.e. for every edge from A to B, there exists an edge from B to A.XRemove all labels.Y Return all 's for which the given function returns p.ZFilter based on edge property.[$Filter based on edge label property.\p/ if the graph has any edges of the form (A, A).]The inverse of \.^Directed graph fold._ Flatten a |', returning the elements in post-order.`Flatten multiple |s in post-order.a Flatten a |6, returning the elements in pre-order. Equivalent to } in .bFlatten multiple |s in pre-order.VWXYZ[\]~^direction of folddepth aggregationbreadth/level aggregation_`ab VWXYZ[\]^_`ab VWXY^Z[\]_`abVWXYZ[\]~^_`abNoneMcdcddccd Safe-Inferred6o graph foldefghijklmnopqrstuvwefghijklmnopqrstuvwefghijklmnopqrstuvwe fghijklmnopqrstuvwNone2346_filter list (of successors/predecessors) through a boolean ST array representing deleted marks xyz{|}~xyz{|}~{|zyx}~ xyz{|}~None6 generate list of unlabeled nodesgenerate list of labeled nodesdenote unlabeled edgesempty (unlabeled) edge list3333 Safe-Inferred 3Graph construction monad; handles passing both the  and the  .Create a new, empty mapping.;Generate a mapping containing the nodes in the given graph.^Generate a labelled node from the given label. Will return the same node for the same label.5Generate a labelled node and throw away the modified . Generate a " from the node labels.Generates a list of "s.Construct a list of nodes.6Construct a list of nodes and throw away the modified .GRun a construction; return the value of the computation, the modified , and the modified  .'Run a construction and only return the  .Monadic node construction.+##(  Safe-Inferred""  Safe-Inferred  Safe-InferredeFinds the articulation points for a connected undirected graph, by using the low numbers criteria:Ja) 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-InferredFinds 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-InferredBreturn immediate dominators for each node of a graph, given a rootBreturn the set of dominators of the nodes of a graph, given a root Safe-InferredFinds the transitive closure of a directed graph. Given a graph G=(V,E), its transitive closure is the graph: G* = (V,E*) where E*={(i,j): i,j in V and there is a path from i to j in G} Safe-Inferred60encapsulates a simple recursion schema on graphs2Monadic graph algorithms are defined in two steps: Cdefine the (possibly parameterized) graph transformer (e.g., dfsGT)=run the graph transformer (applied to arguments) (e.g., dfsM)+depth-first search yielding number of nodes&depth-first search yielding dfs forest&     #     #     %      Safe-Inferred Safe-Inferred=Find the first path in a tree that starts with the given node  !"#$% !"#$% !"#$%  !"#$% Safe-Inferred&'()*+,&'()*+,&'()*+,&'()*+, Safe-Inferred-./012345678 -./012345678 0./-12435768-./012345678 Safe-Inferred9  i 0 For each edge a--->b this function returns edge b--->a . i Edges a<--->b are ignored j :  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 Cwhere label (x,y,z)=(Max Capacity, Current flow, Residual capacity);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.<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.=Compute the flow from s to t on a graph whose edges are labeled with (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.>2Compute 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 grap whose edges are labeled with (x,y,z)=(max capacity,current flow,residual capacity) and all edges are of the form a<---->b?Compute 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 grap whose edges are labeled with (y,x) = (current flow, max capacity).@"Compute the value of a maximumflow9:;<=>?@9:;<=>?@9:;<=>?@9:;<=>?@NoneABCDABCDACBDABCD Safe-InferredEFGHIJKLMNOPQRSEFGHIJKLMNOPQRSEGFHIJKLMNOPQRSEGFHIJKLMNOPQRS Safe-InferredT4Implementation of Dijkstra's shortest path algorithmTUVWTUVWUVWTTUVW Safe-InferredXYZ[\]^XYZ[\]^XYZ[\]^XYZ[\]^ Safe-Inferred_`a_`a_`a_`aNonen     -./0123456789:;<=>?@ABCDTUVWXYZ[\]^_`aNoneb Version infob  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     -./0123456789:;<=>?@ABCDTUVWXYZ[\]^_`abbb !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                          !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`aEb,cdef-ghijklmnopqrstuvwxyz{|{}~                                        fgl-5.5.1.0$Data.Graph.Inductive.Internal.ThreadData.Graph.Inductive.GraphData.Graph.Inductive.Basic!Data.Graph.Inductive.PatriciaTreeData.Graph.Inductive.Monad"Data.Graph.Inductive.Monad.IOArrayData.Graph.Inductive.ExampleData.Graph.Inductive.NodeMapData.Graph.Inductive.Query.DFS Data.Graph.Inductive.Query.Indep#Data.Graph.Inductive.Query.ArtPointData.Graph.Inductive.Query.BCC%Data.Graph.Inductive.Query.Dominators$Data.Graph.Inductive.Query.TransClos Data.Graph.Inductive.Query.MonadData.Graph.Inductive.Tree&Data.Graph.Inductive.Internal.RootPath#Data.Graph.Inductive.Internal.QueueData.Graph.Inductive.Query.BFS"Data.Graph.Inductive.Query.MaxFlow#Data.Graph.Inductive.Query.MaxFlow2"Data.Graph.Inductive.Internal.HeapData.Graph.Inductive.Query.SPData.Graph.Inductive.Query.GVDData.Graph.Inductive.Query.MSTData.Graph.Inductive Paths_fglDataTreeData.Graph.Inductive.QuerySplitMCollectThreadSplit threadList' threadList threadMaybe' threadMaybesplitPar splitParMDynGraph&GraphemptyisEmptymatchmkGraphlabNodesmatchAnynoNodes nodeRangelabEdgesUDecompUContextGDecompDecompMContextContextAdjUPathLPathLPPathUEdgeLEdgeEdgeUNodeLNodeNodeufoldgmapnmapemapnodesedgesnewNodesgeleminsNodeinsEdgedelNodedelEdgedelLEdgeinsNodesinsEdgesdelNodesdelEdgesbuildGrmkUGraphcontextlab neighborssucprelsuclpreoutinnoutdegindegdegnode'lab'labNode' neighbors'suc'pre'lsuc'lpre'out'inn'outdeg'indeg'deg'equalprettify prettyPrintgrevundirunlabgselefilterelfilterhasLoopisSimplegfold postorder postorderFpreorder preorderFUGrGrGraphMemptyMisEmptyMmatchMmkGraphM labNodesM matchAnyMnoNodesM nodeRangeM labEdgesMufoldMnodesMedgesM newNodesMdelNodeM delNodesM mkUGraphMcontextMlabMUSGrContext'GraphRepSGrdefaultGraphSizeemptyN removeDel genUNodes genLNodes labUEdgesnoEdgesabcee3loopababbcyc3dag3dag4d1d3g3g3ba'b'c'e'e3'loop'ab'abb'dag3'dag4'd1'd3'ucyclestarucycleMstarMclr479clr486clr489clr508clr528clr595gr1kin248vorclr479'clr486'clr489'clr508'clr528'kin248'vor'NodeMapMNodeMapnew fromGraphmkNodemkNode_mkEdgemkEdgesmkNodesmkNodes_ insMapNode insMapNode_ insMapEdge delMapNode delMapEdge insMapNodes insMapNodes_ insMapEdges delMapNodes delMapEdges mkMapGraphrunrun_mkNodeMmkNodesMmkEdgeMmkEdgesM insMapNodeM insMapEdgeM delMapNodeM delMapEdgeM insMapNodesM insMapEdgesM delMapNodesM delMapEdgesMCFunxdfsWithdfsWithdfsWith'dfsdfs'udfsudfs'rdfsrdfs'xdfWithxdffWithdffWithdffWith'dffdff'udffWith udffWith'udffudff'rdffWith rdffWith'rdffrdff' components noComponents isConnectedtopsorttopsort'scc reachableindepapbcciDomdomtrcGTMGTmapFstmapSnd><orPapplyapply' applyWith applyWith'runGTcondMGT'recMGT'condMGTrecMGTgetNode getContext getNodes'getNodessucGTsucMgraphRec graphRec' graphUFold graphNodesM0 graphNodesM graphNodes graphFilterM graphFilterdfsGTdfsMdfsM'dffMgraphDff graphDff'RTreeLRTreegetPathgetLPath getDistance getLPathNodesQueueMkQueuemkQueuequeuePut queuePutListqueueGet queueEmptybfsnWithbfsnbfsWithbfslevellevelnbfenbfebftesplbftlesp getRevEdges augmentGraph updAdjList updateFlowmfmgmf maxFlowgraphmaxFlowNetworkekFusedekSimpleekListHeapEmptyunitinsertmergemergeAllfindMin deleteMinsplitMinbuildtoListheapsortdijkstraspTreespLengthspVoronoigvdIngvdOut voronoiSet nearestNode nearestDist nearestPathmsTreeAtmsTreemsPathversioncatchIObindirlibdirdatadir libexecdir sysconfdir getBinDir getLibDir getDataDir getLibexecDir getSysconfDirgetDataFileNameghc-prim GHC.TypesTruenodeComp slabNodesedgeComp slabEdges.:flip2 context1l context4l context1l' context4l' $fShowLPathcontainers-0.5.5.1 Data.Treeflatten threadGraphgfold1gfoldnmatchGr fastInsNode fastInsEdgefastGMapfastNMapfastEMaptoAdjfromAdj toContext fromContextswapaddListsaddSuccaddPred clearSucc clearPred $fDynGraphGr $fGraphGr$fReadGr$fShowGr$fEqGr>>. labUNodesonMatch showGraph $fGraphMIOSGr$fShowIO $fShowSGrmapkeymap'liftN2liftN2'liftM1liftM1'fixNodes postflatten postflattenFfirstLOWTreeBrcDFSTreeB getBackEdgesdfsTree minbckEdgegetLowlowTree getLowTreeisaparp artpoints gComponents embedContexts findGraph splitGraphsFromNodeToNodePredsIDomNode'idomWork refineIDom intersectgetDom numberTree numberForest treeEdgesfixEq getNewEdges $fMonadGT$fApplicativeGT $fFunctorGT cleanSplitupdAdjfindP $fOrdLPath $fEqLPath bfsnInternalsuci bfenInternaloutUbflbf EKStepFuncDirRTreeDirPathDirEdge DirectionBackwardForwardpathFromDirPath augPathFusedbftForEKbfForEKextractPathFused ekFusedStep residualGraphaugPath extractPath extractEdge extractAdj getPathDeltasintegrateDelta ekSimpleStepekWithextractPathList ekStepList showsHeap $fShowHeapexpand maybePathnewEdgesprim joinPathsjoinAt