File: Mathlib/Geometry/Euclidean/Angle/Unoriented/Basic.lean

full_name: InnerProductGeometry.angle
code: /-- The undirected angle between two vectors. If either vector is 0,
this is π/2. See `Orientation.oangle` for the corresponding oriented angle
definition. -/
def angle (x y : V) : ℝ 
goal: ℝ

full_name: InnerProductGeometry.continuousAt_angle
code: theorem continuousAt_angle {x : V × V} (hx1 : x.1 ≠ 0) (hx2 : x.2 ≠ 0) :
    ContinuousAt (fun y : V × V => angle y.1 y.2) x 
goal: ContinuousAt (fun y => InnerProductGeometry.angle y.1 y.2) x

full_name: InnerProductGeometry.angle_smul_smul
code: theorem angle_smul_smul {c : ℝ} (hc : c ≠ 0) (x y : V) : angle (c • x) (c • y) = angle x y 
goal: InnerProductGeometry.angle (c • x) (c • y) = InnerProductGeometry.angle x y

full_name: LinearIsometry.angle_map
code: @[simp]
theorem _root_.LinearIsometry.angle_map {E F : Type*} [NormedAddCommGroup E] [NormedAddCommGroup F]
    [InnerProductSpace ℝ E] [InnerProductSpace ℝ F] (f : E →ₗᵢ[ℝ] F) (u v : E) :
    angle (f u) (f v) = angle u v 
goal: InnerProductGeometry.angle (f u) (f v) = InnerProductGeometry.angle u v

full_name: Submodule.angle_coe
code: @[simp, norm_cast]
theorem _root_.Submodule.angle_coe {s : Submodule ℝ V} (x y : s) :
    angle (x : V) (y : V) = angle x y 
goal: InnerProductGeometry.angle ↑x ↑y = InnerProductGeometry.angle x y

full_name: InnerProductGeometry.cos_angle
code: /-- The cosine of the angle between two vectors. -/
theorem cos_angle (x y : V) : Real.cos (angle x y) = ⟪x, y⟫ / (‖x‖ * ‖y‖) 
goal: Real.cos (InnerProductGeometry.angle x y) = ⟪x, y⟫_ℝ / (‖x‖ * ‖y‖)

full_name: InnerProductGeometry.angle_comm
code: /-- The angle between two vectors does not depend on their order. -/
theorem angle_comm (x y : V) : angle x y = angle y x 
goal: InnerProductGeometry.angle x y = InnerProductGeometry.angle y x

full_name: InnerProductGeometry.angle_neg_neg
code: /-- The angle between the negation of two vectors. -/
@[simp]
theorem angle_neg_neg (x y : V) : angle (-x) (-y) = angle x y 
goal: InnerProductGeometry.angle (-x) (-y) = InnerProductGeometry.angle x y

full_name: InnerProductGeometry.angle_nonneg
code: /-- The angle between two vectors is nonnegative. -/
theorem angle_nonneg (x y : V) : 0 ≤ angle x y 
goal: 0 ≤ InnerProductGeometry.angle x y

full_name: InnerProductGeometry.angle_le_pi
code: /-- The angle between two vectors is at most π. -/
theorem angle_le_pi (x y : V) : angle x y ≤ π 
goal: InnerProductGeometry.angle x y ≤ π

full_name: InnerProductGeometry.angle_neg_right
code: /-- The angle between a vector and the negation of another vector. -/
theorem angle_neg_right (x y : V) : angle x (-y) = π - angle x y 
goal: InnerProductGeometry.angle x (-y) = π - InnerProductGeometry.angle x y

full_name: InnerProductGeometry.angle_neg_left
code: /-- The angle between the negation of a vector and another vector. -/
theorem angle_neg_left (x y : V) : angle (-x) y = π - angle x y 
goal: InnerProductGeometry.angle (-x) y = π - InnerProductGeometry.angle x y

full_name: InnerProductGeometry.angle_zero_left
code: /-- The angle between the zero vector and a vector. -/
@[simp]
theorem angle_zero_left (x : V) : angle 0 x = π / 2 
goal: InnerProductGeometry.angle 0 x = π / 2

full_name: InnerProductGeometry.angle_zero_right
code: /-- The angle between a vector and the zero vector. -/
@[simp]
theorem angle_zero_right (x : V) : angle x 0 = π / 2 
goal: InnerProductGeometry.angle x 0 = π / 2

full_name: InnerProductGeometry.angle_self
code: /-- The angle between a nonzero vector and itself. -/
@[simp]
theorem angle_self {x : V} (hx : x ≠ 0) : angle x x = 0 
goal: InnerProductGeometry.angle x x = 0

