@@ -456,6 +456,18 @@ theorem abs_abs_sub_abs_le_abs_sub (a b : α) : |(|a| - |b|)| ≤ |a - b| :=
456
456
⟨abs_sub_abs_le_abs_sub _ _, by rw [abs_sub_comm]; apply abs_sub_abs_le_abs_sub⟩
457
457
#align abs_abs_sub_abs_le_abs_sub abs_abs_sub_abs_le_abs_sub
458
458
459
+ /-- `|a - b| ≤ n` if `0 ≤ a ≤ n` and `0 ≤ b ≤ n`. -/
460
+ theorem abs_sub_le_of_nonneg_of_le {a b n : α} (a_nonneg : 0 ≤ a) (a_le_n : a ≤ n)
461
+ (b_nonneg : 0 ≤ b) (b_le_n : b ≤ n) : |a - b| ≤ n := by
462
+ rw [abs_sub_le_iff, sub_le_iff_le_add, sub_le_iff_le_add]
463
+ exact ⟨le_add_of_le_of_nonneg a_le_n b_nonneg, le_add_of_le_of_nonneg b_le_n a_nonneg⟩
464
+
465
+ /-- `|a - b| < n` if `0 ≤ a < n` and `0 ≤ b < n`. -/
466
+ theorem abs_sub_lt_of_nonneg_of_lt {a b n : α} (a_nonneg : 0 ≤ a) (a_lt_n : a < n)
467
+ (b_nonneg : 0 ≤ b) (b_lt_n : b < n) : |a - b| < n := by
468
+ rw [abs_sub_lt_iff, sub_lt_iff_lt_add, sub_lt_iff_lt_add]
469
+ exact ⟨lt_add_of_lt_of_nonneg a_lt_n b_nonneg, lt_add_of_lt_of_nonneg b_lt_n a_nonneg⟩
470
+
459
471
theorem abs_eq (hb : 0 ≤ b) : |a| = b ↔ a = b ∨ a = -b := by
460
472
refine' ⟨eq_or_eq_neg_of_abs_eq, _⟩
461
473
rintro (rfl | rfl) <;> simp only [abs_neg, abs_of_nonneg hb]
@@ -510,6 +522,12 @@ theorem eq_of_abs_sub_nonpos (h : |a - b| ≤ 0) : a = b :=
510
522
eq_of_abs_sub_eq_zero (le_antisymm h (abs_nonneg (a - b)))
511
523
#align eq_of_abs_sub_nonpos eq_of_abs_sub_nonpos
512
524
525
+ theorem abs_sub_nonpos : |a - b| ≤ 0 ↔ a = b :=
526
+ ⟨eq_of_abs_sub_nonpos, by rintro rfl; rw [sub_self, abs_zero]⟩
527
+
528
+ theorem abs_sub_pos : 0 < |a - b| ↔ a ≠ b :=
529
+ not_le.symm.trans abs_sub_nonpos.not
530
+
513
531
@[simp]
514
532
theorem abs_eq_self : |a| = a ↔ 0 ≤ a := by
515
533
rw [abs_eq_max_neg, max_eq_left_iff, neg_le_self_iff]
0 commit comments