src/HOL/Finite_Set.thy
changeset 27165 e1c49eb8cee6
parent 26792 f2d75fd23124
child 27418 564117b58d73
equal deleted inserted replaced
27164:81632fd4ff61 27165:e1c49eb8cee6
   533 next
   533 next
   534   case (Suc m)
   534   case (Suc m)
   535   have nSuc: "n = Suc m" by fact
   535   have nSuc: "n = Suc m" by fact
   536   have mlessn: "m<n" by (simp add: nSuc)
   536   have mlessn: "m<n" by (simp add: nSuc)
   537   from aA obtain k where hkeq: "h k = a" and klessn: "k<n" by (blast elim!: equalityE)
   537   from aA obtain k where hkeq: "h k = a" and klessn: "k<n" by (blast elim!: equalityE)
   538   let ?hm = "swap k m h"
   538   let ?hm = "Fun.swap k m h"
   539   have inj_hm: "inj_on ?hm {i. i < n}" using klessn mlessn 
   539   have inj_hm: "inj_on ?hm {i. i < n}" using klessn mlessn 
   540     by (simp add: inj_on_swap_iff inj_on)
   540     by (simp add: inj_on_swap_iff inj_on)
   541   show ?thesis
   541   show ?thesis
   542   proof (intro exI conjI)
   542   proof (intro exI conjI)
   543     show "inj_on ?hm {i. i < m}" using inj_hm
   543     show "inj_on ?hm {i. i < m}" using inj_hm
   544       by (auto simp add: nSuc less_Suc_eq intro: subset_inj_on)
   544       by (auto simp add: nSuc less_Suc_eq intro: subset_inj_on)
   545     show "m<n" by (rule mlessn)
   545     show "m<n" by (rule mlessn)
   546     show "A = ?hm ` {i. i < m}" 
   546     show "A = ?hm ` {i. i < m}" 
   547     proof (rule insert_image_inj_on_eq)
   547     proof (rule insert_image_inj_on_eq)
   548       show "inj_on (swap k m h) {i. i < Suc m}" using inj_hm nSuc by simp
   548       show "inj_on (Fun.swap k m h) {i. i < Suc m}" using inj_hm nSuc by simp
   549       show "?hm m \<notin> A" by (simp add: swap_def hkeq anot) 
   549       show "?hm m \<notin> A" by (simp add: swap_def hkeq anot) 
   550       show "insert (?hm m) A = ?hm ` {i. i < Suc m}"
   550       show "insert (?hm m) A = ?hm ` {i. i < Suc m}"
   551 	using aA hkeq nSuc klessn
   551 	using aA hkeq nSuc klessn
   552 	by (auto simp add: swap_def image_less_Suc fun_upd_image 
   552 	by (auto simp add: swap_def image_less_Suc fun_upd_image 
   553 			   less_Suc_eq inj_on_image_set_diff [OF inj_on])
   553 			   less_Suc_eq inj_on_image_set_diff [OF inj_on])