Thm* G:Graph. ( x,y:Vertices(G). Dec(x = y))  ( s:traversal(G). paren(Vertices(G);s)  no_repeats(Vertices(G)+Vertices(G);s)  df-traversal(G;s)  depthfirst-traversal(G;s)) | [paren-df-traversal] |
Thm* For any graph
df-traversal(the_graph;nil) | [df-traversal-nil] |
Thm* For any graph
i:V, s:Traversal. ( j:V. (inr(j) s)  (inl(j) s)  j-the_graph- > *i)  df-traversal(the_graph;s)  df-traversal(the_graph;[inr(i) / s]) | [df-traversal-cons2] |
Def dfsl-traversal(the_graph;L;s) == df-traversal(the_graph;s) & ( i:Vertices(the_graph). (inl(i) s)  L-the_graph- > *i) & (( i:Vertices(the_graph). L-the_graph- > *i  non-trivial-loop(the_graph;i))  ( L1,L2:Vertices(the_graph) List. L = (L1 @ L2)  ( s1,s2:traversal(the_graph). s = (s2 @ s1) traversal(the_graph) & paren(Vertices(the_graph);s1) & paren(Vertices(the_graph);s2) & ( j:Vertices(the_graph). ((inl(j) s1)  L1-the_graph- > *j) & ((inl(j) s2)  L2-the_graph- > *j & L1-the_graph- > *j))))) | [dfsl-traversal] |