File: Mathlib/LinearAlgebra/CrossProduct.lean

full_name: crossProduct
code: /-- The cross product of two vectors in $R^3$ for $R$ a commutative ring. -/
def crossProduct : (Fin 3 → R) →ₗ[R] (Fin 3 → R) →ₗ[R] Fin 3 → R 
goal: (Fin 3 → R) →ₗ[R] (Fin 3 → R) →ₗ[R] Fin 3 → R

full_name: Matrix._aux_Mathlib_LinearAlgebra_CrossProduct___unexpand_crossProduct_1
code: scoped[Matrix] infixl:74 " ×₃ " => crossProduct
goal: Lean.PrettyPrinter.Unexpander

full_name: Matrix.«_aux_Mathlib_LinearAlgebra_CrossProduct___macroRules_Matrix_term_×₃__1»
code: scoped[Matrix] infixl:74 " ×₃ " => crossProduct
goal: Lean.Macro

full_name: cross_apply
code: theorem cross_apply (a b : Fin 3 → R) :
    a ×₃ b = ![a 1 * b 2 - a 2 * b 1, a 2 * b 0 - a 0 * b 2, a 0 * b 1 - a 1 * b 0] 
goal: (crossProduct a) b = ![a 1 * b 2 - a 2 * b 1, a 2 * b 0 - a 0 * b 2, a 0 * b 1 - a 1 * b 0]

full_name: cross_anticomm
code: @[simp]
theorem cross_anticomm (v w : Fin 3 → R) : -(v ×₃ w) = w ×₃ v 
goal: -(crossProduct v) w = (crossProduct w) v

full_name: cross_anticomm'
code: @[simp]
theorem cross_anticomm' (v w : Fin 3 → R) : v ×₃ w + w ×₃ v = 0 
goal: (crossProduct v) w + (crossProduct w) v = 0

full_name: cross_self
code: @[simp]
theorem cross_self (v : Fin 3 → R) : v ×₃ v = 0 
goal: (crossProduct v) v = 0

full_name: dot_self_cross
code: /-- The cross product of two vectors is perpendicular to the first vector. -/
@[simp 1100] -- Porting note: increase priority so that the LHS doesn't simplify
theorem dot_self_cross (v w : Fin 3 → R) : v ⬝ᵥ v ×₃ w = 0 
goal: v ⬝ᵥ (crossProduct v) w = 0

full_name: dot_cross_self
code: /-- The cross product of two vectors is perpendicular to the second vector. -/
@[simp 1100] -- Porting note: increase priority so that the LHS doesn't simplify
theorem dot_cross_self (v w : Fin 3 → R) : w ⬝ᵥ v ×₃ w = 0 
goal: w ⬝ᵥ (crossProduct v) w = 0

full_name: triple_product_permutation
code: /-- Cyclic permutations preserve the triple product. See also `triple_product_eq_det`. -/
theorem triple_product_permutation (u v w : Fin 3 → R) : u ⬝ᵥ v ×₃ w = v ⬝ᵥ w ×₃ u 
goal: u ⬝ᵥ (crossProduct v) w = v ⬝ᵥ (crossProduct w) u

full_name: triple_product_eq_det
code: /-- The triple product of `u`, `v`, and `w` is equal to the determinant of the matrix
    with those vectors as its rows. -/
theorem triple_product_eq_det (u v w : Fin 3 → R) : u ⬝ᵥ v ×₃ w = Matrix.det ![u, v, w] 
goal: u ⬝ᵥ (crossProduct v) w = Matrix.det ![u, v, w]

full_name: cross_dot_cross
code: /-- The scalar quadruple product identity, related to the Binet-Cauchy identity. -/
theorem cross_dot_cross (u v w x : Fin 3 → R) :
    u ×₃ v ⬝ᵥ w ×₃ x = u ⬝ᵥ w * v ⬝ᵥ x - u ⬝ᵥ x * v ⬝ᵥ w 
goal: (crossProduct u) v ⬝ᵥ (crossProduct w) x = u ⬝ᵥ w * v ⬝ᵥ x - u ⬝ᵥ x * v ⬝ᵥ w

full_name: leibniz_cross
code: /-- The cross product satisfies the Leibniz lie property. -/
theorem leibniz_cross (u v w : Fin 3 → R) : u ×₃ (v ×₃ w) = u ×₃ v ×₃ w + v ×₃ (u ×₃ w) 
goal: (crossProduct u) ((crossProduct v) w) = (crossProduct ((crossProduct u) v)) w + (crossProduct v) ((crossProduct u) w)

full_name: Cross.lieRing
code: /-- The three-dimensional vectors together with the operations + and ×₃ form a Lie ring.
    Note we do not make this an instance as a conflicting one already exists
    via `LieRing.ofAssociativeRing`. -/
def Cross.lieRing : LieRing (Fin 3 → R) 
goal: LieRing (Fin 3 → R)

full_name: cross_cross
code: theorem cross_cross (u v w : Fin 3 → R) : u ×₃ v ×₃ w = u ×₃ (v ×₃ w) - v ×₃ (u ×₃ w) 
goal: (crossProduct ((crossProduct u) v)) w = (crossProduct u) ((crossProduct v) w) - (crossProduct v) ((crossProduct u) w)

full_name: jacobi_cross
code: /-- **Jacobi identity**: For a cross product of three vectors,
    their sum over the three even permutations is equal to the zero vector. -/
theorem jacobi_cross (u v w : Fin 3 → R) : u ×₃ (v ×₃ w) + v ×₃ (w ×₃ u) + w ×₃ (u ×₃ v) = 0 
goal: (crossProduct u) ((crossProduct v) w) + (crossProduct v) ((crossProduct w) u) + (crossProduct w) ((crossProduct u) v) =
  0