Theorem: Besicovitch.SatelliteConfig.exists_normalized_aux3
File: Mathlib/MeasureTheory/Covering/BesicovitchVectorSpace.lean

tactic: have ah :
    ∀ i j, i ≠ j → a.r i ≤ ‖a.c i - a.c j‖ ∧ a.r j ≤ τ * a.r i ∨
      a.r j ≤ ‖a.c j - a.c i‖ ∧ a.r i ≤ τ * a.r j := by
  simpa only [dist_eq_norm] using a.h
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
N : ℕ
τ : ℝ
a : SatelliteConfig E N τ
lastc : c a (last N) = 0
lastr : r a (last N) = 1
hτ : 1 ≤ τ
δ : ℝ
hδ1 : τ ≤ 1 + δ / 4
i j : Fin (Nat.succ N)
inej : i ≠ j
hi : 2 < ‖c a i‖
hij : ‖c a i‖ ≤ ‖c a j‖
⊢ 1 - δ ≤ ‖(2 / ‖c a i‖) • c a i - (2 / ‖c a j‖) • c a j‖

tactic: have δnonneg : 0 ≤ δ := by linarith only [hτ, hδ1]
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
N : ℕ
τ : ℝ
a : SatelliteConfig E N τ
lastc : c a (last N) = 0
lastr : r a (last N) = 1
hτ : 1 ≤ τ
δ : ℝ
hδ1 : τ ≤ 1 + δ / 4
i j : Fin (Nat.succ N)
inej : i ≠ j
hi : 2 < ‖c a i‖
hij : ‖c a i‖ ≤ ‖c a j‖
ah :
  ∀ (i j : Fin (Nat.succ N)),
    i ≠ j → r a i ≤ ‖c a i - c a j‖ ∧ r a j ≤ τ * r a i ∨ r a j ≤ ‖c a j - c a i‖ ∧ r a i ≤ τ * r a j
⊢ 1 - δ ≤ ‖(2 / ‖c a i‖) • c a i - (2 / ‖c a j‖) • c a j‖

tactic: have hcrj : ‖a.c j‖ ≤ a.r j + 1 := by simpa only [lastc, lastr, dist_zero_right] using a.inter' j
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
N : ℕ
τ : ℝ
a : SatelliteConfig E N τ
lastc : c a (last N) = 0
lastr : r a (last N) = 1
hτ : 1 ≤ τ
δ : ℝ
hδ1 : τ ≤ 1 + δ / 4
i j : Fin (Nat.succ N)
inej : i ≠ j
hi : 2 < ‖c a i‖
hij : ‖c a i‖ ≤ ‖c a j‖
ah :
  ∀ (i j : Fin (Nat.succ N)),
    i ≠ j → r a i ≤ ‖c a i - c a j‖ ∧ r a j ≤ τ * r a i ∨ r a j ≤ ‖c a j - c a i‖ ∧ r a i ≤ τ * r a j
δnonneg : 0 ≤ δ
⊢ 1 - δ ≤ ‖(2 / ‖c a i‖) • c a i - (2 / ‖c a j‖) • c a j‖

tactic: have A : a.r i ≤ ‖a.c i‖ := by
  have : i < last N := by
    apply lt_top_iff_ne_top.2
    intro iN
    change i = last N at iN
    rw [iN, lastc, norm_zero] at hi
    exact lt_irrefl _ (zero_le_two.trans_lt hi)
  convert (a.hlast i this).1 using 1
  rw [dist_eq_norm, lastc, sub_zero]
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
N : ℕ
τ : ℝ
a : SatelliteConfig E N τ
lastc : c a (last N) = 0
lastr : r a (last N) = 1
hτ : 1 ≤ τ
δ : ℝ
hδ1 : τ ≤ 1 + δ / 4
i j : Fin (Nat.succ N)
inej : i ≠ j
hi : 2 < ‖c a i‖
hij : ‖c a i‖ ≤ ‖c a j‖
ah :
  ∀ (i j : Fin (Nat.succ N)),
    i ≠ j → r a i ≤ ‖c a i - c a j‖ ∧ r a j ≤ τ * r a i ∨ r a j ≤ ‖c a j - c a i‖ ∧ r a i ≤ τ * r a j
δnonneg : 0 ≤ δ
hcrj : ‖c a j‖ ≤ r a j + 1
⊢ 1 - δ ≤ ‖(2 / ‖c a i‖) • c a i - (2 / ‖c a j‖) • c a j‖

tactic: have hj : 2 < ‖a.c j‖ := hi.trans_le hij
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
N : ℕ
τ : ℝ
a : SatelliteConfig E N τ
lastc : c a (last N) = 0
lastr : r a (last N) = 1
hτ : 1 ≤ τ
δ : ℝ
hδ1 : τ ≤ 1 + δ / 4
i j : Fin (Nat.succ N)
inej : i ≠ j
hi : 2 < ‖c a i‖
hij : ‖c a i‖ ≤ ‖c a j‖
ah :
  ∀ (i j : Fin (Nat.succ N)),
    i ≠ j → r a i ≤ ‖c a i - c a j‖ ∧ r a j ≤ τ * r a i ∨ r a j ≤ ‖c a j - c a i‖ ∧ r a i ≤ τ * r a j
δnonneg : 0 ≤ δ
hcrj : ‖c a j‖ ≤ r a j + 1
A : r a i ≤ ‖c a i‖
⊢ 1 - δ ≤ ‖(2 / ‖c a i‖) • c a i - (2 / ‖c a j‖) • c a j‖

tactic: set s := ‖a.c i‖
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
N : ℕ
τ : ℝ
a : SatelliteConfig E N τ
lastc : c a (last N) = 0
lastr : r a (last N) = 1
hτ : 1 ≤ τ
δ : ℝ
hδ1 : τ ≤ 1 + δ / 4
i j : Fin (Nat.succ N)
inej : i ≠ j
hi : 2 < ‖c a i‖
hij : ‖c a i‖ ≤ ‖c a j‖
ah :
  ∀ (i j : Fin (Nat.succ N)),
    i ≠ j → r a i ≤ ‖c a i - c a j‖ ∧ r a j ≤ τ * r a i ∨ r a j ≤ ‖c a j - c a i‖ ∧ r a i ≤ τ * r a j
