src/HOL/Lex/RegSet_of_nat_DA.ML
changeset 5521 7970832271cc
parent 5458 0e26af5975ba
child 5625 77e9ab9cd7b1
equal deleted inserted replaced
5520:e2484f1786b7 5521:7970832271cc
   132 
   132 
   133 goal Nat.thy "!!n. [| n < Suc k; n ~= k |] ==> n < k";
   133 goal Nat.thy "!!n. [| n < Suc k; n ~= k |] ==> n < k";
   134 by (etac nat_neqE 1);
   134 by (etac nat_neqE 1);
   135 by (ALLGOALS trans_tac);
   135 by (ALLGOALS trans_tac);
   136 val lemma = result();
   136 val lemma = result();
   137 
       
   138 
   137 
   139 Goal
   138 Goal
   140  "!i j xs. xs : regset d i j k = \
   139  "!i j xs. xs : regset d i j k = \
   141 \          ((!n:set(butlast(trace d i xs)). n < k) & deltas d xs i = j)";
   140 \          ((!n:set(butlast(trace d i xs)). n < k) & deltas d xs i = j)";
   142 by (induct_tac "k" 1);
   141 by (induct_tac "k" 1);
   179   by (Asm_simp_tac 2);
   178   by (Asm_simp_tac 2);
   180  by (EVERY[dtac bspec 1, atac 2]);
   179  by (EVERY[dtac bspec 1, atac 2]);
   181  by (asm_simp_tac (simpset() addsimps [image_eqI,in_set_butlast_concatI]) 1);
   180  by (asm_simp_tac (simpset() addsimps [image_eqI,in_set_butlast_concatI]) 1);
   182 by (rtac ballI 1);
   181 by (rtac ballI 1);
   183 by (rtac lemma 1);
   182 by (rtac lemma 1);
   184  by (Asm_simp_tac 2);
   183  by (Auto_tac);
   185 by (EVERY[dtac bspec 1, atac 2]);
       
   186 by (Asm_simp_tac 1);
       
   187 qed_spec_mp "regset_spec";
   184 qed_spec_mp "regset_spec";
   188 
   185 
   189 Goalw [bounded_def]
   186 Goalw [bounded_def]
   190  "bounded d k ==> !i. i < k --> (!n:set(trace d i xs). n < k)";
   187  "bounded d k ==> !i. i < k --> (!n:set(trace d i xs). n < k)";
   191 by (induct_tac "xs" 1);
   188 by (induct_tac "xs" 1);