MPE Home Metamath Proof Explorer < Previous   Next >
Nearby theorems
Mirrors  >  Home  >  MPE Home  >  Th. List  >  climcnds Structured version   Visualization version   GIF version

Theorem climcnds 15905
Description: The Cauchy condensation test. If 𝑎(𝑘) is a decreasing sequence of nonnegative terms, then Σ𝑘 ∈ ℕ𝑎(𝑘) converges iff Σ𝑛 ∈ ℕ02↑𝑛 · 𝑎(2↑𝑛) converges. (Contributed by Mario Carneiro, 18-Jul-2014.) (Proof shortened by AV, 10-Jul-2022.)
Hypotheses
Ref Expression
climcnds.1 ((𝜑𝑘 ∈ ℕ) → (𝐹𝑘) ∈ ℝ)
climcnds.2 ((𝜑𝑘 ∈ ℕ) → 0 ≤ (𝐹𝑘))
climcnds.3 ((𝜑𝑘 ∈ ℕ) → (𝐹‘(𝑘 + 1)) ≤ (𝐹𝑘))
climcnds.4 ((𝜑𝑛 ∈ ℕ0) → (𝐺𝑛) = ((2↑𝑛) · (𝐹‘(2↑𝑛))))
Assertion
Ref Expression
climcnds (𝜑 → (seq1( + , 𝐹) ∈ dom ⇝ ↔ seq0( + , 𝐺) ∈ dom ⇝ ))
Distinct variable groups:   𝑘,𝑛,𝐹   𝑘,𝐺,𝑛   𝜑,𝑘,𝑛