δnonneg : 0 ≤ δ
hcrj : ‖c a j‖ ≤ r a j + 1
A : r a i ≤ ‖c a i‖
hj : 2 < ‖c a j‖
⊢ 1 - δ ≤ ‖(2 / ‖c a i‖) • c a i - (2 / ‖c a j‖) • c a j‖

tactic: have spos : 0 < s := zero_lt_two.trans hi
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
N : ℕ
τ : ℝ
a : SatelliteConfig E N τ
lastc : c a (last N) = 0
lastr : r a (last N) = 1
hτ : 1 ≤ τ
δ : ℝ
hδ1 : τ ≤ 1 + δ / 4
i j : Fin (Nat.succ N)
inej : i ≠ j
ah :
  ∀ (i j : Fin (Nat.succ N)),
    i ≠ j → r a i ≤ ‖c a i - c a j‖ ∧ r a j ≤ τ * r a i ∨ r a j ≤ ‖c a j - c a i‖ ∧ r a i ≤ τ * r a j
δnonneg : 0 ≤ δ
hcrj : ‖c a j‖ ≤ r a j + 1
hj : 2 < ‖c a j‖
s : ℝ := ‖c a i‖
hi : 2 < s
hij : s ≤ ‖c a j‖
A : r a i ≤ s
⊢ 1 - δ ≤ ‖(2 / s) • c a i - (2 / ‖c a j‖) • c a j‖

tactic: set d := (s / ‖a.c j‖) • a.c j with hd
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
N : ℕ
τ : ℝ
a : SatelliteConfig E N τ
lastc : c a (last N) = 0
lastr : r a (last N) = 1
hτ : 1 ≤ τ
δ : ℝ
hδ1 : τ ≤ 1 + δ / 4
i j : Fin (Nat.succ N)
inej : i ≠ j
ah :
  ∀ (i j : Fin (Nat.succ N)),
    i ≠ j → r a i ≤ ‖c a i - c a j‖ ∧ r a j ≤ τ * r a i ∨ r a j ≤ ‖c a j - c a i‖ ∧ r a i ≤ τ * r a j
δnonneg : 0 ≤ δ
hcrj : ‖c a j‖ ≤ r a j + 1
hj : 2 < ‖c a j‖
s : ℝ := ‖c a i‖
hi : 2 < s
hij : s ≤ ‖c a j‖
A : r a i ≤ s
spos : 0 < s
⊢ 1 - δ ≤ ‖(2 / s) • c a i - (2 / ‖c a j‖) • c a j‖

