Quot/Examples/FSet.thy
changeset 642 005e4edc65ef
parent 641 b98d64dc98d9
parent 640 5cb44fe9ae8e
child 646 10d04ee52101
equal deleted inserted replaced
641:b98d64dc98d9 642:005e4edc65ef
   338 
   338 
   339 lemma "\<lbrakk>P EMPTY; \<And>a x. P x \<Longrightarrow> P (INSERT a x)\<rbrakk> \<Longrightarrow> P l"
   339 lemma "\<lbrakk>P EMPTY; \<And>a x. P x \<Longrightarrow> P (INSERT a x)\<rbrakk> \<Longrightarrow> P l"
   340 apply (tactic {* (ObjectLogic.full_atomize_tac THEN' gen_frees_tac @{context}) 1 *})
   340 apply (tactic {* (ObjectLogic.full_atomize_tac THEN' gen_frees_tac @{context}) 1 *})
   341 apply(tactic {* procedure_tac @{context} @{thm list.induct} 1 *})
   341 apply(tactic {* procedure_tac @{context} @{thm list.induct} 1 *})
   342 apply(tactic {* regularize_tac @{context} 1 *})
   342 apply(tactic {* regularize_tac @{context} 1 *})
   343 defer
   343 apply(injection)
   344 apply(tactic {* clean_tac @{context} 1 *})
   344 apply(tactic {* clean_tac @{context} 1 *})
   345 apply(tactic {* inj_repabs_tac @{context} 1*})+
       
   346 done
   345 done
   347 
   346 
   348 lemma list_induct_part:
   347 lemma list_induct_part:
   349   assumes a: "P (x :: 'a list) ([] :: 'c list)"
   348   assumes a: "P (x :: 'a list) ([] :: 'c list)"
   350   assumes b: "\<And>e t. P x t \<Longrightarrow> P x (e # t)"
   349   assumes b: "\<And>e t. P x t \<Longrightarrow> P x (e # t)"