src/HOL/Analysis/Tagged_Division.thy
changeset 67443 3abf6a722518
parent 67399 eab6ce8368fa
child 67968 a5ad4c015d1c
equal deleted inserted replaced
67442:f075640b8868 67443:3abf6a722518
  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)