Rank | Theorem | Name |
15 | Thm* For any graph
the_obj:GraphObject(the_graph), P:(V Traversal Traversal Prop), s:Traversal, i:V. ( s:Traversal, i:V. (inl(i) s) (inr(i) s)  P(i,s,nil))  ( s1,s2,s3:Traversal, i,j:V. i-the_graph- > j  paren(V;s2)  ( k:V. (inr(k) s2)  j-the_graph- > *k)  paren(V;s3)  P(j,s1,s2)  P(i,s2 @ s1,s3)  P(i,s1,s3 @ s2))  ( s1,s2:Traversal, i:V. (inr(i) s1)  (inl(i) s1)  paren(V;s2)  l_disjoint(V+V;s2;s1)  no_repeats(V+V;s2)  ( j:V. (inr(j) s2)  i-the_graph- > *j)  ( j:V. i-the_graph- > j  j = i  (inl(j) s2) (inl(j) s1) (inr(j) s1))  P(i,[inr(i) / s1],s2)  P(i,s1,[inl(i) / (s2 @ [inr(i)])]))  ( s':Traversal. P(i,s,s') & l_disjoint(V+V;s';s) & no_repeats(V+V;s') & paren(V;s') & ( j:V. (inr(j) s')  i-the_graph- > *j) & dfs(the_obj;s;i) = (s' @ s)) | [dfs_induction4] |
cites |
14 | Thm* For any graph
the_obj:GraphObject(the_graph), P:(V Traversal Traversal Prop), s:Traversal, i:V. ( s1,s2:Traversal, i:V. P(i,s1,s2)  l_disjoint(V+V;s2;s1) & no_repeats(V+V;s2))  ( s:Traversal, i:V. member-paren(x,y.the_obj.eq(x,y);i;s)  P(i,s,nil))  ( s1,s2,s3:Traversal, i,j:V. i-the_graph- > j  P(j,s1,s2)  P(i,s2 @ s1,s3)  P(i,s1,s3 @ s2))  ( s1,s2:Traversal, i:V. member-paren(x,y.the_obj.eq(x,y);i;s1)  ( j:V. i-the_graph- > j  j = i  (inl(j) s2) member-paren(x,y.the_obj.eq(x,y);j;s1))  P(i,[inr(i) / s1],s2)  P(i,s1,[inl(i) / (s2 @ [inr(i)])]))  ( s':Traversal. P(i,s,s') & dfs(the_obj;s;i) = (s' @ s)) | [dfs_induction3] |
3 | Thm* a,b,c:T List. l_disjoint(T;c;a @ b)  l_disjoint(T;c;a) & l_disjoint(T;c;b) | [l_disjoint_append2] |
1 | Thm* s',s3:(T+T) List. paren(T;s')  paren(T;s3)  paren(T;s3 @ s') | [append_paren] |
3 | Thm* a,b,c:T List. l_disjoint(T;a @ b;c)  l_disjoint(T;a;c) & l_disjoint(T;b;c) | [l_disjoint_append] |
2 | Thm* a,b:T List, t:T. l_disjoint(T;[t / a];b)  (t b) & l_disjoint(T;a;b) | [l_disjoint_cons] |
2 | Thm* E:(T T  ). ( x,y:T. E(x,y)  x = y)  ( i:T, s:(T+T) List. member-paren(x,y.E(x,y);i;s)  (inl(i) s) (inr(i) s)) | [assert-member-paren] |
0 | Thm* For any graph
the_obj:GraphObject(the_graph). ( x,y:V. the_obj.eq(x,y)  x = y) & ( T:Type, s:T, x:V, f:(T V T). L:V List. ( y:V. x-the_graph- > y  (y L)) & the_obj.eacc(f,s,x) = list_accum(s',x'.f(s',x');s;L)) & ( T:Type, s:T, f:(T V T). L:V List. no_repeats(V;L) & ( y:V. (y L)) & the_obj.vacc(f,s) = list_accum(s',x'.f(s',x');s;L)) | [graphobj-properties] |
2 | Thm* l1,l2:T List. no_repeats(T;l1 @ l2)  l_disjoint(T;l1;l2) & no_repeats(T;l1) & no_repeats(T;l2) | [no_repeats_append_iff] |
1 | Thm* l:T List, x:T. no_repeats(T;[x / l])  no_repeats(T;l) & (x l) | [no_repeats_cons] |
2 | Thm* a,b:T List, t:T. l_disjoint(T;b;[t / a])  (t b) & l_disjoint(T;b;a) | [l_disjoint_cons2] |
3 | Thm* s':(T+T) List. paren(T;s')  ( i:T. (inl(i) s')  (inr(i) s')) | [paren_balance1] |
0 | Thm* a,x:T. (x [a])  x = a | [member_singleton] |
2 | Thm* x:T, l1,l2:T List. (x l1 @ l2)  (x l1) (x l2) | [member_append] |
1 | Thm* l:T List, a,x:T. (x [a / l])  x = a (x l) | [cons_member] |