2351 by (clarsimp simp: box_eq_empty) (fastforce simp add: divide_simps dest: PiE_mem) |
2351 by (clarsimp simp: box_eq_empty) (fastforce simp add: divide_simps dest: PiE_mem) |
2352 next |
2352 next |
2353 have realff: "(real w) * 2^m < (real v) * 2^n \<longleftrightarrow> w * 2^m < v * 2^n" for m n v w |
2353 have realff: "(real w) * 2^m < (real v) * 2^n \<longleftrightarrow> w * 2^m < v * 2^n" for m n v w |
2354 using of_nat_less_iff less_imp_of_nat_less by fastforce |
2354 using of_nat_less_iff less_imp_of_nat_less by fastforce |
2355 have *: "\<forall>v w. ?K0(m,v) \<subseteq> ?K0(n,w) \<or> ?K0(n,w) \<subseteq> ?K0(m,v) \<or> interior(?K0(m,v)) \<inter> interior(?K0(n,w)) = {}" |
2355 have *: "\<forall>v w. ?K0(m,v) \<subseteq> ?K0(n,w) \<or> ?K0(n,w) \<subseteq> ?K0(m,v) \<or> interior(?K0(m,v)) \<inter> interior(?K0(n,w)) = {}" |
2356 for m n \<comment>\<open>The symmetry argument requires a single HOL formula\<close> |
2356 for m n \<comment> \<open>The symmetry argument requires a single HOL formula\<close> |
2357 proof (rule linorder_wlog [where a=m and b=n], intro allI impI) |
2357 proof (rule linorder_wlog [where a=m and b=n], intro allI impI) |
2358 fix v w m and n::nat |
2358 fix v w m and n::nat |
2359 assume "m \<le> n" \<comment>\<open>WLOG we can assume @{term"m \<le> n"}, when the first disjunct becomes impossible\<close> |
2359 assume "m \<le> n" \<comment> \<open>WLOG we can assume @{term"m \<le> n"}, when the first disjunct becomes impossible\<close> |
2360 have "?K0(n,w) \<subseteq> ?K0(m,v) \<or> interior(?K0(m,v)) \<inter> interior(?K0(n,w)) = {}" |
2360 have "?K0(n,w) \<subseteq> ?K0(m,v) \<or> interior(?K0(m,v)) \<inter> interior(?K0(n,w)) = {}" |
2361 apply (simp add: subset_box disjoint_interval) |
2361 apply (simp add: subset_box disjoint_interval) |
2362 apply (rule ccontr) |
2362 apply (rule ccontr) |
2363 apply (clarsimp simp add: aibi mult_le_cancel_right divide_le_cancel not_less not_le) |
2363 apply (clarsimp simp add: aibi mult_le_cancel_right divide_le_cancel not_less not_le) |
2364 apply (drule_tac x=i in bspec, assumption) |
2364 apply (drule_tac x=i in bspec, assumption) |