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

Theorem iseralt 15667
Description: The alternating series test. If 𝐺(𝑘) is a decreasing sequence that converges to 0, then Σ𝑘𝑍(-1↑𝑘) · 𝐺(𝑘) is a convergent series. (Note that the first term is positive if 𝑀 is even, and negative if 𝑀 is odd. If the parity of your series does not match up with this, you will need to post-compose the series with multiplication by -1 using isermulc2 15640.) (Contributed by Mario Carneiro, 7-Apr-2015.) (Proof shortened by AV, 9-Jul-2022.)
Hypotheses
Ref Expression
iseralt.1 𝑍 = (ℤ𝑀)
iseralt.2 (𝜑𝑀 ∈ ℤ)
iseralt.3 (𝜑𝐺:𝑍⟶ℝ)
iseralt.4 ((𝜑𝑘𝑍) → (𝐺‘(𝑘 + 1)) ≤ (𝐺𝑘))
iseralt.5 (𝜑𝐺 ⇝ 0)
iseralt.6 ((𝜑𝑘𝑍) → (𝐹𝑘) = ((-1↑𝑘) · (𝐺𝑘)))
Assertion
Ref Expression
iseralt (𝜑 → seq𝑀( + , 𝐹) ∈ dom ⇝ )
Distinct variable groups:   𝑘,𝐹   𝑘,𝐺   𝑘,𝑀   𝜑,𝑘   𝑘,𝑍

