738 shows "matrix(adjoint f) = transpose(matrix f)" |
738 shows "matrix(adjoint f) = transpose(matrix f)" |
739 apply (subst matrix_vector_mul[OF lf]) |
739 apply (subst matrix_vector_mul[OF lf]) |
740 unfolding adjoint_matrix matrix_of_matrix_vector_mul |
740 unfolding adjoint_matrix matrix_of_matrix_vector_mul |
741 apply rule |
741 apply rule |
742 done |
742 done |
|
743 |
|
744 lemma inj_matrix_vector_mult: |
|
745 fixes A::"'a::field^'n^'m" |
|
746 assumes "invertible A" |
|
747 shows "inj (( *v) A)" |
|
748 by (metis assms inj_on_inverseI invertible_def matrix_vector_mul_assoc matrix_vector_mul_lid) |
743 |
749 |
744 |
750 |
745 subsection\<open>Some bounds on components etc. relative to operator norm\<close> |
751 subsection\<open>Some bounds on components etc. relative to operator norm\<close> |
746 |
752 |
747 lemma norm_column_le_onorm: |
753 lemma norm_column_le_onorm: |
1553 by (simp add: norm_vector_1) |
1559 by (simp add: norm_vector_1) |
1554 |
1560 |
1555 lemma dist_real: "dist(x::real ^ 1) y = \<bar>(x$1) - (y$1)\<bar>" |
1561 lemma dist_real: "dist(x::real ^ 1) y = \<bar>(x$1) - (y$1)\<bar>" |
1556 by (auto simp add: norm_real dist_norm) |
1562 by (auto simp add: norm_real dist_norm) |
1557 |
1563 |
|
1564 subsection\<open>Routine results connecting the types @{typ "real^1"} and @{typ real}\<close> |
|
1565 |
|
1566 lemma vector_one_nth [simp]: |
|
1567 fixes x :: "'a^1" shows "vec (x $ 1) = x" |
|
1568 by (metis vec_def vector_one) |
|
1569 |
|
1570 lemma vec_cbox_1_eq [simp]: |
|
1571 shows "vec ` cbox u v = cbox (vec u) (vec v ::real^1)" |
|
1572 by (force simp: Basis_vec_def cart_eq_inner_axis [symmetric] mem_box) |
|
1573 |
|
1574 lemma vec_nth_cbox_1_eq [simp]: |
|
1575 fixes u v :: "'a::euclidean_space^1" |
|
1576 shows "(\<lambda>x. x $ 1) ` cbox u v = cbox (u$1) (v$1)" |
|
1577 by (auto simp: Basis_vec_def cart_eq_inner_axis [symmetric] mem_box image_iff Bex_def inner_axis) (metis vec_component) |
|
1578 |
|
1579 lemma vec_nth_1_iff_cbox [simp]: |
|
1580 fixes a b :: "'a::euclidean_space" |
|
1581 shows "(\<lambda>x::'a^1. x $ 1) ` S = cbox a b \<longleftrightarrow> S = cbox (vec a) (vec b)" |
|
1582 (is "?lhs = ?rhs") |
|
1583 proof |
|
1584 assume L: ?lhs show ?rhs |
|
1585 proof (intro equalityI subsetI) |
|
1586 fix x |
|
1587 assume "x \<in> S" |
|
1588 then have "x $ 1 \<in> (\<lambda>v. v $ (1::1)) ` cbox (vec a) (vec b)" |
|
1589 using L by auto |
|
1590 then show "x \<in> cbox (vec a) (vec b)" |
|
1591 by (metis (no_types, lifting) imageE vector_one_nth) |
|
1592 next |
|
1593 fix x :: "'a^1" |
|
1594 assume "x \<in> cbox (vec a) (vec b)" |
|
1595 then show "x \<in> S" |
|
1596 by (metis (no_types, lifting) L imageE imageI vec_component vec_nth_cbox_1_eq vector_one_nth) |
|
1597 qed |
|
1598 qed simp |
1558 |
1599 |
1559 lemma tendsto_at_within_vector_1: |
1600 lemma tendsto_at_within_vector_1: |
1560 fixes S :: "'a :: metric_space set" |
1601 fixes S :: "'a :: metric_space set" |
1561 assumes "(f \<longlongrightarrow> fx) (at x within S)" |
1602 assumes "(f \<longlongrightarrow> fx) (at x within S)" |
1562 shows "((\<lambda>y::'a^1. \<chi> i. f (y $ 1)) \<longlongrightarrow> (vec fx::'a^1)) (at (vec x) within vec ` S)" |
1603 shows "((\<lambda>y::'a^1. \<chi> i. f (y $ 1)) \<longlongrightarrow> (vec fx::'a^1)) (at (vec x) within vec ` S)" |