lemma cross_eq_0: "x \ y = 0 \ collinear{0,x,y}" proof - have"x \ y = 0 \ norm (x \ y) = 0" by simp alsohave"... \ (norm x * norm y)\<^sup>2 = (x \ y)\<^sup>2" using norm_cross [of x y] by (auto simp: power_mult_distrib) alsohave"... \ \x \ y\ = norm x * norm y" using power2_eq_iff by (metis (mono_tags, opaque_lifting) abs_minus abs_norm_cancel abs_power2 norm_mult power_abs real_norm_def) alsohave"... \ collinear {0, x, y}" by (rule norm_cauchy_schwarz_equal) finallyshow ?thesis . qed
lemma cross_eq_self: "x \ y = x \ x = 0""x \ y = y \ y = 0" apply (metis cross_zero_left dot_cross_self(1) inner_eq_zero_iff) by (metis cross_zero_right dot_cross_self(2) inner_eq_zero_iff)
lemma norm_and_cross_eq_0: "x \ y = 0 \ x \ y = 0 \ x = 0 \ y = 0" (is"?lhs = ?rhs") proof assume ?lhs thenshow ?rhs by (metis cross_dot_cancel cross_zero_right inner_zero_right) qed auto
subsection‹Preservation by rotation, or other orthogonal transformation up to sign›
lemma cross_matrix_mult: "transpose A *v ((A *v x) \ (A *v y)) = det A *\<^sub>R (x \ y)" apply (simp add: vec_eq_iff ) apply (simp add: vector_matrix_mult_def matrix_vector_mult_def forall_3 cross3_simps) done
lemma cross_orthogonal_matrix: assumes"orthogonal_matrix A" shows"(A *v x) \ (A *v y) = det A *\<^sub>R (A *v (x \ y))" proof - have"mat 1 = transpose (A ** transpose A)" by (metis (no_types) assms orthogonal_matrix_def transpose_mat) thenshow ?thesis by (metis (no_types) vector_matrix_mul_rid vector_transpose_matrix cross_matrix_mult matrix_vector_mul_assoc matrix_vector_mult_scaleR) qed
lemma cross_rotation_matrix: "rotation_matrix A \ (A *v x) \ (A *v y) = A *v (x \ y)" by (simp add: rotation_matrix_def cross_orthogonal_matrix)
lemma cross_rotoinversion_matrix: "rotoinversion_matrix A \ (A *v x) \ (A *v y) = - A *v (x \ y)" by (simp add: rotoinversion_matrix_def cross_orthogonal_matrix scaleR_matrix_vector_assoc)
lemma cross_orthogonal_transformation: assumes"orthogonal_transformation f" shows"(f x) \ (f y) = det(matrix f) *\<^sub>R f(x \ y)" proof - have orth: "orthogonal_matrix (matrix f)" using assms orthogonal_transformation_matrix by blast have"matrix f *v z = f z"for z using assms orthogonal_transformation_matrix by force with cross_orthogonal_matrix [OF orth] show ?thesis by simp 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.