equal
deleted
inserted
replaced
152 end |
152 end |
153 | perm_simproc' thy ss _ = NONE; |
153 | perm_simproc' thy ss _ = NONE; |
154 |
154 |
155 val perm_simproc = |
155 val perm_simproc = |
156 Simplifier.simproc (the_context ()) "perm_simp" ["pi1 \<bullet> (pi2 \<bullet> x)"] perm_simproc'; |
156 Simplifier.simproc (the_context ()) "perm_simp" ["pi1 \<bullet> (pi2 \<bullet> x)"] perm_simproc'; |
157 |
|
158 val allE_Nil = Drule.read_instantiate_sg (the_context()) [("x", "[]")] allE; |
|
159 |
157 |
160 val meta_spec = thm "meta_spec"; |
158 val meta_spec = thm "meta_spec"; |
161 |
159 |
162 fun projections rule = |
160 fun projections rule = |
163 ProjectRule.projections (ProofContext.init (Thm.theory_of_thm rule)) rule |
161 ProjectRule.projections (ProofContext.init (Thm.theory_of_thm rule)) rule |
1347 resolve_tac final 1 |
1345 resolve_tac final 1 |
1348 end) context1 1) (constrs ~~ constrs')) (descr'' ~~ ndescr))) |
1346 end) context1 1) (constrs ~~ constrs')) (descr'' ~~ ndescr))) |
1349 in |
1347 in |
1350 EVERY |
1348 EVERY |
1351 [cut_facts_tac [th] 1, |
1349 [cut_facts_tac [th] 1, |
1352 REPEAT (eresolve_tac [conjE, allE_Nil] 1), |
1350 REPEAT (eresolve_tac [conjE, @{thm allE_Nil}] 1), |
1353 REPEAT (etac allE 1), |
1351 REPEAT (etac allE 1), |
1354 REPEAT (TRY (rtac conjI 1) THEN asm_full_simp_tac ind_ss5 1)] |
1352 REPEAT (TRY (rtac conjI 1) THEN asm_full_simp_tac ind_ss5 1)] |
1355 end); |
1353 end); |
1356 |
1354 |
1357 val induct_aux' = Thm.instantiate ([], |
1355 val induct_aux' = Thm.instantiate ([], |