374 |
374 |
375 Goal "sforall P (sfilter`P`x)"; |
375 Goal "sforall P (sfilter`P`x)"; |
376 by (simp_tac (simpset() addsimps [sforall_def]) 1); |
376 by (simp_tac (simpset() addsimps [sforall_def]) 1); |
377 by (res_inst_tac[("x","x")] seq.ind 1); |
377 by (res_inst_tac[("x","x")] seq.ind 1); |
378 (* adm *) |
378 (* adm *) |
379 (* FIX should be refined in _one_ tactic *) |
|
380 by (simp_tac (simpset() addsimps [adm_trick_1]) 1); |
379 by (simp_tac (simpset() addsimps [adm_trick_1]) 1); |
381 (* base cases *) |
380 (* base cases *) |
382 by (Simp_tac 1); |
381 by (Simp_tac 1); |
383 by (Simp_tac 1); |
382 by (Simp_tac 1); |
384 (* main case *) |
383 (* main case *) |
458 by (assume_tac 1); |
457 by (assume_tac 1); |
459 by (Asm_full_simp_tac 1); |
458 by (Asm_full_simp_tac 1); |
460 qed"seq_finite_ind"; |
459 qed"seq_finite_ind"; |
461 |
460 |
462 |
461 |
463 |
|
464 |
|
465 (* |
|
466 (* ----------------------------------------------------------------- |
|
467 Fr"uhere Herleitung des endlichen Induktionsprinzips |
|
468 aus dem seq_finite Induktionsprinzip. |
|
469 Problem bei admissibility von Finite-->seq_finite! |
|
470 Deshalb Finite jetzt induktiv und nicht mehr rekursiv definiert! |
|
471 ------------------------------------------------------------------ *) |
|
472 |
|
473 Goal "seq_finite nil"; |
|
474 by (simp_tac (simpset() addsimps [seq.sfinite_def]) 1); |
|
475 by (res_inst_tac [("x","Suc 0")] exI 1); |
|
476 by (simp_tac (simpset() addsimps seq.rews) 1); |
|
477 qed"seq_finite_nil"; |
|
478 |
|
479 Goal "seq_finite UU"; |
|
480 by (simp_tac (simpset() addsimps [seq.sfinite_def]) 1); |
|
481 qed"seq_finite_UU"; |
|
482 |
|
483 Addsimps[seq_finite_nil,seq_finite_UU]; |
|
484 |
|
485 goal HOL.thy "(B-->A) --> (A--> (B-->C))--> (B--> C)"; |
|
486 by (fast_tac HOL_cs 1); |
|
487 qed"logic_lemma"; |
|
488 |
|
489 |
|
490 Goal "!!P.[| P nil; \ |
|
491 \ !!a t. [|a~=UU;Finite t; P t|] ==> P (a##t)|]\ |
|
492 \ ==> Finite x --> P x"; |
|
493 |
|
494 by (rtac (logic_lemma RS mp RS mp) 1); |
|
495 by (rtac trf_impl_tf 1); |
|
496 by (rtac seq_finite_ind 1); |
|
497 by (simp_tac (simpset() addsimps [Finite_def]) 1); |
|
498 by (simp_tac (simpset() addsimps [Finite_def]) 1); |
|
499 by (asm_full_simp_tac (simpset() addsimps [Finite_def]) 1); |
|
500 qed"Finite_ind"; |
|
501 |
|
502 |
|
503 Goal "Finite tr --> seq_finite tr"; |
|
504 by (rtac seq.ind 1); |
|
505 (* adm *) |
|
506 (* hier grosses Problem !!!!!!!!!!!!!!! *) |
|
507 |
|
508 by (simp_tac (simpset() addsimps [Finite_def]) 2); |
|
509 by (simp_tac (simpset() addsimps [Finite_def]) 2); |
|
510 |
|
511 (* main case *) |
|
512 by (asm_full_simp_tac (simpset() addsimps [Finite_def,seq.sfinite_def]) 2); |
|
513 by (rtac impI 2); |
|
514 by (rotate_tac 2 2); |
|
515 by (Asm_full_simp_tac 2); |
|
516 by (etac exE 2); |
|
517 by (res_inst_tac [("x","Suc n")] exI 2); |
|
518 by (asm_full_simp_tac (simpset() addsimps seq.rews) 2); |
|
519 qed"tf_is_trf"; |
|
520 |
|
521 *) |
|
522 |
|