equal
deleted
inserted
replaced
521 Goal "[| zs \\<in> list(A); xs \\<in> list(A); ys \\<in> list(A) |] \ |
521 Goal "[| zs \\<in> list(A); xs \\<in> list(A); ys \\<in> list(A) |] \ |
522 \ ==> <xs, zs> \\<in> prefix(A) --> <ys,zs> \\<in> prefix(A) \ |
522 \ ==> <xs, zs> \\<in> prefix(A) --> <ys,zs> \\<in> prefix(A) \ |
523 \ --><xs,ys> \\<in> prefix(A) | <ys,xs> \\<in> prefix(A)"; |
523 \ --><xs,ys> \\<in> prefix(A) | <ys,xs> \\<in> prefix(A)"; |
524 by (etac list_append_induct 1); |
524 by (etac list_append_induct 1); |
525 by Auto_tac; |
525 by Auto_tac; |
526 qed_spec_mp "common_prefix_linear"; |
526 qed_spec_mp "common_prefix_linear_lemma"; |
|
527 |
|
528 Goal "[|<xs, zs> \\<in> prefix(A); <ys,zs> \\<in> prefix(A) |] \ |
|
529 \ ==> <xs,ys> \\<in> prefix(A) | <ys,xs> \\<in> prefix(A)"; |
|
530 by (cut_facts_tac [prefix_type] 1); |
|
531 by (blast_tac (claset() delrules [disjCI] addIs [common_prefix_linear_lemma]) 1); |
|
532 qed "common_prefix_linear"; |
527 |
533 |
528 |
534 |
529 (*** pfixLe, pfixGe: properties inherited from the translations ***) |
535 (*** pfixLe, pfixGe: properties inherited from the translations ***) |
530 |
536 |
531 |
537 |