Metamath Proof Explorer


Theorem emcllem4

Description: Lemma for emcl . The difference between series F and G tends to zero. (Contributed by Mario Carneiro, 11-Jul-2014)

Ref Expression
Hypotheses emcl.1 𝐹 = ( 𝑛 ∈ ℕ ↦ ( Σ 𝑚 ∈ ( 1 ... 𝑛 ) ( 1 / 𝑚 ) − ( log ‘ 𝑛 ) ) )
emcl.2 𝐺 = ( 𝑛 ∈ ℕ ↦ ( Σ 𝑚 ∈ ( 1 ... 𝑛 ) ( 1 / 𝑚 ) − ( log ‘ ( 𝑛 + 1 ) ) ) )
emcl.3 𝐻 = ( 𝑛 ∈ ℕ ↦ ( log ‘ ( 1 + ( 1 / 𝑛 ) ) ) )
Assertion emcllem4 𝐻 ⇝ 0

Proof

Step Hyp Ref Expression
1 emcl.1 𝐹 = ( 𝑛 ∈ ℕ ↦ ( Σ 𝑚 ∈ ( 1 ... 𝑛 ) ( 1 / 𝑚 ) − ( log ‘ 𝑛 ) ) )
2 emcl.2 𝐺 = ( 𝑛 ∈ ℕ ↦ ( Σ 𝑚 ∈ ( 1 ... 𝑛 ) ( 1 / 𝑚 ) − ( log ‘ ( 𝑛 + 1 ) ) ) )
3 emcl.3 𝐻 = ( 𝑛 ∈ ℕ ↦ ( log ‘ ( 1 + ( 1 / 𝑛 ) ) ) )
4 nnuz ℕ = ( ℤ ‘ 1 )
5 1zzd ( ⊤ → 1 ∈ ℤ )
6 ax-1cn 1 ∈ ℂ
7 divcnv ( 1 ∈ ℂ → ( 𝑛 ∈ ℕ ↦ ( 1 / 𝑛 ) ) ⇝ 0 )
8 6 7 mp1i ( ⊤ → ( 𝑛 ∈ ℕ ↦ ( 1 / 𝑛 ) ) ⇝ 0 )
9 nnex ℕ ∈ V
10 9 mptex ( 𝑛 ∈ ℕ ↦ ( log ‘ ( 1 + ( 1 / 𝑛 ) ) ) ) ∈ V
11 3 10 eqeltri 𝐻 ∈ V
12 11 a1i ( ⊤ → 𝐻 ∈ V )
13 oveq2 ( 𝑛 = 𝑚 → ( 1 / 𝑛 ) = ( 1 / 𝑚 ) )
14 eqid ( 𝑛 ∈ ℕ ↦ ( 1 / 𝑛 ) ) = ( 𝑛 ∈ ℕ ↦ ( 1 / 𝑛 ) )
15 ovex ( 1 / 𝑚 ) ∈ V
16 13 14 15 fvmpt ( 𝑚 ∈ ℕ → ( ( 𝑛 ∈ ℕ ↦ ( 1 / 𝑛 ) ) ‘ 𝑚 ) = ( 1 / 𝑚 ) )
17 16 adantl ( ( ⊤ ∧ 𝑚 ∈ ℕ ) → ( ( 𝑛 ∈ ℕ ↦ ( 1 / 𝑛 ) ) ‘ 𝑚 ) = ( 1 / 𝑚 ) )
18 nnrecre ( 𝑚 ∈ ℕ → ( 1 / 𝑚 ) ∈ ℝ )
19 18 adantl ( ( ⊤ ∧ 𝑚 ∈ ℕ ) → ( 1 / 𝑚 ) ∈ ℝ )
20 17 19 eqeltrd ( ( ⊤ ∧ 𝑚 ∈ ℕ ) → ( ( 𝑛 ∈ ℕ ↦ ( 1 / 𝑛 ) ) ‘ 𝑚 ) ∈ ℝ )
21 13 oveq2d ( 𝑛 = 𝑚 → ( 1 + ( 1 / 𝑛 ) ) = ( 1 + ( 1 / 𝑚 ) ) )
22 21 fveq2d ( 𝑛 = 𝑚 → ( log ‘ ( 1 + ( 1 / 𝑛 ) ) ) = ( log ‘ ( 1 + ( 1 / 𝑚 ) ) ) )
23 fvex ( log ‘ ( 1 + ( 1 / 𝑚 ) ) ) ∈ V
24 22 3 23 fvmpt ( 𝑚 ∈ ℕ → ( 𝐻𝑚 ) = ( log ‘ ( 1 + ( 1 / 𝑚 ) ) ) )
25 24 adantl ( ( ⊤ ∧ 𝑚 ∈ ℕ ) → ( 𝐻𝑚 ) = ( log ‘ ( 1 + ( 1 / 𝑚 ) ) ) )
26 1rp 1 ∈ ℝ+
27 nnrp ( 𝑚 ∈ ℕ → 𝑚 ∈ ℝ+ )
28 27 adantl ( ( ⊤ ∧ 𝑚 ∈ ℕ ) → 𝑚 ∈ ℝ+ )
29 28 rpreccld ( ( ⊤ ∧ 𝑚 ∈ ℕ ) → ( 1 / 𝑚 ) ∈ ℝ+ )
30 rpaddcl ( ( 1 ∈ ℝ+ ∧ ( 1 / 𝑚 ) ∈ ℝ+ ) → ( 1 + ( 1 / 𝑚 ) ) ∈ ℝ+ )
31 26 29 30 sylancr ( ( ⊤ ∧ 𝑚 ∈ ℕ ) → ( 1 + ( 1 / 𝑚 ) ) ∈ ℝ+ )
32 31 rpred ( ( ⊤ ∧ 𝑚 ∈ ℕ ) → ( 1 + ( 1 / 𝑚 ) ) ∈ ℝ )
33 1re 1 ∈ ℝ
34 ltaddrp ( ( 1 ∈ ℝ ∧ ( 1 / 𝑚 ) ∈ ℝ+ ) → 1 < ( 1 + ( 1 / 𝑚 ) ) )
35 33 29 34 sylancr ( ( ⊤ ∧ 𝑚 ∈ ℕ ) → 1 < ( 1 + ( 1 / 𝑚 ) ) )
36 32 35 rplogcld ( ( ⊤ ∧ 𝑚 ∈ ℕ ) → ( log ‘ ( 1 + ( 1 / 𝑚 ) ) ) ∈ ℝ+ )
37 25 36 eqeltrd ( ( ⊤ ∧ 𝑚 ∈ ℕ ) → ( 𝐻𝑚 ) ∈ ℝ+ )
38 37 rpred ( ( ⊤ ∧ 𝑚 ∈ ℕ ) → ( 𝐻𝑚 ) ∈ ℝ )
39 31 relogcld ( ( ⊤ ∧ 𝑚 ∈ ℕ ) → ( log ‘ ( 1 + ( 1 / 𝑚 ) ) ) ∈ ℝ )
40 efgt1p ( ( 1 / 𝑚 ) ∈ ℝ+ → ( 1 + ( 1 / 𝑚 ) ) < ( exp ‘ ( 1 / 𝑚 ) ) )
41 29 40 syl ( ( ⊤ ∧ 𝑚 ∈ ℕ ) → ( 1 + ( 1 / 𝑚 ) ) < ( exp ‘ ( 1 / 𝑚 ) ) )
42 19 rpefcld ( ( ⊤ ∧ 𝑚 ∈ ℕ ) → ( exp ‘ ( 1 / 𝑚 ) ) ∈ ℝ+ )
43 logltb ( ( ( 1 + ( 1 / 𝑚 ) ) ∈ ℝ+ ∧ ( exp ‘ ( 1 / 𝑚 ) ) ∈ ℝ+ ) → ( ( 1 + ( 1 / 𝑚 ) ) < ( exp ‘ ( 1 / 𝑚 ) ) ↔ ( log ‘ ( 1 + ( 1 / 𝑚 ) ) ) < ( log ‘ ( exp ‘ ( 1 / 𝑚 ) ) ) ) )
44 31 42 43 syl2anc ( ( ⊤ ∧ 𝑚 ∈ ℕ ) → ( ( 1 + ( 1 / 𝑚 ) ) < ( exp ‘ ( 1 / 𝑚 ) ) ↔ ( log ‘ ( 1 + ( 1 / 𝑚 ) ) ) < ( log ‘ ( exp ‘ ( 1 / 𝑚 ) ) ) ) )
45 41 44 mpbid ( ( ⊤ ∧ 𝑚 ∈ ℕ ) → ( log ‘ ( 1 + ( 1 / 𝑚 ) ) ) < ( log ‘ ( exp ‘ ( 1 / 𝑚 ) ) ) )
46 19 relogefd ( ( ⊤ ∧ 𝑚 ∈ ℕ ) → ( log ‘ ( exp ‘ ( 1 / 𝑚 ) ) ) = ( 1 / 𝑚 ) )
47 45 46 breqtrd ( ( ⊤ ∧ 𝑚 ∈ ℕ ) → ( log ‘ ( 1 + ( 1 / 𝑚 ) ) ) < ( 1 / 𝑚 ) )
48 39 19 47 ltled ( ( ⊤ ∧ 𝑚 ∈ ℕ ) → ( log ‘ ( 1 + ( 1 / 𝑚 ) ) ) ≤ ( 1 / 𝑚 ) )
49 48 25 17 3brtr4d ( ( ⊤ ∧ 𝑚 ∈ ℕ ) → ( 𝐻𝑚 ) ≤ ( ( 𝑛 ∈ ℕ ↦ ( 1 / 𝑛 ) ) ‘ 𝑚 ) )
50 37 rpge0d ( ( ⊤ ∧ 𝑚 ∈ ℕ ) → 0 ≤ ( 𝐻𝑚 ) )
51 4 5 8 12 20 38 49 50 climsqz2 ( ⊤ → 𝐻 ⇝ 0 )
52 51 mptru 𝐻 ⇝ 0