equal
deleted
inserted
replaced
142 from choice[OF this] guess N .. note N = this |
142 from choice[OF this] guess N .. note N = this |
143 then have UN_N: "(\<Union>i. N i) \<in> null_sets" by (intro null_sets_UN) auto |
143 then have UN_N: "(\<Union>i. N i) \<in> null_sets" by (intro null_sets_UN) auto |
144 have "(\<Union>i. S i) \<in> sets completion" using S by auto |
144 have "(\<Union>i. S i) \<in> sets completion" using S by auto |
145 from null_part[OF this] guess N' .. note N' = this |
145 from null_part[OF this] guess N' .. note N' = this |
146 let ?N = "(\<Union>i. N i) \<union> N'" |
146 let ?N = "(\<Union>i. N i) \<union> N'" |
147 have null_set: "?N \<in> null_sets" using N' UN_N by (intro null_sets_Un) auto |
147 have null_set: "?N \<in> null_sets" using N' UN_N by (intro nullsets.Un) auto |
148 have "main_part (\<Union>i. S i) \<union> ?N = (main_part (\<Union>i. S i) \<union> null_part (\<Union>i. S i)) \<union> ?N" |
148 have "main_part (\<Union>i. S i) \<union> ?N = (main_part (\<Union>i. S i) \<union> null_part (\<Union>i. S i)) \<union> ?N" |
149 using N' by auto |
149 using N' by auto |
150 also have "\<dots> = (\<Union>i. main_part (S i) \<union> null_part (S i)) \<union> ?N" |
150 also have "\<dots> = (\<Union>i. main_part (S i) \<union> null_part (S i)) \<union> ?N" |
151 unfolding main_part_null_part_Un[OF S] main_part_null_part_Un[OF UN] by auto |
151 unfolding main_part_null_part_Un[OF S] main_part_null_part_Un[OF UN] by auto |
152 also have "\<dots> = (\<Union>i. main_part (S i)) \<union> ?N" |
152 also have "\<dots> = (\<Union>i. main_part (S i)) \<union> ?N" |
210 have "\<forall>x. \<exists>N. N \<in> null_sets \<and> null_part (?F x) \<subseteq> N" |
210 have "\<forall>x. \<exists>N. N \<in> null_sets \<and> null_part (?F x) \<subseteq> N" |
211 using F null_part by auto |
211 using F null_part by auto |
212 from choice[OF this] obtain N where |
212 from choice[OF this] obtain N where |
213 N: "\<And>x. null_part (?F x) \<subseteq> N x" "\<And>x. N x \<in> null_sets" by auto |
213 N: "\<And>x. null_part (?F x) \<subseteq> N x" "\<And>x. N x \<in> null_sets" by auto |
214 let ?N = "\<Union>x\<in>f`space M. N x" let "?f' x" = "if x \<in> ?N then undefined else f x" |
214 let ?N = "\<Union>x\<in>f`space M. N x" let "?f' x" = "if x \<in> ?N then undefined else f x" |
215 have sets: "?N \<in> null_sets" using N fin by (intro null_sets_finite_UN) auto |
215 have sets: "?N \<in> null_sets" using N fin by (intro nullsets.finite_UN) auto |
216 show ?thesis unfolding simple_function_def |
216 show ?thesis unfolding simple_function_def |
217 proof (safe intro!: exI[of _ ?f']) |
217 proof (safe intro!: exI[of _ ?f']) |
218 have "?f' ` space M \<subseteq> f`space M \<union> {undefined}" by auto |
218 have "?f' ` space M \<subseteq> f`space M \<union> {undefined}" by auto |
219 from finite_subset[OF this] completion.simple_functionD(1)[OF f] |
219 from finite_subset[OF this] completion.simple_functionD(1)[OF f] |
220 show "finite (?f' ` space M)" by auto |
220 show "finite (?f' ` space M)" by auto |