full_name: InnerProductGeometry.angle_self_neg_of_nonzero
code: /-- The angle between a nonzero vector and its negation. -/
@[simp]
theorem angle_self_neg_of_nonzero {x : V} (hx : x ≠ 0) : angle x (-x) = π 
goal: InnerProductGeometry.angle x (-x) = π

full_name: InnerProductGeometry.angle_neg_self_of_nonzero
code: /-- The angle between the negation of a nonzero vector and that
vector. -/
@[simp]
theorem angle_neg_self_of_nonzero {x : V} (hx : x ≠ 0) : angle (-x) x = π 
goal: InnerProductGeometry.angle (-x) x = π

full_name: InnerProductGeometry.angle_smul_right_of_pos
code: /-- The angle between a vector and a positive multiple of a vector. -/
@[simp]
theorem angle_smul_right_of_pos (x y : V) {r : ℝ} (hr : 0 < r) : angle x (r • y) = angle x y 
goal: InnerProductGeometry.angle x (r • y) = InnerProductGeometry.angle x y

full_name: InnerProductGeometry.angle_smul_left_of_pos
code: /-- The angle between a positive multiple of a vector and a vector. -/
@[simp]
theorem angle_smul_left_of_pos (x y : V) {r : ℝ} (hr : 0 < r) : angle (r • x) y = angle x y 
goal: InnerProductGeometry.angle (r • x) y = InnerProductGeometry.angle x y

full_name: InnerProductGeometry.angle_smul_right_of_neg
code: /-- The angle between a vector and a negative multiple of a vector. -/
@[simp]
theorem angle_smul_right_of_neg (x y : V) {r : ℝ} (hr : r < 0) :
    angle x (r • y) = angle x (-y) 
goal: InnerProductGeometry.angle x (r • y) = InnerProductGeometry.angle x (-y)

full_name: InnerProductGeometry.angle_smul_left_of_neg
code: /-- The angle between a negative multiple of a vector and a vector. -/
@[simp]
theorem angle_smul_left_of_neg (x y : V) {r : ℝ} (hr : r < 0) : angle (r • x) y = angle (-x) y 
goal: InnerProductGeometry.angle (r • x) y = InnerProductGeometry.angle (-x) y

full_name: InnerProductGeometry.cos_angle_mul_norm_mul_norm
code: /-- The cosine of the angle between two vectors, multiplied by the
product of their norms. -/
theorem cos_angle_mul_norm_mul_norm (x y : V) : Real.cos (angle x y) * (‖x‖ * ‖y‖) = ⟪x, y⟫ 
goal: Real.cos (InnerProductGeometry.angle x y) * (‖x‖ * ‖y‖) = ⟪x, y⟫_ℝ

full_name: InnerProductGeometry.sin_angle_mul_norm_mul_norm
code: /-- The sine of the angle between two vectors, multiplied by the
product of their norms. -/
theorem sin_angle_mul_norm_mul_norm (x y : V) :
    Real.sin (angle x y) * (‖x‖ * ‖y‖) = √(⟪x, x⟫ * ⟪y, y⟫ - ⟪x, y⟫ * ⟪x, y⟫) 
goal: Real.sin (InnerProductGeometry.angle x y) * (‖x‖ * ‖y‖) = √(⟪x, x⟫_ℝ * ⟪y, y⟫_ℝ - ⟪x, y⟫_ℝ * ⟪x, y⟫_ℝ)

full_name: InnerProductGeometry.angle_eq_zero_iff
code: /-- The angle between two vectors is zero if and only if they are
nonzero and one is a positive multiple of the other. -/
theorem angle_eq_zero_iff {x y : V} : angle x y = 0 ↔ x ≠ 0 ∧ ∃ r : ℝ, 0 < r ∧ y = r • x 
goal: InnerProductGeometry.angle x y = 0 ↔ x ≠ 0 ∧ ∃ r, 0 < r ∧ y = r • x

full_name: InnerProductGeometry.angle_eq_pi_iff
code: /-- The angle between two vectors is π if and only if they are nonzero
and one is a negative multiple of the other. -/
theorem angle_eq_pi_iff {x y : V} : angle x y = π ↔ x ≠ 0 ∧ ∃ r : ℝ, r < 0 ∧ y = r • x 
goal: InnerProductGeometry.angle x y = π ↔ x ≠ 0 ∧ ∃ r < 0, y = r • x

