equal
deleted
inserted
replaced
78 lemma inner_gt_zero_iff [simp]: "0 < inner x x \<longleftrightarrow> x \<noteq> 0" |
78 lemma inner_gt_zero_iff [simp]: "0 < inner x x \<longleftrightarrow> x \<noteq> 0" |
79 by (simp add: order_less_le) |
79 by (simp add: order_less_le) |
80 |
80 |
81 lemma power2_norm_eq_inner: "(norm x)\<^sup>2 = inner x x" |
81 lemma power2_norm_eq_inner: "(norm x)\<^sup>2 = inner x x" |
82 by (simp add: norm_eq_sqrt_inner) |
82 by (simp add: norm_eq_sqrt_inner) |
|
83 |
|
84 text \<open>Identities involving real multiplication and division.\<close> |
|
85 |
|
86 lemma inner_mult_left: "inner (of_real m * a) b = m * (inner a b)" |
|
87 by (metis real_inner_class.inner_scaleR_left scaleR_conv_of_real) |
|
88 |
|
89 lemma inner_mult_right: "inner a (of_real m * b) = m * (inner a b)" |
|
90 by (metis real_inner_class.inner_scaleR_right scaleR_conv_of_real) |
|
91 |
|
92 lemma inner_mult_left': "inner (a * of_real m) b = m * (inner a b)" |
|
93 by (simp add: of_real_def) |
|
94 |
|
95 lemma inner_mult_right': "inner a (b * of_real m) = (inner a b) * m" |
|
96 by (simp add: of_real_def real_inner_class.inner_scaleR_right) |
83 |
97 |
84 lemma Cauchy_Schwarz_ineq: |
98 lemma Cauchy_Schwarz_ineq: |
85 "(inner x y)\<^sup>2 \<le> inner x x * inner y y" |
99 "(inner x y)\<^sup>2 \<le> inner x x * inner y y" |
86 proof (cases) |
100 proof (cases) |
87 assume "y = 0" |
101 assume "y = 0" |
138 unfolding norm_eq_sqrt_inner |
152 unfolding norm_eq_sqrt_inner |
139 by (simp add: power2_eq_square mult.assoc) |
153 by (simp add: power2_eq_square mult.assoc) |
140 qed |
154 qed |
141 |
155 |
142 end |
156 end |
|
157 |
|
158 lemma inner_divide_left: |
|
159 fixes a :: "'a :: {real_inner,real_div_algebra}" |
|
160 shows "inner (a / of_real m) b = (inner a b) / m" |
|
161 by (metis (no_types) divide_inverse inner_commute inner_scaleR_right mult.left_neutral mult.right_neutral mult_scaleR_right of_real_inverse scaleR_conv_of_real times_divide_eq_left) |
|
162 |
|
163 lemma inner_divide_right: |
|
164 fixes a :: "'a :: {real_inner,real_div_algebra}" |
|
165 shows "inner a (b / of_real m) = (inner a b) / m" |
|
166 by (metis inner_commute inner_divide_left) |
143 |
167 |
144 text \<open> |
168 text \<open> |
145 Re-enable constraints for @{term "open"}, |
169 Re-enable constraints for @{term "open"}, |
146 @{term dist}, and @{term norm}. |
170 @{term dist}, and @{term norm}. |
147 \<close> |
171 \<close> |