lemma (in euclidean_space) norm_Basis[simp]: "u ∈ Basis ==> norm u = 1" unfolding norm_eq_sqrt_inner by (simp add: inner_Basis)
lemma (in euclidean_space) inner_same_Basis[simp]: "u ∈ Basis ==> inner u u = 1" by (simp add: inner_Basis)
lemma (in euclidean_space) inner_not_same_Basis: "u ∈ Basis ==> v ∈ Basis ==> u ≠ v ==> inner u v = 0" by (simp add: inner_Basis)
lemma (in euclidean_space) sgn_Basis: "u ∈ Basis ==> sgn u = u" unfolding sgn_div_norm by (simp add: scaleR_one)
lemma inner_sum_Basis[simp]: "i ∈ Basis ==> inner (∑Basis) i = 1" by (simp add: inner_sum_left sum.If_cases inner_Basis)
lemma (in euclidean_space) Basis_zero [simp]: "0 ∉ Basis" usinglocal.inner_same_Basis by fastforce
lemma (in euclidean_space) nonzero_Basis: "u ∈ Basis ==> u ≠ 0" by clarsimp
lemma (in euclidean_space) SOME_Basis: "(SOME i. i ∈ Basis) ∈ Basis" by (metis ex_in_conv nonempty_Basis someI_ex)
lemma norm_some_Basis [simp]: "norm (SOME i. i ∈ Basis) = 1" by (simp add: SOME_Basis)
lemma (in euclidean_space) inner_sum_left_Basis[simp]: "b ∈ Basis ==> inner (∑i∈Basis. f i *🪙R i) b = f b" by (simp add: inner_sum_left inner_Basis if_distrib comm_monoid_add_class.sum.If_cases)
lemma (in euclidean_space) euclidean_eqI: assumes b: "∧b. b ∈ Basis ==> inner x b = inner y b"shows"x = y" proof - from b have"∀b∈Basis. inner (x - y) b = 0" by (simp add: inner_diff_left) thenshow"x = y" by (simp add: euclidean_all_zero_iff) qed
lemma (in euclidean_space) euclidean_eq_iff: "x = y ⟷ (∀b∈Basis. inner x b = inner y b)" by (auto intro: euclidean_eqI)
lemma (in euclidean_space) euclidean_representation_sum: "(∑i∈Basis. f i *🪙R i) = b ⟷ (∀i∈Basis. f i = inner b i)" by (subst euclidean_eq_iff) simp
lemma (in euclidean_space) euclidean_representation_sum': "b = (∑i∈Basis. f i *🪙R i) ⟷ (∀i∈Basis. f i = inner b i)" by (auto simp add: euclidean_representation_sum[symmetric])
lemma (in euclidean_space) euclidean_representation: "(∑b∈Basis. inner x b *🪙R b) = x" unfolding euclidean_representation_sum by simp
lemma (in euclidean_space) euclidean_inner: "inner x y = (∑b∈Basis. (inner x b) * (inner y b))" by (subst (1 2) euclidean_representation [symmetric])
(simp add: inner_sum_right inner_Basis ac_simps)
lemma (in euclidean_space) choice_Basis_iff: fixes P :: "'a ==> real ==> bool" shows"(∀i∈Basis. ∃x. P i x) ⟷ (∃x. ∀i∈Basis. P i (inner x i))" unfolding bchoice_iff proof safe fix f assume"∀i∈Basis. P i (f i)" thenshow"∃x. ∀i∈Basis. P i (inner x i)" by (auto intro!: exI[of _ "∑i∈Basis. f i *🪙R i"]) qed auto
lemma (in euclidean_space) bchoice_Basis_iff: fixes P :: "'a ==> real ==> bool" shows"(∀i∈Basis. ∃x∈A. P i x) ⟷ (∃x. ∀i∈Basis. inner x i ∈ A ∧ P i (inner x i))" by (simp add: choice_Basis_iff Bex_def)
lemma (in euclidean_space) euclidean_representation_sum_fun: "(λx. ∑b∈Basis. inner (f x) b *🪙R b) = f" by (force simp: euclidean_representation_sum)
lemma euclidean_isCont: assumes"∧b. b ∈ Basis ==> isCont (λx. (inner (f x) b) *🪙R b) x" shows"isCont f x" proof - have"isCont (λx. ∑b∈Basis. inner (f x) b *🪙R b) x" by (simp add: assms) thenshow ?thesis by (simp add: euclidean_representation) qed
lemma DIM_positive [simp]: "0 < DIM('a::euclidean_space)" by (simp add: card_gt_0_iff)
lemma sum_inner_Basis_scaleR [simp]: fixes f :: "'a::euclidean_space ==> 'b::real_vector" assumes"b ∈ Basis"shows"(∑i∈Basis. (inner i b) *🪙R f i) = f b" by (simp add: comm_monoid_add_class.sum.remove [OF finite_Basis assms]
assms inner_not_same_Basis comm_monoid_add_class.sum.neutral)
lemma sum_inner_Basis_eq [simp]: assumes"b ∈ Basis"shows"(∑i∈Basis. (inner i b) * f i) = f b" by (simp add: comm_monoid_add_class.sum.remove [OF finite_Basis assms]
assms inner_not_same_Basis comm_monoid_add_class.sum.neutral)
lemma sum_if_inner [simp]: assumes"i ∈ Basis""j ∈ Basis" shows"inner (∑k∈Basis. if k = i then f i *🪙R i else g k *🪙R k) j = (if j=i then f j else g j)" proof (cases "i=j") case True with assms show ?thesis by (auto simp: inner_sum_left if_distrib [of "λx. inner x j"] inner_Basis cong: if_cong) next case False have"(∑k∈Basis. inner (if k = i then f i *🪙R i else g k *🪙R k) j) = (∑k∈Basis. if k = j then g k else 0)" using False assms by (intro sum.cong) (auto simp: inner_Basis) alsohave"… = g j" using assms by auto finallyshow ?thesis using False by (auto simp: inner_sum_left) qed
lemma norm_le_componentwise: "(∧b. b ∈ Basis ==> abs(inner x b) ≤ abs(inner y b)) ==> norm x ≤ norm y" by (auto simp: norm_le euclidean_inner [of x x] euclidean_inner [of y y] abs_le_square_iff power2_eq_square intro!: sum_mono)
lemma Basis_le_norm: "b ∈ Basis ==>∣inner x b∣≤ norm x" by (rule order_trans [OF Cauchy_Schwarz_ineq2]) simp
lemma norm_bound_Basis_le: "b ∈ Basis ==> norm x ≤ e ==>∣inner x b∣≤ e" by (metis Basis_le_norm order_trans)
lemma norm_bound_Basis_lt: "b ∈ Basis ==> norm x < e ==>∣inner x b∣ < e" by (metis Basis_le_norm le_less_trans)
lemma norm_le_l1: "norm x ≤ (∑b∈Basis. ∣inner x b∣)" by (metis (no_types, lifting) order.refl euclidean_representation mult.right_neutral
norm_Basis norm_scaleR sum_norm_le)
lemma sum_norm_allsubsets_bound: fixes f :: "'a ==> 'n::euclidean_space" assumes fP: "finite P" and fPs: "∧Q. Q ⊆ P ==> norm (sum f Q) ≤ e" shows"(∑x∈P. norm (f x)) ≤ 2 * real DIM('n) * e" proof - have"(∑x∈P. norm (f x)) ≤ (∑x∈P. ∑b∈Basis. ∣inner (f x) b∣)" by (rule sum_mono) (rule norm_le_l1) alsohave"(∑x∈P. ∑b∈Basis. ∣inner (f x) b∣) = (∑b∈Basis. ∑x∈P. ∣inner (f x) b∣)" by (rule sum.swap) alsohave"…≤ of_nat (card (Basis :: 'n set)) * (2 * e)" proof (rule sum_bounded_above) fix i :: 'n assume i: "i ∈ Basis" have"norm (∑x∈P. ∣inner (f x) i∣) ≤ norm (inner (∑x∈P ∩ - {x. inner (f x) i < 0}. f x) i) + norm (inner (∑x∈P ∩ {x. inner (f x) i < 0}. f x) i)" by (simp add: abs_real_def sum.If_cases[OF fP] sum_negf norm_triangle_ineq4 inner_sum_left
del: real_norm_def) alsohave"…≤ e + e" unfolding real_norm_def by (intro add_mono norm_bound_Basis_le i fPs) auto finallyshow"(∑x∈P. ∣inner (f x) i∣) ≤ 2*e"by simp qed alsohave"… = 2 * real DIM('n) * e"by simp finallyshow ?thesis . qed
instance euclidean_space ⊆ perfect_space proof fix x :: 'a show"¬ open {x}" proof assume"open {x}" thenobtain e where"0 < e"and e: "∀y. dist y x < e ⟶ y = x" unfolding open_dist by fast
define y where"y = x + scaleR (e/2) (SOME b. b ∈ Basis)" have [simp]: "(SOME b. b ∈ Basis) ∈ Basis" by (rule someI_ex) (auto simp: ex_in_conv) from‹0 🚫›have"y ≠ x" unfolding y_def by (auto intro!: nonzero_Basis) from‹0 🚫›have"dist y x < e" unfolding y_def by (simp add: dist_norm) from‹y ≠ x›and‹dist y x 🚫›show"False" using e by simp qed qed
subsection‹Class instances›
subsubsection🍋‹tag unimportant›‹Type 🍋‹real›\›
instantiation real :: euclidean_space begin
definition
[simp]: "Basis = {1::real}"
instance by standard auto
end
lemma DIM_real[simp]: "DIM(real) = 1" by simp
subsubsection🍋‹tag unimportant›‹Type 🍋‹complex›\›
instantiation complex :: euclidean_space begin
definition Basis_complex_def: "Basis = {1, i}"
instance by standard (auto simp add: Basis_complex_def intro: complex_eqI split: if_split_asm)
end
lemma DIM_complex[simp]: "DIM(complex) = 2" unfolding Basis_complex_def by simp
lemma complex_Basis_1 [iff]: "(1::complex) ∈ Basis" by (simp add: Basis_complex_def)
lemma complex_Basis_i [iff]: "i∈ Basis" by (simp add: Basis_complex_def)
subsubsection🍋‹tag unimportant›‹Type 🍋‹'a × 'b›\›
instantiation prod :: (real_inner, real_inner) real_inner begin
definition inner_prod_def: "inner x y = inner (fst x) (fst y) + inner (snd x) (snd y)"
lemma inner_Pair [simp]: "inner (a, b) (c, d) = inner a c + inner b d" unfolding inner_prod_def by simp
instance proof fix r :: real fix x y z :: "'a::real_inner × 'b::real_inner" show"inner x y = inner y x" unfolding inner_prod_def by (simp add: inner_commute) show"inner (x + y) z = inner x z + inner y z" unfolding inner_prod_def by (simp add: inner_add_left) show"inner (scaleR r x) y = r * inner x y" unfolding inner_prod_def by (simp add: distrib_left) show"0 ≤ inner x x" unfolding inner_prod_def by (intro add_nonneg_nonneg inner_ge_zero) show"inner x x = 0 ⟷ x = 0" unfolding inner_prod_def prod_eq_iff by (simp add: add_nonneg_eq_0_iff) show"norm x = sqrt (inner x x)" unfolding norm_prod_def inner_prod_def by (simp add: power2_norm_eq_inner) qed
end
lemma inner_Pair_0: "inner x (0, b) = inner (snd x) b""inner x (a, 0) = inner (fst x) a" by (cases x, simp)+
instantiation prod :: (euclidean_space, euclidean_space) euclidean_space begin
lemma sum_Basis_prod_eq: fixes f::"('a*'b)==>('a*'b)" shows"sum f Basis = sum (λi. f (i, 0)) Basis + sum (λi. f (0, i)) Basis" proof - have"inj_on (λu. (u::'a, 0::'b)) Basis""inj_on (λu. (0::'a, u::'b)) Basis" by (auto intro!: inj_onI Pair_inject) thus ?thesis unfolding Basis_prod_def by (subst sum.union_disjoint) (auto simp: Basis_prod_def sum.reindex) qed
instanceproof show"(Basis :: ('a × 'b) set) ≠ {}" unfolding Basis_prod_def by simp next show"finite (Basis :: ('a × 'b) set)" unfolding Basis_prod_def by simp next fix u v :: "'a × 'b" assume"u ∈ Basis"and"v ∈ Basis" thus"inner u v = (if u = v then 1 else 0)" unfolding Basis_prod_def inner_prod_def by (auto simp add: inner_Basis split: if_split_asm) next fix x :: "'a × 'b" show"(∀u∈Basis. inner x u = 0) ⟷ x = 0" unfolding Basis_prod_def ball_Un ball_simps by (simp add: inner_prod_def prod_eq_iff euclidean_all_zero_iff) qed
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.