full_name: InnerProductGeometry.angle_add_angle_eq_pi_of_angle_eq_pi
code: /-- If the angle between two vectors is π, the angles between those
vectors and a third vector add to π. -/
theorem angle_add_angle_eq_pi_of_angle_eq_pi {x y : V} (z : V) (h : angle x y = π) :
    angle x z + angle y z = π 
goal: InnerProductGeometry.angle x z + InnerProductGeometry.angle y z = π

full_name: InnerProductGeometry.inner_eq_zero_iff_angle_eq_pi_div_two
code: /-- Two vectors have inner product 0 if and only if the angle between
them is π/2. -/
theorem inner_eq_zero_iff_angle_eq_pi_div_two (x y : V) : ⟪x, y⟫ = 0 ↔ angle x y = π / 2 
goal: ⟪x, y⟫_ℝ = 0 ↔ InnerProductGeometry.angle x y = π / 2

full_name: InnerProductGeometry.inner_eq_neg_mul_norm_of_angle_eq_pi
code: /-- If the angle between two vectors is π, the inner product equals the negative product
of the norms. -/
theorem inner_eq_neg_mul_norm_of_angle_eq_pi {x y : V} (h : angle x y = π) :
    ⟪x, y⟫ = -(‖x‖ * ‖y‖) 
goal: ⟪x, y⟫_ℝ = -(‖x‖ * ‖y‖)

full_name: InnerProductGeometry.inner_eq_mul_norm_of_angle_eq_zero
code: /-- If the angle between two vectors is 0, the inner product equals the product of the norms. -/
theorem inner_eq_mul_norm_of_angle_eq_zero {x y : V} (h : angle x y = 0) : ⟪x, y⟫ = ‖x‖ * ‖y‖ 
goal: ⟪x, y⟫_ℝ = ‖x‖ * ‖y‖

full_name: InnerProductGeometry.inner_eq_neg_mul_norm_iff_angle_eq_pi
code: /-- The inner product of two non-zero vectors equals the negative product of their norms
if and only if the angle between the two vectors is π. -/
theorem inner_eq_neg_mul_norm_iff_angle_eq_pi {x y : V} (hx : x ≠ 0) (hy : y ≠ 0) :
    ⟪x, y⟫ = -(‖x‖ * ‖y‖) ↔ angle x y = π 
goal: ⟪x, y⟫_ℝ = -(‖x‖ * ‖y‖) ↔ InnerProductGeometry.angle x y = π

full_name: InnerProductGeometry.inner_eq_mul_norm_iff_angle_eq_zero
code: /-- The inner product of two non-zero vectors equals the product of their norms
if and only if the angle between the two vectors is 0. -/
theorem inner_eq_mul_norm_iff_angle_eq_zero {x y : V} (hx : x ≠ 0) (hy : y ≠ 0) :
    ⟪x, y⟫ = ‖x‖ * ‖y‖ ↔ angle x y = 0 
goal: ⟪x, y⟫_ℝ = ‖x‖ * ‖y‖ ↔ InnerProductGeometry.angle x y = 0

full_name: InnerProductGeometry.norm_sub_eq_add_norm_of_angle_eq_pi
code: /-- If the angle between two vectors is π, the norm of their difference equals
the sum of their norms. -/
theorem norm_sub_eq_add_norm_of_angle_eq_pi {x y : V} (h : angle x y = π) :
    ‖x - y‖ = ‖x‖ + ‖y‖ 
goal: ‖x - y‖ = ‖x‖ + ‖y‖

full_name: InnerProductGeometry.norm_add_eq_add_norm_of_angle_eq_zero
code: /-- If the angle between two vectors is 0, the norm of their sum equals
the sum of their norms. -/
theorem norm_add_eq_add_norm_of_angle_eq_zero {x y : V} (h : angle x y = 0) :
    ‖x + y‖ = ‖x‖ + ‖y‖ 
goal: ‖x + y‖ = ‖x‖ + ‖y‖

full_name: InnerProductGeometry.norm_sub_eq_abs_sub_norm_of_angle_eq_zero
code: /-- If the angle between two vectors is 0, the norm of their difference equals
the absolute value of the difference of their norms. -/
theorem norm_sub_eq_abs_sub_norm_of_angle_eq_zero {x y : V} (h : angle x y = 0) :
    ‖x - y‖ = |‖x‖ - ‖y‖| 
goal: ‖x - y‖ = |‖x‖ - ‖y‖|

