src/HOL/Real/HahnBanach/HahnBanachExtLemmas.thy
changeset 10606 e3229a37d53f
parent 10007 64bf7da1994a
child 10687 c186279eecea
equal deleted inserted replaced
10605:fe12dc60bc3c 10606:e3229a37d53f
   282     taken as $y/a$: *}
   282     taken as $y/a$: *}
   283 
   283 
   284     next
   284     next
   285       assume lz: "a < #0" hence nz: "a \<noteq> #0" by simp
   285       assume lz: "a < #0" hence nz: "a \<noteq> #0" by simp
   286       from a1 
   286       from a1 
   287       have "- p (rinv a \<cdot> y + x0) - h (rinv a \<cdot> y) <= xi"
   287       have "- p (inverse a \<cdot> y + x0) - h (inverse a \<cdot> y) <= xi"
   288         by (rule bspec) (simp!)
   288         by (rule bspec) (simp!)
   289 
   289 
   290       txt {* The thesis for this case now follows by a short  
   290       txt {* The thesis for this case now follows by a short  
   291       calculation. *}      
   291       calculation. *}      
   292       hence "a * xi <= a * (- p (rinv a \<cdot> y + x0) - h (rinv a \<cdot> y))"
   292       hence "a * xi <= a * (- p (inverse a \<cdot> y + x0) - h (inverse a \<cdot> y))"
   293         by (rule real_mult_less_le_anti [OF lz])
   293         by (rule real_mult_less_le_anti [OF lz])
   294       also 
   294       also 
   295       have "... = - a * (p (rinv a \<cdot> y + x0)) - a * (h (rinv a \<cdot> y))"
   295       have "... = - a * (p (inverse a \<cdot> y + x0)) - a * (h (inverse a \<cdot> y))"
   296         by (rule real_mult_diff_distrib)
   296         by (rule real_mult_diff_distrib)
   297       also from lz vs y 
   297       also from lz vs y 
   298       have "- a * (p (rinv a \<cdot> y + x0)) = p (a \<cdot> (rinv a \<cdot> y + x0))"
   298       have "- a * (p (inverse a \<cdot> y + x0)) = p (a \<cdot> (inverse a \<cdot> y + x0))"
   299         by (simp add: seminorm_abs_homogenous abs_minus_eqI2)
   299         by (simp add: seminorm_abs_homogenous abs_minus_eqI2)
   300       also from nz vs y have "... = p (y + a \<cdot> x0)"
   300       also from nz vs y have "... = p (y + a \<cdot> x0)"
   301         by (simp add: vs_add_mult_distrib1)
   301         by (simp add: vs_add_mult_distrib1)
   302       also from nz vs y have "a * (h (rinv a \<cdot> y)) =  h y"
   302       also from nz vs y have "a * (h (inverse a \<cdot> y)) =  h y"
   303         by (simp add: linearform_mult [symmetric])
   303         by (simp add: linearform_mult [symmetric])
   304       finally have "a * xi <= p (y + a \<cdot> x0) - h y" .
   304       finally have "a * xi <= p (y + a \<cdot> x0) - h y" .
   305 
   305 
   306       hence "h y + a * xi <= h y + p (y + a \<cdot> x0) - h y"
   306       hence "h y + a * xi <= h y + p (y + a \<cdot> x0) - h y"
   307         by (simp add: real_add_left_cancel_le)
   307         by (simp add: real_add_left_cancel_le)
   310       txt {* In the case $a > 0$, we use $a_2$ with $\idt{ya}$ 
   310       txt {* In the case $a > 0$, we use $a_2$ with $\idt{ya}$ 
   311       taken as $y/a$: *}
   311       taken as $y/a$: *}
   312 
   312 
   313     next 
   313     next 
   314       assume gz: "#0 < a" hence nz: "a \<noteq> #0" by simp
   314       assume gz: "#0 < a" hence nz: "a \<noteq> #0" by simp
   315       from a2 have "xi <= p (rinv a \<cdot> y + x0) - h (rinv a \<cdot> y)"
   315       from a2 have "xi <= p (inverse a \<cdot> y + x0) - h (inverse a \<cdot> y)"
   316         by (rule bspec) (simp!)
   316         by (rule bspec) (simp!)
   317 
   317 
   318       txt {* The thesis for this case follows by a short
   318       txt {* The thesis for this case follows by a short
   319       calculation: *}
   319       calculation: *}
   320 
   320 
   321       with gz 
   321       with gz 
   322       have "a * xi <= a * (p (rinv a \<cdot> y + x0) - h (rinv a \<cdot> y))"
   322       have "a * xi <= a * (p (inverse a \<cdot> y + x0) - h (inverse a \<cdot> y))"
   323         by (rule real_mult_less_le_mono)
   323         by (rule real_mult_less_le_mono)
   324       also have "... = a * p (rinv a \<cdot> y + x0) - a * h (rinv a \<cdot> y)"
   324       also have "... = a * p (inverse a \<cdot> y + x0) - a * h (inverse a \<cdot> y)"
   325         by (rule real_mult_diff_distrib2) 
   325         by (rule real_mult_diff_distrib2) 
   326       also from gz vs y 
   326       also from gz vs y 
   327       have "a * p (rinv a \<cdot> y + x0) = p (a \<cdot> (rinv a \<cdot> y + x0))"
   327       have "a * p (inverse a \<cdot> y + x0) = p (a \<cdot> (inverse a \<cdot> y + x0))"
   328         by (simp add: seminorm_abs_homogenous abs_eqI2)
   328         by (simp add: seminorm_abs_homogenous abs_eqI2)
   329       also from nz vs y have "... = p (y + a \<cdot> x0)"
   329       also from nz vs y have "... = p (y + a \<cdot> x0)"
   330         by (simp add: vs_add_mult_distrib1)
   330         by (simp add: vs_add_mult_distrib1)
   331       also from nz vs y have "a * h (rinv a \<cdot> y) = h y"
   331       also from nz vs y have "a * h (inverse a \<cdot> y) = h y"
   332         by (simp add: linearform_mult [symmetric]) 
   332         by (simp add: linearform_mult [symmetric]) 
   333       finally have "a * xi <= p (y + a \<cdot> x0) - h y" .
   333       finally have "a * xi <= p (y + a \<cdot> x0) - h y" .
   334  
   334  
   335       hence "h y + a * xi <= h y + (p (y + a \<cdot> x0) - h y)"
   335       hence "h y + a * xi <= h y + (p (y + a \<cdot> x0) - h y)"
   336         by (simp add: real_add_left_cancel_le)
   336         by (simp add: real_add_left_cancel_le)