@@ -7,7 +7,7 @@ Extended non-negative reals
7
7
8
8
TODO: base ennreal on nnreal!
9
9
-/
10
- import order.bounds algebra.ordered_group analysis.nnreal analysis.topology.infinite_sum
10
+ import order.bounds algebra.ordered_group analysis.nnreal analysis.limits
11
11
noncomputable theory
12
12
open classical set lattice filter
13
13
local attribute [instance] prop_decidable
@@ -382,6 +382,13 @@ instance : canonically_ordered_monoid ennreal :=
382
382
⟨∞, by simp⟩⟩,
383
383
..ennreal.ordered_comm_monoid }
384
384
385
+ lemma of_real_add_le : of_real (r + p) ≤ of_real r + of_real p :=
386
+ show of_nonneg_real _ _ ≤ of_real _,
387
+ by rw of_nonneg_real_eq_of_real; exact
388
+ of_real_le_of_real
389
+ (max_le (add_nonneg (le_max_left _ _) (le_max_left _ _))
390
+ (add_le_add (le_max_right _ _) (le_max_right _ _)))
391
+
385
392
lemma mul_le_mul : ∀{b d}, a ≤ b → c ≤ d → a * c ≤ b * d :=
386
393
forall_ennreal.mpr ⟨assume r hr, forall_ennreal.mpr ⟨assume p hp,
387
394
by simp [le_of_real_iff, *, exists_imp_distrib, -and_imp] {contextual:=tt};
@@ -744,6 +751,9 @@ calc supr s + a = Sup (range s) + a : by simp [Sup_range]
744
751
... = (⨆b∈range s, b + a) : Sup_add $ ne_empty_iff_exists_mem.mpr ⟨s x, x, rfl⟩
745
752
... = _ : by simp [supr_range, -mem_range]
746
753
754
+ lemma add_supr {ι : Sort *} {s : ι → ennreal} [h : nonempty ι] : a + supr s = ⨆b, a + s b :=
755
+ by rw [add_comm, supr_add]; simp
756
+
747
757
lemma infi_add {ι : Sort *} {s : ι → ennreal} {a : ennreal} : infi s + a = ⨅b, s b + a :=
748
758
calc infi s + a = Inf (range s) + a : by simp [Inf_range]
749
759
... = (⨅b∈range s, b + a) : Inf_add
@@ -756,10 +766,11 @@ lemma infi_add_infi {ι : Sort*} {f g : ι → ennreal} (h : ∀i j, ∃k, f k +
756
766
infi f + infi g = (⨅a, f a + g a) :=
757
767
suffices (⨅a, f a + g a) ≤ infi f + infi g,
758
768
from le_antisymm (le_infi $ assume a, add_le_add' (infi_le _ _) (infi_le _ _)) this ,
759
- calc (⨅a, f a + g a) ≤ (⨅a', ⨅a, f a + g a') :
760
- le_infi $ assume a', le_infi $ assume a, let ⟨k, h⟩ := h a a' in infi_le_of_le k h
769
+ calc (⨅a, f a + g a) ≤ (⨅ a a', f a + g a') :
770
+ le_infi $ assume a, le_infi $ assume a',
771
+ let ⟨k, h⟩ := h a a' in infi_le_of_le k h
761
772
... ≤ infi f + infi g :
762
- by simp [infi_add, add_infi , -add_comm, -le_infi_iff]
773
+ by simp [add_infi, infi_add , -add_comm, -le_infi_iff]
763
774
764
775
lemma infi_sum {α : Type *} {ι : Sort *} {f : ι → α → ennreal} {s : finset α} [inhabited ι]
765
776
(h : ∀(t : finset α) (i j : ι), ∃k, ∀a∈t, f k a ≤ f i a ∧ f k a ≤ f j a) :
@@ -772,6 +783,16 @@ finset.induction_on s (by simp) $ assume a s ha ih,
772
783
assume a ha, (hk _ $ finset.mem_insert_of_mem ha).right⟩,
773
784
by simp [ha, ih.symm, infi_add_infi this ]
774
785
786
+ lemma supr_add_supr {ι : Sort *} [nonempty ι]
787
+ {f g : ι → ennreal} (h : ∀i j, ∃k, f i + g j ≤ f k + g k) :
788
+ supr f + supr g = (⨆ a, f a + g a) :=
789
+ begin
790
+ refine le_antisymm _ (supr_le $ λ a, add_le_add' (le_supr _ _) (le_supr _ _)),
791
+ simpa [add_supr, supr_add] using
792
+ λ i j, show f i + g j ≤ ⨆ a, f a + g a, from
793
+ let ⟨k, hk⟩ := h i j in le_supr_of_le k hk,
794
+ end
795
+
775
796
end topological_space
776
797
777
798
section sub
@@ -810,6 +831,9 @@ iff.intro
810
831
calc a - b ≤ (c + b) - b : sub_le_sub h (le_refl _)
811
832
... ≤ c : Inf_le (le_refl (c + b)))
812
833
834
+ lemma sub_le_self (a b : ennreal) : a - b ≤ a :=
835
+ ennreal.sub_le_iff_le_add.2 $ le_add_of_nonneg_right' $ zero_le _
836
+
813
837
@[simp] lemma zero_sub : 0 - a = 0 :=
814
838
le_antisymm (Inf_le ennreal.zero_le) ennreal.zero_le
815
839
844
868
@[simp] lemma add_sub_self : ∀{a b : ennreal}, b < ∞ → (a + b) - b = a :=
845
869
by simp [forall_ennreal] {contextual:=tt}
846
870
871
+ @[simp] lemma add_sub_self' (h : a < ∞) : (a + b) - a = b :=
872
+ by rw [add_comm, add_sub_self h]
873
+
874
+ lemma add_left_inj (h : a < ∞) : a + b = a + c ↔ b = c :=
875
+ ⟨λ e, by simpa [h] using congr_arg (λ x, x - a) e, congr_arg _⟩
876
+
877
+ lemma add_right_inj (h : a < ∞) : b + a = c + a ↔ b = c :=
878
+ by rw [add_comm, add_comm c, add_left_inj h]
879
+
880
+ lemma sub_sub_cancel (h : a < ∞) (h2 : b ≤ a) : a - (a - b) = b :=
881
+ by rw [← add_right_inj (lt_of_le_of_lt (sub_le_self _ _) h),
882
+ sub_add_cancel_of_le (sub_le_self _ _), add_sub_cancel_of_le h2]
883
+
847
884
protected lemma tendsto_of_real_sub (hr : 0 ≤ r) :
848
885
tendsto (λb, of_real r - b) (nhds b) (nhds (of_real r - b)) :=
849
886
by_cases
@@ -864,7 +901,7 @@ by_cases
864
901
by simp [(∘), -sub_eq_add_neg] {contextual:=tt},
865
902
by simp at this ; simp [eq, hr, hp, hpr, nhds_of_real_eq_map_of_real_nhds_nonneg, this ])
866
903
867
- lemma sub_supr {ι : Sort *} [hι : nonempty ι] {b : ι → ennreal} (hr : a < ⊤ ) :
904
+ lemma sub_supr {ι : Sort *} [hι : nonempty ι] {b : ι → ennreal} (hr : a < ∞ ) :
868
905
a - (⨆i, b i) = (⨅i, a - b i) :=
869
906
let ⟨i⟩ := hι in
870
907
let ⟨r, hr, eq, _⟩ := lt_iff_exists_of_real.mp hr in
@@ -876,6 +913,12 @@ have Inf ((λb, of_real r - b) '' range b) = of_real r - (⨆i, b i),
876
913
(tendsto.comp (tendsto_id' inf_le_left) (ennreal.tendsto_of_real_sub hr)),
877
914
by rw [eq, ←this ]; simp [Inf_image, infi_range, -mem_range]
878
915
916
+ lemma sub_infi {ι : Sort *} {b : ι → ennreal} : a - (⨅i, b i) = (⨆i, a - b i) :=
917
+ eq_of_forall_ge_iff $ λ c, begin
918
+ rw [ennreal.sub_le_iff_le_add, add_comm, infi_add],
919
+ simp [ennreal.sub_le_iff_le_add]
920
+ end
921
+
879
922
end sub
880
923
881
924
section inv
@@ -930,7 +973,7 @@ protected lemma tsum_eq_supr_sum : (∑a, f a) = (⨆s:finset α, s.sum f) :=
930
973
tsum_eq_is_sum ennreal.is_sum
931
974
932
975
protected lemma tsum_sigma {β : α → Type *} (f : Πa, β a → ennreal) :
933
- (∑p:Σa, β a, f p.1 p.2 ) = (∑a, ∑ b, f a b) :=
976
+ (∑p:Σa, β a, f p.1 p.2 ) = (∑a b, f a b) :=
934
977
tsum_sigma (assume b, ennreal.has_sum) ennreal.has_sum
935
978
936
979
protected lemma tsum_prod {f : α → β → ennreal} : (∑p:α×β, f p.1 p.2 ) = (∑a, ∑b, f a b) :=
@@ -956,6 +999,9 @@ calc (∑a, ∑b, f a b) = (∑p:α×β, f' p) : ennreal.tsum_prod.symm
956
999
(tsum_eq_tsum_of_iso prod.swap (@prod.swap α β) (assume ⟨a, b⟩, rfl) (assume ⟨a, b⟩, rfl)).symm
957
1000
... = (∑b, ∑a, f' (prod.swap (b, a))) : @ennreal.tsum_prod β α (λb a, f' (prod.swap (b, a)))
958
1001
1002
+ protected lemma tsum_add : (∑a, f a + g a) = (∑a, f a) + (∑a, g a) :=
1003
+ tsum_add ennreal.has_sum ennreal.has_sum
1004
+
959
1005
protected lemma tsum_le_tsum (h : ∀a, f a ≤ g a) : (∑a, f a) ≤ (∑a, g a) :=
960
1006
tsum_le_tsum h ennreal.has_sum ennreal.has_sum
961
1007
@@ -968,7 +1014,7 @@ calc _ = (⨆s:finset ℕ, s.sum f) : ennreal.tsum_eq_supr_sum
968
1014
⟨n, finset.sum_le_sum_of_subset hn⟩)
969
1015
(supr_le_supr2 $ assume i, ⟨finset.range i, le_refl _⟩)
970
1016
971
- protected lemma le_tsum { a : α} : f a ≤ (∑a, f a) :=
1017
+ protected lemma le_tsum ( a : α) : f a ≤ (∑a, f a) :=
972
1018
calc f a = ({a} : finset α).sum f : by simp
973
1019
... ≤ (⨆s:finset α, s.sum f) : le_supr (λs:finset α, s.sum f) _
974
1020
... = (∑a, f a) : by rw [ennreal.tsum_eq_supr_sum]
@@ -978,7 +1024,7 @@ if h : ∀i, f i = 0 then by simp [h] else
978
1024
let ⟨i, (hi : f i ≠ 0 )⟩ := classical.not_forall.mp h in
979
1025
have sum_ne_0 : (∑i, f i) ≠ 0 , from ne_of_gt $
980
1026
calc 0 < f i : lt_of_le_of_ne ennreal.zero_le hi.symm
981
- ... ≤ (∑i, f i) : ennreal.le_tsum,
1027
+ ... ≤ (∑i, f i) : ennreal.le_tsum _ ,
982
1028
have tendsto (λs:finset α, s.sum ((*) a ∘ f)) at_top (nhds (a * (∑i, f i))),
983
1029
by rw [← show (*) a ∘ (λs:finset α, s.sum f) = λs, s.sum ((*) a ∘ f),
984
1030
from funext $ λ s, finset.mul_sum];
@@ -999,7 +1045,15 @@ le_antisymm
999
1045
by simpa [h] using hb
1000
1046
... = f a : by simp))
1001
1047
(calc f a ≤ (⨆ (h : a = a), f a) : le_supr (λh:a=a, f a) rfl
1002
- ... ≤ (∑b:α, ⨆ (h : a = b), f b) : ennreal.le_tsum)
1048
+ ... ≤ (∑b:α, ⨆ (h : a = b), f b) : ennreal.le_tsum _)
1049
+
1050
+ theorem exists_pos_sum_of_encodable {ε : ennreal} (hε : 0 < ε)
1051
+ (ι) [encodable ι] : ∃ ε' : ι → ℝ, (∀ i, 0 < ε' i) ∧ (∑ i, of_real (ε' i)) < ε :=
1052
+ let ⟨a, a0, aε⟩ := dense hε,
1053
+ ⟨p, _, e, pε⟩ := lt_iff_exists_of_real.1 aε,
1054
+ ⟨ε', ε'0 , c, hc, cp⟩ := pos_sum_of_encodable (zero_lt_of_real_iff.1 (e ▸ a0):0 <p) ι in
1055
+ ⟨ε', ε'0 , by rw ennreal.tsum_of_real hc (λ i, le_of_lt (ε'0 i));
1056
+ exact lt_of_le_of_lt (of_real_le_of_real cp) pε⟩
1003
1057
1004
1058
end tsum
1005
1059
0 commit comments