equal
deleted
inserted
replaced
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); |