Thm* For any graph
the_obj:GraphObject(the_graph), L:V List. paren(V;dfsl(the_obj;L)) & no_repeats(V+V;dfsl(the_obj;L)) & dfsl-traversal(the_graph;L;dfsl(the_obj;L)) & ( i:V. (i L)  (inr(i) dfsl(the_obj;L)) & (inl(i) dfsl(the_obj;L))) | [dfsl-properties] |
Thm* For any graph
the_obj:GraphObject(the_graph). L:V List. no_repeats(V;L) & ( y:V. (y L)) & depthfirst(the_obj) = dfsl(the_obj;L) | [depthfirst-dfsl] |
Thm* For any graph
the_obj:GraphObject(the_graph), L:V List. ( i L.(inr(i) dfsl(the_obj;L)) & (inl(i) dfsl(the_obj;L))) | [dfsl_member] |
Thm* For any graph
the_obj:GraphObject(the_graph), L:V List. paren(V;dfsl(the_obj;L)) & no_repeats(V+V;dfsl(the_obj;L)) | [dfsl_paren] |
Thm* For any graph
the_obj:GraphObject(the_graph), P:((V List) Traversal Prop). P(nil,nil)  ( L:V List, s:Traversal, i:V. paren(V;s)  no_repeats(V+V;s)  P(L,s)  P(L @ [i],dfs(the_obj;s;i)))  ( L:V List. paren(V;dfsl(the_obj;L)) & no_repeats(V+V;dfsl(the_obj;L)) & P(L,dfsl(the_obj;L))) | [dfsl-induction2] |
Thm* For any graph
the_obj:GraphObject(the_graph), P:((V List) Traversal Prop). P(nil,nil)  ( L:V List, s:Traversal, i:V. P(L,s)  P(L @ [i],dfs(the_obj;s;i)))  ( L:V List. P(L,dfsl(the_obj;L))) | [dfsl-induction1] |
Def topsortl(A;L) == mapoutl(dfsl(A;L)) | [topsortl] |