equal
deleted
inserted
replaced
279 by (REPEAT(rtac Def_not_UU 1)); |
279 by (REPEAT(rtac Def_not_UU 1)); |
280 qed"Cons_inject_eq"; |
280 qed"Cons_inject_eq"; |
281 |
281 |
282 Goal "(a>>s<<b>>t) = (a = b & s<<t)"; |
282 Goal "(a>>s<<b>>t) = (a = b & s<<t)"; |
283 by (simp_tac (simpset() addsimps [Consq_def2]) 1); |
283 by (simp_tac (simpset() addsimps [Consq_def2]) 1); |
284 by (stac (Def_inject_less_eq RS sym) 1); |
284 by (simp_tac (simpset() addsimps [seq.inverts]) 1); |
|
285 (*by (stac (Def_inject_less_eq RS sym) 1); |
285 back(); |
286 back(); |
286 by (rtac iffI 1); |
287 by (rtac iffI 1); |
287 (* 1 *) |
|
288 by (etac (hd seq.inverts) 1); |
288 by (etac (hd seq.inverts) 1); |
289 by (REPEAT(rtac Def_not_UU 1)); |
289 by (REPEAT(rtac Def_not_UU 1)); |
290 (* 2 *) |
|
291 by (Asm_full_simp_tac 1); |
290 by (Asm_full_simp_tac 1); |
292 by (etac conjE 1); |
291 by (etac conjE 1); |
293 by (etac monofun_cfun_arg 1); |
292 by (etac monofun_cfun_arg 1);*) |
294 qed"Cons_inject_less_eq"; |
293 qed"Cons_inject_less_eq"; |
295 |
294 |
296 Goal "seq_take (Suc n)$(a>>x) = a>> (seq_take n$x)"; |
295 Goal "seq_take (Suc n)$(a>>x) = a>> (seq_take n$x)"; |
297 by (simp_tac (simpset() addsimps [Consq_def]) 1); |
296 by (simp_tac (simpset() addsimps [Consq_def]) 1); |
298 qed"seq_take_Cons"; |
297 qed"seq_take_Cons"; |
842 |
841 |
843 section "take_lemma"; |
842 section "take_lemma"; |
844 |
843 |
845 Goal "(!n. seq_take n$x = seq_take n$x') = (x = x')"; |
844 Goal "(!n. seq_take n$x = seq_take n$x') = (x = x')"; |
846 by (rtac iffI 1); |
845 by (rtac iffI 1); |
847 by (resolve_tac seq.take_lemmas 1); |
846 by (resolve_tac [seq.take_lemmas] 1); |
848 by Auto_tac; |
847 by Auto_tac; |
849 qed"seq_take_lemma"; |
848 qed"seq_take_lemma"; |
850 |
849 |
851 Goal |
850 Goal |
852 " ! n. ((! k. k < n --> seq_take k$y1 = seq_take k$y2) \ |
851 " ! n. ((! k. k < n --> seq_take k$y1 = seq_take k$y2) \ |
930 \ ==> ! n. seq_take n$(f (s1 @@ y>>s2)) \ |
929 \ ==> ! n. seq_take n$(f (s1 @@ y>>s2)) \ |
931 \ = seq_take n$(g (s1 @@ y>>s2)) |] \ |
930 \ = seq_take n$(g (s1 @@ y>>s2)) |] \ |
932 \ ==> A x --> (f x)=(g x)"; |
931 \ ==> A x --> (f x)=(g x)"; |
933 by (case_tac "Forall Q x" 1); |
932 by (case_tac "Forall Q x" 1); |
934 by (auto_tac (claset() addSDs [divide_Seq3],simpset())); |
933 by (auto_tac (claset() addSDs [divide_Seq3],simpset())); |
935 by (resolve_tac seq.take_lemmas 1); |
934 by (resolve_tac [seq.take_lemmas] 1); |
936 by Auto_tac; |
935 by Auto_tac; |
937 qed"take_lemma_principle2"; |
936 qed"take_lemma_principle2"; |
938 |
937 |
939 |
938 |
940 (* Note: in the following proofs the ordering of proof steps is very |
939 (* Note: in the following proofs the ordering of proof steps is very |
951 \ Forall Q s1; Finite s1; ~ Q y; A (s1 @@ y>>s2) |] \ |
950 \ Forall Q s1; Finite s1; ~ Q y; A (s1 @@ y>>s2) |] \ |
952 \ ==> seq_take (Suc n)$(f (s1 @@ y>>s2)) \ |
951 \ ==> seq_take (Suc n)$(f (s1 @@ y>>s2)) \ |
953 \ = seq_take (Suc n)$(g (s1 @@ y>>s2)) |] \ |
952 \ = seq_take (Suc n)$(g (s1 @@ y>>s2)) |] \ |
954 \ ==> A x --> (f x)=(g x)"; |
953 \ ==> A x --> (f x)=(g x)"; |
955 by (rtac impI 1); |
954 by (rtac impI 1); |
956 by (resolve_tac seq.take_lemmas 1); |
955 by (resolve_tac [seq.take_lemmas] 1); |
957 by (rtac mp 1); |
956 by (rtac mp 1); |
958 by (assume_tac 2); |
957 by (assume_tac 2); |
959 by (res_inst_tac [("x","x")] spec 1); |
958 by (res_inst_tac [("x","x")] spec 1); |
960 by (rtac nat_induct 1); |
959 by (rtac nat_induct 1); |
961 by (Simp_tac 1); |
960 by (Simp_tac 1); |
973 \ Forall Q s1; Finite s1; ~ Q y; A (s1 @@ y>>s2) |] \ |
972 \ Forall Q s1; Finite s1; ~ Q y; A (s1 @@ y>>s2) |] \ |
974 \ ==> seq_take n$(f (s1 @@ y>>s2)) \ |
973 \ ==> seq_take n$(f (s1 @@ y>>s2)) \ |
975 \ = seq_take n$(g (s1 @@ y>>s2)) |] \ |
974 \ = seq_take n$(g (s1 @@ y>>s2)) |] \ |
976 \ ==> A x --> (f x)=(g x)"; |
975 \ ==> A x --> (f x)=(g x)"; |
977 by (rtac impI 1); |
976 by (rtac impI 1); |
978 by (resolve_tac seq.take_lemmas 1); |
977 by (resolve_tac [seq.take_lemmas] 1); |
979 by (rtac mp 1); |
978 by (rtac mp 1); |
980 by (assume_tac 2); |
979 by (assume_tac 2); |
981 by (res_inst_tac [("x","x")] spec 1); |
980 by (res_inst_tac [("x","x")] spec 1); |
982 by (rtac nat_less_induct 1); |
981 by (rtac nat_less_induct 1); |
983 by (rtac allI 1); |
982 by (rtac allI 1); |
996 \ A (y>>s) |] \ |
995 \ A (y>>s) |] \ |
997 \ ==> seq_take (Suc n)$(f (y>>s)) \ |
996 \ ==> seq_take (Suc n)$(f (y>>s)) \ |
998 \ = seq_take (Suc n)$(g (y>>s)) |] \ |
997 \ = seq_take (Suc n)$(g (y>>s)) |] \ |
999 \ ==> A x --> (f x)=(g x)"; |
998 \ ==> A x --> (f x)=(g x)"; |
1000 by (rtac impI 1); |
999 by (rtac impI 1); |
1001 by (resolve_tac seq.take_lemmas 1); |
1000 by (resolve_tac [seq.take_lemmas] 1); |
1002 by (rtac mp 1); |
1001 by (rtac mp 1); |
1003 by (assume_tac 2); |
1002 by (assume_tac 2); |
1004 by (res_inst_tac [("x","x")] spec 1); |
1003 by (res_inst_tac [("x","x")] spec 1); |
1005 by (rtac nat_induct 1); |
1004 by (rtac nat_induct 1); |
1006 by (Simp_tac 1); |
1005 by (Simp_tac 1); |