Proof of Theorem climcnds
Dummy variables 𝑗 𝑥 are mutually distinct and distinct from all other variables.
StepHypRef Expression
1 nnuz 12901 . . . . 5 ℕ = (ℤ‘1)
2 1zzd 12625 . . . . 5 ((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) → 1 ∈ ℤ)
3 1zzd 12625 . . . . . . 7 (𝜑 → 1 ∈ ℤ)
4 nnnn0 12511 . . . . . . . 8 (𝑛 ∈ ℕ → 𝑛 ∈ ℕ0)
5 climcnds.4 . . . . . . . . 9 ((𝜑𝑛 ∈ ℕ0) → (𝐺𝑛) = ((2↑𝑛) · (𝐹‘(2↑𝑛))))
6 2nn 12314 . . . . . . . . . . . 12 2 ∈ ℕ
7 simpr 489 . . . . . . . . . . . 12 ((𝜑𝑛 ∈ ℕ0) → 𝑛 ∈ ℕ0)
8 nnexpcl 14110 . . . . . . . . . . . 12 ((2 ∈ ℕ ∧ 𝑛 ∈ ℕ0) → (2↑𝑛) ∈ ℕ)
96, 7, 8sylancr 598 . . . . . . . . . . 11 ((𝜑𝑛 ∈ ℕ0) → (2↑𝑛) ∈ ℕ)
109nnred 12248 . . . . . . . . . 10 ((𝜑𝑛 ∈ ℕ0) → (2↑𝑛) ∈ ℝ)
11 fveq2 6882 . . . . . . . . . . . 12 (𝑘 = (2↑𝑛) → (𝐹𝑘) = (𝐹‘(2↑𝑛)))
1211eleq1d 2854 . . . . . . . . . . 11 (𝑘 = (2↑𝑛) → ((𝐹𝑘) ∈ ℝ ↔ (𝐹‘(2↑𝑛)) ∈ ℝ))
13 climcnds.1 . . . . . . . . . . . . 13 ((𝜑𝑘 ∈ ℕ) → (𝐹𝑘) ∈ ℝ)
1413ralrimiva 3163 . . . . . . . . . . . 12 (𝜑 → ∀𝑘 ∈ ℕ (𝐹𝑘) ∈ ℝ)
1514adantr 485 . . . . . . . . . . 11 ((𝜑𝑛 ∈ ℕ0) → ∀𝑘 ∈ ℕ (𝐹𝑘) ∈ ℝ)
1612, 15, 9rspcdva 3589 . . . . . . . . . 10 ((𝜑𝑛 ∈ ℕ0) → (𝐹‘(2↑𝑛)) ∈ ℝ)
1710, 16remulcld 11239 . . . . . . . . 9 ((𝜑𝑛 ∈ ℕ0) → ((2↑𝑛) · (𝐹‘(2↑𝑛))) ∈ ℝ)
185, 17eqeltrd 2869 . . . . . . . 8 ((𝜑𝑛 ∈ ℕ0) → (𝐺𝑛) ∈ ℝ)
194, 18sylan2 604 . . . . . . 7 ((𝜑𝑛 ∈ ℕ) → (𝐺𝑛) ∈ ℝ)
201, 3, 19serfre 14067 . . . . . 6 (𝜑 → seq1( + , 𝐺):ℕ⟶ℝ)
2120adantr 485 . . . . 5 ((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) → seq1( + , 𝐺):ℕ⟶ℝ)
22 simpr 489 . . . . . . . 8 ((𝜑𝑗 ∈ ℕ) → 𝑗 ∈ ℕ)
2322, 1eleqtrdi 2879 . . . . . . 7 ((𝜑𝑗 ∈ ℕ) → 𝑗 ∈ (ℤ‘1))
24 nnz 12612 . . . . . . . . 9 (𝑗 ∈ ℕ → 𝑗 ∈ ℤ)
2524adantl 486 . . . . . . . 8 ((𝜑𝑗 ∈ ℕ) → 𝑗 ∈ ℤ)
26 uzid 12877 . . . . . . . 8 (𝑗 ∈ ℤ → 𝑗 ∈ (ℤ𝑗))
27 peano2uz 12925 . . . . . . . 8 (𝑗 ∈ (ℤ𝑗) → (𝑗 + 1) ∈ (ℤ𝑗))
2825, 26, 273syl 19 . . . . . . 7 ((𝜑𝑗 ∈ ℕ) → (𝑗 + 1) ∈ (ℤ𝑗))
29 simpl 487 . . . . . . . 8 ((𝜑𝑗 ∈ ℕ) → 𝜑)
30 elfznn 13581 . . . . . . . 8 (𝑛 ∈ (1...(𝑗 + 1)) → 𝑛 ∈ ℕ)
3129, 30, 19syl2an 607 . . . . . . 7 (((𝜑𝑗 ∈ ℕ) ∧ 𝑛 ∈ (1...(𝑗 + 1))) → (𝐺𝑛) ∈ ℝ)
32 simpll 778 . . . . . . . 8 (((𝜑𝑗 ∈ ℕ) ∧ 𝑛 ∈ ((𝑗 + 1)...(𝑗 + 1))) → 𝜑)
33 elfz1eq 13563 . . . . . . . . . 10 (𝑛 ∈ ((𝑗 + 1)...(𝑗 + 1)) → 𝑛 = (𝑗 + 1))
3433adantl 486 . . . . . . . . 9 (((𝜑𝑗 ∈ ℕ) ∧ 𝑛 ∈ ((𝑗 + 1)...(𝑗 + 1))) → 𝑛 = (𝑗 + 1))
35 nnnn0 12511 . . . . . . . . . . 11 (𝑗 ∈ ℕ → 𝑗 ∈ ℕ0)
36 peano2nn0 12544 . . . . . . . . . . 11 (𝑗 ∈ ℕ0 → (𝑗 + 1) ∈ ℕ0)
3735, 36syl 18 . . . . . . . . . 10 (𝑗 ∈ ℕ → (𝑗 + 1) ∈ ℕ0)
3837ad2antlr 739 . . . . . . . . 9 (((𝜑𝑗 ∈ ℕ) ∧ 𝑛 ∈ ((𝑗 + 1)...(𝑗 + 1))) → (𝑗 + 1) ∈ ℕ0)
3934, 38eqeltrd 2869 . . . . . . . 8 (((𝜑𝑗 ∈ ℕ) ∧ 𝑛 ∈ ((𝑗 + 1)...(𝑗 + 1))) → 𝑛 ∈ ℕ0)
409nnnn0d 12565 . . . . . . . . . . 11 ((𝜑𝑛 ∈ ℕ0) → (2↑𝑛) ∈ ℕ0)
4140nn0ge0d 12568 . . . . . . . . . 10 ((𝜑𝑛 ∈ ℕ0) → 0 ≤ (2↑𝑛))
4211breq2d 5123 . . . . . . . . . . 11 (𝑘 = (2↑𝑛) → (0 ≤ (𝐹𝑘) ↔ 0 ≤ (𝐹‘(2↑𝑛))))
43 climcnds.2 . . . . . . . . . . . . 13 ((𝜑𝑘 ∈ ℕ) → 0 ≤ (𝐹𝑘))
4443ralrimiva 3163 . . . . . . . . . . . 12 (𝜑 → ∀𝑘 ∈ ℕ 0 ≤ (𝐹𝑘))
4544adantr 485 . . . . . . . . . . 11 ((𝜑𝑛 ∈ ℕ0) → ∀𝑘 ∈ ℕ 0 ≤ (𝐹𝑘))
4642, 45, 9rspcdva 3589 . . . . . . . . . 10 ((𝜑𝑛 ∈ ℕ0) → 0 ≤ (𝐹‘(2↑𝑛)))
4710, 16, 41, 46mulge0d 11791 . . . . . . . . 9 ((𝜑𝑛 ∈ ℕ0) → 0 ≤ ((2↑𝑛) · (𝐹‘(2↑𝑛))))
4847, 5breqtrrd 5141 . . . . . . . 8 ((𝜑𝑛 ∈ ℕ0) → 0 ≤ (𝐺𝑛))
4932, 39, 48syl2anc 595 . . . . . . 7 (((𝜑𝑗 ∈ ℕ) ∧ 𝑛 ∈ ((𝑗 + 1)...(𝑗 + 1))) → 0 ≤ (𝐺𝑛))
5023, 28, 31, 49sermono 14070 . . . . . 6 ((𝜑𝑗 ∈ ℕ) → (seq1( + , 𝐺)‘𝑗) ≤ (seq1( + , 𝐺)‘(𝑗 + 1)))
5150adantlr 727 . . . . 5 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (seq1( + , 𝐺)‘𝑗) ≤ (seq1( + , 𝐺)‘(𝑗 + 1)))
52 2re 12315 . . . . . . 7 2 ∈ ℝ
53 eqidd 2770 . . . . . . . 8 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑘 ∈ ℕ) → (𝐹𝑘) = (𝐹𝑘))
5413adantlr 727 . . . . . . . 8 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑘 ∈ ℕ) → (𝐹𝑘) ∈ ℝ)
55 simpr 489 . . . . . . . 8 ((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) → seq1( + , 𝐹) ∈ dom ⇝ )
561, 2, 53, 54, 55isumrecl 15816 . . . . . . 7 ((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) → Σ𝑘 ∈ ℕ (𝐹𝑘) ∈ ℝ)
57 remulcl 11185 . . . . . . 7 ((2 ∈ ℝ ∧ Σ𝑘 ∈ ℕ (𝐹𝑘) ∈ ℝ) → (2 · Σ𝑘 ∈ ℕ (𝐹𝑘)) ∈ ℝ)
5852, 56, 57sylancr 598 . . . . . 6 ((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) → (2 · Σ𝑘 ∈ ℕ (𝐹𝑘)) ∈ ℝ)
5921ffvelcdmda 7080 . . . . . . . 8 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (seq1( + , 𝐺)‘𝑗) ∈ ℝ)
601, 3, 13serfre 14067 . . . . . . . . . . 11 (𝜑 → seq1( + , 𝐹):ℕ⟶ℝ)
6160ad2antrr 738 . . . . . . . . . 10 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → seq1( + , 𝐹):ℕ⟶ℝ)
6235adantl 486 . . . . . . . . . . 11 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → 𝑗 ∈ ℕ0)
63 nnexpcl 14110 . . . . . . . . . . 11 ((2 ∈ ℕ ∧ 𝑗 ∈ ℕ0) → (2↑𝑗) ∈ ℕ)
646, 62, 63sylancr 598 . . . . . . . . . 10 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (2↑𝑗) ∈ ℕ)
6561, 64ffvelcdmd 7081 . . . . . . . . 9 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (seq1( + , 𝐹)‘(2↑𝑗)) ∈ ℝ)
66 remulcl 11185 . . . . . . . . 9 ((2 ∈ ℝ ∧ (seq1( + , 𝐹)‘(2↑𝑗)) ∈ ℝ) → (2 · (seq1( + , 𝐹)‘(2↑𝑗))) ∈ ℝ)
6752, 65, 66sylancr 598 . . . . . . . 8 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (2 · (seq1( + , 𝐹)‘(2↑𝑗))) ∈ ℝ)
6858adantr 485 . . . . . . . 8 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (2 · Σ𝑘 ∈ ℕ (𝐹𝑘)) ∈ ℝ)
69 climcnds.3 . . . . . . . . . 10 ((𝜑𝑘 ∈ ℕ) → (𝐹‘(𝑘 + 1)) ≤ (𝐹𝑘))
7013, 43, 69, 5climcndslem2 15904 . . . . . . . . 9 ((𝜑𝑗 ∈ ℕ) → (seq1( + , 𝐺)‘𝑗) ≤ (2 · (seq1( + , 𝐹)‘(2↑𝑗))))
7170adantlr 727 . . . . . . . 8 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (seq1( + , 𝐺)‘𝑗) ≤ (2 · (seq1( + , 𝐹)‘(2↑𝑗))))
72 eqidd 2770 . . . . . . . . . . 11 ((((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) ∧ 𝑘 ∈ (1...(2↑𝑗))) → (𝐹𝑘) = (𝐹𝑘))
7364, 1eleqtrdi 2879 . . . . . . . . . . 11 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (2↑𝑗) ∈ (ℤ‘1))
74 simpll 778 . . . . . . . . . . . 12 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → 𝜑)
75 elfznn 13581 . . . . . . . . . . . 12 (𝑘 ∈ (1...(2↑𝑗)) → 𝑘 ∈ ℕ)
7613recnd 11237 . . . . . . . . . . . 12 ((𝜑𝑘 ∈ ℕ) → (𝐹𝑘) ∈ ℂ)
7774, 75, 76syl2an 607 . . . . . . . . . . 11 ((((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) ∧ 𝑘 ∈ (1...(2↑𝑗))) → (𝐹𝑘) ∈ ℂ)
7872, 73, 77fsumser 15781 . . . . . . . . . 10 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → Σ𝑘 ∈ (1...(2↑𝑗))(𝐹𝑘) = (seq1( + , 𝐹)‘(2↑𝑗)))
79 1zzd 12625 . . . . . . . . . . 11 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → 1 ∈ ℤ)
80 fzfid 14009 . . . . . . . . . . 11 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (1...(2↑𝑗)) ∈ Fin)
8175ssriv 3947 . . . . . . . . . . . 12 (1...(2↑𝑗)) ⊆ ℕ
8281a1i 11 . . . . . . . . . . 11 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (1...(2↑𝑗)) ⊆ ℕ)
83 eqidd 2770 . . . . . . . . . . 11 ((((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) ∧ 𝑘 ∈ ℕ) → (𝐹𝑘) = (𝐹𝑘))
8413ad4ant14 764 . . . . . . . . . . 11 ((((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) ∧ 𝑘 ∈ ℕ) → (𝐹𝑘) ∈ ℝ)
8543ad4ant14 764 . . . . . . . . . . 11 ((((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) ∧ 𝑘 ∈ ℕ) → 0 ≤ (𝐹𝑘))
86 simplr 780 . . . . . . . . . . 11 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → seq1( + , 𝐹) ∈ dom ⇝ )
871, 79, 80, 82, 83, 84, 85, 86isumless 15899 . . . . . . . . . 10 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → Σ𝑘 ∈ (1...(2↑𝑗))(𝐹𝑘) ≤ Σ𝑘 ∈ ℕ (𝐹𝑘))
8878, 87eqbrtrrd 5137 . . . . . . . . 9 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (seq1( + , 𝐹)‘(2↑𝑗)) ≤ Σ𝑘 ∈ ℕ (𝐹𝑘))
8956adantr 485 . . . . . . . . . 10 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → Σ𝑘 ∈ ℕ (𝐹𝑘) ∈ ℝ)
90 2rp 13021 . . . . . . . . . . 11 2 ∈ ℝ+
9190a1i 11 . . . . . . . . . 10 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → 2 ∈ ℝ+)
9265, 89, 91lemul2d 13104 . . . . . . . . 9 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → ((seq1( + , 𝐹)‘(2↑𝑗)) ≤ Σ𝑘 ∈ ℕ (𝐹𝑘) ↔ (2 · (seq1( + , 𝐹)‘(2↑𝑗))) ≤ (2 · Σ𝑘 ∈ ℕ (𝐹𝑘))))
9388, 92mpbid 235 . . . . . . . 8 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (2 · (seq1( + , 𝐹)‘(2↑𝑗))) ≤ (2 · Σ𝑘 ∈ ℕ (𝐹𝑘)))
9459, 67, 68, 71, 93letrd 11367 . . . . . . 7 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (seq1( + , 𝐺)‘𝑗) ≤ (2 · Σ𝑘 ∈ ℕ (𝐹𝑘)))
9594ralrimiva 3163 . . . . . 6 ((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) → ∀𝑗 ∈ ℕ (seq1( + , 𝐺)‘𝑗) ≤ (2 · Σ𝑘 ∈ ℕ (𝐹𝑘)))
96 brralrspcev 5173 . . . . . 6 (((2 · Σ𝑘 ∈ ℕ (𝐹𝑘)) ∈ ℝ ∧ ∀𝑗 ∈ ℕ (seq1( + , 𝐺)‘𝑗) ≤ (2 · Σ𝑘 ∈ ℕ (𝐹𝑘))) → ∃𝑥 ∈ ℝ ∀𝑗 ∈ ℕ (seq1( + , 𝐺)‘𝑗) ≤ 𝑥)
9758, 95, 96syl2anc 595 . . . . 5 ((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) → ∃𝑥 ∈ ℝ ∀𝑗 ∈ ℕ (seq1( + , 𝐺)‘𝑗) ≤ 𝑥)
981, 2, 21, 51, 97climsup 15721 . . . 4 ((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) → seq1( + , 𝐺) ⇝ sup(ran seq1( + , 𝐺), ℝ, < ))
99 climrel 15543 . . . . 5 Rel ⇝
10099releldmi 5939 . . . 4 (seq1( + , 𝐺) ⇝ sup(ran seq1( + , 𝐺), ℝ, < ) → seq1( + , 𝐺) ∈ dom ⇝ )
10198, 100syl 18 . . 3 ((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) → seq1( + , 𝐺) ∈ dom ⇝ )
102 nn0uz 12900 . . . . 5 0 = (ℤ‘0)
103 1nn0 12520 . . . . . 6 1 ∈ ℕ0
104103a1i 11 . . . . 5 (𝜑 → 1 ∈ ℕ0)
10518recnd 11237 . . . . 5 ((𝜑𝑛 ∈ ℕ0) → (𝐺𝑛) ∈ ℂ)
106102, 104, 105iserex 15708 . . . 4 (𝜑 → (seq0( + , 𝐺) ∈ dom ⇝ ↔ seq1( + , 𝐺) ∈ dom ⇝ ))
107106biimpar 482 . . 3 ((𝜑 ∧ seq1( + , 𝐺) ∈ dom ⇝ ) → seq0( + , 𝐺) ∈ dom ⇝ )
108101, 107syldan 602 . 2 ((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) → seq0( + , 𝐺) ∈ dom ⇝ )
109 1zzd 12625 . . . 4 ((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) → 1 ∈ ℤ)
11060adantr 485 . . . 4 ((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) → seq1( + , 𝐹):ℕ⟶ℝ)
111 elfznn 13581 . . . . . . 7 (𝑘 ∈ (1...(𝑗 + 1)) → 𝑘 ∈ ℕ)
11229, 111, 13syl2an 607 . . . . . 6 (((𝜑𝑗 ∈ ℕ) ∧ 𝑘 ∈ (1...(𝑗 + 1))) → (𝐹𝑘) ∈ ℝ)
113 simpll 778 . . . . . . 7 (((𝜑𝑗 ∈ ℕ) ∧ 𝑘 ∈ ((𝑗 + 1)...(𝑗 + 1))) → 𝜑)
114 peano2nn 12245 . . . . . . . . 9 (𝑗 ∈ ℕ → (𝑗 + 1) ∈ ℕ)
115114adantl 486 . . . . . . . 8 ((𝜑𝑗 ∈ ℕ) → (𝑗 + 1) ∈ ℕ)
116 elfz1eq 13563 . . . . . . . 8 (𝑘 ∈ ((𝑗 + 1)...(𝑗 + 1)) → 𝑘 = (𝑗 + 1))
117 eleq1 2857 . . . . . . . . 9 (𝑘 = (𝑗 + 1) → (𝑘 ∈ ℕ ↔ (𝑗 + 1) ∈ ℕ))
118117biimparc 484 . . . . . . . 8 (((𝑗 + 1) ∈ ℕ ∧ 𝑘 = (𝑗 + 1)) → 𝑘 ∈ ℕ)
119115, 116, 118syl2an 607 . . . . . . 7 (((𝜑𝑗 ∈ ℕ) ∧ 𝑘 ∈ ((𝑗 + 1)...(𝑗 + 1))) → 𝑘 ∈ ℕ)
120113, 119, 43syl2anc 595 . . . . . 6 (((𝜑𝑗 ∈ ℕ) ∧ 𝑘 ∈ ((𝑗 + 1)...(𝑗 + 1))) → 0 ≤ (𝐹𝑘))
12123, 28, 112, 120sermono 14070 . . . . 5 ((𝜑𝑗 ∈ ℕ) → (seq1( + , 𝐹)‘𝑗) ≤ (seq1( + , 𝐹)‘(𝑗 + 1)))
122121adantlr 727 . . . 4 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (seq1( + , 𝐹)‘𝑗) ≤ (seq1( + , 𝐹)‘(𝑗 + 1)))
123 0zd 12603 . . . . . 6 ((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) → 0 ∈ ℤ)
124 eqidd 2770 . . . . . 6 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑛 ∈ ℕ0) → (𝐺𝑛) = (𝐺𝑛))
12518adantlr 727 . . . . . 6 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑛 ∈ ℕ0) → (𝐺𝑛) ∈ ℝ)
126 simpr 489 . . . . . 6 ((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) → seq0( + , 𝐺) ∈ dom ⇝ )
127102, 123, 124, 125, 126isumrecl 15816 . . . . 5 ((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) → Σ𝑛 ∈ ℕ0 (𝐺𝑛) ∈ ℝ)
128110ffvelcdmda 7080 . . . . . . 7 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (seq1( + , 𝐹)‘𝑗) ∈ ℝ)
129 0zd 12603 . . . . . . . . . 10 (𝜑 → 0 ∈ ℤ)
130102, 129, 18serfre 14067 . . . . . . . . 9 (𝜑 → seq0( + , 𝐺):ℕ0⟶ℝ)
131130adantr 485 . . . . . . . 8 ((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) → seq0( + , 𝐺):ℕ0⟶ℝ)
132 ffvelcdm 7077 . . . . . . . 8 ((seq0( + , 𝐺):ℕ0⟶ℝ ∧ 𝑗 ∈ ℕ0) → (seq0( + , 𝐺)‘𝑗) ∈ ℝ)
133131, 35, 132syl2an 607 . . . . . . 7 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (seq0( + , 𝐺)‘𝑗) ∈ ℝ)
134127adantr 485 . . . . . . 7 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → Σ𝑛 ∈ ℕ0 (𝐺𝑛) ∈ ℝ)
135110adantr 485 . . . . . . . . 9 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → seq1( + , 𝐹):ℕ⟶ℝ)
136 simpr 489 . . . . . . . . . 10 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → 𝑗 ∈ ℕ)
13724adantl 486 . . . . . . . . . . 11 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → 𝑗 ∈ ℤ)
13837adantl 486 . . . . . . . . . . . . . 14 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (𝑗 + 1) ∈ ℕ0)
139138nn0red 12566 . . . . . . . . . . . . 13 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (𝑗 + 1) ∈ ℝ)
140 nnexpcl 14110 . . . . . . . . . . . . . . 15 ((2 ∈ ℕ ∧ (𝑗 + 1) ∈ ℕ0) → (2↑(𝑗 + 1)) ∈ ℕ)
1416, 138, 140sylancr 598 . . . . . . . . . . . . . 14 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (2↑(𝑗 + 1)) ∈ ℕ)
142141nnred 12248 . . . . . . . . . . . . 13 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (2↑(𝑗 + 1)) ∈ ℝ)
143 2z 12626 . . . . . . . . . . . . . . 15 2 ∈ ℤ
144 uzid 12877 . . . . . . . . . . . . . . 15 (2 ∈ ℤ → 2 ∈ (ℤ‘2))
145143, 144ax-mp 5 . . . . . . . . . . . . . 14 2 ∈ (ℤ‘2)
146 bernneq3 14267 . . . . . . . . . . . . . 14 ((2 ∈ (ℤ‘2) ∧ (𝑗 + 1) ∈ ℕ0) → (𝑗 + 1) < (2↑(𝑗 + 1)))
147145, 138, 146sylancr 598 . . . . . . . . . . . . 13 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (𝑗 + 1) < (2↑(𝑗 + 1)))
148139, 142, 147ltled 11358 . . . . . . . . . . . 12 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (𝑗 + 1) ≤ (2↑(𝑗 + 1)))
149137peano2zd 12703 . . . . . . . . . . . . 13 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (𝑗 + 1) ∈ ℤ)
150141nnzd 12617 . . . . . . . . . . . . 13 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (2↑(𝑗 + 1)) ∈ ℤ)
151 eluz 12876 . . . . . . . . . . . . 13 (((𝑗 + 1) ∈ ℤ ∧ (2↑(𝑗 + 1)) ∈ ℤ) → ((2↑(𝑗 + 1)) ∈ (ℤ‘(𝑗 + 1)) ↔ (𝑗 + 1) ≤ (2↑(𝑗 + 1))))
152149, 150, 151syl2anc 595 . . . . . . . . . . . 12 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → ((2↑(𝑗 + 1)) ∈ (ℤ‘(𝑗 + 1)) ↔ (𝑗 + 1) ≤ (2↑(𝑗 + 1))))
153148, 152mpbird 260 . . . . . . . . . . 11 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (2↑(𝑗 + 1)) ∈ (ℤ‘(𝑗 + 1)))
154 eluzp1m1 12888 . . . . . . . . . . 11 ((𝑗 ∈ ℤ ∧ (2↑(𝑗 + 1)) ∈ (ℤ‘(𝑗 + 1))) → ((2↑(𝑗 + 1)) − 1) ∈ (ℤ𝑗))
155137, 153, 154syl2anc 595 . . . . . . . . . 10 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → ((2↑(𝑗 + 1)) − 1) ∈ (ℤ𝑗))
156 eluznn 12942 . . . . . . . . . 10 ((𝑗 ∈ ℕ ∧ ((2↑(𝑗 + 1)) − 1) ∈ (ℤ𝑗)) → ((2↑(𝑗 + 1)) − 1) ∈ ℕ)
157136, 155, 156syl2anc 595 . . . . . . . . 9 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → ((2↑(𝑗 + 1)) − 1) ∈ ℕ)
158135, 157ffvelcdmd 7081 . . . . . . . 8 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (seq1( + , 𝐹)‘((2↑(𝑗 + 1)) − 1)) ∈ ℝ)
15923adantlr 727 . . . . . . . . 9 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → 𝑗 ∈ (ℤ‘1))
160 simpll 778 . . . . . . . . . 10 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → 𝜑)
161 elfznn 13581 . . . . . . . . . 10 (𝑘 ∈ (1...((2↑(𝑗 + 1)) − 1)) → 𝑘 ∈ ℕ)
162160, 161, 13syl2an 607 . . . . . . . . 9 ((((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) ∧ 𝑘 ∈ (1...((2↑(𝑗 + 1)) − 1))) → (𝐹𝑘) ∈ ℝ)
163114adantl 486 . . . . . . . . . . 11 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (𝑗 + 1) ∈ ℕ)
164 elfzuz 13548 . . . . . . . . . . 11 (𝑘 ∈ ((𝑗 + 1)...((2↑(𝑗 + 1)) − 1)) → 𝑘 ∈ (ℤ‘(𝑗 + 1)))
165 eluznn 12942 . . . . . . . . . . 11 (((𝑗 + 1) ∈ ℕ ∧ 𝑘 ∈ (ℤ‘(𝑗 + 1))) → 𝑘 ∈ ℕ)
166163, 164, 165syl2an 607 . . . . . . . . . 10 ((((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) ∧ 𝑘 ∈ ((𝑗 + 1)...((2↑(𝑗 + 1)) − 1))) → 𝑘 ∈ ℕ)
167160, 166, 43syl2an2r 697 . . . . . . . . 9 ((((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) ∧ 𝑘 ∈ ((𝑗 + 1)...((2↑(𝑗 + 1)) − 1))) → 0 ≤ (𝐹𝑘))
168159, 155, 162, 167sermono 14070 . . . . . . . 8 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (seq1( + , 𝐹)‘𝑗) ≤ (seq1( + , 𝐹)‘((2↑(𝑗 + 1)) − 1)))
16935adantl 486 . . . . . . . . 9 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → 𝑗 ∈ ℕ0)
17013, 43, 69, 5climcndslem1 15903 . . . . . . . . 9 ((𝜑𝑗 ∈ ℕ0) → (seq1( + , 𝐹)‘((2↑(𝑗 + 1)) − 1)) ≤ (seq0( + , 𝐺)‘𝑗))
171160, 169, 170syl2anc 595 . . . . . . . 8 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (seq1( + , 𝐹)‘((2↑(𝑗 + 1)) − 1)) ≤ (seq0( + , 𝐺)‘𝑗))
172128, 158, 133, 168, 171letrd 11367 . . . . . . 7 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (seq1( + , 𝐹)‘𝑗) ≤ (seq0( + , 𝐺)‘𝑗))
173 eqidd 2770 . . . . . . . . 9 ((((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) ∧ 𝑛 ∈ (0...𝑗)) → (𝐺𝑛) = (𝐺𝑛))
174169, 102eleqtrdi 2879 . . . . . . . . 9 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → 𝑗 ∈ (ℤ‘0))
175 elfznn0 13648 . . . . . . . . . 10 (𝑛 ∈ (0...𝑗) → 𝑛 ∈ ℕ0)
176160, 175, 105syl2an 607 . . . . . . . . 9 ((((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) ∧ 𝑛 ∈ (0...𝑗)) → (𝐺𝑛) ∈ ℂ)
177173, 174, 176fsumser 15781 . . . . . . . 8 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → Σ𝑛 ∈ (0...𝑗)(𝐺𝑛) = (seq0( + , 𝐺)‘𝑗))
178 0zd 12603 . . . . . . . . 9 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → 0 ∈ ℤ)
179 fzfid 14009 . . . . . . . . 9 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (0...𝑗) ∈ Fin)
180175ssriv 3947 . . . . . . . . . 10 (0...𝑗) ⊆ ℕ0
181180a1i 11 . . . . . . . . 9 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (0...𝑗) ⊆ ℕ0)
182 eqidd 2770 . . . . . . . . 9 ((((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) ∧ 𝑛 ∈ ℕ0) → (𝐺𝑛) = (𝐺𝑛))
18318ad4ant14 764 . . . . . . . . 9 ((((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) ∧ 𝑛 ∈ ℕ0) → (𝐺𝑛) ∈ ℝ)
18448ad4ant14 764 . . . . . . . . 9 ((((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) ∧ 𝑛 ∈ ℕ0) → 0 ≤ (𝐺𝑛))
185 simplr 780 . . . . . . . . 9 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → seq0( + , 𝐺) ∈ dom ⇝ )
186102, 178, 179, 181, 182, 183, 184, 185isumless 15899 . . . . . . . 8 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → Σ𝑛 ∈ (0...𝑗)(𝐺𝑛) ≤ Σ𝑛 ∈ ℕ0 (𝐺𝑛))
187177, 186eqbrtrrd 5137 . . . . . . 7 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (seq0( + , 𝐺)‘𝑗) ≤ Σ𝑛 ∈ ℕ0 (𝐺𝑛))
188128, 133, 134, 172, 187letrd 11367 . . . . . 6 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (seq1( + , 𝐹)‘𝑗) ≤ Σ𝑛 ∈ ℕ0 (𝐺𝑛))
189188ralrimiva 3163 . . . . 5 ((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) → ∀𝑗 ∈ ℕ (seq1( + , 𝐹)‘𝑗) ≤ Σ𝑛 ∈ ℕ0 (𝐺𝑛))
190 brralrspcev 5173 . . . . 5 ((Σ𝑛 ∈ ℕ0 (𝐺𝑛) ∈ ℝ ∧ ∀𝑗 ∈ ℕ (seq1( + , 𝐹)‘𝑗) ≤ Σ𝑛 ∈ ℕ0 (𝐺𝑛)) → ∃𝑥 ∈ ℝ ∀𝑗 ∈ ℕ (seq1( + , 𝐹)‘𝑗) ≤ 𝑥)
191127, 189, 190syl2anc 595 . . . 4 ((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) → ∃𝑥 ∈ ℝ ∀𝑗 ∈ ℕ (seq1( + , 𝐹)‘𝑗) ≤ 𝑥)
1921, 109, 110, 122, 191climsup 15721 . . 3 ((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) → seq1( + , 𝐹) ⇝ sup(ran seq1( + , 𝐹), ℝ, < ))
19399releldmi 5939 . . 3 (seq1( + , 𝐹) ⇝ sup(ran seq1( + , 𝐹), ℝ, < ) → seq1( + , 𝐹) ∈ dom ⇝ )
194192, 193syl 18 . 2 ((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) → seq1( + , 𝐹) ∈ dom ⇝ )
195108, 194impbida 812 1 (𝜑 → (seq1( + , 𝐹) ∈ dom ⇝ ↔ seq0( + , 𝐺) ∈ dom ⇝ ))
Colors of variables: wff setvar class
Syntax hints:  wi 4  wb 209  wa 400   = wceq 1567  wcel 2149  wral 3085  wrex 3095  wss 3911   class class class wbr 5111  dom cdm 5662  ran crn 5663  wf 6533  cfv 6537  (class class class)co 7411  supcsup 9400  cc 11098  cr 11099  0cc0 11100  1c1 11101   + caddc 11103   · cmul 11105   < clt 11243  cle 11244  cmin 11441  cn 12233  2c2 12295  0cn0 12504  cz 12591  cuz 12862  +crp 13016  ...cfz 13535  seqcseq 14037  cexp 14097  cli 15535  Σcsu 15737
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1822  ax-4 1836  ax-5 1937  ax-6 1994  ax-7 2035  ax-8 2151  ax-9 2159  ax-10 2182  ax-11 2198  ax-12 2219  ax-ext 2741  ax-rep 5240  ax-sep 5259  ax-nul 5271  ax-pow 5337  ax-pr 5405  ax-un 7733  ax-inf2 9610  ax-cnex 11156  ax-resscn 11157  ax-1cn 11158  ax-icn 11159  ax-addcl 11160  ax-addrcl 11161  ax-mulcl 11162  ax-mulrcl 11163  ax-mulcom 11164  ax-addass 11165  ax-mulass 11166  ax-distr 11167  ax-i2m1 11168  ax-1ne0 11169  ax-1rid 11170  ax-rnegex 11171  ax-rrecex 11172  ax-cnre 11173  ax-pre-lttri 11174  ax-pre-lttrn 11175  ax-pre-ltadd 11176  ax-pre-mulgt0 11177  ax-pre-sup 11178
This theorem depends on definitions:  df-bi 210  df-an 401  df-or 861  df-3or 1102  df-3an 1103  df-tru 1570  df-fal 1580  df-ex 1807  df-nf 1811  df-sb 2098  df-mo 2573  df-eu 2603  df-clab 2748  df-cleq 2761  df-clel 2844  df-nfc 2918  df-ne 2965  df-nel 3071  df-ral 3086  df-rex 3096  df-rmo 3375  df-reu 3376  df-rab 3423  df-v 3463  df-sbc 3752  df-csb 3860  df-dif 3914  df-un 3916  df-in 3918  df-ss 3928  df-pss 3931  df-nul 4293  df-if 4491  df-pw 4567  df-sn 4593  df-pr 4595  df-op 4599  df-uni 4875  df-int 4915  df-iun 4960  df-br 5112  df-opab 5176  df-mpt 5195  df-tr 5221  df-id 5557  df-eprel 5562  df-po 5570  df-so 5571  df-fr 5615  df-se 5616  df-we 5617  df-xp 5668  df-rel 5669  df-cnv 5670  df-co 5671  df-dm 5672  df-rn 5673  df-res 5674  df-ima 5675  df-pred 6303  df-ord 6364  df-on 6365  df-lim 6366  df-suc 6367  df-iota 6493  df-fun 6539  df-fn 6540  df-f 6541  df-f1 6542  df-fo 6543  df-f1o 6544  df-fv 6545  df-isom 6546  df-riota 7368  df-ov 7414  df-oprab 7415  df-mpo 7416  df-om 7863  df-1st 7986  df-2nd 7987  df-frecs 8278  df-wrecs 8309  df-recs 8358  df-rdg 8397  df-1o 8453  df-oadd 8457  df-er 8694  df-pm 8827  df-en 8944  df-dom 8945  df-sdom 8946  df-fin 8947  df-sup 9402  df-inf 9403  df-oi 9472  df-dju 9887  df-card 9925  df-pnf 11245  df-mnf 11246  df-xr 11247  df-ltxr 11248  df-le 11249  df-sub 11443  df-neg 11444  df-div 11872  df-nn 12234  df-2 12303  df-3 12304  df-n0 12505  df-z 12592  df-uz 12863  df-rp 13017  df-ico 13378  df-fz 13536  df-fzo 13683  df-fl 13825  df-seq 14038  df-exp 14098  df-hash 14367  df-cj 15150  df-re 15151  df-im 15152  df-sqrt 15286  df-abs 15287  df-clim 15539  df-rlim 15540  df-sum 15738
This theorem is referenced by:  harmonic  15913  zetacvg  27145
  Copyright terms: Public domain W3C validator