src/HOL/RelPow.ML
changeset 3023 01364e2f30ad
parent 2935 998cb95fdd43
child 3371 80f0d0b2f404
equal deleted inserted replaced
3022:7ffe67afeb94 3023:01364e2f30ad
    72 by (res_inst_tac [("n","n")] natE 1);
    72 by (res_inst_tac [("n","n")] natE 1);
    73 by (cut_facts_tac [p1] 1);
    73 by (cut_facts_tac [p1] 1);
    74 by (asm_full_simp_tac (!simpset addsimps [p2]) 1);
    74 by (asm_full_simp_tac (!simpset addsimps [p2]) 1);
    75 by (cut_facts_tac [p1] 1);
    75 by (cut_facts_tac [p1] 1);
    76 by (Asm_full_simp_tac 1);
    76 by (Asm_full_simp_tac 1);
    77 be compEpair 1;
    77 by (etac compEpair 1);
    78 by (dtac (conjI RS rel_pow_Suc_D2') 1);
    78 by (dtac (conjI RS rel_pow_Suc_D2') 1);
    79 ba 1;
    79 by (assume_tac 1);
    80 by (etac exE 1);
    80 by (etac exE 1);
    81 by (etac p3 1);
    81 by (etac p3 1);
    82 by (etac conjunct1 1);
    82 by (etac conjunct1 1);
    83 by (etac conjunct2 1);
    83 by (etac conjunct2 1);
    84 qed "rel_pow_E2";
    84 qed "rel_pow_E2";
    91 
    91 
    92 goal RelPow.thy "!y. (x,y):R^n --> (x,y):R^*";
    92 goal RelPow.thy "!y. (x,y):R^n --> (x,y):R^*";
    93 by (nat_ind_tac "n" 1);
    93 by (nat_ind_tac "n" 1);
    94 by (blast_tac (!claset addIs [rtrancl_refl] addEs [rel_pow_0_E]) 1);
    94 by (blast_tac (!claset addIs [rtrancl_refl] addEs [rel_pow_0_E]) 1);
    95 by (blast_tac (!claset addEs [rel_pow_Suc_E]
    95 by (blast_tac (!claset addEs [rel_pow_Suc_E]
    96 	               addIs [rtrancl_into_rtrancl]) 1);
    96                        addIs [rtrancl_into_rtrancl]) 1);
    97 val lemma = result() RS spec RS mp;
    97 val lemma = result() RS spec RS mp;
    98 
    98 
    99 goal RelPow.thy "!!p. p:R^n ==> p:R^*";
    99 goal RelPow.thy "!!p. p:R^n ==> p:R^*";
   100 by (split_all_tac 1);
   100 by (split_all_tac 1);
   101 by (etac lemma 1);
   101 by (etac lemma 1);