Theorem: EuclideanGeometry.Sphere.secondInter_secondInter
File: Mathlib/Geometry/Euclidean/Sphere/SecondInter.lean

tactic: by_cases hv : v = 0
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Sphere P
p : P
v : V
⊢ s.secondInter (s.secondInter p v) v = p
state_after: case pos
V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Sphere P
p : P
v : V
hv : v = 0
⊢ s.secondInter (s.secondInter p v) v = p

case neg
V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Sphere P
p : P
v : V
hv : ¬v = 0
⊢ s.secondInter (s.secondInter p v) v = p

tactic: have hv' : ⟪v, v⟫ ≠ 0 := inner_self_ne_zero.2 hv
state_before: case neg
V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Sphere P
p : P
v : V
hv : ¬v = 0
⊢ s.secondInter (s.secondInter p v) v = p
state_after: case neg
V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Sphere P
p : P
v : V
hv : ¬v = 0
hv' : ⟪v, v⟫_ℝ ≠ 0
⊢ s.secondInter (s.secondInter p v) v = p

tactic: simp only [Sphere.secondInter, vadd_vsub_assoc, vadd_vadd, inner_add_right, inner_smul_right,
  div_mul_cancel₀ _ hv']
state_before: case neg
V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Sphere P
p : P
v : V
hv : ¬v = 0
hv' : ⟪v, v⟫_ℝ ≠ 0
⊢ s.secondInter (s.secondInter p v) v = p
state_after: case neg
V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Sphere P
p : P
v : V
hv : ¬v = 0
hv' : ⟪v, v⟫_ℝ ≠ 0
⊢ (-2 * (-2 * ⟪v, p -ᵥ s.center⟫_ℝ + ⟪v, p -ᵥ s.center⟫_ℝ) / ⟪v, v⟫_ℝ) • v +
        (-2 * ⟪v, p -ᵥ s.center⟫_ℝ / ⟪v, v⟫_ℝ) • v +ᵥ
      p =
    p

tactic: rw [← @vsub_eq_zero_iff_eq V, vadd_vsub, ← add_smul, ← add_div]
state_before: case neg
V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Sphere P
p : P
v : V
hv : ¬v = 0
hv' : ⟪v, v⟫_ℝ ≠ 0
⊢ (-2 * (-2 * ⟪v, p -ᵥ s.center⟫_ℝ + ⟪v, p -ᵥ s.center⟫_ℝ) / ⟪v, v⟫_ℝ) • v +
        (-2 * ⟪v, p -ᵥ s.center⟫_ℝ / ⟪v, v⟫_ℝ) • v +ᵥ
      p =
    p
state_after: case neg
V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Sphere P
p : P
v : V
hv : ¬v = 0
hv' : ⟪v, v⟫_ℝ ≠ 0
⊢ ((-2 * (-2 * ⟪v, p -ᵥ s.center⟫_ℝ + ⟪v, p -ᵥ s.center⟫_ℝ) + -2 * ⟪v, p -ᵥ s.center⟫_ℝ) / ⟪v, v⟫_ℝ) • v = 0

tactic: convert zero_smul ℝ (M := V) _
state_before: case neg
V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Sphere P
p : P
v : V
hv : ¬v = 0
hv' : ⟪v, v⟫_ℝ ≠ 0
⊢ ((-2 * (-2 * ⟪v, p -ᵥ s.center⟫_ℝ + ⟪v, p -ᵥ s.center⟫_ℝ) + -2 * ⟪v, p -ᵥ s.center⟫_ℝ) / ⟪v, v⟫_ℝ) • v = 0
state_after: case h.e'_2.h.e'_5
V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Sphere P
p : P
v : V
hv : ¬v = 0
hv' : ⟪v, v⟫_ℝ ≠ 0
⊢ (-2 * (-2 * ⟪v, p -ᵥ s.center⟫_ℝ + ⟪v, p -ᵥ s.center⟫_ℝ) + -2 * ⟪v, p -ᵥ s.center⟫_ℝ) / ⟪v, v⟫_ℝ = 0

tactic: convert zero_div (G₀ := ℝ) _
state_before: case h.e'_2.h.e'_5
V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Sphere P
p : P
v : V
hv : ¬v = 0
hv' : ⟪v, v⟫_ℝ ≠ 0
⊢ (-2 * (-2 * ⟪v, p -ᵥ s.center⟫_ℝ + ⟪v, p -ᵥ s.center⟫_ℝ) + -2 * ⟪v, p -ᵥ s.center⟫_ℝ) / ⟪v, v⟫_ℝ = 0
state_after: case h.e'_2.h.e'_5
V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Sphere P
p : P
v : V
hv : ¬v = 0
hv' : ⟪v, v⟫_ℝ ≠ 0
⊢ -2 * (-2 * ⟪v, p -ᵥ s.center⟫_ℝ + ⟪v, p -ᵥ s.center⟫_ℝ) + -2 * ⟪v, p -ᵥ s.center⟫_ℝ = 0

tactic: ring
state_before: case h.e'_2.h.e'_5
V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Sphere P
p : P
v : V
hv : ¬v = 0
hv' : ⟪v, v⟫_ℝ ≠ 0
⊢ -2 * (-2 * ⟪v, p -ᵥ s.center⟫_ℝ + ⟪v, p -ᵥ s.center⟫_ℝ) + -2 * ⟪v, p -ᵥ s.center⟫_ℝ = 0
state_after: no goals

tactic: simp [hv]
state_before: case pos
V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Sphere P
p : P
v : V
hv : v = 0
⊢ s.secondInter (s.secondInter p v) v = p
state_after: no goals