src/HOL/Real_Vector_Spaces.thy
changeset 67399 eab6ce8368fa
parent 67135 1a94352812f4
child 67673 c8caefb20564
equal deleted inserted replaced
67398:5eb932e604a2 67399:eab6ce8368fa
  1410   obtains d where "D = (\<lambda>x. x *\<^sub>R d)"
  1410   obtains d where "D = (\<lambda>x. x *\<^sub>R d)"
  1411   by (metis assms linear.scaleR mult.commute mult.left_neutral real_scaleR_def)
  1411   by (metis assms linear.scaleR mult.commute mult.left_neutral real_scaleR_def)
  1412 
  1412 
  1413 corollary real_linearD:
  1413 corollary real_linearD:
  1414   fixes f :: "real \<Rightarrow> real"
  1414   fixes f :: "real \<Rightarrow> real"
  1415   assumes "linear f" obtains c where "f = op* c"
  1415   assumes "linear f" obtains c where "f = ( * ) c"
  1416   by (rule linear_imp_scaleR [OF assms]) (force simp: scaleR_conv_of_real)
  1416   by (rule linear_imp_scaleR [OF assms]) (force simp: scaleR_conv_of_real)
  1417 
  1417 
  1418 lemma linear_times_of_real: "linear (\<lambda>x. a * of_real x)"
  1418 lemma linear_times_of_real: "linear (\<lambda>x. a * of_real x)"
  1419   apply (simp add: linear_def Real_Vector_Spaces.additive_def linear_axioms_def)
  1419   apply (simp add: linear_def Real_Vector_Spaces.additive_def linear_axioms_def)
  1420   by (metis distrib_left mult_scaleR_right scaleR_conv_of_real)
  1420   by (metis distrib_left mult_scaleR_right scaleR_conv_of_real)
  1547   apply blast
  1547   apply blast
  1548   done
  1548   done
  1549 
  1549 
  1550 lemma comp1:
  1550 lemma comp1:
  1551   assumes "bounded_linear g"
  1551   assumes "bounded_linear g"
  1552   shows "bounded_bilinear (\<lambda>x. op ** (g x))"
  1552   shows "bounded_bilinear (\<lambda>x. ( ** ) (g x))"
  1553 proof unfold_locales
  1553 proof unfold_locales
  1554   interpret g: bounded_linear g by fact
  1554   interpret g: bounded_linear g by fact
  1555   show "\<And>a a' b. g (a + a') ** b = g a ** b + g a' ** b"
  1555   show "\<And>a a' b. g (a + a') ** b = g a ** b + g a' ** b"
  1556     "\<And>a b b'. g a ** (b + b') = g a ** b + g a ** b'"
  1556     "\<And>a b b'. g a ** (b + b') = g a ** b + g a ** b'"
  1557     "\<And>r a b. g (r *\<^sub>R a) ** b = r *\<^sub>R (g a ** b)"
  1557     "\<And>r a b. g (r *\<^sub>R a) ** b = r *\<^sub>R (g a ** b)"
  1649       finally show "norm (f (g x)) \<le> norm x * (Kg * Kf)" .
  1649       finally show "norm (f (g x)) \<le> norm x * (Kg * Kf)" .
  1650     qed
  1650     qed
  1651   qed
  1651   qed
  1652 qed
  1652 qed
  1653 
  1653 
  1654 lemma bounded_bilinear_mult: "bounded_bilinear (op * :: 'a \<Rightarrow> 'a \<Rightarrow> 'a::real_normed_algebra)"
  1654 lemma bounded_bilinear_mult: "bounded_bilinear (( * ) :: 'a \<Rightarrow> 'a \<Rightarrow> 'a::real_normed_algebra)"
  1655   apply (rule bounded_bilinear.intro)
  1655   apply (rule bounded_bilinear.intro)
  1656       apply (rule distrib_right)
  1656       apply (rule distrib_right)
  1657      apply (rule distrib_left)
  1657      apply (rule distrib_left)
  1658     apply (rule mult_scaleR_left)
  1658     apply (rule mult_scaleR_left)
  1659    apply (rule mult_scaleR_right)
  1659    apply (rule mult_scaleR_right)