Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 08323cd

Browse files
committed
feat(data/real/ennreal): tsub lemmas (#13525)
Inherit lemmas about subtraction on `ℝ≥0∞` from `algebra.order.sub`. Generalize `add_le_cancellable.tsub_lt_self` in passing. New `ennreal` lemmas
1 parent 3a06179 commit 08323cd

File tree

4 files changed

+46
-38
lines changed

4 files changed

+46
-38
lines changed

src/algebra/order/sub.lean

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -693,23 +693,16 @@ protected lemma tsub_lt_tsub_iff_right (hc : add_le_cancellable c) (h : c ≤ a)
693693
a - c < b - c ↔ a < b :=
694694
by rw [hc.lt_tsub_iff_left, add_tsub_cancel_of_le h]
695695

696-
protected lemma tsub_lt_self (ha : add_le_cancellable a) (hb : add_le_cancellable b)
697-
(h₁ : 0 < a) (h₂ : 0 < b) : a - b < a :=
696+
protected lemma tsub_lt_self (ha : add_le_cancellable a) (h₁ : 0 < a) (h₂ : 0 < b) : a - b < a :=
698697
begin
699-
refine tsub_le_self.lt_of_ne _,
700-
intro h,
698+
refine tsub_le_self.lt_of_ne (λ h, _),
701699
rw [← h, tsub_pos_iff_lt] at h₁,
702-
have := h.ge,
703-
rw [hb.le_tsub_iff_left h₁.le, ha.add_le_iff_nonpos_left] at this,
704-
exact h₂.not_le this,
700+
exact h₂.not_le (ha.add_le_iff_nonpos_left.1 $ add_le_of_le_tsub_left_of_le h₁.le h.ge),
705701
end
706702

707-
protected lemma tsub_lt_self_iff (ha : add_le_cancellable a) (hb : add_le_cancellable b) :
708-
a - b < a ↔ 0 < a ∧ 0 < b :=
703+
protected lemma tsub_lt_self_iff (ha : add_le_cancellable a) : a - b < a ↔ 0 < a ∧ 0 < b :=
709704
begin
710-
refine ⟨_, λ h, ha.tsub_lt_self hb h.1 h.2⟩,
711-
intro h,
712-
refine ⟨(zero_le _).trans_lt h, (zero_le b).lt_of_ne _⟩,
705+
refine ⟨λ h, ⟨(zero_le _).trans_lt h, (zero_le b).lt_of_ne _⟩, λ h, ha.tsub_lt_self h.1 h.2⟩,
713706
rintro rfl,
714707
rw [tsub_zero] at h,
715708
exact h.false
@@ -729,11 +722,10 @@ variable [contravariant_class α α (+) (≤)]
729722
lemma tsub_lt_tsub_iff_right (h : c ≤ a) : a - c < b - c ↔ a < b :=
730723
contravariant.add_le_cancellable.tsub_lt_tsub_iff_right h
731724

732-
lemma tsub_lt_self (h₁ : 0 < a) (h₂ : 0 < b) : a - b < a :=
733-
contravariant.add_le_cancellable.tsub_lt_self contravariant.add_le_cancellable h₁ h₂
725+
lemma tsub_lt_self : 0 < a → 0 < b → a - b < a := contravariant.add_le_cancellable.tsub_lt_self
734726

735727
lemma tsub_lt_self_iff : a - b < a ↔ 0 < a ∧ 0 < b :=
736-
contravariant.add_le_cancellable.tsub_lt_self_iff contravariant.add_le_cancellable
728+
contravariant.add_le_cancellable.tsub_lt_self_iff
737729

738730
/-- See `lt_tsub_iff_left_of_le_of_le` for a weaker statement in a partial order. -/
739731
lemma tsub_lt_tsub_iff_left_of_le (h : b ≤ a) : a - b < a - c ↔ c < b :=

src/data/real/ennreal.lean

Lines changed: 37 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -743,37 +743,54 @@ by { cases a; cases b; simp [← with_top.coe_sub] }
743743
lemma sub_ne_top (ha : a ≠ ∞) : a - b ≠ ∞ :=
744744
mt sub_eq_top_iff.mp $ mt and.left ha
745745

746-
protected lemma sub_lt_of_lt_add (hac : c ≤ a) (h : a < b + c) : a - c < b :=
747-
((cancel_of_lt' $ hac.trans_lt h).tsub_lt_iff_right hac).mpr h
746+
protected lemma sub_eq_of_eq_add (hb : b ≠ ∞) : a = c + b → a - b = c :=
747+
(cancel_of_ne hb).tsub_eq_of_eq_add
748748

749-
@[simp] lemma add_sub_self (hb : b ≠ ∞) : (a + b) - b = a :=
750-
(cancel_of_ne hb).add_tsub_cancel_right
749+
protected lemma eq_sub_of_add_eq (hc : c ≠ ∞) : a + c = b → a = b - c :=
750+
(cancel_of_ne hc).eq_tsub_of_add_eq
751751

752-
@[simp] lemma add_sub_self' (ha : a ≠ ∞) : (a + b) - a = b :=
753-
(cancel_of_ne ha).add_tsub_cancel_left
752+
protected lemma sub_eq_of_eq_add_rev (hb : b ≠ ∞) : a = b + c → a - b = c :=
753+
(cancel_of_ne hb).tsub_eq_of_eq_add_rev
754754

755755
lemma sub_eq_of_add_eq (hb : b ≠ ∞) (hc : a + b = c) : c - b = a :=
756-
(cancel_of_ne hb).tsub_eq_of_eq_add hc.symm
756+
ennreal.sub_eq_of_eq_add hb hc.symm
757757

758-
protected lemma lt_add_of_sub_lt (ht : a ≠ ∞ ∨ b ≠ ∞) (h : a - b < c) : a < c + b :=
758+
@[simp] protected lemma add_sub_cancel_left (ha : a ≠ ∞) : a + b - a = b :=
759+
(cancel_of_ne ha).add_tsub_cancel_left
760+
761+
@[simp] protected lemma add_sub_cancel_right (hb : b ≠ ∞) : a + b - b = a :=
762+
(cancel_of_ne hb).add_tsub_cancel_right
763+
764+
protected lemma lt_add_of_sub_lt_left (h : a ≠ ∞ ∨ b ≠ ∞) : a - b < c → a < b + c :=
759765
begin
760-
rcases eq_or_ne b ∞ with rfl|hb,
761-
{ rw [add_top, lt_top_iff_ne_top], exact ht.resolve_right (not_not.2 rfl) },
762-
{ exact (cancel_of_ne hb).lt_add_of_tsub_lt_right h }
766+
obtain rfl | hb := eq_or_ne b ∞,
767+
{ rw [top_add, lt_top_iff_ne_top],
768+
exact λ _, h.resolve_right (not_not.2 rfl) },
769+
{ exact (cancel_of_ne hb).lt_add_of_tsub_lt_left }
763770
end
764771

765-
protected lemma sub_lt_iff_lt_add (hb : b ≠ ∞) (hab : b ≤ a) : a - b < c ↔ a < c + b :=
766-
(cancel_of_ne hb).tsub_lt_iff_right hab
767-
768-
protected lemma sub_lt_self (hat : a ≠ ∞) (ha0 : a ≠ 0) (hb : b ≠ 0) : a - b < a :=
772+
protected lemma lt_add_of_sub_lt_right (h : a ≠ ∞ ∨ c ≠ ∞) : a - c < b → a < b + c :=
769773
begin
770-
cases b, { simp [pos_iff_ne_zero, ha0] },
771-
exact (cancel_of_ne hat).tsub_lt_self cancel_coe (pos_iff_ne_zero.mpr ha0)
772-
(pos_iff_ne_zero.mpr hb)
774+
obtain rfl | hc := eq_or_ne c ∞,
775+
{ rw [add_top, lt_top_iff_ne_top],
776+
exact λ _, h.resolve_right (not_not.2 rfl) },
777+
{ exact (cancel_of_ne hc).lt_add_of_tsub_lt_right }
773778
end
774779

780+
protected lemma sub_lt_of_lt_add (hac : c ≤ a) (h : a < b + c) : a - c < b :=
781+
((cancel_of_lt' $ hac.trans_lt h).tsub_lt_iff_right hac).mpr h
782+
783+
protected lemma sub_lt_iff_lt_right (hb : b ≠ ∞) (hab : b ≤ a) : a - b < c ↔ a < c + b :=
784+
(cancel_of_ne hb).tsub_lt_iff_right hab
785+
786+
protected lemma sub_lt_self (ha : a ≠ ∞) (ha₀ : a ≠ 0) (hb : b ≠ 0) : a - b < a :=
787+
(cancel_of_ne ha).tsub_lt_self (pos_iff_ne_zero.2 ha₀) (pos_iff_ne_zero.2 hb)
788+
789+
protected lemma sub_lt_self_iff (ha : a ≠ ∞) : a - b < a ↔ 0 < a ∧ 0 < b :=
790+
(cancel_of_ne ha).tsub_lt_self_iff
791+
775792
lemma sub_lt_of_sub_lt (h₂ : c ≤ a) (h₃ : a ≠ ∞ ∨ b ≠ ∞) (h₁ : a - b < c) : a - c < b :=
776-
ennreal.sub_lt_of_lt_add h₂ (add_comm c b ▸ ennreal.lt_add_of_sub_lt h₃ h₁)
793+
ennreal.sub_lt_of_lt_add h₂ (add_comm c b ▸ ennreal.lt_add_of_sub_lt_right h₃ h₁)
777794

778795
lemma sub_sub_cancel (h : a ≠ ∞) (h2 : b ≤ a) : a - (a - b) = b :=
779796
(cancel_of_ne $ sub_ne_top h).tsub_tsub_cancel_of_le h2
@@ -1190,8 +1207,7 @@ le_of_forall_nnreal_lt $ λ r hr, (zero_le r).eq_or_lt.elim (λ h, h ▸ zero_le
11901207
lemma eq_top_of_forall_nnreal_le {x : ℝ≥0∞} (h : ∀ r : ℝ≥0, ↑r ≤ x) : x = ∞ :=
11911208
top_unique $ le_of_forall_nnreal_lt $ λ r hr, h r
11921209

1193-
lemma add_div {a b c : ℝ≥0∞} : (a + b) / c = a / c + b / c :=
1194-
right_distrib a b (c⁻¹)
1210+
lemma add_div : (a + b) / c = a / c + b / c := right_distrib a b (c⁻¹)
11951211

11961212
lemma div_add_div_same {a b c : ℝ≥0∞} : a / c + b / c = (a + b) / c :=
11971213
eq.symm $ right_distrib a b (c⁻¹)

src/measure_theory/measure/regular.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ begin
163163
{ refine ⟨∅, empty_subset _, h0, _⟩,
164164
rwa [measure_empty, h₀, zero_add, pos_iff_ne_zero] },
165165
{ rcases H hU _ (ennreal.sub_lt_self hμU h₀ hε) with ⟨K, hKU, hKc, hrK⟩,
166-
exact ⟨K, hKU, hKc, ennreal.lt_add_of_sub_lt (or.inl hμU) hrK⟩ }
166+
exact ⟨K, hKU, hKc, ennreal.lt_add_of_sub_lt_right (or.inl hμU) hrK⟩ }
167167
end
168168

169169
lemma map {α β} [measurable_space α] [measurable_space β] {μ : measure α} {pa qa : set α → Prop}

src/topology/instances/ennreal.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -830,7 +830,7 @@ lemma tsum_sub {f : ℕ → ℝ≥0∞} {g : ℕ → ℝ≥0∞} (h₁ : ∑' i,
830830
∑' i, (f i - g i) = (∑' i, f i) - (∑' i, g i) :=
831831
begin
832832
have h₃: ∑' i, (f i - g i) = ∑' i, (f i - g i + g i) - ∑' i, g i,
833-
{ rw [ennreal.tsum_add, add_sub_self h₁]},
833+
{ rw [ennreal.tsum_add, ennreal.add_sub_cancel_right h₁]},
834834
have h₄:(λ i, (f i - g i) + (g i)) = f,
835835
{ ext n, rw tsub_add_cancel_of_le (h₂ n)},
836836
rw h₄ at h₃, apply h₃,

0 commit comments

Comments
 (0)