Documentation

Mathlib.LinearAlgebra.Projectivization.Constructions

Dot Product and Cross Product on Projective Spaces #

This file defines the dot product and cross product on projective spaces.

Definitions #

def Projectivization.orthogonal {F : Type u_1} [Field F] {m : Type u_2} [Fintype m] :
Projectivization F (mF)Projectivization F (mF)Prop

Orthogonality on the projective plane.

Equations
theorem Projectivization.orthogonal_mk {F : Type u_1} [Field F] {m : Type u_2} [Fintype m] {v w : mF} (hv : v 0) (hw : w 0) :
theorem Projectivization.orthogonal_comm {F : Type u_1} [Field F] {m : Type u_2} [Fintype m] {v w : Projectivization F (mF)} :
v.orthogonal w w.orthogonal v
theorem Projectivization.exists_not_self_orthogonal {F : Type u_1} [Field F] {m : Type u_2} [Fintype m] (v : Projectivization F (mF)) :
∃ (w : Projectivization F (mF)), ¬v.orthogonal w
theorem Projectivization.exists_not_orthogonal_self {F : Type u_1} [Field F] {m : Type u_2} [Fintype m] (v : Projectivization F (mF)) :
∃ (w : Projectivization F (mF)), ¬w.orthogonal v
theorem Projectivization.mk_eq_mk_iff_crossProduct_eq_zero {F : Type u_1} [Field F] {v w : Fin 3F} (hv : v 0) (hw : w 0) :
Projectivization.mk F v hv = Projectivization.mk F w hw (crossProduct v) w = 0
def Projectivization.cross {F : Type u_1} [Field F] [DecidableEq F] :
Projectivization F (Fin 3F)Projectivization F (Fin 3F)Projectivization F (Fin 3F)

Cross product on the projective plane.

Equations
  • Projectivization.cross = Quotient.map₂' (fun (v w : { v : Fin 3F // v 0 }) => if h : (crossProduct v) w = 0 then v else (crossProduct v) w, h)
theorem Projectivization.cross_mk {F : Type u_1} [Field F] [DecidableEq F] {v w : Fin 3F} (hv : v 0) (hw : w 0) :
(Projectivization.mk F v hv).cross (Projectivization.mk F w hw) = if h : (crossProduct v) w = 0 then Projectivization.mk F v hv else Projectivization.mk F ((crossProduct v) w) h
theorem Projectivization.cross_mk_of_cross_eq_zero {F : Type u_1} [Field F] [DecidableEq F] {v w : Fin 3F} (hv : v 0) (hw : w 0) (h : (crossProduct v) w = 0) :
theorem Projectivization.cross_mk_of_cross_ne_zero {F : Type u_1} [Field F] [DecidableEq F] {v w : Fin 3F} (hv : v 0) (hw : w 0) (h : (crossProduct v) w 0) :
(Projectivization.mk F v hv).cross (Projectivization.mk F w hw) = Projectivization.mk F ((crossProduct v) w) h
theorem Projectivization.cross_self {F : Type u_1} [Field F] [DecidableEq F] (v : Projectivization F (Fin 3F)) :
v.cross v = v
theorem Projectivization.cross_mk_of_ne {F : Type u_1} [Field F] [DecidableEq F] {v w : Fin 3F} (hv : v 0) (hw : w 0) (h : Projectivization.mk F v hv Projectivization.mk F w hw) :
(Projectivization.mk F v hv).cross (Projectivization.mk F w hw) = Projectivization.mk F ((crossProduct v) w)
theorem Projectivization.cross_comm {F : Type u_1} [Field F] [DecidableEq F] (v w : Projectivization F (Fin 3F)) :
v.cross w = w.cross v
theorem Projectivization.cross_orthogonal_left {F : Type u_1} [Field F] [DecidableEq F] {v w : Projectivization F (Fin 3F)} (h : v w) :
(v.cross w).orthogonal v
theorem Projectivization.cross_orthogonal_right {F : Type u_1} [Field F] [DecidableEq F] {v w : Projectivization F (Fin 3F)} (h : v w) :
(v.cross w).orthogonal w
theorem Projectivization.orthogonal_cross_left {F : Type u_1} [Field F] [DecidableEq F] {v w : Projectivization F (Fin 3F)} (h : v w) :
v.orthogonal (v.cross w)
theorem Projectivization.orthogonal_cross_right {F : Type u_1} [Field F] [DecidableEq F] {v w : Projectivization F (Fin 3F)} (h : v w) :
w.orthogonal (v.cross w)