![]() |
Mathbox for Glauco Siliprandi |
< Previous
Next >
Nearby theorems |
|
Mirrors > Home > MPE Home > Th. List > Mathboxes > vonn0icc2 | Structured version Visualization version GIF version |
Description: The n-dimensional Lebesgue measure of a closed interval, when the dimension of the space is nonzero. This is the second statement in Proposition 115G (d) of [Fremlin1] p. 32. (Contributed by Glauco Siliprandi, 8-Apr-2021.) |
Ref | Expression |
---|---|
vonn0icc2.k | ⊢ Ⅎ𝑘𝜑 |
vonn0icc2.x | ⊢ (𝜑 → 𝑋 ∈ Fin) |
vonn0icc2.n | ⊢ (𝜑 → 𝑋 ≠ ∅) |
vonn0icc2.a | ⊢ ((𝜑 ∧ 𝑘 ∈ 𝑋) → 𝐴 ∈ ℝ) |
vonn0icc2.b | ⊢ ((𝜑 ∧ 𝑘 ∈ 𝑋) → 𝐵 ∈ ℝ) |
vonn0icc2.i | ⊢ 𝐼 = X𝑘 ∈ 𝑋 (𝐴[,]𝐵) |
Ref | Expression |
---|---|
vonn0icc2 | ⊢ (𝜑 → ((voln‘𝑋)‘𝐼) = ∏𝑘 ∈ 𝑋 (vol‘(𝐴[,]𝐵))) |
Step | Hyp | Ref | Expression |
---|---|---|---|
1 | vonn0icc2.i | . . . . 5 ⊢ 𝐼 = X𝑘 ∈ 𝑋 (𝐴[,]𝐵) | |
2 | 1 | a1i 11 | . . . 4 ⊢ (𝜑 → 𝐼 = X𝑘 ∈ 𝑋 (𝐴[,]𝐵)) |
3 | simpr 486 | . . . . . . . 8 ⊢ ((𝜑 ∧ 𝑗 ∈ 𝑋) → 𝑗 ∈ 𝑋) | |
4 | vonn0icc2.k | . . . . . . . . . . 11 ⊢ Ⅎ𝑘𝜑 | |
5 | nfv 1918 | . . . . . . . . . . 11 ⊢ Ⅎ𝑘 𝑗 ∈ 𝑋 | |
6 | 4, 5 | nfan 1903 | . . . . . . . . . 10 ⊢ Ⅎ𝑘(𝜑 ∧ 𝑗 ∈ 𝑋) |
7 | nfcsb1v 3916 | . . . . . . . . . . 11 ⊢ Ⅎ𝑘⦋𝑗 / 𝑘⦌𝐴 | |
8 | nfcv 2904 | . . . . . . . . . . 11 ⊢ Ⅎ𝑘ℝ | |
9 | 7, 8 | nfel 2918 | . . . . . . . . . 10 ⊢ Ⅎ𝑘⦋𝑗 / 𝑘⦌𝐴 ∈ ℝ |
10 | 6, 9 | nfim 1900 | . . . . . . . . 9 ⊢ Ⅎ𝑘((𝜑 ∧ 𝑗 ∈ 𝑋) → ⦋𝑗 / 𝑘⦌𝐴 ∈ ℝ) |
11 | eleq1w 2817 | . . . . . . . . . . 11 ⊢ (𝑘 = 𝑗 → (𝑘 ∈ 𝑋 ↔ 𝑗 ∈ 𝑋)) | |
12 | 11 | anbi2d 630 | . . . . . . . . . 10 ⊢ (𝑘 = 𝑗 → ((𝜑 ∧ 𝑘 ∈ 𝑋) ↔ (𝜑 ∧ 𝑗 ∈ 𝑋))) |
13 | csbeq1a 3905 | . . . . . . . . . . 11 ⊢ (𝑘 = 𝑗 → 𝐴 = ⦋𝑗 / 𝑘⦌𝐴) | |
14 | 13 | eleq1d 2819 | . . . . . . . . . 10 ⊢ (𝑘 = 𝑗 → (𝐴 ∈ ℝ ↔ ⦋𝑗 / 𝑘⦌𝐴 ∈ ℝ)) |
15 | 12, 14 | imbi12d 345 | . . . . . . . . 9 ⊢ (𝑘 = 𝑗 → (((𝜑 ∧ 𝑘 ∈ 𝑋) → 𝐴 ∈ ℝ) ↔ ((𝜑 ∧ 𝑗 ∈ 𝑋) → ⦋𝑗 / 𝑘⦌𝐴 ∈ ℝ))) |
16 | vonn0icc2.a | . . . . . . . . 9 ⊢ ((𝜑 ∧ 𝑘 ∈ 𝑋) → 𝐴 ∈ ℝ) | |
17 | 10, 15, 16 | chvarfv 2234 | . . . . . . . 8 ⊢ ((𝜑 ∧ 𝑗 ∈ 𝑋) → ⦋𝑗 / 𝑘⦌𝐴 ∈ ℝ) |
18 | eqid 2733 | . . . . . . . . 9 ⊢ (𝑘 ∈ 𝑋 ↦ 𝐴) = (𝑘 ∈ 𝑋 ↦ 𝐴) | |
19 | 18 | fvmpts 6990 | . . . . . . . 8 ⊢ ((𝑗 ∈ 𝑋 ∧ ⦋𝑗 / 𝑘⦌𝐴 ∈ ℝ) → ((𝑘 ∈ 𝑋 ↦ 𝐴)‘𝑗) = ⦋𝑗 / 𝑘⦌𝐴) |
20 | 3, 17, 19 | syl2anc 585 | . . . . . . 7 ⊢ ((𝜑 ∧ 𝑗 ∈ 𝑋) → ((𝑘 ∈ 𝑋 ↦ 𝐴)‘𝑗) = ⦋𝑗 / 𝑘⦌𝐴) |
21 | nfcsb1v 3916 | . . . . . . . . . . 11 ⊢ Ⅎ𝑘⦋𝑗 / 𝑘⦌𝐵 | |
22 | 21, 8 | nfel 2918 | . . . . . . . . . 10 ⊢ Ⅎ𝑘⦋𝑗 / 𝑘⦌𝐵 ∈ ℝ |
23 | 6, 22 | nfim 1900 | . . . . . . . . 9 ⊢ Ⅎ𝑘((𝜑 ∧ 𝑗 ∈ 𝑋) → ⦋𝑗 / 𝑘⦌𝐵 ∈ ℝ) |
24 | csbeq1a 3905 | . . . . . . . . . . 11 ⊢ (𝑘 = 𝑗 → 𝐵 = ⦋𝑗 / 𝑘⦌𝐵) | |
25 | 24 | eleq1d 2819 | . . . . . . . . . 10 ⊢ (𝑘 = 𝑗 → (𝐵 ∈ ℝ ↔ ⦋𝑗 / 𝑘⦌𝐵 ∈ ℝ)) |
26 | 12, 25 | imbi12d 345 | . . . . . . . . 9 ⊢ (𝑘 = 𝑗 → (((𝜑 ∧ 𝑘 ∈ 𝑋) → 𝐵 ∈ ℝ) ↔ ((𝜑 ∧ 𝑗 ∈ 𝑋) → ⦋𝑗 / 𝑘⦌𝐵 ∈ ℝ))) |
27 | vonn0icc2.b | . . . . . . . . 9 ⊢ ((𝜑 ∧ 𝑘 ∈ 𝑋) → 𝐵 ∈ ℝ) | |
28 | 23, 26, 27 | chvarfv 2234 | . . . . . . . 8 ⊢ ((𝜑 ∧ 𝑗 ∈ 𝑋) → ⦋𝑗 / 𝑘⦌𝐵 ∈ ℝ) |
29 | eqid 2733 | . . . . . . . . 9 ⊢ (𝑘 ∈ 𝑋 ↦ 𝐵) = (𝑘 ∈ 𝑋 ↦ 𝐵) | |
30 | 29 | fvmpts 6990 | . . . . . . . 8 ⊢ ((𝑗 ∈ 𝑋 ∧ ⦋𝑗 / 𝑘⦌𝐵 ∈ ℝ) → ((𝑘 ∈ 𝑋 ↦ 𝐵)‘𝑗) = ⦋𝑗 / 𝑘⦌𝐵) |
31 | 3, 28, 30 | syl2anc 585 | . . . . . . 7 ⊢ ((𝜑 ∧ 𝑗 ∈ 𝑋) → ((𝑘 ∈ 𝑋 ↦ 𝐵)‘𝑗) = ⦋𝑗 / 𝑘⦌𝐵) |
32 | 20, 31 | oveq12d 7414 | . . . . . 6 ⊢ ((𝜑 ∧ 𝑗 ∈ 𝑋) → (((𝑘 ∈ 𝑋 ↦ 𝐴)‘𝑗)[,]((𝑘 ∈ 𝑋 ↦ 𝐵)‘𝑗)) = (⦋𝑗 / 𝑘⦌𝐴[,]⦋𝑗 / 𝑘⦌𝐵)) |
33 | 32 | ixpeq2dva 8894 | . . . . 5 ⊢ (𝜑 → X𝑗 ∈ 𝑋 (((𝑘 ∈ 𝑋 ↦ 𝐴)‘𝑗)[,]((𝑘 ∈ 𝑋 ↦ 𝐵)‘𝑗)) = X𝑗 ∈ 𝑋 (⦋𝑗 / 𝑘⦌𝐴[,]⦋𝑗 / 𝑘⦌𝐵)) |
34 | nfcv 2904 | . . . . . . . 8 ⊢ Ⅎ𝑘[,] | |
35 | 7, 34, 21 | nfov 7426 | . . . . . . 7 ⊢ Ⅎ𝑘(⦋𝑗 / 𝑘⦌𝐴[,]⦋𝑗 / 𝑘⦌𝐵) |
36 | nfcv 2904 | . . . . . . 7 ⊢ Ⅎ𝑗(𝐴[,]𝐵) | |
37 | 13 | equcoms 2024 | . . . . . . . . . 10 ⊢ (𝑗 = 𝑘 → 𝐴 = ⦋𝑗 / 𝑘⦌𝐴) |
38 | 37 | eqcomd 2739 | . . . . . . . . 9 ⊢ (𝑗 = 𝑘 → ⦋𝑗 / 𝑘⦌𝐴 = 𝐴) |
39 | eqidd 2734 | . . . . . . . . 9 ⊢ (𝑗 = 𝑘 → 𝐴 = 𝐴) | |
40 | 38, 39 | eqtrd 2773 | . . . . . . . 8 ⊢ (𝑗 = 𝑘 → ⦋𝑗 / 𝑘⦌𝐴 = 𝐴) |
41 | 24 | equcoms 2024 | . . . . . . . . 9 ⊢ (𝑗 = 𝑘 → 𝐵 = ⦋𝑗 / 𝑘⦌𝐵) |
42 | 41 | eqcomd 2739 | . . . . . . . 8 ⊢ (𝑗 = 𝑘 → ⦋𝑗 / 𝑘⦌𝐵 = 𝐵) |
43 | 40, 42 | oveq12d 7414 | . . . . . . 7 ⊢ (𝑗 = 𝑘 → (⦋𝑗 / 𝑘⦌𝐴[,]⦋𝑗 / 𝑘⦌𝐵) = (𝐴[,]𝐵)) |
44 | 35, 36, 43 | cbvixp 8896 | . . . . . 6 ⊢ X𝑗 ∈ 𝑋 (⦋𝑗 / 𝑘⦌𝐴[,]⦋𝑗 / 𝑘⦌𝐵) = X𝑘 ∈ 𝑋 (𝐴[,]𝐵) |
45 | 44 | a1i 11 | . . . . 5 ⊢ (𝜑 → X𝑗 ∈ 𝑋 (⦋𝑗 / 𝑘⦌𝐴[,]⦋𝑗 / 𝑘⦌𝐵) = X𝑘 ∈ 𝑋 (𝐴[,]𝐵)) |
46 | 33, 45 | eqtrd 2773 | . . . 4 ⊢ (𝜑 → X𝑗 ∈ 𝑋 (((𝑘 ∈ 𝑋 ↦ 𝐴)‘𝑗)[,]((𝑘 ∈ 𝑋 ↦ 𝐵)‘𝑗)) = X𝑘 ∈ 𝑋 (𝐴[,]𝐵)) |
47 | 2, 46 | eqtr4d 2776 | . . 3 ⊢ (𝜑 → 𝐼 = X𝑗 ∈ 𝑋 (((𝑘 ∈ 𝑋 ↦ 𝐴)‘𝑗)[,]((𝑘 ∈ 𝑋 ↦ 𝐵)‘𝑗))) |
48 | 47 | fveq2d 6885 | . 2 ⊢ (𝜑 → ((voln‘𝑋)‘𝐼) = ((voln‘𝑋)‘X𝑗 ∈ 𝑋 (((𝑘 ∈ 𝑋 ↦ 𝐴)‘𝑗)[,]((𝑘 ∈ 𝑋 ↦ 𝐵)‘𝑗)))) |
49 | vonn0icc2.x | . . 3 ⊢ (𝜑 → 𝑋 ∈ Fin) | |
50 | vonn0icc2.n | . . 3 ⊢ (𝜑 → 𝑋 ≠ ∅) | |
51 | 4, 16, 18 | fmptdf 7104 | . . 3 ⊢ (𝜑 → (𝑘 ∈ 𝑋 ↦ 𝐴):𝑋⟶ℝ) |
52 | 4, 27, 29 | fmptdf 7104 | . . 3 ⊢ (𝜑 → (𝑘 ∈ 𝑋 ↦ 𝐵):𝑋⟶ℝ) |
53 | eqid 2733 | . . 3 ⊢ X𝑗 ∈ 𝑋 (((𝑘 ∈ 𝑋 ↦ 𝐴)‘𝑗)[,]((𝑘 ∈ 𝑋 ↦ 𝐵)‘𝑗)) = X𝑗 ∈ 𝑋 (((𝑘 ∈ 𝑋 ↦ 𝐴)‘𝑗)[,]((𝑘 ∈ 𝑋 ↦ 𝐵)‘𝑗)) | |
54 | 49, 50, 51, 52, 53 | vonn0icc 45277 | . 2 ⊢ (𝜑 → ((voln‘𝑋)‘X𝑗 ∈ 𝑋 (((𝑘 ∈ 𝑋 ↦ 𝐴)‘𝑗)[,]((𝑘 ∈ 𝑋 ↦ 𝐵)‘𝑗))) = ∏𝑗 ∈ 𝑋 (vol‘(((𝑘 ∈ 𝑋 ↦ 𝐴)‘𝑗)[,]((𝑘 ∈ 𝑋 ↦ 𝐵)‘𝑗)))) |
55 | 32 | fveq2d 6885 | . . . 4 ⊢ ((𝜑 ∧ 𝑗 ∈ 𝑋) → (vol‘(((𝑘 ∈ 𝑋 ↦ 𝐴)‘𝑗)[,]((𝑘 ∈ 𝑋 ↦ 𝐵)‘𝑗))) = (vol‘(⦋𝑗 / 𝑘⦌𝐴[,]⦋𝑗 / 𝑘⦌𝐵))) |
56 | 55 | prodeq2dv 15854 | . . 3 ⊢ (𝜑 → ∏𝑗 ∈ 𝑋 (vol‘(((𝑘 ∈ 𝑋 ↦ 𝐴)‘𝑗)[,]((𝑘 ∈ 𝑋 ↦ 𝐵)‘𝑗))) = ∏𝑗 ∈ 𝑋 (vol‘(⦋𝑗 / 𝑘⦌𝐴[,]⦋𝑗 / 𝑘⦌𝐵))) |
57 | 43 | fveq2d 6885 | . . . . 5 ⊢ (𝑗 = 𝑘 → (vol‘(⦋𝑗 / 𝑘⦌𝐴[,]⦋𝑗 / 𝑘⦌𝐵)) = (vol‘(𝐴[,]𝐵))) |
58 | nfcv 2904 | . . . . 5 ⊢ Ⅎ𝑘𝑋 | |
59 | nfcv 2904 | . . . . 5 ⊢ Ⅎ𝑗𝑋 | |
60 | nfcv 2904 | . . . . . 6 ⊢ Ⅎ𝑘vol | |
61 | 60, 35 | nffv 6891 | . . . . 5 ⊢ Ⅎ𝑘(vol‘(⦋𝑗 / 𝑘⦌𝐴[,]⦋𝑗 / 𝑘⦌𝐵)) |
62 | nfcv 2904 | . . . . 5 ⊢ Ⅎ𝑗(vol‘(𝐴[,]𝐵)) | |
63 | 57, 58, 59, 61, 62 | cbvprod 15846 | . . . 4 ⊢ ∏𝑗 ∈ 𝑋 (vol‘(⦋𝑗 / 𝑘⦌𝐴[,]⦋𝑗 / 𝑘⦌𝐵)) = ∏𝑘 ∈ 𝑋 (vol‘(𝐴[,]𝐵)) |
64 | 63 | a1i 11 | . . 3 ⊢ (𝜑 → ∏𝑗 ∈ 𝑋 (vol‘(⦋𝑗 / 𝑘⦌𝐴[,]⦋𝑗 / 𝑘⦌𝐵)) = ∏𝑘 ∈ 𝑋 (vol‘(𝐴[,]𝐵))) |
65 | 56, 64 | eqtrd 2773 | . 2 ⊢ (𝜑 → ∏𝑗 ∈ 𝑋 (vol‘(((𝑘 ∈ 𝑋 ↦ 𝐴)‘𝑗)[,]((𝑘 ∈ 𝑋 ↦ 𝐵)‘𝑗))) = ∏𝑘 ∈ 𝑋 (vol‘(𝐴[,]𝐵))) |
66 | 48, 54, 65 | 3eqtrd 2777 | 1 ⊢ (𝜑 → ((voln‘𝑋)‘𝐼) = ∏𝑘 ∈ 𝑋 (vol‘(𝐴[,]𝐵))) |
Colors of variables: wff setvar class |
Syntax hints: → wi 4 ∧ wa 397 = wceq 1542 Ⅎwnf 1786 ∈ wcel 2107 ≠ wne 2941 ⦋csb 3891 ∅c0 4320 ↦ cmpt 5227 ‘cfv 6535 (class class class)co 7396 Xcixp 8879 Fincfn 8927 ℝcr 11096 [,]cicc 13314 ∏cprod 15836 volcvol 24949 volncvoln 45127 |
This theorem was proved from axioms: ax-mp 5 ax-1 6 ax-2 7 ax-3 8 ax-gen 1798 ax-4 1812 ax-5 1914 ax-6 1972 ax-7 2012 ax-8 2109 ax-9 2117 ax-10 2138 ax-11 2155 ax-12 2172 ax-ext 2704 ax-rep 5281 ax-sep 5295 ax-nul 5302 ax-pow 5359 ax-pr 5423 ax-un 7712 ax-inf2 9623 ax-cc 10417 ax-ac2 10445 ax-cnex 11153 ax-resscn 11154 ax-1cn 11155 ax-icn 11156 ax-addcl 11157 ax-addrcl 11158 ax-mulcl 11159 ax-mulrcl 11160 ax-mulcom 11161 ax-addass 11162 ax-mulass 11163 ax-distr 11164 ax-i2m1 11165 ax-1ne0 11166 ax-1rid 11167 ax-rnegex 11168 ax-rrecex 11169 ax-cnre 11170 ax-pre-lttri 11171 ax-pre-lttrn 11172 ax-pre-ltadd 11173 ax-pre-mulgt0 11174 ax-pre-sup 11175 ax-addf 11176 ax-mulf 11177 |
This theorem depends on definitions: df-bi 206 df-an 398 df-or 847 df-3or 1089 df-3an 1090 df-tru 1545 df-fal 1555 df-ex 1783 df-nf 1787 df-sb 2069 df-mo 2535 df-eu 2564 df-clab 2711 df-cleq 2725 df-clel 2811 df-nfc 2886 df-ne 2942 df-nel 3048 df-ral 3063 df-rex 3072 df-rmo 3377 df-reu 3378 df-rab 3434 df-v 3477 df-sbc 3776 df-csb 3892 df-dif 3949 df-un 3951 df-in 3953 df-ss 3963 df-pss 3965 df-nul 4321 df-if 4525 df-pw 4600 df-sn 4625 df-pr 4627 df-tp 4629 df-op 4631 df-uni 4905 df-int 4947 df-iun 4995 df-iin 4996 df-disj 5110 df-br 5145 df-opab 5207 df-mpt 5228 df-tr 5262 df-id 5570 df-eprel 5576 df-po 5584 df-so 5585 df-fr 5627 df-se 5628 df-we 5629 df-xp 5678 df-rel 5679 df-cnv 5680 df-co 5681 df-dm 5682 df-rn 5683 df-res 5684 df-ima 5685 df-pred 6292 df-ord 6359 df-on 6360 df-lim 6361 df-suc 6362 df-iota 6487 df-fun 6537 df-fn 6538 df-f 6539 df-f1 6540 df-fo 6541 df-f1o 6542 df-fv 6543 df-isom 6544 df-riota 7352 df-ov 7399 df-oprab 7400 df-mpo 7401 df-of 7657 df-om 7843 df-1st 7962 df-2nd 7963 df-supp 8134 df-tpos 8198 df-frecs 8253 df-wrecs 8284 df-recs 8358 df-rdg 8397 df-1o 8453 df-2o 8454 df-oadd 8457 df-omul 8458 df-er 8691 df-map 8810 df-pm 8811 df-ixp 8880 df-en 8928 df-dom 8929 df-sdom 8930 df-fin 8931 df-fsupp 9350 df-fi 9393 df-sup 9424 df-inf 9425 df-oi 9492 df-dju 9883 df-card 9921 df-acn 9924 df-ac 10098 df-pnf 11237 df-mnf 11238 df-xr 11239 df-ltxr 11240 df-le 11241 df-sub 11433 df-neg 11434 df-div 11859 df-nn 12200 df-2 12262 df-3 12263 df-4 12264 df-5 12265 df-6 12266 df-7 12267 df-8 12268 df-9 12269 df-n0 12460 df-z 12546 df-dec 12665 df-uz 12810 df-q 12920 df-rp 12962 df-xneg 13079 df-xadd 13080 df-xmul 13081 df-ioo 13315 df-ico 13317 df-icc 13318 df-fz 13472 df-fzo 13615 df-fl 13744 df-seq 13954 df-exp 14015 df-hash 14278 df-cj 15033 df-re 15034 df-im 15035 df-sqrt 15169 df-abs 15170 df-clim 15419 df-rlim 15420 df-sum 15620 df-prod 15837 df-struct 17067 df-sets 17084 df-slot 17102 df-ndx 17114 df-base 17132 df-ress 17161 df-plusg 17197 df-mulr 17198 df-starv 17199 df-sca 17200 df-vsca 17201 df-ip 17202 df-tset 17203 df-ple 17204 df-ds 17206 df-unif 17207 df-hom 17208 df-cco 17209 df-rest 17355 df-topn 17356 df-0g 17374 df-gsum 17375 df-topgen 17376 df-pt 17377 df-prds 17380 df-pws 17382 df-xrs 17435 df-qtop 17440 df-imas 17441 df-xps 17443 df-mre 17517 df-mrc 17518 df-acs 17520 df-mgm 18548 df-sgrp 18597 df-mnd 18613 df-mhm 18658 df-submnd 18659 df-grp 18809 df-minusg 18810 df-sbg 18811 df-mulg 18936 df-subg 18988 df-ghm 19075 df-cntz 19166 df-cmn 19634 df-abl 19635 df-mgp 19971 df-ur 19988 df-ring 20040 df-cring 20041 df-oppr 20128 df-dvdsr 20149 df-unit 20150 df-invr 20180 df-dvr 20193 df-rnghom 20229 df-drng 20295 df-field 20296 df-subrg 20338 df-abv 20402 df-staf 20430 df-srng 20431 df-lmod 20450 df-lss 20520 df-lmhm 20610 df-lvec 20691 df-sra 20762 df-rgmod 20763 df-psmet 20910 df-xmet 20911 df-met 20912 df-bl 20913 df-mopn 20914 df-cnfld 20919 df-refld 21131 df-phl 21152 df-dsmm 21260 df-frlm 21275 df-top 22365 df-topon 22382 df-topsp 22404 df-bases 22418 df-cn 22700 df-cnp 22701 df-cmp 22860 df-tx 23035 df-hmeo 23228 df-xms 23795 df-ms 23796 df-tms 23797 df-nm 24060 df-ngp 24061 df-tng 24062 df-nrg 24063 df-nlm 24064 df-cncf 24363 df-clm 24548 df-cph 24654 df-tcph 24655 df-rrx 24871 df-ovol 24950 df-vol 24951 df-salg 44898 df-sumge0 44952 df-mea 45039 df-ome 45079 df-caragen 45081 df-ovoln 45126 df-voln 45128 |
This theorem is referenced by: (None) |
Copyright terms: Public domain | W3C validator |