$;:      !"#$%&'()*+,-./0123456789 Safe :;<=>?@AB:>AB:;<=>?@ABSafe5 #Create an arc between two vertices.CRemove types from arcs. Direct successors of a vertex. Direct predecessors of a vertex.&Is first vertex a successor of second?(Is first vertex a predecessor of second?*DEFGHIJKL CM NOPQRSTUVWX*DEFGHIJKL  CM NOPQRSTUVWXDEFGHIJKL CM NOPQRSTUVWXSafeAConvert Graph to String with functions to show vertices and arcs.;Invoke Graphviz and Imagemagick to display graph on screen.YZ[\YZ[\SafeyIs first vertex a (recursive) parent of second vertex? May fail when one of the vertices is unreachable from the root.The  of an .NGet list of vertices in the order they were visited by the depth-first search. SGet list of vertices in the order they were last visited by the depth-first search.!8Walk graph in depth-first order and number the vertices.#]^_`abcdefghijkl !mnopqrst  !]^_`abcdefghijkl !mnopqrstSafe'#Entry vertices of reducible cycles.3uvwxyz{|}~"#$%&'u"#$%&' u vwxyz{|}~"#$%&'Safe()*()*()*Safe,1Vertices dominating the vertex given as argument.-jCompute dominator sets. N.B. currently a naive algorithm is implemented with time-complexity O(vertex^2).+,-+,-+,- Safe5./0123456789./0123456789./0123456789Safe:   !"#$%&'()*+,-./0123456789: ! +-,"#$%&'(7689./012345*)       !"#$%&'()**+,-./01234 5 6 7 8 9 : ; < = > ? @AABCDEFGHIJJKLMNNOPQRSTUVWXYZ[\]^_`aabcdefghii$jklmnopqrstuvvmwxyz{|}~2m $libgraph-1.14-FU1vyAFOlTG1NSc3tKKMcUData.Graph.LibgraphData.Graph.Libgraph.UnionFindData.Graph.Libgraph.CoreData.Graph.Libgraph.DotData.Graph.Libgraph.DepthFirstData.Graph.Libgraph.CyclesData.Graph.Libgraph.DagifyData.Graph.Libgraph.DominanceData.Graph.Libgraph.AlgoDebugGraphrootverticesarcsArcsourcetargetarc-->succs succCache predCachepredsisSuccisPredmapGraphmapArcs treeDepthshowWithescapedisplayEdgeTypeTreeEdgeBackEdgeFwdEdge CrossEdgeDfs isAncestor getEdgetype getPreorder getPostordergetDfs CycleTree Reducible Irreducible getCycles getRedHeadersdagifyremovecollapseDomsets getDominators getDomsets JudgementRightWrong UnassessedAssistedAssistedMessageInconclusivePropertyPassingPropertyfindFaulty_dag findFaulty next_stepnext_daqUFpsimfromList singletonpointfindunion simpleGraph SimpleGraphroot' vertices'arcs' SimpleArcsource'target' unitGraph insertConmapArcsVmapArcVmapArc filterArcnothingIsFalselookup'fstElemupdatesndListfstList showVertexshowArcvNameescape'DfsStategraph' spanning'stackseentimenum' lastVisit'Succsnum lastVisitspanninggraphvisit addToSpanning pushSuccspopvisitedAllChildrensee$fShowEdgeType $fShowDfs CycleNest getVertexndfs backPreds nonBackPreds vertexTypeheaderbodyworklistuf VertexTypeNonHeadSelfHeadRedHead IrredHeadS cycleTreesimplifychildren isRedHeadstate0 isAncestor' getCycleNestanalyselabelReducibleworkmergemerge'analyseBackPreds!!!chasechase'dfsGraphmodifyVertexTypeaddToNonBackPredsOf addToBodyaddWorkuf_finduf_union showVType showHeader$fShowCycleNestrewiresetsdom $fShowDomsetsweightstart