full_name: InnerProductGeometry.norm_sub_eq_add_norm_iff_angle_eq_pi
code: /-- The norm of the difference of two non-zero vectors equals the sum of their norms
if and only the angle between the two vectors is π. -/
theorem norm_sub_eq_add_norm_iff_angle_eq_pi {x y : V} (hx : x ≠ 0) (hy : y ≠ 0) :
    ‖x - y‖ = ‖x‖ + ‖y‖ ↔ angle x y = π 
goal: ‖x - y‖ = ‖x‖ + ‖y‖ ↔ InnerProductGeometry.angle x y = π

full_name: InnerProductGeometry.norm_add_eq_add_norm_iff_angle_eq_zero
code: /-- The norm of the sum of two non-zero vectors equals the sum of their norms
if and only the angle between the two vectors is 0. -/
theorem norm_add_eq_add_norm_iff_angle_eq_zero {x y : V} (hx : x ≠ 0) (hy : y ≠ 0) :
    ‖x + y‖ = ‖x‖ + ‖y‖ ↔ angle x y = 0 
goal: ‖x + y‖ = ‖x‖ + ‖y‖ ↔ InnerProductGeometry.angle x y = 0

full_name: InnerProductGeometry.norm_sub_eq_abs_sub_norm_iff_angle_eq_zero
code: /-- The norm of the difference of two non-zero vectors equals the absolute value
of the difference of their norms if and only the angle between the two vectors is 0. -/
theorem norm_sub_eq_abs_sub_norm_iff_angle_eq_zero {x y : V} (hx : x ≠ 0) (hy : y ≠ 0) :
    ‖x - y‖ = |‖x‖ - ‖y‖| ↔ angle x y = 0 
goal: ‖x - y‖ = |‖x‖ - ‖y‖| ↔ InnerProductGeometry.angle x y = 0

full_name: InnerProductGeometry.norm_add_eq_norm_sub_iff_angle_eq_pi_div_two
code: /-- The norm of the sum of two vectors equals the norm of their difference if and only if
the angle between them is π/2. -/
theorem norm_add_eq_norm_sub_iff_angle_eq_pi_div_two (x y : V) :
    ‖x + y‖ = ‖x - y‖ ↔ angle x y = π / 2 
goal: ‖x + y‖ = ‖x - y‖ ↔ InnerProductGeometry.angle x y = π / 2

full_name: InnerProductGeometry.cos_eq_one_iff_angle_eq_zero
code: /-- The cosine of the angle between two vectors is 1 if and only if the angle is 0. -/
theorem cos_eq_one_iff_angle_eq_zero : cos (angle x y) = 1 ↔ angle x y = 0 
goal: Real.cos (InnerProductGeometry.angle x y) = 1 ↔ InnerProductGeometry.angle x y = 0

full_name: InnerProductGeometry.cos_eq_zero_iff_angle_eq_pi_div_two
code: /-- The cosine of the angle between two vectors is 0 if and only if the angle is π / 2. -/
theorem cos_eq_zero_iff_angle_eq_pi_div_two : cos (angle x y) = 0 ↔ angle x y = π / 2 
goal: Real.cos (InnerProductGeometry.angle x y) = 0 ↔ InnerProductGeometry.angle x y = π / 2

full_name: InnerProductGeometry.cos_eq_neg_one_iff_angle_eq_pi
code: /-- The cosine of the angle between two vectors is -1 if and only if the angle is π. -/
theorem cos_eq_neg_one_iff_angle_eq_pi : cos (angle x y) = -1 ↔ angle x y = π 
goal: Real.cos (InnerProductGeometry.angle x y) = -1 ↔ InnerProductGeometry.angle x y = π

full_name: InnerProductGeometry.sin_eq_zero_iff_angle_eq_zero_or_angle_eq_pi
code: /-- The sine of the angle between two vectors is 0 if and only if the angle is 0 or π. -/
theorem sin_eq_zero_iff_angle_eq_zero_or_angle_eq_pi :
    sin (angle x y) = 0 ↔ angle x y = 0 ∨ angle x y = π 
goal: Real.sin (InnerProductGeometry.angle x y) = 0 ↔ InnerProductGeometry.angle x y = 0 ∨ InnerProductGeometry.angle x y = π

full_name: InnerProductGeometry.sin_eq_one_iff_angle_eq_pi_div_two
code: /-- The sine of the angle between two vectors is 1 if and only if the angle is π / 2. -/
theorem sin_eq_one_iff_angle_eq_pi_div_two : sin (angle x y) = 1 ↔ angle x y = π / 2 
goal: Real.sin (InnerProductGeometry.angle x y) = 1 ↔ InnerProductGeometry.angle x y = π / 2