Thm* For any graph
L1,L2:V List, s:Traversal. L1-- > *L2  dfsl-traversal(the_graph;L1;s)  dfsl-traversal(the_graph;L1 @ L2;s) | [dfsl-traversal-append] |
Thm* For any graph
A,B,C:V List. A-- > *C B-- > *C  A @ B-- > *C | [list-list-connect-append2] |
Thm* For any graph
A,B,C:V List. A-- > *B @ C  A-- > *B & A-- > *C | [list-list-connect-append] |
Thm* For any graph
A,B:V List, i:V. A @ B-- > *i  A-- > *i B-- > *i | [list-connect-append] |
Thm* s:(T+T) List. paren(T;s)  no_repeats(T+T;s)  ( s1,s2,s3:(T+T) List, x:T. s = (s1 @ [inl(x)] @ s2 @ [inr(x)] @ s3)  paren(T;s2)) | [paren_interval] |
Thm* s:(T+T) List. paren(T;s)  ( i:T, s1,s2:(T+T) List. s = (s1 @ [inl(i)] @ s2)  (inr(i) s2)) | [paren_order1] |
Thm* s',s3:(T+T) List. paren(T;s')  paren(T;s3)  paren(T;s3 @ s') | [append_paren] |
Thm* P:(((T+T) List) Prop). P(nil)  ( s1,s2:(T+T) List. P(s1)  P(s2)  paren(T;s1)  paren(T;s2)  P(s1 @ s2))  ( s:(T+T) List, t:T. P(s)  paren(T;s)  P([inl(t)] @ s @ [inr(t)]))  ( s:(T+T) List. paren(T;s)  P(s)) | [paren_induction] |
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] |
Def dfl-traversal(the_graph;L;s) == ( i:Vertices(the_graph), s1,s2:traversal(the_graph). s = (s1 @ [inr(i)] @ s2) traversal(the_graph)  ( j:Vertices(the_graph). (inr(j) s2)  (inl(j) s2)  j-the_graph- > *i)) & ( j:Vertices(the_graph). (inr(j) s)  L-the_graph- > *j) & ( i:Vertices(the_graph), s1,s2:traversal(the_graph). ( j:Vertices(the_graph). i-the_graph- > *j  non-trivial-loop(the_graph;j))  s = (s1 @ [inl(i)] @ s2) traversal(the_graph)  L-the_graph- > *i) | [dfl-traversal] |
Def depthfirst-traversal(the_graph;s) == i:Vertices(the_graph), s1,s2:traversal(the_graph). ( j:Vertices(the_graph). i-the_graph- > *j  non-trivial-loop(the_graph;j))  s = (s1 @ [inl(i)] @ s2) traversal(the_graph)  ( j:Vertices(the_graph). j = i  i-the_graph- > *j  (inl(j) s2)) | [depthfirst-traversal] |
Def df-traversal(G;s) == ( i:Vertices(G), s1,s2:traversal(G). s = (s1 @ [inr(i)] @ s2) traversal(G)  ( j:Vertices(G). (inr(j) s2)  (inl(j) s2)  j-G- > *i)) & ( i:Vertices(G), s1,s2:traversal(G). ( j:Vertices(G). i-G- > *j  non-trivial-loop(G;j))  s = (s1 @ [inl(i)] @ s2) traversal(G)  ( j:Vertices(G). i-G- > *j  (inr(j) s2))) | [df-traversal] |
Def paren(T;s) == s = nil (T+T) List ( t:T, s':(T+T) List. s = ([inl(t)] @ s' @ [inr(t)]) & paren(T;s')) ( s',s'':(T+T) List. ||s'|| < ||s|| & ||s''|| < ||s|| & s = (s' @ s'') & paren(T;s') & paren(T;s'')) (recursive) | [paren] |