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

Theorem climcnds 15816
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 12827 . . . . 5 ℕ = (ℤ‘1)
2 1zzd 12558 . . . . 5 ((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) → 1 ∈ ℤ)
3 1zzd 12558 . . . . . . 7 (𝜑 → 1 ∈ ℤ)
4 nnnn0 12444 . . . . . . . 8 (𝑛 ∈ ℕ → 𝑛 ∈ ℕ0)
5 climcnds.4 . . . . . . . . 9 ((𝜑𝑛 ∈ ℕ0) → (𝐺𝑛) = ((2↑𝑛) · (𝐹‘(2↑𝑛))))
6 2nn 12254 . . . . . . . . . . . 12 2 ∈ ℕ
7 simpr 484 . . . . . . . . . . . 12 ((𝜑𝑛 ∈ ℕ0) → 𝑛 ∈ ℕ0)
8 nnexpcl 14036 . . . . . . . . . . . 12 ((2 ∈ ℕ ∧ 𝑛 ∈ ℕ0) → (2↑𝑛) ∈ ℕ)
96, 7, 8sylancr 588 . . . . . . . . . . 11 ((𝜑𝑛 ∈ ℕ0) → (2↑𝑛) ∈ ℕ)
109nnred 12189 . . . . . . . . . 10 ((𝜑𝑛 ∈ ℕ0) → (2↑𝑛) ∈ ℝ)
11 fveq2 6840 . . . . . . . . . . . 12 (𝑘 = (2↑𝑛) → (𝐹𝑘) = (𝐹‘(2↑𝑛)))
1211eleq1d 2821 . . . . . . . . . . 11 (𝑘 = (2↑𝑛) → ((𝐹𝑘) ∈ ℝ ↔ (𝐹‘(2↑𝑛)) ∈ ℝ))
13 climcnds.1 . . . . . . . . . . . . 13 ((𝜑𝑘 ∈ ℕ) → (𝐹𝑘) ∈ ℝ)
1413ralrimiva 3129 . . . . . . . . . . . 12 (𝜑 → ∀𝑘 ∈ ℕ (𝐹𝑘) ∈ ℝ)
1514adantr 480 . . . . . . . . . . 11 ((𝜑𝑛 ∈ ℕ0) → ∀𝑘 ∈ ℕ (𝐹𝑘) ∈ ℝ)
1612, 15, 9rspcdva 3565 . . . . . . . . . 10 ((𝜑𝑛 ∈ ℕ0) → (𝐹‘(2↑𝑛)) ∈ ℝ)
1710, 16remulcld 11175 . . . . . . . . 9 ((𝜑𝑛 ∈ ℕ0) → ((2↑𝑛) · (𝐹‘(2↑𝑛))) ∈ ℝ)
185, 17eqeltrd 2836 . . . . . . . 8 ((𝜑𝑛 ∈ ℕ0) → (𝐺𝑛) ∈ ℝ)
194, 18sylan2 594 . . . . . . 7 ((𝜑𝑛 ∈ ℕ) → (𝐺𝑛) ∈ ℝ)
201, 3, 19serfre 13993 . . . . . 6 (𝜑 → seq1( + , 𝐺):ℕ⟶ℝ)
2120adantr 480 . . . . 5 ((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) → seq1( + , 𝐺):ℕ⟶ℝ)
22 simpr 484 . . . . . . . 8 ((𝜑𝑗 ∈ ℕ) → 𝑗 ∈ ℕ)
2322, 1eleqtrdi 2846 . . . . . . 7 ((𝜑𝑗 ∈ ℕ) → 𝑗 ∈ (ℤ‘1))
24 nnz 12545 . . . . . . . . 9 (𝑗 ∈ ℕ → 𝑗 ∈ ℤ)
2524adantl 481 . . . . . . . 8 ((𝜑𝑗 ∈ ℕ) → 𝑗 ∈ ℤ)
26 uzid 12803 . . . . . . . 8 (𝑗 ∈ ℤ → 𝑗 ∈ (ℤ𝑗))
27 peano2uz 12851 . . . . . . . 8 (𝑗 ∈ (ℤ𝑗) → (𝑗 + 1) ∈ (ℤ𝑗))
2825, 26, 273syl 18 . . . . . . 7 ((𝜑𝑗 ∈ ℕ) → (𝑗 + 1) ∈ (ℤ𝑗))
29 simpl 482 . . . . . . . 8 ((𝜑𝑗 ∈ ℕ) → 𝜑)
30 elfznn 13507 . . . . . . . 8 (𝑛 ∈ (1...(𝑗 + 1)) → 𝑛 ∈ ℕ)
3129, 30, 19syl2an 597 . . . . . . 7 (((𝜑𝑗 ∈ ℕ) ∧ 𝑛 ∈ (1...(𝑗 + 1))) → (𝐺𝑛) ∈ ℝ)
32 simpll 767 . . . . . . . 8 (((𝜑𝑗 ∈ ℕ) ∧ 𝑛 ∈ ((𝑗 + 1)...(𝑗 + 1))) → 𝜑)
33 elfz1eq 13489 . . . . . . . . . 10 (𝑛 ∈ ((𝑗 + 1)...(𝑗 + 1)) → 𝑛 = (𝑗 + 1))
3433adantl 481 . . . . . . . . 9 (((𝜑𝑗 ∈ ℕ) ∧ 𝑛 ∈ ((𝑗 + 1)...(𝑗 + 1))) → 𝑛 = (𝑗 + 1))
35 nnnn0 12444 . . . . . . . . . . 11 (𝑗 ∈ ℕ → 𝑗 ∈ ℕ0)
36 peano2nn0 12477 . . . . . . . . . . 11 (𝑗 ∈ ℕ0 → (𝑗 + 1) ∈ ℕ0)
3735, 36syl 17 . . . . . . . . . 10 (𝑗 ∈ ℕ → (𝑗 + 1) ∈ ℕ0)
3837ad2antlr 728 . . . . . . . . 9 (((𝜑𝑗 ∈ ℕ) ∧ 𝑛 ∈ ((𝑗 + 1)...(𝑗 + 1))) → (𝑗 + 1) ∈ ℕ0)
3934, 38eqeltrd 2836 . . . . . . . 8 (((𝜑𝑗 ∈ ℕ) ∧ 𝑛 ∈ ((𝑗 + 1)...(𝑗 + 1))) → 𝑛 ∈ ℕ0)
409nnnn0d 12498 . . . . . . . . . . 11 ((𝜑𝑛 ∈ ℕ0) → (2↑𝑛) ∈ ℕ0)
4140nn0ge0d 12501 . . . . . . . . . 10 ((𝜑𝑛 ∈ ℕ0) → 0 ≤ (2↑𝑛))
4211breq2d 5097 . . . . . . . . . . 11 (𝑘 = (2↑𝑛) → (0 ≤ (𝐹𝑘) ↔ 0 ≤ (𝐹‘(2↑𝑛))))
43 climcnds.2 . . . . . . . . . . . . 13 ((𝜑𝑘 ∈ ℕ) → 0 ≤ (𝐹𝑘))
4443ralrimiva 3129 . . . . . . . . . . . 12 (𝜑 → ∀𝑘 ∈ ℕ 0 ≤ (𝐹𝑘))
4544adantr 480 . . . . . . . . . . 11 ((𝜑𝑛 ∈ ℕ0) → ∀𝑘 ∈ ℕ 0 ≤ (𝐹𝑘))
4642, 45, 9rspcdva 3565 . . . . . . . . . 10 ((𝜑𝑛 ∈ ℕ0) → 0 ≤ (𝐹‘(2↑𝑛)))
4710, 16, 41, 46mulge0d 11727 . . . . . . . . 9 ((𝜑𝑛 ∈ ℕ0) → 0 ≤ ((2↑𝑛) · (𝐹‘(2↑𝑛))))
4847, 5breqtrrd 5113 . . . . . . . 8 ((𝜑𝑛 ∈ ℕ0) → 0 ≤ (𝐺𝑛))
4932, 39, 48syl2anc 585 . . . . . . 7 (((𝜑𝑗 ∈ ℕ) ∧ 𝑛 ∈ ((𝑗 + 1)...(𝑗 + 1))) → 0 ≤ (𝐺𝑛))
5023, 28, 31, 49sermono 13996 . . . . . 6 ((𝜑𝑗 ∈ ℕ) → (seq1( + , 𝐺)‘𝑗) ≤ (seq1( + , 𝐺)‘(𝑗 + 1)))
5150adantlr 716 . . . . 5 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (seq1( + , 𝐺)‘𝑗) ≤ (seq1( + , 𝐺)‘(𝑗 + 1)))
52 2re 12255 . . . . . . 7 2 ∈ ℝ
53 eqidd 2737 . . . . . . . 8 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑘 ∈ ℕ) → (𝐹𝑘) = (𝐹𝑘))
5413adantlr 716 . . . . . . . 8 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑘 ∈ ℕ) → (𝐹𝑘) ∈ ℝ)
55 simpr 484 . . . . . . . 8 ((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) → seq1( + , 𝐹) ∈ dom ⇝ )
561, 2, 53, 54, 55isumrecl 15727 . . . . . . 7 ((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) → Σ𝑘 ∈ ℕ (𝐹𝑘) ∈ ℝ)
57 remulcl 11123 . . . . . . 7 ((2 ∈ ℝ ∧ Σ𝑘 ∈ ℕ (𝐹𝑘) ∈ ℝ) → (2 · Σ𝑘 ∈ ℕ (𝐹𝑘)) ∈ ℝ)
5852, 56, 57sylancr 588 . . . . . 6 ((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) → (2 · Σ𝑘 ∈ ℕ (𝐹𝑘)) ∈ ℝ)
5921ffvelcdmda 7036 . . . . . . . 8 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (seq1( + , 𝐺)‘𝑗) ∈ ℝ)
601, 3, 13serfre 13993 . . . . . . . . . . 11 (𝜑 → seq1( + , 𝐹):ℕ⟶ℝ)
6160ad2antrr 727 . . . . . . . . . 10 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → seq1( + , 𝐹):ℕ⟶ℝ)
6235adantl 481 . . . . . . . . . . 11 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → 𝑗 ∈ ℕ0)
63 nnexpcl 14036 . . . . . . . . . . 11 ((2 ∈ ℕ ∧ 𝑗 ∈ ℕ0) → (2↑𝑗) ∈ ℕ)
646, 62, 63sylancr 588 . . . . . . . . . 10 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (2↑𝑗) ∈ ℕ)
6561, 64ffvelcdmd 7037 . . . . . . . . 9 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (seq1( + , 𝐹)‘(2↑𝑗)) ∈ ℝ)
66 remulcl 11123 . . . . . . . . 9 ((2 ∈ ℝ ∧ (seq1( + , 𝐹)‘(2↑𝑗)) ∈ ℝ) → (2 · (seq1( + , 𝐹)‘(2↑𝑗))) ∈ ℝ)
6752, 65, 66sylancr 588 . . . . . . . 8 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (2 · (seq1( + , 𝐹)‘(2↑𝑗))) ∈ ℝ)
6858adantr 480 . . . . . . . 8 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (2 · Σ𝑘 ∈ ℕ (𝐹𝑘)) ∈ ℝ)
69 climcnds.3 . . . . . . . . . 10 ((𝜑𝑘 ∈ ℕ) → (𝐹‘(𝑘 + 1)) ≤ (𝐹𝑘))
7013, 43, 69, 5climcndslem2 15815 . . . . . . . . 9 ((𝜑𝑗 ∈ ℕ) → (seq1( + , 𝐺)‘𝑗) ≤ (2 · (seq1( + , 𝐹)‘(2↑𝑗))))
7170adantlr 716 . . . . . . . 8 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (seq1( + , 𝐺)‘𝑗) ≤ (2 · (seq1( + , 𝐹)‘(2↑𝑗))))
72 eqidd 2737 . . . . . . . . . . 11 ((((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) ∧ 𝑘 ∈ (1...(2↑𝑗))) → (𝐹𝑘) = (𝐹𝑘))
7364, 1eleqtrdi 2846 . . . . . . . . . . 11 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (2↑𝑗) ∈ (ℤ‘1))
74 simpll 767 . . . . . . . . . . . 12 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → 𝜑)
75 elfznn 13507 . . . . . . . . . . . 12 (𝑘 ∈ (1...(2↑𝑗)) → 𝑘 ∈ ℕ)
7613recnd 11173 . . . . . . . . . . . 12 ((𝜑𝑘 ∈ ℕ) → (𝐹𝑘) ∈ ℂ)
7774, 75, 76syl2an 597 . . . . . . . . . . 11 ((((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) ∧ 𝑘 ∈ (1...(2↑𝑗))) → (𝐹𝑘) ∈ ℂ)
7872, 73, 77fsumser 15692 . . . . . . . . . 10 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → Σ𝑘 ∈ (1...(2↑𝑗))(𝐹𝑘) = (seq1( + , 𝐹)‘(2↑𝑗)))
79 1zzd 12558 . . . . . . . . . . 11 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → 1 ∈ ℤ)
80 fzfid 13935 . . . . . . . . . . 11 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (1...(2↑𝑗)) ∈ Fin)
8175ssriv 3925 . . . . . . . . . . . 12 (1...(2↑𝑗)) ⊆ ℕ
8281a1i 11 . . . . . . . . . . 11 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (1...(2↑𝑗)) ⊆ ℕ)
83 eqidd 2737 . . . . . . . . . . 11 ((((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) ∧ 𝑘 ∈ ℕ) → (𝐹𝑘) = (𝐹𝑘))
8413ad4ant14 753 . . . . . . . . . . 11 ((((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) ∧ 𝑘 ∈ ℕ) → (𝐹𝑘) ∈ ℝ)
8543ad4ant14 753 . . . . . . . . . . 11 ((((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) ∧ 𝑘 ∈ ℕ) → 0 ≤ (𝐹𝑘))
86 simplr 769 . . . . . . . . . . 11 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → seq1( + , 𝐹) ∈ dom ⇝ )
871, 79, 80, 82, 83, 84, 85, 86isumless 15810 . . . . . . . . . 10 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → Σ𝑘 ∈ (1...(2↑𝑗))(𝐹𝑘) ≤ Σ𝑘 ∈ ℕ (𝐹𝑘))
8878, 87eqbrtrrd 5109 . . . . . . . . 9 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (seq1( + , 𝐹)‘(2↑𝑗)) ≤ Σ𝑘 ∈ ℕ (𝐹𝑘))
8956adantr 480 . . . . . . . . . 10 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → Σ𝑘 ∈ ℕ (𝐹𝑘) ∈ ℝ)
90 2rp 12947 . . . . . . . . . . 11 2 ∈ ℝ+
9190a1i 11 . . . . . . . . . 10 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → 2 ∈ ℝ+)
9265, 89, 91lemul2d 13030 . . . . . . . . 9 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → ((seq1( + , 𝐹)‘(2↑𝑗)) ≤ Σ𝑘 ∈ ℕ (𝐹𝑘) ↔ (2 · (seq1( + , 𝐹)‘(2↑𝑗))) ≤ (2 · Σ𝑘 ∈ ℕ (𝐹𝑘))))
9388, 92mpbid 232 . . . . . . . 8 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (2 · (seq1( + , 𝐹)‘(2↑𝑗))) ≤ (2 · Σ𝑘 ∈ ℕ (𝐹𝑘)))
9459, 67, 68, 71, 93letrd 11303 . . . . . . 7 (((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (seq1( + , 𝐺)‘𝑗) ≤ (2 · Σ𝑘 ∈ ℕ (𝐹𝑘)))
9594ralrimiva 3129 . . . . . 6 ((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) → ∀𝑗 ∈ ℕ (seq1( + , 𝐺)‘𝑗) ≤ (2 · Σ𝑘 ∈ ℕ (𝐹𝑘)))
96 brralrspcev 5145 . . . . . 6 (((2 · Σ𝑘 ∈ ℕ (𝐹𝑘)) ∈ ℝ ∧ ∀𝑗 ∈ ℕ (seq1( + , 𝐺)‘𝑗) ≤ (2 · Σ𝑘 ∈ ℕ (𝐹𝑘))) → ∃𝑥 ∈ ℝ ∀𝑗 ∈ ℕ (seq1( + , 𝐺)‘𝑗) ≤ 𝑥)
9758, 95, 96syl2anc 585 . . . . 5 ((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) → ∃𝑥 ∈ ℝ ∀𝑗 ∈ ℕ (seq1( + , 𝐺)‘𝑗) ≤ 𝑥)
981, 2, 21, 51, 97climsup 15632 . . . 4 ((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) → seq1( + , 𝐺) ⇝ sup(ran seq1( + , 𝐺), ℝ, < ))
99 climrel 15454 . . . . 5 Rel ⇝
10099releldmi 5903 . . . 4 (seq1( + , 𝐺) ⇝ sup(ran seq1( + , 𝐺), ℝ, < ) → seq1( + , 𝐺) ∈ dom ⇝ )
10198, 100syl 17 . . 3 ((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) → seq1( + , 𝐺) ∈ dom ⇝ )
102 nn0uz 12826 . . . . 5 0 = (ℤ‘0)
103 1nn0 12453 . . . . . 6 1 ∈ ℕ0
104103a1i 11 . . . . 5 (𝜑 → 1 ∈ ℕ0)
10518recnd 11173 . . . . 5 ((𝜑𝑛 ∈ ℕ0) → (𝐺𝑛) ∈ ℂ)
106102, 104, 105iserex 15619 . . . 4 (𝜑 → (seq0( + , 𝐺) ∈ dom ⇝ ↔ seq1( + , 𝐺) ∈ dom ⇝ ))
107106biimpar 477 . . 3 ((𝜑 ∧ seq1( + , 𝐺) ∈ dom ⇝ ) → seq0( + , 𝐺) ∈ dom ⇝ )
108101, 107syldan 592 . 2 ((𝜑 ∧ seq1( + , 𝐹) ∈ dom ⇝ ) → seq0( + , 𝐺) ∈ dom ⇝ )
109 1zzd 12558 . . . 4 ((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) → 1 ∈ ℤ)
11060adantr 480 . . . 4 ((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) → seq1( + , 𝐹):ℕ⟶ℝ)
111 elfznn 13507 . . . . . . 7 (𝑘 ∈ (1...(𝑗 + 1)) → 𝑘 ∈ ℕ)
11229, 111, 13syl2an 597 . . . . . 6 (((𝜑𝑗 ∈ ℕ) ∧ 𝑘 ∈ (1...(𝑗 + 1))) → (𝐹𝑘) ∈ ℝ)
113 simpll 767 . . . . . . 7 (((𝜑𝑗 ∈ ℕ) ∧ 𝑘 ∈ ((𝑗 + 1)...(𝑗 + 1))) → 𝜑)
114 peano2nn 12186 . . . . . . . . 9 (𝑗 ∈ ℕ → (𝑗 + 1) ∈ ℕ)
115114adantl 481 . . . . . . . 8 ((𝜑𝑗 ∈ ℕ) → (𝑗 + 1) ∈ ℕ)
116 elfz1eq 13489 . . . . . . . 8 (𝑘 ∈ ((𝑗 + 1)...(𝑗 + 1)) → 𝑘 = (𝑗 + 1))
117 eleq1 2824 . . . . . . . . 9 (𝑘 = (𝑗 + 1) → (𝑘 ∈ ℕ ↔ (𝑗 + 1) ∈ ℕ))
118117biimparc 479 . . . . . . . 8 (((𝑗 + 1) ∈ ℕ ∧ 𝑘 = (𝑗 + 1)) → 𝑘 ∈ ℕ)
119115, 116, 118syl2an 597 . . . . . . 7 (((𝜑𝑗 ∈ ℕ) ∧ 𝑘 ∈ ((𝑗 + 1)...(𝑗 + 1))) → 𝑘 ∈ ℕ)
120113, 119, 43syl2anc 585 . . . . . 6 (((𝜑𝑗 ∈ ℕ) ∧ 𝑘 ∈ ((𝑗 + 1)...(𝑗 + 1))) → 0 ≤ (𝐹𝑘))
12123, 28, 112, 120sermono 13996 . . . . 5 ((𝜑𝑗 ∈ ℕ) → (seq1( + , 𝐹)‘𝑗) ≤ (seq1( + , 𝐹)‘(𝑗 + 1)))
122121adantlr 716 . . . 4 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (seq1( + , 𝐹)‘𝑗) ≤ (seq1( + , 𝐹)‘(𝑗 + 1)))
123 0zd 12536 . . . . . 6 ((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) → 0 ∈ ℤ)
124 eqidd 2737 . . . . . 6 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑛 ∈ ℕ0) → (𝐺𝑛) = (𝐺𝑛))
12518adantlr 716 . . . . . 6 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑛 ∈ ℕ0) → (𝐺𝑛) ∈ ℝ)
126 simpr 484 . . . . . 6 ((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) → seq0( + , 𝐺) ∈ dom ⇝ )
127102, 123, 124, 125, 126isumrecl 15727 . . . . 5 ((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) → Σ𝑛 ∈ ℕ0 (𝐺𝑛) ∈ ℝ)
128110ffvelcdmda 7036 . . . . . . 7 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (seq1( + , 𝐹)‘𝑗) ∈ ℝ)
129 0zd 12536 . . . . . . . . . 10 (𝜑 → 0 ∈ ℤ)
130102, 129, 18serfre 13993 . . . . . . . . 9 (𝜑 → seq0( + , 𝐺):ℕ0⟶ℝ)
131130adantr 480 . . . . . . . 8 ((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) → seq0( + , 𝐺):ℕ0⟶ℝ)
132 ffvelcdm 7033 . . . . . . . 8 ((seq0( + , 𝐺):ℕ0⟶ℝ ∧ 𝑗 ∈ ℕ0) → (seq0( + , 𝐺)‘𝑗) ∈ ℝ)
133131, 35, 132syl2an 597 . . . . . . 7 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (seq0( + , 𝐺)‘𝑗) ∈ ℝ)
134127adantr 480 . . . . . . 7 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → Σ𝑛 ∈ ℕ0 (𝐺𝑛) ∈ ℝ)
135110adantr 480 . . . . . . . . 9 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → seq1( + , 𝐹):ℕ⟶ℝ)
136 simpr 484 . . . . . . . . . 10 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → 𝑗 ∈ ℕ)
13724adantl 481 . . . . . . . . . . 11 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → 𝑗 ∈ ℤ)
13837adantl 481 . . . . . . . . . . . . . 14 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (𝑗 + 1) ∈ ℕ0)
139138nn0red 12499 . . . . . . . . . . . . 13 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (𝑗 + 1) ∈ ℝ)
140 nnexpcl 14036 . . . . . . . . . . . . . . 15 ((2 ∈ ℕ ∧ (𝑗 + 1) ∈ ℕ0) → (2↑(𝑗 + 1)) ∈ ℕ)
1416, 138, 140sylancr 588 . . . . . . . . . . . . . 14 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (2↑(𝑗 + 1)) ∈ ℕ)
142141nnred 12189 . . . . . . . . . . . . 13 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (2↑(𝑗 + 1)) ∈ ℝ)
143 2z 12559 . . . . . . . . . . . . . . 15 2 ∈ ℤ
144 uzid 12803 . . . . . . . . . . . . . . 15 (2 ∈ ℤ → 2 ∈ (ℤ‘2))
145143, 144ax-mp 5 . . . . . . . . . . . . . 14 2 ∈ (ℤ‘2)
146 bernneq3 14193 . . . . . . . . . . . . . 14 ((2 ∈ (ℤ‘2) ∧ (𝑗 + 1) ∈ ℕ0) → (𝑗 + 1) < (2↑(𝑗 + 1)))
147145, 138, 146sylancr 588 . . . . . . . . . . . . 13 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (𝑗 + 1) < (2↑(𝑗 + 1)))
148139, 142, 147ltled 11294 . . . . . . . . . . . 12 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (𝑗 + 1) ≤ (2↑(𝑗 + 1)))
149137peano2zd 12636 . . . . . . . . . . . . 13 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (𝑗 + 1) ∈ ℤ)
150141nnzd 12550 . . . . . . . . . . . . 13 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (2↑(𝑗 + 1)) ∈ ℤ)
151 eluz 12802 . . . . . . . . . . . . 13 (((𝑗 + 1) ∈ ℤ ∧ (2↑(𝑗 + 1)) ∈ ℤ) → ((2↑(𝑗 + 1)) ∈ (ℤ‘(𝑗 + 1)) ↔ (𝑗 + 1) ≤ (2↑(𝑗 + 1))))
152149, 150, 151syl2anc 585 . . . . . . . . . . . 12 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → ((2↑(𝑗 + 1)) ∈ (ℤ‘(𝑗 + 1)) ↔ (𝑗 + 1) ≤ (2↑(𝑗 + 1))))
153148, 152mpbird 257 . . . . . . . . . . 11 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (2↑(𝑗 + 1)) ∈ (ℤ‘(𝑗 + 1)))
154 eluzp1m1 12814 . . . . . . . . . . 11 ((𝑗 ∈ ℤ ∧ (2↑(𝑗 + 1)) ∈ (ℤ‘(𝑗 + 1))) → ((2↑(𝑗 + 1)) − 1) ∈ (ℤ𝑗))
155137, 153, 154syl2anc 585 . . . . . . . . . 10 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → ((2↑(𝑗 + 1)) − 1) ∈ (ℤ𝑗))
156 eluznn 12868 . . . . . . . . . 10 ((𝑗 ∈ ℕ ∧ ((2↑(𝑗 + 1)) − 1) ∈ (ℤ𝑗)) → ((2↑(𝑗 + 1)) − 1) ∈ ℕ)
157136, 155, 156syl2anc 585 . . . . . . . . 9 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → ((2↑(𝑗 + 1)) − 1) ∈ ℕ)
158135, 157ffvelcdmd 7037 . . . . . . . 8 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (seq1( + , 𝐹)‘((2↑(𝑗 + 1)) − 1)) ∈ ℝ)
15923adantlr 716 . . . . . . . . 9 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → 𝑗 ∈ (ℤ‘1))
160 simpll 767 . . . . . . . . . 10 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → 𝜑)
161 elfznn 13507 . . . . . . . . . 10 (𝑘 ∈ (1...((2↑(𝑗 + 1)) − 1)) → 𝑘 ∈ ℕ)
162160, 161, 13syl2an 597 . . . . . . . . 9 ((((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) ∧ 𝑘 ∈ (1...((2↑(𝑗 + 1)) − 1))) → (𝐹𝑘) ∈ ℝ)
163114adantl 481 . . . . . . . . . . 11 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (𝑗 + 1) ∈ ℕ)
164 elfzuz 13474 . . . . . . . . . . 11 (𝑘 ∈ ((𝑗 + 1)...((2↑(𝑗 + 1)) − 1)) → 𝑘 ∈ (ℤ‘(𝑗 + 1)))
165 eluznn 12868 . . . . . . . . . . 11 (((𝑗 + 1) ∈ ℕ ∧ 𝑘 ∈ (ℤ‘(𝑗 + 1))) → 𝑘 ∈ ℕ)
166163, 164, 165syl2an 597 . . . . . . . . . 10 ((((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) ∧ 𝑘 ∈ ((𝑗 + 1)...((2↑(𝑗 + 1)) − 1))) → 𝑘 ∈ ℕ)
167160, 166, 43syl2an2r 686 . . . . . . . . 9 ((((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) ∧ 𝑘 ∈ ((𝑗 + 1)...((2↑(𝑗 + 1)) − 1))) → 0 ≤ (𝐹𝑘))
168159, 155, 162, 167sermono 13996 . . . . . . . 8 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (seq1( + , 𝐹)‘𝑗) ≤ (seq1( + , 𝐹)‘((2↑(𝑗 + 1)) − 1)))
16935adantl 481 . . . . . . . . 9 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → 𝑗 ∈ ℕ0)
17013, 43, 69, 5climcndslem1 15814 . . . . . . . . 9 ((𝜑𝑗 ∈ ℕ0) → (seq1( + , 𝐹)‘((2↑(𝑗 + 1)) − 1)) ≤ (seq0( + , 𝐺)‘𝑗))
171160, 169, 170syl2anc 585 . . . . . . . 8 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (seq1( + , 𝐹)‘((2↑(𝑗 + 1)) − 1)) ≤ (seq0( + , 𝐺)‘𝑗))
172128, 158, 133, 168, 171letrd 11303 . . . . . . 7 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (seq1( + , 𝐹)‘𝑗) ≤ (seq0( + , 𝐺)‘𝑗))
173 eqidd 2737 . . . . . . . . 9 ((((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) ∧ 𝑛 ∈ (0...𝑗)) → (𝐺𝑛) = (𝐺𝑛))
174169, 102eleqtrdi 2846 . . . . . . . . 9 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → 𝑗 ∈ (ℤ‘0))
175 elfznn0 13574 . . . . . . . . . 10 (𝑛 ∈ (0...𝑗) → 𝑛 ∈ ℕ0)
176160, 175, 105syl2an 597 . . . . . . . . 9 ((((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) ∧ 𝑛 ∈ (0...𝑗)) → (𝐺𝑛) ∈ ℂ)
177173, 174, 176fsumser 15692 . . . . . . . 8 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → Σ𝑛 ∈ (0...𝑗)(𝐺𝑛) = (seq0( + , 𝐺)‘𝑗))
178 0zd 12536 . . . . . . . . 9 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → 0 ∈ ℤ)
179 fzfid 13935 . . . . . . . . 9 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (0...𝑗) ∈ Fin)
180175ssriv 3925 . . . . . . . . . 10 (0...𝑗) ⊆ ℕ0
181180a1i 11 . . . . . . . . 9 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (0...𝑗) ⊆ ℕ0)
182 eqidd 2737 . . . . . . . . 9 ((((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) ∧ 𝑛 ∈ ℕ0) → (𝐺𝑛) = (𝐺𝑛))
18318ad4ant14 753 . . . . . . . . 9 ((((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) ∧ 𝑛 ∈ ℕ0) → (𝐺𝑛) ∈ ℝ)
18448ad4ant14 753 . . . . . . . . 9 ((((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) ∧ 𝑛 ∈ ℕ0) → 0 ≤ (𝐺𝑛))
185 simplr 769 . . . . . . . . 9 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → seq0( + , 𝐺) ∈ dom ⇝ )
186102, 178, 179, 181, 182, 183, 184, 185isumless 15810 . . . . . . . 8 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → Σ𝑛 ∈ (0...𝑗)(𝐺𝑛) ≤ Σ𝑛 ∈ ℕ0 (𝐺𝑛))
187177, 186eqbrtrrd 5109 . . . . . . 7 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (seq0( + , 𝐺)‘𝑗) ≤ Σ𝑛 ∈ ℕ0 (𝐺𝑛))
188128, 133, 134, 172, 187letrd 11303 . . . . . 6 (((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) ∧ 𝑗 ∈ ℕ) → (seq1( + , 𝐹)‘𝑗) ≤ Σ𝑛 ∈ ℕ0 (𝐺𝑛))
189188ralrimiva 3129 . . . . 5 ((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) → ∀𝑗 ∈ ℕ (seq1( + , 𝐹)‘𝑗) ≤ Σ𝑛 ∈ ℕ0 (𝐺𝑛))
190 brralrspcev 5145 . . . . 5 ((Σ𝑛 ∈ ℕ0 (𝐺𝑛) ∈ ℝ ∧ ∀𝑗 ∈ ℕ (seq1( + , 𝐹)‘𝑗) ≤ Σ𝑛 ∈ ℕ0 (𝐺𝑛)) → ∃𝑥 ∈ ℝ ∀𝑗 ∈ ℕ (seq1( + , 𝐹)‘𝑗) ≤ 𝑥)
191127, 189, 190syl2anc 585 . . . 4 ((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) → ∃𝑥 ∈ ℝ ∀𝑗 ∈ ℕ (seq1( + , 𝐹)‘𝑗) ≤ 𝑥)
1921, 109, 110, 122, 191climsup 15632 . . 3 ((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) → seq1( + , 𝐹) ⇝ sup(ran seq1( + , 𝐹), ℝ, < ))
19399releldmi 5903 . . 3 (seq1( + , 𝐹) ⇝ sup(ran seq1( + , 𝐹), ℝ, < ) → seq1( + , 𝐹) ∈ dom ⇝ )
194192, 193syl 17 . 2 ((𝜑 ∧ seq0( + , 𝐺) ∈ dom ⇝ ) → seq1( + , 𝐹) ∈ dom ⇝ )
195108, 194impbida 801 1 (𝜑 → (seq1( + , 𝐹) ∈ dom ⇝ ↔ seq0( + , 𝐺) ∈ dom ⇝ ))
Colors of variables: wff setvar class
Syntax hints:  wi 4  wb 206  wa 395   = wceq 1542  wcel 2114  wral 3051  wrex 3061  wss 3889   class class class wbr 5085  dom cdm 5631  ran crn 5632  wf 6494  cfv 6498  (class class class)co 7367  supcsup 9353  cc 11036  cr 11037  0cc0 11038  1c1 11039   + caddc 11041   · cmul 11043   < clt 11179  cle 11180  cmin 11377  cn 12174  2c2 12236  0cn0 12437  cz 12524  cuz 12788  +crp 12942  ...cfz 13461  seqcseq 13963  cexp 14023  cli 15446  Σcsu 15648
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1797  ax-4 1811  ax-5 1912  ax-6 1969  ax-7 2010  ax-8 2116  ax-9 2124  ax-10 2147  ax-11 2163  ax-12 2185  ax-ext 2708  ax-rep 5212  ax-sep 5231  ax-nul 5241  ax-pow 5307  ax-pr 5375  ax-un 7689  ax-inf2 9562  ax-cnex 11094  ax-resscn 11095  ax-1cn 11096  ax-icn 11097  ax-addcl 11098  ax-addrcl 11099  ax-mulcl 11100  ax-mulrcl 11101  ax-mulcom 11102  ax-addass 11103  ax-mulass 11104  ax-distr 11105  ax-i2m1 11106  ax-1ne0 11107  ax-1rid 11108  ax-rnegex 11109  ax-rrecex 11110  ax-cnre 11111  ax-pre-lttri 11112  ax-pre-lttrn 11113  ax-pre-ltadd 11114  ax-pre-mulgt0 11115  ax-pre-sup 11116
This theorem depends on definitions:  df-bi 207  df-an 396  df-or 849  df-3or 1088  df-3an 1089  df-tru 1545  df-fal 1555  df-ex 1782  df-nf 1786  df-sb 2069  df-mo 2539  df-eu 2569  df-clab 2715  df-cleq 2728  df-clel 2811  df-nfc 2885  df-ne 2933  df-nel 3037  df-ral 3052  df-rex 3062  df-rmo 3342  df-reu 3343  df-rab 3390  df-v 3431  df-sbc 3729  df-csb 3838  df-dif 3892  df-un 3894  df-in 3896  df-ss 3906  df-pss 3909  df-nul 4274  df-if 4467  df-pw 4543  df-sn 4568  df-pr 4570  df-op 4574  df-uni 4851  df-int 4890  df-iun 4935  df-br 5086  df-opab 5148  df-mpt 5167  df-tr 5193  df-id 5526  df-eprel 5531  df-po 5539  df-so 5540  df-fr 5584  df-se 5585  df-we 5586  df-xp 5637  df-rel 5638  df-cnv 5639  df-co 5640  df-dm 5641  df-rn 5642  df-res 5643  df-ima 5644  df-pred 6265  df-ord 6326  df-on 6327  df-lim 6328  df-suc 6329  df-iota 6454  df-fun 6500  df-fn 6501  df-f 6502  df-f1 6503  df-fo 6504  df-f1o 6505  df-fv 6506  df-isom 6507  df-riota 7324  df-ov 7370  df-oprab 7371  df-mpo 7372  df-om 7818  df-1st 7942  df-2nd 7943  df-frecs 8231  df-wrecs 8262  df-recs 8311  df-rdg 8349  df-1o 8405  df-oadd 8409  df-er 8643  df-pm 8776  df-en 8894  df-dom 8895  df-sdom 8896  df-fin 8897  df-sup 9355  df-inf 9356  df-oi 9425  df-dju 9825  df-card 9863  df-pnf 11181  df-mnf 11182  df-xr 11183  df-ltxr 11184  df-le 11185  df-sub 11379  df-neg 11380  df-div 11808  df-nn 12175  df-2 12244  df-3 12245  df-n0 12438  df-z 12525  df-uz 12789  df-rp 12943  df-ico 13304  df-fz 13462  df-fzo 13609  df-fl 13751  df-seq 13964  df-exp 14024  df-hash 14293  df-cj 15061  df-re 15062  df-im 15063  df-sqrt 15197  df-abs 15198  df-clim 15450  df-rlim 15451  df-sum 15649
This theorem is referenced by:  harmonic  15824  zetacvg  26978
  Copyright terms: Public domain W3C validator