tactic: have I : ‖a.c j - a.c i‖ ≤ ‖a.c j‖ - s + ‖d - a.c i‖ :=
  calc
    ‖a.c j - a.c i‖ ≤ ‖a.c j - d‖ + ‖d - a.c i‖ := by simp [← dist_eq_norm, dist_triangle]
    _ = ‖a.c j‖ - ‖a.c i‖ + ‖d - a.c i‖ := by
      nth_rw 1 [← one_smul ℝ (a.c j)]
      rw [add_left_inj, hd, ← sub_smul, norm_smul, Real.norm_eq_abs, abs_of_nonneg, sub_mul,
        one_mul, div_mul_cancel _ (zero_le_two.trans_lt hj).ne']
      rwa [sub_nonneg, div_le_iff (zero_lt_two.trans hj), one_mul]
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
N : ℕ
τ : ℝ
a : SatelliteConfig E N τ
lastc : c a (last N) = 0
lastr : r a (last N) = 1
hτ : 1 ≤ τ
δ : ℝ
hδ1 : τ ≤ 1 + δ / 4
i j : Fin (Nat.succ N)
inej : i ≠ j
ah :
  ∀ (i j : Fin (Nat.succ N)),
    i ≠ j → r a i ≤ ‖c a i - c a j‖ ∧ r a j ≤ τ * r a i ∨ r a j ≤ ‖c a j - c a i‖ ∧ r a i ≤ τ * r a j
δnonneg : 0 ≤ δ
hcrj : ‖c a j‖ ≤ r a j + 1
hj : 2 < ‖c a j‖
s : ℝ := ‖c a i‖
hi : 2 < s
hij : s ≤ ‖c a j‖
A : r a i ≤ s
spos : 0 < s
d : E := (s / ‖c a j‖) • c a j
hd : d = (s / ‖c a j‖) • c a j
⊢ 1 - δ ≤ ‖(2 / s) • c a i - (2 / ‖c a j‖) • c a j‖

tactic: have invs_nonneg : 0 ≤ 2 / s := div_nonneg zero_le_two (zero_le_two.trans hi.le)
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
N : ℕ
τ : ℝ
a : SatelliteConfig E N τ
lastc : c a (last N) = 0
lastr : r a (last N) = 1
hτ : 1 ≤ τ
δ : ℝ
hδ1 : τ ≤ 1 + δ / 4
i j : Fin (Nat.succ N)
inej : i ≠ j
ah :
  ∀ (i j : Fin (Nat.succ N)),
    i ≠ j → r a i ≤ ‖c a i - c a j‖ ∧ r a j ≤ τ * r a i ∨ r a j ≤ ‖c a j - c a i‖ ∧ r a i ≤ τ * r a j
δnonneg : 0 ≤ δ
hcrj : ‖c a j‖ ≤ r a j + 1
hj : 2 < ‖c a j‖
s : ℝ := ‖c a i‖
hi : 2 < s
hij : s ≤ ‖c a j‖
A : r a i ≤ s
spos : 0 < s
d : E := (s / ‖c a j‖) • c a j
hd : d = (s / ‖c a j‖) • c a j
I : ‖c a j - c a i‖ ≤ ‖c a j‖ - s + ‖d - c a i‖
J : r a j - ‖c a j - c a i‖ ≤ s / 2 * δ
⊢ 1 - δ ≤ ‖(2 / s) • c a i - (2 / ‖c a j‖) • c a j‖

tactic: calc
  1 - δ = 2 / s * (s / 2 - s / 2 * δ) := by field_simp [spos.ne']; ring
  _ ≤ 2 / s * ‖d - a.c i‖ :=
    (mul_le_mul_of_nonneg_left (by linarith only [hcrj, I, J, hi]) invs_nonneg)
  _ = ‖(2 / s) • a.c i - (2 / ‖a.c j‖) • a.c j‖ := by
    conv_lhs => rw [norm_sub_rev, ← abs_of_nonneg invs_nonneg]
    rw [← Real.norm_eq_abs, ← norm_smul, smul_sub, hd, smul_smul]
    congr 3
    field_simp [spos.ne']
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
N : ℕ
τ : ℝ
a : SatelliteConfig E N τ
lastc : c a (last N) = 0
lastr : r a (last N) = 1
hτ : 1 ≤ τ
δ : ℝ
hδ1 : τ ≤ 1 + δ / 4
i j : Fin (Nat.succ N)
inej : i ≠ j
ah :
  ∀ (i j : Fin (Nat.succ N)),
    i ≠ j → r a i ≤ ‖c a i - c a j‖ ∧ r a j ≤ τ * r a i ∨ r a j ≤ ‖c a j - c a i‖ ∧ r a i ≤ τ * r a j
δnonneg : 0 ≤ δ
hcrj : ‖c a j‖ ≤ r a j + 1
hj : 2 < ‖c a j‖
s : ℝ := ‖c a i‖
hi : 2 < s
hij : s ≤ ‖c a j‖
A : r a i ≤ s
spos : 0 < s
d : E := (s / ‖c a j‖) • c a j
hd : d = (s / ‖c a j‖) • c a j
I : ‖c a j - c a i‖ ≤ ‖c a j‖ - s + ‖d - c a i‖
J : r a j - ‖c a j - c a i‖ ≤ s / 2 * δ
invs_nonneg : 0 ≤ 2 / s
⊢ 1 - δ ≤ ‖(2 / s) • c a i - (2 / ‖c a j‖) • c a j‖

tactic: simpa only [dist_eq_norm] using a.h
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
N : ℕ
τ : ℝ
a : SatelliteConfig E N τ
lastc : c a (last N) = 0
lastr : r a (last N) = 1
hτ : 1 ≤ τ
δ : ℝ
hδ1 : τ ≤ 1 + δ / 4
i j : Fin (Nat.succ N)
inej : i ≠ j
hi : 2 < ‖c a i‖
hij : ‖c a i‖ ≤ ‖c a j‖
⊢ ∀ (i j : Fin (Nat.succ N)),
    i ≠ j → r a i ≤ ‖c a i - c a j‖ ∧ r a j ≤ τ * r a i ∨ r a j ≤ ‖c a j - c a i‖ ∧ r a i ≤ τ * r a j

tactic: linarith only [hτ, hδ1]
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
N : ℕ
τ : ℝ
a : SatelliteConfig E N τ
lastc : c a (last N) = 0
lastr : r a (last N) = 1
hτ : 1 ≤ τ
δ : ℝ
hδ1 : τ ≤ 1 + δ / 4
i j : Fin (Nat.succ N)
inej : i ≠ j
hi : 2 < ‖c a i‖
hij : ‖c a i‖ ≤ ‖c a j‖
ah :
  ∀ (i j : Fin (Nat.succ N)),
    i ≠ j → r a i ≤ ‖c a i - c a j‖ ∧ r a j ≤ τ * r a i ∨ r a j ≤ ‖c a j - c a i‖ ∧ r a i ≤ τ * r a j
⊢ 0 ≤ δ

tactic: simpa only [lastc, lastr, dist_zero_right] using a.inter' j
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
N : ℕ
τ : ℝ
a : SatelliteConfig E N τ
lastc : c a (last N) = 0
lastr : r a (last N) = 1
hτ : 1 ≤ τ
δ : ℝ
hδ1 : τ ≤ 1 + δ / 4
i j : Fin (Nat.succ N)
inej : i ≠ j
hi : 2 < ‖c a i‖
hij : ‖c a i‖ ≤ ‖c a j‖
ah :
  ∀ (i j : Fin (Nat.succ N)),
    i ≠ j → r a i ≤ ‖c a i - c a j‖ ∧ r a j ≤ τ * r a i ∨ r a j ≤ ‖c a j - c a i‖ ∧ r a i ≤ τ * r a j
δnonneg : 0 ≤ δ
⊢ ‖c a j‖ ≤ r a j + 1

tactic: have : i < last N := by
  apply lt_top_iff_ne_top.2
  intro iN
  change i = last N at iN
  rw [iN, lastc, norm_zero] at hi
  exact lt_irrefl _ (zero_le_two.trans_lt hi)
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
N : ℕ
τ : ℝ
a : SatelliteConfig E N τ
lastc : c a (last N) = 0
lastr : r a (last N) = 1
hτ : 1 ≤ τ
δ : ℝ
hδ1 : τ ≤ 1 + δ / 4
i j : Fin (Nat.succ N)
inej : i ≠ j
hi : 2 < ‖c a i‖
hij : ‖c a i‖ ≤ ‖c a j‖
ah :
  ∀ (i j : Fin (Nat.succ N)),
    i ≠ j → r a i ≤ ‖c a i - c a j‖ ∧ r a j ≤ τ * r a i ∨ r a j ≤ ‖c a j - c a i‖ ∧ r a i ≤ τ * r a j
δnonneg : 0 ≤ δ
hcrj : ‖c a j‖ ≤ r a j + 1
⊢ r a i ≤ ‖c a i‖

tactic: convert (a.hlast i this).1 using 1
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
N : ℕ
τ : ℝ
a : SatelliteConfig E N τ
lastc : c a (last N) = 0
lastr : r a (last N) = 1
hτ : 1 ≤ τ
δ : ℝ
hδ1 : τ ≤ 1 + δ / 4
i j : Fin (Nat.succ N)
inej : i ≠ j
hi : 2 < ‖c a i‖
hij : ‖c a i‖ ≤ ‖c a j‖
ah :
  ∀ (i j : Fin (Nat.succ N)),
    i ≠ j → r a i ≤ ‖c a i - c a j‖ ∧ r a j ≤ τ * r a i ∨ r a j ≤ ‖c a j - c a i‖ ∧ r a i ≤ τ * r a j
δnonneg : 0 ≤ δ
hcrj : ‖c a j‖ ≤ r a j + 1
this : i < last N
⊢ r a i ≤ ‖c a i‖

tactic: rw [dist_eq_norm, lastc, sub_zero]
state_before: case h.e'_4
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
N : ℕ
τ : ℝ
a : SatelliteConfig E N τ
lastc : c a (last N) = 0
lastr : r a (last N) = 1
hτ : 1 ≤ τ
δ : ℝ
hδ1 : τ ≤ 1 + δ / 4
i j : Fin (Nat.succ N)
inej : i ≠ j
hi : 2 < ‖c a i‖
hij : ‖c a i‖ ≤ ‖c a j‖
ah :
  ∀ (i j : Fin (Nat.succ N)),
    i ≠ j → r a i ≤ ‖c a i - c a j‖ ∧ r a j ≤ τ * r a i ∨ r a j ≤ ‖c a j - c a i‖ ∧ r a i ≤ τ * r a j
δnonneg : 0 ≤ δ
hcrj : ‖c a j‖ ≤ r a j + 1
this : i < last N
⊢ ‖c a i‖ = dist (c a i) (c a (last N))

tactic: apply lt_top_iff_ne_top.2
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
N : ℕ
τ : ℝ
a : SatelliteConfig E N τ
lastc : c a (last N) = 0
lastr : r a (last N) = 1
hτ : 1 ≤ τ
δ : ℝ
hδ1 : τ ≤ 1 + δ / 4
i j : Fin (Nat.succ N)
inej : i ≠ j
hi : 2 < ‖c a i‖
hij : ‖c a i‖ ≤ ‖c a j‖
ah :
  ∀ (i j : Fin (Nat.succ N)),
    i ≠ j → r a i ≤ ‖c a i - c a j‖ ∧ r a j ≤ τ * r a i ∨ r a j ≤ ‖c a j - c a i‖ ∧ r a i ≤ τ * r a j
δnonneg : 0 ≤ δ
hcrj : ‖c a j‖ ≤ r a j + 1
⊢ i < last N

tactic: intro iN
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
N : ℕ
τ : ℝ
a : SatelliteConfig E N τ
lastc : c a (last N) = 0
lastr : r a (last N) = 1
hτ : 1 ≤ τ
δ : ℝ
hδ1 : τ ≤ 1 + δ / 4
i j : Fin (Nat.succ N)
inej : i ≠ j
hi : 2 < ‖c a i‖
hij : ‖c a i‖ ≤ ‖c a j‖
ah :
  ∀ (i j : Fin (Nat.succ N)),
    i ≠ j → r a i ≤ ‖c a i - c a j‖ ∧ r a j ≤ τ * r a i ∨ r a j ≤ ‖c a j - c a i‖ ∧ r a i ≤ τ * r a j
δnonneg : 0 ≤ δ
hcrj : ‖c a j‖ ≤ r a j + 1
⊢ i ≠ ⊤

tactic: change i = last N at iN
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
N : ℕ
τ : ℝ
a : SatelliteConfig E N τ
lastc : c a (last N) = 0
lastr : r a (last N) = 1
hτ : 1 ≤ τ
δ : ℝ
hδ1 : τ ≤ 1 + δ / 4
i j : Fin (Nat.succ N)
inej : i ≠ j
hi : 2 < ‖c a i‖
hij : ‖c a i‖ ≤ ‖c a j‖
ah :
  ∀ (i j : Fin (Nat.succ N)),
    i ≠ j → r a i ≤ ‖c a i - c a j‖ ∧ r a j ≤ τ * r a i ∨ r a j ≤ ‖c a j - c a i‖ ∧ r a i ≤ τ * r a j
δnonneg : 0 ≤ δ
hcrj : ‖c a j‖ ≤ r a j + 1
iN : i = ⊤
⊢ False

tactic: rw [iN, lastc, norm_zero] at hi
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
N : ℕ
τ : ℝ
a : SatelliteConfig E N τ
lastc : c a (last N) = 0
lastr : r a (last N) = 1
hτ : 1 ≤ τ
δ : ℝ
hδ1 : τ ≤ 1 + δ / 4
i j : Fin (Nat.succ N)
inej : i ≠ j
hi : 2 < ‖c a i‖
hij : ‖c a i‖ ≤ ‖c a j‖
ah :
  ∀ (i j : Fin (Nat.succ N)),
    i ≠ j → r a i ≤ ‖c a i - c a j‖ ∧ r a j ≤ τ * r a i ∨ r a j ≤ ‖c a j - c a i‖ ∧ r a i ≤ τ * r a j
δnonneg : 0 ≤ δ
hcrj : ‖c a j‖ ≤ r a j + 1
iN : i = last N
⊢ False

tactic: exact lt_irrefl _ (zero_le_two.trans_lt hi)
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
N : ℕ
τ : ℝ
a : SatelliteConfig E N τ
lastc : c a (last N) = 0
lastr : r a (last N) = 1
hτ : 1 ≤ τ
δ : ℝ
hδ1 : τ ≤ 1 + δ / 4
i j : Fin (Nat.succ N)
inej : i ≠ j
hi : 2 < 0
hij : ‖c a i‖ ≤ ‖c a j‖
ah :
  ∀ (i j : Fin (Nat.succ N)),
    i ≠ j → r a i ≤ ‖c a i - c a j‖ ∧ r a j ≤ τ * r a i ∨ r a j ≤ ‖c a j - c a i‖ ∧ r a i ≤ τ * r a j
δnonneg : 0 ≤ δ
hcrj : ‖c a j‖ ≤ r a j + 1
iN : i = last N
⊢ False

tactic: simp [← dist_eq_norm, dist_triangle]
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
N : ℕ
τ : ℝ
a : SatelliteConfig E N τ
lastc : c a (last N) = 0
lastr : r a (last N) = 1
hτ : 1 ≤ τ
δ : ℝ
hδ1 : τ ≤ 1 + δ / 4
i j : Fin (Nat.succ N)
inej : i ≠ j
ah :
  ∀ (i j : Fin (Nat.succ N)),
    i ≠ j → r a i ≤ ‖c a i - c a j‖ ∧ r a j ≤ τ * r a i ∨ r a j ≤ ‖c a j - c a i‖ ∧ r a i ≤ τ * r a j
δnonneg : 0 ≤ δ
hcrj : ‖c a j‖ ≤ r a j + 1
hj : 2 < ‖c a j‖
s : ℝ := ‖c a i‖
hi : 2 < s
hij : s ≤ ‖c a j‖
A : r a i ≤ s
spos : 0 < s
d : E := (s / ‖c a j‖) • c a j
hd : d = (s / ‖c a j‖) • c a j
⊢ ‖c a j - c a i‖ ≤ ‖c a j - d‖ + ‖d - c a i‖

tactic: nth_rw 1 [← one_smul ℝ (a.c j)]
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
N : ℕ
τ : ℝ
a : SatelliteConfig E N τ
lastc : c a (last N) = 0
lastr : r a (last N) = 1
hτ : 1 ≤ τ
δ : ℝ
hδ1 : τ ≤ 1 + δ / 4
i j : Fin (Nat.succ N)
inej : i ≠ j
ah :
  ∀ (i j : Fin (Nat.succ N)),
    i ≠ j → r a i ≤ ‖c a i - c a j‖ ∧ r a j ≤ τ * r a i ∨ r a j ≤ ‖c a j - c a i‖ ∧ r a i ≤ τ * r a j
δnonneg : 0 ≤ δ
hcrj : ‖c a j‖ ≤ r a j + 1
hj : 2 < ‖c a j‖
s : ℝ := ‖c a i‖
hi : 2 < s
hij : s ≤ ‖c a j‖
A : r a i ≤ s
spos : 0 < s
d : E := (s / ‖c a j‖) • c a j
hd : d = (s / ‖c a j‖) • c a j
⊢ ‖c a j - d‖ + ‖d - c a i‖ = ‖c a j‖ - ‖c a i‖ + ‖d - c a i‖

tactic: rw [add_left_inj, hd, ← sub_smul, norm_smul, Real.norm_eq_abs, abs_of_nonneg, sub_mul,
  one_mul, div_mul_cancel _ (zero_le_two.trans_lt hj).ne']
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
N : ℕ
τ : ℝ
a : SatelliteConfig E N τ
lastc : c a (last N) = 0
lastr : r a (last N) = 1
hτ : 1 ≤ τ
δ : ℝ
hδ1 : τ ≤ 1 + δ / 4
i j : Fin (Nat.succ N)
inej : i ≠ j
ah :
  ∀ (i j : Fin (Nat.succ N)),
    i ≠ j → r a i ≤ ‖c a i - c a j‖ ∧ r a j ≤ τ * r a i ∨ r a j ≤ ‖c a j - c a i‖ ∧ r a i ≤ τ * r a j
δnonneg : 0 ≤ δ
hcrj : ‖c a j‖ ≤ r a j + 1
hj : 2 < ‖c a j‖
s : ℝ := ‖c a i‖
hi : 2 < s
hij : s ≤ ‖c a j‖
A : r a i ≤ s
spos : 0 < s
d : E := (s / ‖c a j‖) • c a j
hd : d = (s / ‖c a j‖) • c a j
⊢ ‖1 • c a j - d‖ + ‖d - c a i‖ = ‖c a j‖ - ‖c a i‖ + ‖d - c a i‖

tactic: rwa [sub_nonneg, div_le_iff (zero_lt_two.trans hj), one_mul]
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
N : ℕ
τ : ℝ
a : SatelliteConfig E N τ
lastc : c a (last N) = 0
lastr : r a (last N) = 1
hτ : 1 ≤ τ
δ : ℝ
hδ1 : τ ≤ 1 + δ / 4
i j : Fin (Nat.succ N)
inej : i ≠ j
ah :
  ∀ (i j : Fin (Nat.succ N)),
    i ≠ j → r a i ≤ ‖c a i - c a j‖ ∧ r a j ≤ τ * r a i ∨ r a j ≤ ‖c a j - c a i‖ ∧ r a i ≤ τ * r a j
δnonneg : 0 ≤ δ
hcrj : ‖c a j‖ ≤ r a j + 1
hj : 2 < ‖c a j‖
s : ℝ := ‖c a i‖
hi : 2 < s
hij : s ≤ ‖c a j‖
A : r a i ≤ s
spos : 0 < s
d : E := (s / ‖c a j‖) • c a j
hd : d = (s / ‖c a j‖) • c a j
⊢ 0 ≤ 1 - s / ‖c a j‖

tactic: rcases ah j i inej.symm with (H | H)
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
N : ℕ
τ : ℝ
a : SatelliteConfig E N τ
lastc : c a (last N) = 0
lastr : r a (last N) = 1
hτ : 1 ≤ τ
δ : ℝ
hδ1 : τ ≤ 1 + δ / 4
i j : Fin (Nat.succ N)
inej : i ≠ j
ah :
  ∀ (i j : Fin (Nat.succ N)),
    i ≠ j → r a i ≤ ‖c a i - c a j‖ ∧ r a j ≤ τ * r a i ∨ r a j ≤ ‖c a j - c a i‖ ∧ r a i ≤ τ * r a j
δnonneg : 0 ≤ δ
hcrj : ‖c a j‖ ≤ r a j + 1
hj : 2 < ‖c a j‖
s : ℝ := ‖c a i‖
hi : 2 < s
hij : s ≤ ‖c a j‖
A : r a i ≤ s
spos : 0 < s
d : E := (s / ‖c a j‖) • c a j
hd : d = (s / ‖c a j‖) • c a j
I : ‖c a j - c a i‖ ≤ ‖c a j‖ - s + ‖d - c a i‖
⊢ r a j - ‖c a j - c a i‖ ≤ s * (τ - 1)

tactic: calc
  a.r j - ‖a.c j - a.c i‖ ≤ 0 := sub_nonpos.2 H.1
  _ ≤ s * (τ - 1) := mul_nonneg spos.le (sub_nonneg.2 hτ)
state_before: case inl
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
N : ℕ
τ : ℝ
a : SatelliteConfig E N τ
lastc : c a (last N) = 0
lastr : r a (last N) = 1
hτ : 1 ≤ τ
δ : ℝ
hδ1 : τ ≤ 1 + δ / 4
i j : Fin (Nat.succ N)
inej : i ≠ j
ah :
  ∀ (i j : Fin (Nat.succ N)),
    i ≠ j → r a i ≤ ‖c a i - c a j‖ ∧ r a j ≤ τ * r a i ∨ r a j ≤ ‖c a j - c a i‖ ∧ r a i ≤ τ * r a j
δnonneg : 0 ≤ δ
hcrj : ‖c a j‖ ≤ r a j + 1
hj : 2 < ‖c a j‖
s : ℝ := ‖c a i‖
hi : 2 < s
hij : s ≤ ‖c a j‖
A : r a i ≤ s
spos : 0 < s
d : E := (s / ‖c a j‖) • c a j
hd : d = (s / ‖c a j‖) • c a j
I : ‖c a j - c a i‖ ≤ ‖c a j‖ - s + ‖d - c a i‖
H : r a j ≤ ‖c a j - c a i‖ ∧ r a i ≤ τ * r a j
⊢ r a j - ‖c a j - c a i‖ ≤ s * (τ - 1)

tactic: rw [norm_sub_rev] at H
state_before: case inr
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
N : ℕ
τ : ℝ
a : SatelliteConfig E N τ
lastc : c a (last N) = 0
lastr : r a (last N) = 1
hτ : 1 ≤ τ
δ : ℝ
hδ1 : τ ≤ 1 + δ / 4
i j : Fin (Nat.succ N)
inej : i ≠ j
ah :
  ∀ (i j : Fin (Nat.succ N)),
    i ≠ j → r a i ≤ ‖c a i - c a j‖ ∧ r a j ≤ τ * r a i ∨ r a j ≤ ‖c a j - c a i‖ ∧ r a i ≤ τ * r a j
δnonneg : 0 ≤ δ
hcrj : ‖c a j‖ ≤ r a j + 1
hj : 2 < ‖c a j‖
s : ℝ := ‖c a i‖
hi : 2 < s
hij : s ≤ ‖c a j‖
A : r a i ≤ s
spos : 0 < s
d : E := (s / ‖c a j‖) • c a j
hd : d = (s / ‖c a j‖) • c a j
I : ‖c a j - c a i‖ ≤ ‖c a j‖ - s + ‖d - c a i‖
H : r a i ≤ ‖c a i - c a j‖ ∧ r a j ≤ τ * r a i
⊢ r a j - ‖c a j - c a i‖ ≤ s * (τ - 1)

tactic: calc
  a.r j - ‖a.c j - a.c i‖ ≤ τ * a.r i - a.r i := sub_le_sub H.2 H.1
  _ = a.r i * (τ - 1) := by ring
  _ ≤ s * (τ - 1) := mul_le_mul_of_nonneg_right A (sub_nonneg.2 hτ)
state_before: case inr
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
N : ℕ
τ : ℝ
a : SatelliteConfig E N τ
lastc : c a (last N) = 0
lastr : r a (last N) = 1
hτ : 1 ≤ τ
δ : ℝ
hδ1 : τ ≤ 1 + δ / 4
i j : Fin (Nat.succ N)
inej : i ≠ j
ah :
  ∀ (i j : Fin (Nat.succ N)),
    i ≠ j → r a i ≤ ‖c a i - c a j‖ ∧ r a j ≤ τ * r a i ∨ r a j ≤ ‖c a j - c a i‖ ∧ r a i ≤ τ * r a j
δnonneg : 0 ≤ δ
hcrj : ‖c a j‖ ≤ r a j + 1
hj : 2 < ‖c a j‖
s : ℝ := ‖c a i‖
hi : 2 < s
hij : s ≤ ‖c a j‖
A : r a i ≤ s
spos : 0 < s
d : E := (s / ‖c a j‖) • c a j
hd : d = (s / ‖c a j‖) • c a j
I : ‖c a j - c a i‖ ≤ ‖c a j‖ - s + ‖d - c a i‖
H : r a i ≤ ‖c a j - c a i‖ ∧ r a j ≤ τ * r a i
⊢ r a j - ‖c a j - c a i‖ ≤ s * (τ - 1)

tactic: ring
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
N : ℕ
τ : ℝ
a : SatelliteConfig E N τ
lastc : c a (last N) = 0
lastr : r a (last N) = 1
hτ : 1 ≤ τ
δ : ℝ
hδ1 : τ ≤ 1 + δ / 4
i j : Fin (Nat.succ N)
inej : i ≠ j
ah :
  ∀ (i j : Fin (Nat.succ N)),
    i ≠ j → r a i ≤ ‖c a i - c a j‖ ∧ r a j ≤ τ * r a i ∨ r a j ≤ ‖c a j - c a i‖ ∧ r a i ≤ τ * r a j
δnonneg : 0 ≤ δ
hcrj : ‖c a j‖ ≤ r a j + 1
hj : 2 < ‖c a j‖
s : ℝ := ‖c a i‖
hi : 2 < s
hij : s ≤ ‖c a j‖
A : r a i ≤ s
spos : 0 < s
d : E := (s / ‖c a j‖) • c a j
hd : d = (s / ‖c a j‖) • c a j
I : ‖c a j - c a i‖ ≤ ‖c a j‖ - s + ‖d - c a i‖
H : r a i ≤ ‖c a j - c a i‖ ∧ r a j ≤ τ * r a i
⊢ τ * r a i - r a i = r a i * (τ - 1)

tactic: linarith only [δnonneg, hδ1]
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
N : ℕ
τ : ℝ
a : SatelliteConfig E N τ
lastc : c a (last N) = 0
lastr : r a (last N) = 1
hτ : 1 ≤ τ
δ : ℝ
hδ1 : τ ≤ 1 + δ / 4
i j : Fin (Nat.succ N)
inej : i ≠ j
ah :
  ∀ (i j : Fin (Nat.succ N)),
    i ≠ j → r a i ≤ ‖c a i - c a j‖ ∧ r a j ≤ τ * r a i ∨ r a j ≤ ‖c a j - c a i‖ ∧ r a i ≤ τ * r a j
δnonneg : 0 ≤ δ
hcrj : ‖c a j‖ ≤ r a j + 1
hj : 2 < ‖c a j‖
s : ℝ := ‖c a i‖
hi : 2 < s
hij : s ≤ ‖c a j‖
A : r a i ≤ s
spos : 0 < s
d : E := (s / ‖c a j‖) • c a j
hd : d = (s / ‖c a j‖) • c a j
I : ‖c a j - c a i‖ ≤ ‖c a j‖ - s + ‖d - c a i‖
⊢ τ - 1 ≤ δ / 2

tactic: ring
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
N : ℕ
τ : ℝ
a : SatelliteConfig E N τ
lastc : c a (last N) = 0
lastr : r a (last N) = 1
hτ : 1 ≤ τ
δ : ℝ
hδ1 : τ ≤ 1 + δ / 4
i j : Fin (Nat.succ N)
inej : i ≠ j
ah :
  ∀ (i j : Fin (Nat.succ N)),
    i ≠ j → r a i ≤ ‖c a i - c a j‖ ∧ r a j ≤ τ * r a i ∨ r a j ≤ ‖c a j - c a i‖ ∧ r a i ≤ τ * r a j
δnonneg : 0 ≤ δ
hcrj : ‖c a j‖ ≤ r a j + 1
hj : 2 < ‖c a j‖
s : ℝ := ‖c a i‖
hi : 2 < s
hij : s ≤ ‖c a j‖
A : r a i ≤ s
spos : 0 < s
d : E := (s / ‖c a j‖) • c a j
hd : d = (s / ‖c a j‖) • c a j
I : ‖c a j - c a i‖ ≤ ‖c a j‖ - s + ‖d - c a i‖
⊢ s * (δ / 2) = s / 2 * δ

tactic: field_simp [spos.ne']
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
N : ℕ
τ : ℝ
a : SatelliteConfig E N τ
lastc : c a (last N) = 0
lastr : r a (last N) = 1
hτ : 1 ≤ τ
δ : ℝ
hδ1 : τ ≤ 1 + δ / 4
i j : Fin (Nat.succ N)
inej : i ≠ j
ah :
  ∀ (i j : Fin (Nat.succ N)),
    i ≠ j → r a i ≤ ‖c a i - c a j‖ ∧ r a j ≤ τ * r a i ∨ r a j ≤ ‖c a j - c a i‖ ∧ r a i ≤ τ * r a j
δnonneg : 0 ≤ δ
hcrj : ‖c a j‖ ≤ r a j + 1
hj : 2 < ‖c a j‖
s : ℝ := ‖c a i‖
hi : 2 < s
hij : s ≤ ‖c a j‖
A : r a i ≤ s
spos : 0 < s
d : E := (s / ‖c a j‖) • c a j
hd : d = (s / ‖c a j‖) • c a j
I : ‖c a j - c a i‖ ≤ ‖c a j‖ - s + ‖d - c a i‖
J : r a j - ‖c a j - c a i‖ ≤ s / 2 * δ
invs_nonneg : 0 ≤ 2 / s
⊢ 1 - δ = 2 / s * (s / 2 - s / 2 * δ)

tactic: ring
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
N : ℕ
τ : ℝ
a : SatelliteConfig E N τ
lastc : c a (last N) = 0
lastr : r a (last N) = 1
hτ : 1 ≤ τ
δ : ℝ
hδ1 : τ ≤ 1 + δ / 4
i j : Fin (Nat.succ N)
inej : i ≠ j
ah :
  ∀ (i j : Fin (Nat.succ N)),
    i ≠ j → r a i ≤ ‖c a i - c a j‖ ∧ r a j ≤ τ * r a i ∨ r a j ≤ ‖c a j - c a i‖ ∧ r a i ≤ τ * r a j
δnonneg : 0 ≤ δ
hcrj : ‖c a j‖ ≤ r a j + 1
hj : 2 < ‖c a j‖
s : ℝ := ‖c a i‖
hi : 2 < s
hij : s ≤ ‖c a j‖
A : r a i ≤ s
spos : 0 < s
d : E := (s / ‖c a j‖) • c a j
hd : d = (s / ‖c a j‖) • c a j
I : ‖c a j - c a i‖ ≤ ‖c a j‖ - s + ‖d - c a i‖
J : r a j - ‖c a j - c a i‖ ≤ s / 2 * δ
invs_nonneg : 0 ≤ 2 / s
⊢ (1 - δ) * (‖c a i‖ * 2) = 2 * (‖c a i‖ - ‖c a i‖ * δ)

tactic: linarith only [hcrj, I, J, hi]
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
N : ℕ
τ : ℝ
a : SatelliteConfig E N τ
lastc : c a (last N) = 0
lastr : r a (last N) = 1
hτ : 1 ≤ τ
δ : ℝ
hδ1 : τ ≤ 1 + δ / 4
i j : Fin (Nat.succ N)
inej : i ≠ j
ah :
  ∀ (i j : Fin (Nat.succ N)),
    i ≠ j → r a i ≤ ‖c a i - c a j‖ ∧ r a j ≤ τ * r a i ∨ r a j ≤ ‖c a j - c a i‖ ∧ r a i ≤ τ * r a j
δnonneg : 0 ≤ δ
hcrj : ‖c a j‖ ≤ r a j + 1
hj : 2 < ‖c a j‖
s : ℝ := ‖c a i‖
hi : 2 < s
hij : s ≤ ‖c a j‖
A : r a i ≤ s
spos : 0 < s
d : E := (s / ‖c a j‖) • c a j
hd : d = (s / ‖c a j‖) • c a j
I : ‖c a j - c a i‖ ≤ ‖c a j‖ - s + ‖d - c a i‖
J : r a j - ‖c a j - c a i‖ ≤ s / 2 * δ
invs_nonneg : 0 ≤ 2 / s
⊢ s / 2 - s / 2 * δ ≤ ‖d - c a i‖

tactic: conv_lhs => rw [norm_sub_rev, ← abs_of_nonneg invs_nonneg]
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
N : ℕ
τ : ℝ
a : SatelliteConfig E N τ
lastc : c a (last N) = 0
lastr : r a (last N) = 1
hτ : 1 ≤ τ
δ : ℝ
hδ1 : τ ≤ 1 + δ / 4
i j : Fin (Nat.succ N)
inej : i ≠ j
ah :
  ∀ (i j : Fin (Nat.succ N)),
    i ≠ j → r a i ≤ ‖c a i - c a j‖ ∧ r a j ≤ τ * r a i ∨ r a j ≤ ‖c a j - c a i‖ ∧ r a i ≤ τ * r a j
δnonneg : 0 ≤ δ
hcrj : ‖c a j‖ ≤ r a j + 1
hj : 2 < ‖c a j‖
s : ℝ := ‖c a i‖
hi : 2 < s
hij : s ≤ ‖c a j‖
A : r a i ≤ s
spos : 0 < s
d : E := (s / ‖c a j‖) • c a j
hd : d = (s / ‖c a j‖) • c a j
I : ‖c a j - c a i‖ ≤ ‖c a j‖ - s + ‖d - c a i‖
J : r a j - ‖c a j - c a i‖ ≤ s / 2 * δ
invs_nonneg : 0 ≤ 2 / s
⊢ 2 / s * ‖d - c a i‖ = ‖(2 / s) • c a i - (2 / ‖c a j‖) • c a j‖

tactic: rw [← Real.norm_eq_abs, ← norm_smul, smul_sub, hd, smul_smul]
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
N : ℕ
τ : ℝ
a : SatelliteConfig E N τ
lastc : c a (last N) = 0
lastr : r a (last N) = 1
hτ : 1 ≤ τ
δ : ℝ
hδ1 : τ ≤ 1 + δ / 4
i j : Fin (Nat.succ N)
inej : i ≠ j
ah :
  ∀ (i j : Fin (Nat.succ N)),
    i ≠ j → r a i ≤ ‖c a i - c a j‖ ∧ r a j ≤ τ * r a i ∨ r a j ≤ ‖c a j - c a i‖ ∧ r a i ≤ τ * r a j
δnonneg : 0 ≤ δ
hcrj : ‖c a j‖ ≤ r a j + 1
hj : 2 < ‖c a j‖
s : ℝ := ‖c a i‖
hi : 2 < s
hij : s ≤ ‖c a j‖
A : r a i ≤ s
spos : 0 < s
d : E := (s / ‖c a j‖) • c a j
hd : d = (s / ‖c a j‖) • c a j
I : ‖c a j - c a i‖ ≤ ‖c a j‖ - s + ‖d - c a i‖
J : r a j - ‖c a j - c a i‖ ≤ s / 2 * δ
invs_nonneg : 0 ≤ 2 / s
⊢ abs (2 / s) * ‖c a i - d‖ = ‖(2 / s) • c a i - (2 / ‖c a j‖) • c a j‖

tactic: congr 3
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
N : ℕ
τ : ℝ
a : SatelliteConfig E N τ
lastc : c a (last N) = 0
lastr : r a (last N) = 1
hτ : 1 ≤ τ
δ : ℝ
hδ1 : τ ≤ 1 + δ / 4
i j : Fin (Nat.succ N)
inej : i ≠ j
ah :
  ∀ (i j : Fin (Nat.succ N)),
    i ≠ j → r a i ≤ ‖c a i - c a j‖ ∧ r a j ≤ τ * r a i ∨ r a j ≤ ‖c a j - c a i‖ ∧ r a i ≤ τ * r a j
δnonneg : 0 ≤ δ
hcrj : ‖c a j‖ ≤ r a j + 1
hj : 2 < ‖c a j‖
s : ℝ := ‖c a i‖
hi : 2 < s
hij : s ≤ ‖c a j‖
A : r a i ≤ s
spos : 0 < s
d : E := (s / ‖c a j‖) • c a j
hd : d = (s / ‖c a j‖) • c a j
I : ‖c a j - c a i‖ ≤ ‖c a j‖ - s + ‖d - c a i‖
J : r a j - ‖c a j - c a i‖ ≤ s / 2 * δ
invs_nonneg : 0 ≤ 2 / s
⊢ ‖(2 / s) • c a i - (2 / s * (s / ‖c a j‖)) • c a j‖ = ‖(2 / s) • c a i - (2 / ‖c a j‖) • c a j‖

tactic: field_simp [spos.ne']
state_before: case e_a.e_a.e_a
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
N : ℕ
τ : ℝ
a : SatelliteConfig E N τ
lastc : c a (last N) = 0
lastr : r a (last N) = 1
hτ : 1 ≤ τ
δ : ℝ
hδ1 : τ ≤ 1 + δ / 4
i j : Fin (Nat.succ N)
inej : i ≠ j
ah :
  ∀ (i j : Fin (Nat.succ N)),
    i ≠ j → r a i ≤ ‖c a i - c a j‖ ∧ r a j ≤ τ * r a i ∨ r a j ≤ ‖c a j - c a i‖ ∧ r a i ≤ τ * r a j
δnonneg : 0 ≤ δ
hcrj : ‖c a j‖ ≤ r a j + 1
hj : 2 < ‖c a j‖
s : ℝ := ‖c a i‖
hi : 2 < s
hij : s ≤ ‖c a j‖
A : r a i ≤ s
spos : 0 < s
d : E := (s / ‖c a j‖) • c a j
hd : d = (s / ‖c a j‖) • c a j
I : ‖c a j - c a i‖ ≤ ‖c a j‖ - s + ‖d - c a i‖
J : r a j - ‖c a j - c a i‖ ≤ s / 2 * δ
invs_nonneg : 0 ≤ 2 / s
⊢ 2 / s * (s / ‖c a j‖) = 2 / ‖c a j‖