Proof of Theorem iseralt
Dummy variables 𝑗 𝑛 𝑥 are mutually distinct and distinct from all other variables.
StepHypRef Expression
1 iseralt.1 . 2 𝑍 = (ℤ𝑀)
2 seqex 14004 . . 3 seq𝑀( + , 𝐹) ∈ V
32a1i 11 . 2 (𝜑 → seq𝑀( + , 𝐹) ∈ V)
4 iseralt.5 . . . 4 (𝜑𝐺 ⇝ 0)
5 iseralt.2 . . . . 5 (𝜑𝑀 ∈ ℤ)
6 climrel 15472 . . . . . . 7 Rel ⇝
76brrelex1i 5734 . . . . . 6 (𝐺 ⇝ 0 → 𝐺 ∈ V)
84, 7syl 17 . . . . 5 (𝜑𝐺 ∈ V)
9 eqidd 2726 . . . . 5 ((𝜑𝑛𝑍) → (𝐺𝑛) = (𝐺𝑛))
10 iseralt.3 . . . . . . 7 (𝜑𝐺:𝑍⟶ℝ)
1110ffvelcdmda 7093 . . . . . 6 ((𝜑𝑛𝑍) → (𝐺𝑛) ∈ ℝ)
1211recnd 11274 . . . . 5 ((𝜑𝑛𝑍) → (𝐺𝑛) ∈ ℂ)
131, 5, 8, 9, 12clim0c 15487 . . . 4 (𝜑 → (𝐺 ⇝ 0 ↔ ∀𝑥 ∈ ℝ+𝑗𝑍𝑛 ∈ (ℤ𝑗)(abs‘(𝐺𝑛)) < 𝑥))
144, 13mpbid 231 . . 3 (𝜑 → ∀𝑥 ∈ ℝ+𝑗𝑍𝑛 ∈ (ℤ𝑗)(abs‘(𝐺𝑛)) < 𝑥)
15 simpr 483 . . . . . . . . 9 (((𝜑𝑥 ∈ ℝ+) ∧ 𝑗𝑍) → 𝑗𝑍)
1615, 1eleqtrdi 2835 . . . . . . . 8 (((𝜑𝑥 ∈ ℝ+) ∧ 𝑗𝑍) → 𝑗 ∈ (ℤ𝑀))
17 eluzelz 12865 . . . . . . . 8 (𝑗 ∈ (ℤ𝑀) → 𝑗 ∈ ℤ)
18 uzid 12870 . . . . . . . 8 (𝑗 ∈ ℤ → 𝑗 ∈ (ℤ𝑗))
1916, 17, 183syl 18 . . . . . . 7 (((𝜑𝑥 ∈ ℝ+) ∧ 𝑗𝑍) → 𝑗 ∈ (ℤ𝑗))
20 peano2uz 12918 . . . . . . 7 (𝑗 ∈ (ℤ𝑗) → (𝑗 + 1) ∈ (ℤ𝑗))
21 2fveq3 6901 . . . . . . . . 9 (𝑛 = (𝑗 + 1) → (abs‘(𝐺𝑛)) = (abs‘(𝐺‘(𝑗 + 1))))
2221breq1d 5159 . . . . . . . 8 (𝑛 = (𝑗 + 1) → ((abs‘(𝐺𝑛)) < 𝑥 ↔ (abs‘(𝐺‘(𝑗 + 1))) < 𝑥))
2322rspcv 3602 . . . . . . 7 ((𝑗 + 1) ∈ (ℤ𝑗) → (∀𝑛 ∈ (ℤ𝑗)(abs‘(𝐺𝑛)) < 𝑥 → (abs‘(𝐺‘(𝑗 + 1))) < 𝑥))
2419, 20, 233syl 18 . . . . . 6 (((𝜑𝑥 ∈ ℝ+) ∧ 𝑗𝑍) → (∀𝑛 ∈ (ℤ𝑗)(abs‘(𝐺𝑛)) < 𝑥 → (abs‘(𝐺‘(𝑗 + 1))) < 𝑥))
25 eluzelz 12865 . . . . . . . . . . . . . . . . . . . . . . 23 (𝑛 ∈ (ℤ𝑗) → 𝑛 ∈ ℤ)
2625ad2antll 727 . . . . . . . . . . . . . . . . . . . . . 22 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → 𝑛 ∈ ℤ)
2726zcnd 12700 . . . . . . . . . . . . . . . . . . . . 21 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → 𝑛 ∈ ℂ)
2817, 1eleq2s 2843 . . . . . . . . . . . . . . . . . . . . . . 23 (𝑗𝑍𝑗 ∈ ℤ)
2928ad2antrl 726 . . . . . . . . . . . . . . . . . . . . . 22 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → 𝑗 ∈ ℤ)
3029zcnd 12700 . . . . . . . . . . . . . . . . . . . . 21 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → 𝑗 ∈ ℂ)
3127, 30subcld 11603 . . . . . . . . . . . . . . . . . . . 20 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → (𝑛𝑗) ∈ ℂ)
32 2cnd 12323 . . . . . . . . . . . . . . . . . . . 20 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → 2 ∈ ℂ)
33 2ne0 12349 . . . . . . . . . . . . . . . . . . . . 21 2 ≠ 0
3433a1i 11 . . . . . . . . . . . . . . . . . . . 20 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → 2 ≠ 0)
3531, 32, 34divcan2d 12025 . . . . . . . . . . . . . . . . . . 19 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → (2 · ((𝑛𝑗) / 2)) = (𝑛𝑗))
3635oveq2d 7435 . . . . . . . . . . . . . . . . . 18 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → (𝑗 + (2 · ((𝑛𝑗) / 2))) = (𝑗 + (𝑛𝑗)))
3730, 27pncan3d 11606 . . . . . . . . . . . . . . . . . 18 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → (𝑗 + (𝑛𝑗)) = 𝑛)
3836, 37eqtr2d 2766 . . . . . . . . . . . . . . . . 17 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → 𝑛 = (𝑗 + (2 · ((𝑛𝑗) / 2))))
3938adantr 479 . . . . . . . . . . . . . . . 16 (((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) ∧ ((𝑛𝑗) / 2) ∈ ℤ) → 𝑛 = (𝑗 + (2 · ((𝑛𝑗) / 2))))
4039fveq2d 6900 . . . . . . . . . . . . . . 15 (((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) ∧ ((𝑛𝑗) / 2) ∈ ℤ) → (seq𝑀( + , 𝐹)‘𝑛) = (seq𝑀( + , 𝐹)‘(𝑗 + (2 · ((𝑛𝑗) / 2)))))
4140fvoveq1d 7441 . . . . . . . . . . . . . 14 (((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) ∧ ((𝑛𝑗) / 2) ∈ ℤ) → (abs‘((seq𝑀( + , 𝐹)‘𝑛) − (seq𝑀( + , 𝐹)‘𝑗))) = (abs‘((seq𝑀( + , 𝐹)‘(𝑗 + (2 · ((𝑛𝑗) / 2)))) − (seq𝑀( + , 𝐹)‘𝑗))))
42 simpll 765 . . . . . . . . . . . . . . 15 (((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) ∧ ((𝑛𝑗) / 2) ∈ ℤ) → 𝜑)
43 simpl 481 . . . . . . . . . . . . . . . 16 ((𝑗𝑍𝑛 ∈ (ℤ𝑗)) → 𝑗𝑍)
4443ad2antlr 725 . . . . . . . . . . . . . . 15 (((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) ∧ ((𝑛𝑗) / 2) ∈ ℤ) → 𝑗𝑍)
45 simpr 483 . . . . . . . . . . . . . . . 16 (((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) ∧ ((𝑛𝑗) / 2) ∈ ℤ) → ((𝑛𝑗) / 2) ∈ ℤ)
4626, 29zsubcld 12704 . . . . . . . . . . . . . . . . . . 19 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → (𝑛𝑗) ∈ ℤ)
4746zred 12699 . . . . . . . . . . . . . . . . . 18 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → (𝑛𝑗) ∈ ℝ)
48 2rp 13014 . . . . . . . . . . . . . . . . . . 19 2 ∈ ℝ+
4948a1i 11 . . . . . . . . . . . . . . . . . 18 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → 2 ∈ ℝ+)
50 eluzle 12868 . . . . . . . . . . . . . . . . . . . 20 (𝑛 ∈ (ℤ𝑗) → 𝑗𝑛)
5150ad2antll 727 . . . . . . . . . . . . . . . . . . 19 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → 𝑗𝑛)
5226zred 12699 . . . . . . . . . . . . . . . . . . . 20 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → 𝑛 ∈ ℝ)
5329zred 12699 . . . . . . . . . . . . . . . . . . . 20 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → 𝑗 ∈ ℝ)
5452, 53subge0d 11836 . . . . . . . . . . . . . . . . . . 19 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → (0 ≤ (𝑛𝑗) ↔ 𝑗𝑛))
5551, 54mpbird 256 . . . . . . . . . . . . . . . . . 18 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → 0 ≤ (𝑛𝑗))
5647, 49, 55divge0d 13091 . . . . . . . . . . . . . . . . 17 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → 0 ≤ ((𝑛𝑗) / 2))
5756adantr 479 . . . . . . . . . . . . . . . 16 (((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) ∧ ((𝑛𝑗) / 2) ∈ ℤ) → 0 ≤ ((𝑛𝑗) / 2))
58 elnn0z 12604 . . . . . . . . . . . . . . . 16 (((𝑛𝑗) / 2) ∈ ℕ0 ↔ (((𝑛𝑗) / 2) ∈ ℤ ∧ 0 ≤ ((𝑛𝑗) / 2)))
5945, 57, 58sylanbrc 581 . . . . . . . . . . . . . . 15 (((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) ∧ ((𝑛𝑗) / 2) ∈ ℤ) → ((𝑛𝑗) / 2) ∈ ℕ0)
60 iseralt.4 . . . . . . . . . . . . . . . . 17 ((𝜑𝑘𝑍) → (𝐺‘(𝑘 + 1)) ≤ (𝐺𝑘))
61 iseralt.6 . . . . . . . . . . . . . . . . 17 ((𝜑𝑘𝑍) → (𝐹𝑘) = ((-1↑𝑘) · (𝐺𝑘)))
621, 5, 10, 60, 4, 61iseraltlem3 15666 . . . . . . . . . . . . . . . 16 ((𝜑𝑗𝑍 ∧ ((𝑛𝑗) / 2) ∈ ℕ0) → ((abs‘((seq𝑀( + , 𝐹)‘(𝑗 + (2 · ((𝑛𝑗) / 2)))) − (seq𝑀( + , 𝐹)‘𝑗))) ≤ (𝐺‘(𝑗 + 1)) ∧ (abs‘((seq𝑀( + , 𝐹)‘((𝑗 + (2 · ((𝑛𝑗) / 2))) + 1)) − (seq𝑀( + , 𝐹)‘𝑗))) ≤ (𝐺‘(𝑗 + 1))))
6362simpld 493 . . . . . . . . . . . . . . 15 ((𝜑𝑗𝑍 ∧ ((𝑛𝑗) / 2) ∈ ℕ0) → (abs‘((seq𝑀( + , 𝐹)‘(𝑗 + (2 · ((𝑛𝑗) / 2)))) − (seq𝑀( + , 𝐹)‘𝑗))) ≤ (𝐺‘(𝑗 + 1)))
6442, 44, 59, 63syl3anc 1368 . . . . . . . . . . . . . 14 (((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) ∧ ((𝑛𝑗) / 2) ∈ ℤ) → (abs‘((seq𝑀( + , 𝐹)‘(𝑗 + (2 · ((𝑛𝑗) / 2)))) − (seq𝑀( + , 𝐹)‘𝑗))) ≤ (𝐺‘(𝑗 + 1)))
6541, 64eqbrtrd 5171 . . . . . . . . . . . . 13 (((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) ∧ ((𝑛𝑗) / 2) ∈ ℤ) → (abs‘((seq𝑀( + , 𝐹)‘𝑛) − (seq𝑀( + , 𝐹)‘𝑗))) ≤ (𝐺‘(𝑗 + 1)))
66 2div2e1 12386 . . . . . . . . . . . . . . . . . . . . . . . . 25 (2 / 2) = 1
6766oveq2i 7430 . . . . . . . . . . . . . . . . . . . . . . . 24 ((((𝑛𝑗) + 1) / 2) − (2 / 2)) = ((((𝑛𝑗) + 1) / 2) − 1)
68 peano2cn 11418 . . . . . . . . . . . . . . . . . . . . . . . . . . 27 ((𝑛𝑗) ∈ ℂ → ((𝑛𝑗) + 1) ∈ ℂ)
6931, 68syl 17 . . . . . . . . . . . . . . . . . . . . . . . . . 26 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → ((𝑛𝑗) + 1) ∈ ℂ)
7069, 32, 32, 34divsubdird 12062 . . . . . . . . . . . . . . . . . . . . . . . . 25 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → ((((𝑛𝑗) + 1) − 2) / 2) = ((((𝑛𝑗) + 1) / 2) − (2 / 2)))
71 df-2 12308 . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2 = (1 + 1)
7271oveq2i 7430 . . . . . . . . . . . . . . . . . . . . . . . . . . 27 (((𝑛𝑗) + 1) − 2) = (((𝑛𝑗) + 1) − (1 + 1))
73 ax-1cn 11198 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 1 ∈ ℂ
7473a1i 11 . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → 1 ∈ ℂ)
7531, 74, 74pnpcan2d 11641 . . . . . . . . . . . . . . . . . . . . . . . . . . 27 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → (((𝑛𝑗) + 1) − (1 + 1)) = ((𝑛𝑗) − 1))
7672, 75eqtrid 2777 . . . . . . . . . . . . . . . . . . . . . . . . . 26 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → (((𝑛𝑗) + 1) − 2) = ((𝑛𝑗) − 1))
7776oveq1d 7434 . . . . . . . . . . . . . . . . . . . . . . . . 25 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → ((((𝑛𝑗) + 1) − 2) / 2) = (((𝑛𝑗) − 1) / 2))
7870, 77eqtr3d 2767 . . . . . . . . . . . . . . . . . . . . . . . 24 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → ((((𝑛𝑗) + 1) / 2) − (2 / 2)) = (((𝑛𝑗) − 1) / 2))
7967, 78eqtr3id 2779 . . . . . . . . . . . . . . . . . . . . . . 23 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → ((((𝑛𝑗) + 1) / 2) − 1) = (((𝑛𝑗) − 1) / 2))
8079oveq2d 7435 . . . . . . . . . . . . . . . . . . . . . 22 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → (2 · ((((𝑛𝑗) + 1) / 2) − 1)) = (2 · (((𝑛𝑗) − 1) / 2)))
81 subcl 11491 . . . . . . . . . . . . . . . . . . . . . . . 24 (((𝑛𝑗) ∈ ℂ ∧ 1 ∈ ℂ) → ((𝑛𝑗) − 1) ∈ ℂ)
8231, 73, 81sylancl 584 . . . . . . . . . . . . . . . . . . . . . . 23 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → ((𝑛𝑗) − 1) ∈ ℂ)
8382, 32, 34divcan2d 12025 . . . . . . . . . . . . . . . . . . . . . 22 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → (2 · (((𝑛𝑗) − 1) / 2)) = ((𝑛𝑗) − 1))
8427, 30, 74sub32d 11635 . . . . . . . . . . . . . . . . . . . . . 22 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → ((𝑛𝑗) − 1) = ((𝑛 − 1) − 𝑗))
8580, 83, 843eqtrd 2769 . . . . . . . . . . . . . . . . . . . . 21 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → (2 · ((((𝑛𝑗) + 1) / 2) − 1)) = ((𝑛 − 1) − 𝑗))
8685oveq2d 7435 . . . . . . . . . . . . . . . . . . . 20 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → (𝑗 + (2 · ((((𝑛𝑗) + 1) / 2) − 1))) = (𝑗 + ((𝑛 − 1) − 𝑗)))
87 subcl 11491 . . . . . . . . . . . . . . . . . . . . . 22 ((𝑛 ∈ ℂ ∧ 1 ∈ ℂ) → (𝑛 − 1) ∈ ℂ)
8827, 73, 87sylancl 584 . . . . . . . . . . . . . . . . . . . . 21 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → (𝑛 − 1) ∈ ℂ)
8930, 88pncan3d 11606 . . . . . . . . . . . . . . . . . . . 20 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → (𝑗 + ((𝑛 − 1) − 𝑗)) = (𝑛 − 1))
9086, 89eqtrd 2765 . . . . . . . . . . . . . . . . . . 19 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → (𝑗 + (2 · ((((𝑛𝑗) + 1) / 2) − 1))) = (𝑛 − 1))
9190oveq1d 7434 . . . . . . . . . . . . . . . . . 18 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → ((𝑗 + (2 · ((((𝑛𝑗) + 1) / 2) − 1))) + 1) = ((𝑛 − 1) + 1))
92 npcan 11501 . . . . . . . . . . . . . . . . . . 19 ((𝑛 ∈ ℂ ∧ 1 ∈ ℂ) → ((𝑛 − 1) + 1) = 𝑛)
9327, 73, 92sylancl 584 . . . . . . . . . . . . . . . . . 18 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → ((𝑛 − 1) + 1) = 𝑛)
9491, 93eqtr2d 2766 . . . . . . . . . . . . . . . . 17 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → 𝑛 = ((𝑗 + (2 · ((((𝑛𝑗) + 1) / 2) − 1))) + 1))
9594adantr 479 . . . . . . . . . . . . . . . 16 (((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) ∧ (((𝑛𝑗) + 1) / 2) ∈ ℤ) → 𝑛 = ((𝑗 + (2 · ((((𝑛𝑗) + 1) / 2) − 1))) + 1))
9695fveq2d 6900 . . . . . . . . . . . . . . 15 (((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) ∧ (((𝑛𝑗) + 1) / 2) ∈ ℤ) → (seq𝑀( + , 𝐹)‘𝑛) = (seq𝑀( + , 𝐹)‘((𝑗 + (2 · ((((𝑛𝑗) + 1) / 2) − 1))) + 1)))
9796fvoveq1d 7441 . . . . . . . . . . . . . 14 (((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) ∧ (((𝑛𝑗) + 1) / 2) ∈ ℤ) → (abs‘((seq𝑀( + , 𝐹)‘𝑛) − (seq𝑀( + , 𝐹)‘𝑗))) = (abs‘((seq𝑀( + , 𝐹)‘((𝑗 + (2 · ((((𝑛𝑗) + 1) / 2) − 1))) + 1)) − (seq𝑀( + , 𝐹)‘𝑗))))
98 simpll 765 . . . . . . . . . . . . . . 15 (((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) ∧ (((𝑛𝑗) + 1) / 2) ∈ ℤ) → 𝜑)
9943ad2antlr 725 . . . . . . . . . . . . . . 15 (((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) ∧ (((𝑛𝑗) + 1) / 2) ∈ ℤ) → 𝑗𝑍)
100 simpr 483 . . . . . . . . . . . . . . . . 17 (((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) ∧ (((𝑛𝑗) + 1) / 2) ∈ ℤ) → (((𝑛𝑗) + 1) / 2) ∈ ℤ)
101 uznn0sub 12894 . . . . . . . . . . . . . . . . . . . . . . 23 (𝑛 ∈ (ℤ𝑗) → (𝑛𝑗) ∈ ℕ0)
102101ad2antll 727 . . . . . . . . . . . . . . . . . . . . . 22 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → (𝑛𝑗) ∈ ℕ0)
103 nn0p1nn 12544 . . . . . . . . . . . . . . . . . . . . . 22 ((𝑛𝑗) ∈ ℕ0 → ((𝑛𝑗) + 1) ∈ ℕ)
104102, 103syl 17 . . . . . . . . . . . . . . . . . . . . 21 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → ((𝑛𝑗) + 1) ∈ ℕ)
105104nnrpd 13049 . . . . . . . . . . . . . . . . . . . 20 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → ((𝑛𝑗) + 1) ∈ ℝ+)
106105rphalfcld 13063 . . . . . . . . . . . . . . . . . . 19 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → (((𝑛𝑗) + 1) / 2) ∈ ℝ+)
107106rpgt0d 13054 . . . . . . . . . . . . . . . . . 18 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → 0 < (((𝑛𝑗) + 1) / 2))
108107adantr 479 . . . . . . . . . . . . . . . . 17 (((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) ∧ (((𝑛𝑗) + 1) / 2) ∈ ℤ) → 0 < (((𝑛𝑗) + 1) / 2))
109 elnnz 12601 . . . . . . . . . . . . . . . . 17 ((((𝑛𝑗) + 1) / 2) ∈ ℕ ↔ ((((𝑛𝑗) + 1) / 2) ∈ ℤ ∧ 0 < (((𝑛𝑗) + 1) / 2)))
110100, 108, 109sylanbrc 581 . . . . . . . . . . . . . . . 16 (((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) ∧ (((𝑛𝑗) + 1) / 2) ∈ ℤ) → (((𝑛𝑗) + 1) / 2) ∈ ℕ)
111 nnm1nn0 12546 . . . . . . . . . . . . . . . 16 ((((𝑛𝑗) + 1) / 2) ∈ ℕ → ((((𝑛𝑗) + 1) / 2) − 1) ∈ ℕ0)
112110, 111syl 17 . . . . . . . . . . . . . . 15 (((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) ∧ (((𝑛𝑗) + 1) / 2) ∈ ℤ) → ((((𝑛𝑗) + 1) / 2) − 1) ∈ ℕ0)
1131, 5, 10, 60, 4, 61iseraltlem3 15666 . . . . . . . . . . . . . . . 16 ((𝜑𝑗𝑍 ∧ ((((𝑛𝑗) + 1) / 2) − 1) ∈ ℕ0) → ((abs‘((seq𝑀( + , 𝐹)‘(𝑗 + (2 · ((((𝑛𝑗) + 1) / 2) − 1)))) − (seq𝑀( + , 𝐹)‘𝑗))) ≤ (𝐺‘(𝑗 + 1)) ∧ (abs‘((seq𝑀( + , 𝐹)‘((𝑗 + (2 · ((((𝑛𝑗) + 1) / 2) − 1))) + 1)) − (seq𝑀( + , 𝐹)‘𝑗))) ≤ (𝐺‘(𝑗 + 1))))
114113simprd 494 . . . . . . . . . . . . . . 15 ((𝜑𝑗𝑍 ∧ ((((𝑛𝑗) + 1) / 2) − 1) ∈ ℕ0) → (abs‘((seq𝑀( + , 𝐹)‘((𝑗 + (2 · ((((𝑛𝑗) + 1) / 2) − 1))) + 1)) − (seq𝑀( + , 𝐹)‘𝑗))) ≤ (𝐺‘(𝑗 + 1)))
11598, 99, 112, 114syl3anc 1368 . . . . . . . . . . . . . 14 (((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) ∧ (((𝑛𝑗) + 1) / 2) ∈ ℤ) → (abs‘((seq𝑀( + , 𝐹)‘((𝑗 + (2 · ((((𝑛𝑗) + 1) / 2) − 1))) + 1)) − (seq𝑀( + , 𝐹)‘𝑗))) ≤ (𝐺‘(𝑗 + 1)))
11697, 115eqbrtrd 5171 . . . . . . . . . . . . 13 (((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) ∧ (((𝑛𝑗) + 1) / 2) ∈ ℤ) → (abs‘((seq𝑀( + , 𝐹)‘𝑛) − (seq𝑀( + , 𝐹)‘𝑗))) ≤ (𝐺‘(𝑗 + 1)))
117 zeo 12681 . . . . . . . . . . . . . 14 ((𝑛𝑗) ∈ ℤ → (((𝑛𝑗) / 2) ∈ ℤ ∨ (((𝑛𝑗) + 1) / 2) ∈ ℤ))
11846, 117syl 17 . . . . . . . . . . . . 13 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → (((𝑛𝑗) / 2) ∈ ℤ ∨ (((𝑛𝑗) + 1) / 2) ∈ ℤ))
11965, 116, 118mpjaodan 956 . . . . . . . . . . . 12 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → (abs‘((seq𝑀( + , 𝐹)‘𝑛) − (seq𝑀( + , 𝐹)‘𝑗))) ≤ (𝐺‘(𝑗 + 1)))
1201peano2uzs 12919 . . . . . . . . . . . . . . 15 (𝑗𝑍 → (𝑗 + 1) ∈ 𝑍)
121120adantr 479 . . . . . . . . . . . . . 14 ((𝑗𝑍𝑛 ∈ (ℤ𝑗)) → (𝑗 + 1) ∈ 𝑍)
122 ffvelcdm 7090 . . . . . . . . . . . . . 14 ((𝐺:𝑍⟶ℝ ∧ (𝑗 + 1) ∈ 𝑍) → (𝐺‘(𝑗 + 1)) ∈ ℝ)
12310, 121, 122syl2an 594 . . . . . . . . . . . . 13 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → (𝐺‘(𝑗 + 1)) ∈ ℝ)
1241, 5, 10, 60, 4iseraltlem1 15664 . . . . . . . . . . . . . 14 ((𝜑 ∧ (𝑗 + 1) ∈ 𝑍) → 0 ≤ (𝐺‘(𝑗 + 1)))
125121, 124sylan2 591 . . . . . . . . . . . . 13 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → 0 ≤ (𝐺‘(𝑗 + 1)))
126123, 125absidd 15405 . . . . . . . . . . . 12 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → (abs‘(𝐺‘(𝑗 + 1))) = (𝐺‘(𝑗 + 1)))
127119, 126breqtrrd 5177 . . . . . . . . . . 11 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → (abs‘((seq𝑀( + , 𝐹)‘𝑛) − (seq𝑀( + , 𝐹)‘𝑗))) ≤ (abs‘(𝐺‘(𝑗 + 1))))
128127adantlr 713 . . . . . . . . . 10 (((𝜑𝑥 ∈ ℝ+) ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → (abs‘((seq𝑀( + , 𝐹)‘𝑛) − (seq𝑀( + , 𝐹)‘𝑗))) ≤ (abs‘(𝐺‘(𝑗 + 1))))
129 neg1rr 12360 . . . . . . . . . . . . . . . . . . . . 21 -1 ∈ ℝ
130129a1i 11 . . . . . . . . . . . . . . . . . . . 20 ((𝜑𝑘𝑍) → -1 ∈ ℝ)
131 neg1ne0 12361 . . . . . . . . . . . . . . . . . . . . 21 -1 ≠ 0
132131a1i 11 . . . . . . . . . . . . . . . . . . . 20 ((𝜑𝑘𝑍) → -1 ≠ 0)
133 eluzelz 12865 . . . . . . . . . . . . . . . . . . . . . 22 (𝑘 ∈ (ℤ𝑀) → 𝑘 ∈ ℤ)
134133, 1eleq2s 2843 . . . . . . . . . . . . . . . . . . . . 21 (𝑘𝑍𝑘 ∈ ℤ)
135134adantl 480 . . . . . . . . . . . . . . . . . . . 20 ((𝜑𝑘𝑍) → 𝑘 ∈ ℤ)
136130, 132, 135reexpclzd 14247 . . . . . . . . . . . . . . . . . . 19 ((𝜑𝑘𝑍) → (-1↑𝑘) ∈ ℝ)
13710ffvelcdmda 7093 . . . . . . . . . . . . . . . . . . 19 ((𝜑𝑘𝑍) → (𝐺𝑘) ∈ ℝ)
138136, 137remulcld 11276 . . . . . . . . . . . . . . . . . 18 ((𝜑𝑘𝑍) → ((-1↑𝑘) · (𝐺𝑘)) ∈ ℝ)
13961, 138eqeltrd 2825 . . . . . . . . . . . . . . . . 17 ((𝜑𝑘𝑍) → (𝐹𝑘) ∈ ℝ)
1401, 5, 139serfre 14032 . . . . . . . . . . . . . . . 16 (𝜑 → seq𝑀( + , 𝐹):𝑍⟶ℝ)
1411uztrn2 12874 . . . . . . . . . . . . . . . 16 ((𝑗𝑍𝑛 ∈ (ℤ𝑗)) → 𝑛𝑍)
142 ffvelcdm 7090 . . . . . . . . . . . . . . . 16 ((seq𝑀( + , 𝐹):𝑍⟶ℝ ∧ 𝑛𝑍) → (seq𝑀( + , 𝐹)‘𝑛) ∈ ℝ)
143140, 141, 142syl2an 594 . . . . . . . . . . . . . . 15 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → (seq𝑀( + , 𝐹)‘𝑛) ∈ ℝ)
144 ffvelcdm 7090 . . . . . . . . . . . . . . . 16 ((seq𝑀( + , 𝐹):𝑍⟶ℝ ∧ 𝑗𝑍) → (seq𝑀( + , 𝐹)‘𝑗) ∈ ℝ)
145140, 43, 144syl2an 594 . . . . . . . . . . . . . . 15 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → (seq𝑀( + , 𝐹)‘𝑗) ∈ ℝ)
146143, 145resubcld 11674 . . . . . . . . . . . . . 14 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → ((seq𝑀( + , 𝐹)‘𝑛) − (seq𝑀( + , 𝐹)‘𝑗)) ∈ ℝ)
147146recnd 11274 . . . . . . . . . . . . 13 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → ((seq𝑀( + , 𝐹)‘𝑛) − (seq𝑀( + , 𝐹)‘𝑗)) ∈ ℂ)
148147abscld 15419 . . . . . . . . . . . 12 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → (abs‘((seq𝑀( + , 𝐹)‘𝑛) − (seq𝑀( + , 𝐹)‘𝑗))) ∈ ℝ)
149148adantlr 713 . . . . . . . . . . 11 (((𝜑𝑥 ∈ ℝ+) ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → (abs‘((seq𝑀( + , 𝐹)‘𝑛) − (seq𝑀( + , 𝐹)‘𝑗))) ∈ ℝ)
150126, 123eqeltrd 2825 . . . . . . . . . . . 12 ((𝜑 ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → (abs‘(𝐺‘(𝑗 + 1))) ∈ ℝ)
151150adantlr 713 . . . . . . . . . . 11 (((𝜑𝑥 ∈ ℝ+) ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → (abs‘(𝐺‘(𝑗 + 1))) ∈ ℝ)
152 rpre 13017 . . . . . . . . . . . 12 (𝑥 ∈ ℝ+𝑥 ∈ ℝ)
153152ad2antlr 725 . . . . . . . . . . 11 (((𝜑𝑥 ∈ ℝ+) ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → 𝑥 ∈ ℝ)
154 lelttr 11336 . . . . . . . . . . 11 (((abs‘((seq𝑀( + , 𝐹)‘𝑛) − (seq𝑀( + , 𝐹)‘𝑗))) ∈ ℝ ∧ (abs‘(𝐺‘(𝑗 + 1))) ∈ ℝ ∧ 𝑥 ∈ ℝ) → (((abs‘((seq𝑀( + , 𝐹)‘𝑛) − (seq𝑀( + , 𝐹)‘𝑗))) ≤ (abs‘(𝐺‘(𝑗 + 1))) ∧ (abs‘(𝐺‘(𝑗 + 1))) < 𝑥) → (abs‘((seq𝑀( + , 𝐹)‘𝑛) − (seq𝑀( + , 𝐹)‘𝑗))) < 𝑥))
155149, 151, 153, 154syl3anc 1368 . . . . . . . . . 10 (((𝜑𝑥 ∈ ℝ+) ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → (((abs‘((seq𝑀( + , 𝐹)‘𝑛) − (seq𝑀( + , 𝐹)‘𝑗))) ≤ (abs‘(𝐺‘(𝑗 + 1))) ∧ (abs‘(𝐺‘(𝑗 + 1))) < 𝑥) → (abs‘((seq𝑀( + , 𝐹)‘𝑛) − (seq𝑀( + , 𝐹)‘𝑗))) < 𝑥))
156128, 155mpand 693 . . . . . . . . 9 (((𝜑𝑥 ∈ ℝ+) ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → ((abs‘(𝐺‘(𝑗 + 1))) < 𝑥 → (abs‘((seq𝑀( + , 𝐹)‘𝑛) − (seq𝑀( + , 𝐹)‘𝑗))) < 𝑥))
157140adantr 479 . . . . . . . . . 10 ((𝜑𝑥 ∈ ℝ+) → seq𝑀( + , 𝐹):𝑍⟶ℝ)
158157, 141, 142syl2an 594 . . . . . . . . 9 (((𝜑𝑥 ∈ ℝ+) ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → (seq𝑀( + , 𝐹)‘𝑛) ∈ ℝ)
159156, 158jctild 524 . . . . . . . 8 (((𝜑𝑥 ∈ ℝ+) ∧ (𝑗𝑍𝑛 ∈ (ℤ𝑗))) → ((abs‘(𝐺‘(𝑗 + 1))) < 𝑥 → ((seq𝑀( + , 𝐹)‘𝑛) ∈ ℝ ∧ (abs‘((seq𝑀( + , 𝐹)‘𝑛) − (seq𝑀( + , 𝐹)‘𝑗))) < 𝑥)))
160159anassrs 466 . . . . . . 7 ((((𝜑𝑥 ∈ ℝ+) ∧ 𝑗𝑍) ∧ 𝑛 ∈ (ℤ𝑗)) → ((abs‘(𝐺‘(𝑗 + 1))) < 𝑥 → ((seq𝑀( + , 𝐹)‘𝑛) ∈ ℝ ∧ (abs‘((seq𝑀( + , 𝐹)‘𝑛) − (seq𝑀( + , 𝐹)‘𝑗))) < 𝑥)))
161160ralrimdva 3143 . . . . . 6 (((𝜑𝑥 ∈ ℝ+) ∧ 𝑗𝑍) → ((abs‘(𝐺‘(𝑗 + 1))) < 𝑥 → ∀𝑛 ∈ (ℤ𝑗)((seq𝑀( + , 𝐹)‘𝑛) ∈ ℝ ∧ (abs‘((seq𝑀( + , 𝐹)‘𝑛) − (seq𝑀( + , 𝐹)‘𝑗))) < 𝑥)))
16224, 161syld 47 . . . . 5 (((𝜑𝑥 ∈ ℝ+) ∧ 𝑗𝑍) → (∀𝑛 ∈ (ℤ𝑗)(abs‘(𝐺𝑛)) < 𝑥 → ∀𝑛 ∈ (ℤ𝑗)((seq𝑀( + , 𝐹)‘𝑛) ∈ ℝ ∧ (abs‘((seq𝑀( + , 𝐹)‘𝑛) − (seq𝑀( + , 𝐹)‘𝑗))) < 𝑥)))
163162reximdva 3157 . . . 4 ((𝜑𝑥 ∈ ℝ+) → (∃𝑗𝑍𝑛 ∈ (ℤ𝑗)(abs‘(𝐺𝑛)) < 𝑥 → ∃𝑗𝑍𝑛 ∈ (ℤ𝑗)((seq𝑀( + , 𝐹)‘𝑛) ∈ ℝ ∧ (abs‘((seq𝑀( + , 𝐹)‘𝑛) − (seq𝑀( + , 𝐹)‘𝑗))) < 𝑥)))
164163ralimdva 3156 . . 3 (𝜑 → (∀𝑥 ∈ ℝ+𝑗𝑍𝑛 ∈ (ℤ𝑗)(abs‘(𝐺𝑛)) < 𝑥 → ∀𝑥 ∈ ℝ+𝑗𝑍𝑛 ∈ (ℤ𝑗)((seq𝑀( + , 𝐹)‘𝑛) ∈ ℝ ∧ (abs‘((seq𝑀( + , 𝐹)‘𝑛) − (seq𝑀( + , 𝐹)‘𝑗))) < 𝑥)))
16514, 164mpd 15 . 2 (𝜑 → ∀𝑥 ∈ ℝ+𝑗𝑍𝑛 ∈ (ℤ𝑗)((seq𝑀( + , 𝐹)‘𝑛) ∈ ℝ ∧ (abs‘((seq𝑀( + , 𝐹)‘𝑛) − (seq𝑀( + , 𝐹)‘𝑗))) < 𝑥))
1661, 3, 165caurcvg2 15660 1 (𝜑 → seq𝑀( + , 𝐹) ∈ dom ⇝ )
Colors of variables: wff setvar class
Syntax hints:  wi 4  wa 394  wo 845  w3a 1084   = wceq 1533  wcel 2098  wne 2929  wral 3050  wrex 3059  Vcvv 3461   class class class wbr 5149  dom cdm 5678  wf 6545  cfv 6549  (class class class)co 7419  cc 11138  cr 11139  0cc0 11140  1c1 11141   + caddc 11143   · cmul 11145   < clt 11280  cle 11281  cmin 11476  -cneg 11477   / cdiv 11903  cn 12245  2c2 12300  0cn0 12505  cz 12591  cuz 12855  +crp 13009  seqcseq 14002  cexp 14062  abscabs 15217  cli 15464
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1789  ax-4 1803  ax-5 1905  ax-6 1963  ax-7 2003  ax-8 2100  ax-9 2108  ax-10 2129  ax-11 2146  ax-12 2166  ax-ext 2696  ax-rep 5286  ax-sep 5300  ax-nul 5307  ax-pow 5365  ax-pr 5429  ax-un 7741  ax-inf2 9666  ax-cnex 11196  ax-resscn 11197  ax-1cn 11198  ax-icn 11199  ax-addcl 11200  ax-addrcl 11201  ax-mulcl 11202  ax-mulrcl 11203  ax-mulcom 11204  ax-addass 11205  ax-mulass 11206  ax-distr 11207  ax-i2m1 11208  ax-1ne0 11209  ax-1rid 11210  ax-rnegex 11211  ax-rrecex 11212  ax-cnre 11213  ax-pre-lttri 11214  ax-pre-lttrn 11215  ax-pre-ltadd 11216  ax-pre-mulgt0 11217  ax-pre-sup 11218
This theorem depends on definitions:  df-bi 206  df-an 395  df-or 846  df-3or 1085  df-3an 1086  df-tru 1536  df-fal 1546  df-ex 1774  df-nf 1778  df-sb 2060  df-mo 2528  df-eu 2557  df-clab 2703  df-cleq 2717  df-clel 2802  df-nfc 2877  df-ne 2930  df-nel 3036  df-ral 3051  df-rex 3060  df-rmo 3363  df-reu 3364  df-rab 3419  df-v 3463  df-sbc 3774  df-csb 3890  df-dif 3947  df-un 3949  df-in 3951  df-ss 3961  df-pss 3964  df-nul 4323  df-if 4531  df-pw 4606  df-sn 4631  df-pr 4633  df-op 4637  df-uni 4910  df-iun 4999  df-br 5150  df-opab 5212  df-mpt 5233  df-tr 5267  df-id 5576  df-eprel 5582  df-po 5590  df-so 5591  df-fr 5633  df-we 5635  df-xp 5684  df-rel 5685  df-cnv 5686  df-co 5687  df-dm 5688  df-rn 5689  df-res 5690  df-ima 5691  df-pred 6307  df-ord 6374  df-on 6375  df-lim 6376  df-suc 6377  df-iota 6501  df-fun 6551  df-fn 6552  df-f 6553  df-f1 6554  df-fo 6555  df-f1o 6556  df-fv 6557  df-riota 7375  df-ov 7422  df-oprab 7423  df-mpo 7424  df-om 7872  df-1st 7994  df-2nd 7995  df-frecs 8287  df-wrecs 8318  df-recs 8392  df-rdg 8431  df-er 8725  df-pm 8848  df-en 8965  df-dom 8966  df-sdom 8967  df-sup 9467  df-inf 9468  df-pnf 11282  df-mnf 11283  df-xr 11284  df-ltxr 11285  df-le 11286  df-sub 11478  df-neg 11479  df-div 11904  df-nn 12246  df-2 12308  df-3 12309  df-n0 12506  df-z 12592  df-uz 12856  df-rp 13010  df-ico 13365  df-fz 13520  df-fl 13793  df-seq 14003  df-exp 14063  df-cj 15082  df-re 15083  df-im 15084  df-sqrt 15218  df-abs 15219  df-limsup 15451  df-clim 15468  df-rlim 15469
This theorem is referenced by:  leibpi  26919
  Copyright terms: Public domain W3C validator