src/HOL/Analysis/Determinants.thy
changeset 67968 a5ad4c015d1c
parent 67733 346cb74e79f6
child 67971 e9f66b35d636
equal deleted inserted replaced
67967:5a4280946a25 67968:a5ad4c015d1c
   927   }
   927   }
   928   with xe show ?thesis
   928   with xe show ?thesis
   929     by auto
   929     by auto
   930 qed
   930 qed
   931 
   931 
   932 subsection \<open>Orthogonality of a transformation and matrix.\<close>
   932 subsection \<open>Orthogonality of a transformation and matrix\<close>
   933 
   933 
   934 definition "orthogonal_transformation f \<longleftrightarrow> linear f \<and> (\<forall>v w. f v \<bullet> f w = v \<bullet> w)"
   934 definition "orthogonal_transformation f \<longleftrightarrow> linear f \<and> (\<forall>v w. f v \<bullet> f w = v \<bullet> w)"
   935 
   935 
   936 lemma orthogonal_transformation:
   936 lemma orthogonal_transformation:
   937   "orthogonal_transformation f \<longleftrightarrow> linear f \<and> (\<forall>v. norm (f v) = norm v)"
   937   "orthogonal_transformation f \<longleftrightarrow> linear f \<and> (\<forall>v. norm (f v) = norm v)"
  1085   fixes f :: "real^'n \<Rightarrow> real^'n"
  1085   fixes f :: "real^'n \<Rightarrow> real^'n"
  1086   shows "orthogonal_transformation f \<Longrightarrow> \<bar>det (matrix f)\<bar> = 1"
  1086   shows "orthogonal_transformation f \<Longrightarrow> \<bar>det (matrix f)\<bar> = 1"
  1087   using det_orthogonal_matrix orthogonal_transformation_matrix by fastforce
  1087   using det_orthogonal_matrix orthogonal_transformation_matrix by fastforce
  1088 
  1088 
  1089 
  1089 
  1090 subsection \<open>Linearity of scaling, and hence isometry, that preserves origin.\<close>
  1090 subsection \<open>Linearity of scaling, and hence isometry, that preserves origin\<close>
  1091 
  1091 
  1092 lemma scaling_linear:
  1092 lemma scaling_linear:
  1093   fixes f :: "'a::real_inner \<Rightarrow> 'a::real_inner"
  1093   fixes f :: "'a::real_inner \<Rightarrow> 'a::real_inner"
  1094   assumes f0: "f 0 = 0"
  1094   assumes f0: "f 0 = 0"
  1095     and fd: "\<forall>x y. dist (f x) (f y) = c * dist x y"
  1095     and fd: "\<forall>x y. dist (f x) (f y) = c * dist x y"
  1155     using assms orthogonal_transformation_surj by blast
  1155     using assms orthogonal_transformation_surj by blast
  1156   with y assms show "y \<in> f ` cball x r"
  1156   with y assms show "y \<in> f ` cball x r"
  1157     by (auto simp: orthogonal_transformation_isometry)
  1157     by (auto simp: orthogonal_transformation_isometry)
  1158 qed
  1158 qed
  1159 
  1159 
  1160 subsection\<open> We can find an orthogonal matrix taking any unit vector to any other.\<close>
  1160 subsection\<open> We can find an orthogonal matrix taking any unit vector to any other\<close>
  1161 
  1161 
  1162 lemma orthogonal_matrix_transpose [simp]:
  1162 lemma orthogonal_matrix_transpose [simp]:
  1163      "orthogonal_matrix(transpose A) \<longleftrightarrow> orthogonal_matrix A"
  1163      "orthogonal_matrix(transpose A) \<longleftrightarrow> orthogonal_matrix A"
  1164   by (auto simp: orthogonal_matrix_def)
  1164   by (auto simp: orthogonal_matrix_def)
  1165 
  1165 
  1249       using False by auto
  1249       using False by auto
  1250   qed (use f in auto)
  1250   qed (use f in auto)
  1251 qed
  1251 qed
  1252 
  1252 
  1253 
  1253 
  1254 subsection \<open>Can extend an isometry from unit sphere.\<close>
  1254 subsection \<open>Can extend an isometry from unit sphere\<close>
  1255 
  1255 
  1256 lemma isometry_sphere_extend:
  1256 lemma isometry_sphere_extend:
  1257   fixes f:: "'a::real_inner \<Rightarrow> 'a"
  1257   fixes f:: "'a::real_inner \<Rightarrow> 'a"
  1258   assumes f1: "\<forall>x. norm x = 1 \<longrightarrow> norm (f x) = 1"
  1258   assumes f1: "\<forall>x. norm x = 1 \<longrightarrow> norm (f x) = 1"
  1259     and fd1: "\<forall> x y. norm x = 1 \<longrightarrow> norm y = 1 \<longrightarrow> dist (f x) (f y) = dist x y"
  1259     and fd1: "\<forall> x y. norm x = 1 \<longrightarrow> norm y = 1 \<longrightarrow> dist (f x) (f y) = dist x y"
  1347     using g0 thfg thd
  1347     using g0 thfg thd
  1348     apply metis
  1348     apply metis
  1349     done
  1349     done
  1350 qed
  1350 qed
  1351 
  1351 
  1352 subsection \<open>Rotation, reflection, rotoinversion.\<close>
  1352 subsection \<open>Rotation, reflection, rotoinversion\<close>
  1353 
  1353 
  1354 definition "rotation_matrix Q \<longleftrightarrow> orthogonal_matrix Q \<and> det Q = 1"
  1354 definition "rotation_matrix Q \<longleftrightarrow> orthogonal_matrix Q \<and> det Q = 1"
  1355 definition "rotoinversion_matrix Q \<longleftrightarrow> orthogonal_matrix Q \<and> det Q = - 1"
  1355 definition "rotoinversion_matrix Q \<longleftrightarrow> orthogonal_matrix Q \<and> det Q = - 1"
  1356 
  1356 
  1357 lemma orthogonal_rotation_or_rotoinversion:
  1357 lemma orthogonal_rotation_or_rotoinversion: