shortened proof of some1_equality
authoroheimb
Wed, 31 Jan 2001 10:13:22 +0100
changeset 11006e85c0e2f33d6
parent 11005 86f662ba3c3f
child 11007 438f31613093
shortened proof of some1_equality
src/HOL/HOL_lemmas.ML
     1.1 --- a/src/HOL/HOL_lemmas.ML	Wed Jan 31 01:13:01 2001 +0100
     1.2 +++ b/src/HOL/HOL_lemmas.ML	Wed Jan 31 10:13:22 2001 +0100
     1.3 @@ -346,34 +346,30 @@
     1.4  qed "someI_ex";
     1.5  
     1.6  (*Easier to apply than someI: conclusion has only one occurrence of P*)
     1.7 -val prems = Goal
     1.8 -    "[| P a;  !!x. P x ==> Q x |] ==> Q (SOME x. P x)";
     1.9 +val prems = Goal "[| P a;  !!x. P x ==> Q x |] ==> Q (SOME x. P x)";
    1.10  by (resolve_tac prems 1);
    1.11  by (rtac someI 1);
    1.12  by (resolve_tac prems 1) ;
    1.13  qed "someI2";
    1.14  
    1.15  (*Easier to apply than someI2 if witness ?a comes from an EX-formula*)
    1.16 -val [major,minor] = Goal "[| EX a. P a;  !!x. P x ==> Q x |] ==> Q (SOME x. P x)";
    1.17 +val [major,minor] = Goal "[| EX a. P a; !!x. P x ==> Q x |] ==> Q (SOME x. P x)";
    1.18  by (rtac (major RS exE) 1);
    1.19  by (etac someI2 1 THEN etac minor 1);
    1.20  qed "someI2_ex";
    1.21  
    1.22 -val prems = Goal
    1.23 -    "[| P a;  !!x. P x ==> x=a |] ==> (SOME x. P x) = a";
    1.24 +val prems = Goal "[| P a;  !!x. P x ==> x=a |] ==> (SOME x. P x) = a";
    1.25  by (rtac someI2 1);
    1.26  by (REPEAT (ares_tac prems 1)) ;
    1.27  qed "some_equality";
    1.28  
    1.29 -Goalw [Ex1_def] "[| EX!x. P x; P a |] ==> (SOME x. P x) = a";
    1.30 +Goal "[| EX!x. P x; P a |] ==> (SOME x. P x) = a";
    1.31  by (rtac some_equality 1);
    1.32 -by (atac 1);
    1.33 -by (etac exE 1);
    1.34 -by (etac conjE 1);
    1.35 -by (rtac allE 1);
    1.36 -by (atac 1);
    1.37 -by (etac impE 1);
    1.38 -by (atac 1);
    1.39 +by  (atac 1);
    1.40 +by (etac ex1E 1);
    1.41 +by (etac all_dupE 1);
    1.42 +by (dtac mp 1);
    1.43 +by  (atac 1);
    1.44  by (etac ssubst 1);
    1.45  by (etac allE 1);
    1.46  by (etac mp 1);
    1.47 @@ -485,3 +481,4 @@
    1.48  
    1.49  
    1.50  fun strip_tac i = REPEAT(resolve_tac [impI,allI] i);
    1.51 +