![]() |
Mathbox for Glauco Siliprandi |
< Previous
Next >
Nearby theorems |
|
Mirrors > Home > MPE Home > Th. List > Mathboxes > fouriercn | Structured version Visualization version GIF version |
Description: If the derivative of 𝐹 is continuous, then the Fourier series for 𝐹 converges to 𝐹 everywhere and the hypothesis are simpler than those for the more general case of a piecewise smooth function (see fourierd 41936 for a comparison). (Contributed by Glauco Siliprandi, 11-Dec-2019.) |
Ref | Expression |
---|---|
fouriercn.f | ⊢ (𝜑 → 𝐹:ℝ⟶ℝ) |
fouriercn.t | ⊢ 𝑇 = (2 · π) |
fouriercn.per | ⊢ ((𝜑 ∧ 𝑥 ∈ ℝ) → (𝐹‘(𝑥 + 𝑇)) = (𝐹‘𝑥)) |
fouriercn.dv | ⊢ (𝜑 → (ℝ D 𝐹) ∈ (ℝ–cn→ℂ)) |
fouriercn.g | ⊢ 𝐺 = ((ℝ D 𝐹) ↾ (-π(,)π)) |
fouriercn.x | ⊢ (𝜑 → 𝑋 ∈ ℝ) |
fouriercn.a | ⊢ 𝐴 = (𝑛 ∈ ℕ0 ↦ (∫(-π(,)π)((𝐹‘𝑥) · (cos‘(𝑛 · 𝑥))) d𝑥 / π)) |
fouriercn.b | ⊢ 𝐵 = (𝑛 ∈ ℕ ↦ (∫(-π(,)π)((𝐹‘𝑥) · (sin‘(𝑛 · 𝑥))) d𝑥 / π)) |
Ref | Expression |
---|---|
fouriercn | ⊢ (𝜑 → (((𝐴‘0) / 2) + Σ𝑛 ∈ ℕ (((𝐴‘𝑛) · (cos‘(𝑛 · 𝑋))) + ((𝐵‘𝑛) · (sin‘(𝑛 · 𝑋))))) = (𝐹‘𝑋)) |
Step | Hyp | Ref | Expression |
---|---|---|---|
1 | fouriercn.f | . 2 ⊢ (𝜑 → 𝐹:ℝ⟶ℝ) | |
2 | fouriercn.t | . 2 ⊢ 𝑇 = (2 · π) | |
3 | fouriercn.per | . 2 ⊢ ((𝜑 ∧ 𝑥 ∈ ℝ) → (𝐹‘(𝑥 + 𝑇)) = (𝐹‘𝑥)) | |
4 | fouriercn.g | . 2 ⊢ 𝐺 = ((ℝ D 𝐹) ↾ (-π(,)π)) | |
5 | 4 | dmeqi 5623 | . . . . . 6 ⊢ dom 𝐺 = dom ((ℝ D 𝐹) ↾ (-π(,)π)) |
6 | ioossre 12614 | . . . . . . . 8 ⊢ (-π(,)π) ⊆ ℝ | |
7 | fouriercn.dv | . . . . . . . . 9 ⊢ (𝜑 → (ℝ D 𝐹) ∈ (ℝ–cn→ℂ)) | |
8 | cncff 23204 | . . . . . . . . 9 ⊢ ((ℝ D 𝐹) ∈ (ℝ–cn→ℂ) → (ℝ D 𝐹):ℝ⟶ℂ) | |
9 | fdm 6352 | . . . . . . . . 9 ⊢ ((ℝ D 𝐹):ℝ⟶ℂ → dom (ℝ D 𝐹) = ℝ) | |
10 | 7, 8, 9 | 3syl 18 | . . . . . . . 8 ⊢ (𝜑 → dom (ℝ D 𝐹) = ℝ) |
11 | 6, 10 | syl5sseqr 3911 | . . . . . . 7 ⊢ (𝜑 → (-π(,)π) ⊆ dom (ℝ D 𝐹)) |
12 | ssdmres 5721 | . . . . . . 7 ⊢ ((-π(,)π) ⊆ dom (ℝ D 𝐹) ↔ dom ((ℝ D 𝐹) ↾ (-π(,)π)) = (-π(,)π)) | |
13 | 11, 12 | sylib 210 | . . . . . 6 ⊢ (𝜑 → dom ((ℝ D 𝐹) ↾ (-π(,)π)) = (-π(,)π)) |
14 | 5, 13 | syl5eq 2827 | . . . . 5 ⊢ (𝜑 → dom 𝐺 = (-π(,)π)) |
15 | 14 | difeq2d 3990 | . . . 4 ⊢ (𝜑 → ((-π(,)π) ∖ dom 𝐺) = ((-π(,)π) ∖ (-π(,)π))) |
16 | difid 4217 | . . . 4 ⊢ ((-π(,)π) ∖ (-π(,)π)) = ∅ | |
17 | 15, 16 | syl6eq 2831 | . . 3 ⊢ (𝜑 → ((-π(,)π) ∖ dom 𝐺) = ∅) |
18 | 0fin 8541 | . . 3 ⊢ ∅ ∈ Fin | |
19 | 17, 18 | syl6eqel 2875 | . 2 ⊢ (𝜑 → ((-π(,)π) ∖ dom 𝐺) ∈ Fin) |
20 | rescncf 23208 | . . . 4 ⊢ ((-π(,)π) ⊆ ℝ → ((ℝ D 𝐹) ∈ (ℝ–cn→ℂ) → ((ℝ D 𝐹) ↾ (-π(,)π)) ∈ ((-π(,)π)–cn→ℂ))) | |
21 | 6, 7, 20 | mpsyl 68 | . . 3 ⊢ (𝜑 → ((ℝ D 𝐹) ↾ (-π(,)π)) ∈ ((-π(,)π)–cn→ℂ)) |
22 | 4 | a1i 11 | . . 3 ⊢ (𝜑 → 𝐺 = ((ℝ D 𝐹) ↾ (-π(,)π))) |
23 | 14 | oveq1d 6991 | . . 3 ⊢ (𝜑 → (dom 𝐺–cn→ℂ) = ((-π(,)π)–cn→ℂ)) |
24 | 21, 22, 23 | 3eltr4d 2882 | . 2 ⊢ (𝜑 → 𝐺 ∈ (dom 𝐺–cn→ℂ)) |
25 | pire 24747 | . . . . . 6 ⊢ π ∈ ℝ | |
26 | 25 | renegcli 10748 | . . . . 5 ⊢ -π ∈ ℝ |
27 | 25 | rexri 10499 | . . . . 5 ⊢ π ∈ ℝ* |
28 | icossre 12633 | . . . . 5 ⊢ ((-π ∈ ℝ ∧ π ∈ ℝ*) → (-π[,)π) ⊆ ℝ) | |
29 | 26, 27, 28 | mp2an 679 | . . . 4 ⊢ (-π[,)π) ⊆ ℝ |
30 | eldifi 3994 | . . . 4 ⊢ (𝑥 ∈ ((-π[,)π) ∖ dom 𝐺) → 𝑥 ∈ (-π[,)π)) | |
31 | 29, 30 | sseldi 3857 | . . 3 ⊢ (𝑥 ∈ ((-π[,)π) ∖ dom 𝐺) → 𝑥 ∈ ℝ) |
32 | limcresi 24186 | . . . . . 6 ⊢ ((ℝ D 𝐹) limℂ 𝑥) ⊆ (((ℝ D 𝐹) ↾ ((-π(,)π) ∩ (𝑥(,)+∞))) limℂ 𝑥) | |
33 | 4 | reseq1i 5691 | . . . . . . . 8 ⊢ (𝐺 ↾ (𝑥(,)+∞)) = (((ℝ D 𝐹) ↾ (-π(,)π)) ↾ (𝑥(,)+∞)) |
34 | resres 5711 | . . . . . . . 8 ⊢ (((ℝ D 𝐹) ↾ (-π(,)π)) ↾ (𝑥(,)+∞)) = ((ℝ D 𝐹) ↾ ((-π(,)π) ∩ (𝑥(,)+∞))) | |
35 | 33, 34 | eqtr2i 2804 | . . . . . . 7 ⊢ ((ℝ D 𝐹) ↾ ((-π(,)π) ∩ (𝑥(,)+∞))) = (𝐺 ↾ (𝑥(,)+∞)) |
36 | 35 | oveq1i 6986 | . . . . . 6 ⊢ (((ℝ D 𝐹) ↾ ((-π(,)π) ∩ (𝑥(,)+∞))) limℂ 𝑥) = ((𝐺 ↾ (𝑥(,)+∞)) limℂ 𝑥) |
37 | 32, 36 | sseqtri 3894 | . . . . 5 ⊢ ((ℝ D 𝐹) limℂ 𝑥) ⊆ ((𝐺 ↾ (𝑥(,)+∞)) limℂ 𝑥) |
38 | 7 | adantr 473 | . . . . . 6 ⊢ ((𝜑 ∧ 𝑥 ∈ ℝ) → (ℝ D 𝐹) ∈ (ℝ–cn→ℂ)) |
39 | simpr 477 | . . . . . 6 ⊢ ((𝜑 ∧ 𝑥 ∈ ℝ) → 𝑥 ∈ ℝ) | |
40 | 38, 39 | cnlimci 24190 | . . . . 5 ⊢ ((𝜑 ∧ 𝑥 ∈ ℝ) → ((ℝ D 𝐹)‘𝑥) ∈ ((ℝ D 𝐹) limℂ 𝑥)) |
41 | 37, 40 | sseldi 3857 | . . . 4 ⊢ ((𝜑 ∧ 𝑥 ∈ ℝ) → ((ℝ D 𝐹)‘𝑥) ∈ ((𝐺 ↾ (𝑥(,)+∞)) limℂ 𝑥)) |
42 | 41 | ne0d 4188 | . . 3 ⊢ ((𝜑 ∧ 𝑥 ∈ ℝ) → ((𝐺 ↾ (𝑥(,)+∞)) limℂ 𝑥) ≠ ∅) |
43 | 31, 42 | sylan2 583 | . 2 ⊢ ((𝜑 ∧ 𝑥 ∈ ((-π[,)π) ∖ dom 𝐺)) → ((𝐺 ↾ (𝑥(,)+∞)) limℂ 𝑥) ≠ ∅) |
44 | negpitopissre 24825 | . . . 4 ⊢ (-π(,]π) ⊆ ℝ | |
45 | eldifi 3994 | . . . 4 ⊢ (𝑥 ∈ ((-π(,]π) ∖ dom 𝐺) → 𝑥 ∈ (-π(,]π)) | |
46 | 44, 45 | sseldi 3857 | . . 3 ⊢ (𝑥 ∈ ((-π(,]π) ∖ dom 𝐺) → 𝑥 ∈ ℝ) |
47 | limcresi 24186 | . . . . . 6 ⊢ ((ℝ D 𝐹) limℂ 𝑥) ⊆ (((ℝ D 𝐹) ↾ ((-π(,)π) ∩ (-∞(,)𝑥))) limℂ 𝑥) | |
48 | 4 | reseq1i 5691 | . . . . . . . 8 ⊢ (𝐺 ↾ (-∞(,)𝑥)) = (((ℝ D 𝐹) ↾ (-π(,)π)) ↾ (-∞(,)𝑥)) |
49 | resres 5711 | . . . . . . . 8 ⊢ (((ℝ D 𝐹) ↾ (-π(,)π)) ↾ (-∞(,)𝑥)) = ((ℝ D 𝐹) ↾ ((-π(,)π) ∩ (-∞(,)𝑥))) | |
50 | 48, 49 | eqtr2i 2804 | . . . . . . 7 ⊢ ((ℝ D 𝐹) ↾ ((-π(,)π) ∩ (-∞(,)𝑥))) = (𝐺 ↾ (-∞(,)𝑥)) |
51 | 50 | oveq1i 6986 | . . . . . 6 ⊢ (((ℝ D 𝐹) ↾ ((-π(,)π) ∩ (-∞(,)𝑥))) limℂ 𝑥) = ((𝐺 ↾ (-∞(,)𝑥)) limℂ 𝑥) |
52 | 47, 51 | sseqtri 3894 | . . . . 5 ⊢ ((ℝ D 𝐹) limℂ 𝑥) ⊆ ((𝐺 ↾ (-∞(,)𝑥)) limℂ 𝑥) |
53 | 52, 40 | sseldi 3857 | . . . 4 ⊢ ((𝜑 ∧ 𝑥 ∈ ℝ) → ((ℝ D 𝐹)‘𝑥) ∈ ((𝐺 ↾ (-∞(,)𝑥)) limℂ 𝑥)) |
54 | 53 | ne0d 4188 | . . 3 ⊢ ((𝜑 ∧ 𝑥 ∈ ℝ) → ((𝐺 ↾ (-∞(,)𝑥)) limℂ 𝑥) ≠ ∅) |
55 | 46, 54 | sylan2 583 | . 2 ⊢ ((𝜑 ∧ 𝑥 ∈ ((-π(,]π) ∖ dom 𝐺)) → ((𝐺 ↾ (-∞(,)𝑥)) limℂ 𝑥) ≠ ∅) |
56 | eqid 2779 | . 2 ⊢ (topGen‘ran (,)) = (topGen‘ran (,)) | |
57 | ax-resscn 10392 | . . . . . . 7 ⊢ ℝ ⊆ ℂ | |
58 | 57 | a1i 11 | . . . . . 6 ⊢ (𝜑 → ℝ ⊆ ℂ) |
59 | 1, 58 | fssd 6358 | . . . . . . 7 ⊢ (𝜑 → 𝐹:ℝ⟶ℂ) |
60 | ssid 3880 | . . . . . . . 8 ⊢ ℝ ⊆ ℝ | |
61 | 60 | a1i 11 | . . . . . . 7 ⊢ (𝜑 → ℝ ⊆ ℝ) |
62 | dvcn 24221 | . . . . . . 7 ⊢ (((ℝ ⊆ ℂ ∧ 𝐹:ℝ⟶ℂ ∧ ℝ ⊆ ℝ) ∧ dom (ℝ D 𝐹) = ℝ) → 𝐹 ∈ (ℝ–cn→ℂ)) | |
63 | 58, 59, 61, 10, 62 | syl31anc 1353 | . . . . . 6 ⊢ (𝜑 → 𝐹 ∈ (ℝ–cn→ℂ)) |
64 | cncffvrn 23209 | . . . . . 6 ⊢ ((ℝ ⊆ ℂ ∧ 𝐹 ∈ (ℝ–cn→ℂ)) → (𝐹 ∈ (ℝ–cn→ℝ) ↔ 𝐹:ℝ⟶ℝ)) | |
65 | 58, 63, 64 | syl2anc 576 | . . . . 5 ⊢ (𝜑 → (𝐹 ∈ (ℝ–cn→ℝ) ↔ 𝐹:ℝ⟶ℝ)) |
66 | 1, 65 | mpbird 249 | . . . 4 ⊢ (𝜑 → 𝐹 ∈ (ℝ–cn→ℝ)) |
67 | eqid 2779 | . . . . . 6 ⊢ (TopOpen‘ℂfld) = (TopOpen‘ℂfld) | |
68 | 67 | tgioo2 23114 | . . . . . 6 ⊢ (topGen‘ran (,)) = ((TopOpen‘ℂfld) ↾t ℝ) |
69 | 67, 68, 68 | cncfcn 23220 | . . . . 5 ⊢ ((ℝ ⊆ ℂ ∧ ℝ ⊆ ℂ) → (ℝ–cn→ℝ) = ((topGen‘ran (,)) Cn (topGen‘ran (,)))) |
70 | 58, 58, 69 | syl2anc 576 | . . . 4 ⊢ (𝜑 → (ℝ–cn→ℝ) = ((topGen‘ran (,)) Cn (topGen‘ran (,)))) |
71 | 66, 70 | eleqtrd 2869 | . . 3 ⊢ (𝜑 → 𝐹 ∈ ((topGen‘ran (,)) Cn (topGen‘ran (,)))) |
72 | fouriercn.x | . . 3 ⊢ (𝜑 → 𝑋 ∈ ℝ) | |
73 | uniretop 23074 | . . . 4 ⊢ ℝ = ∪ (topGen‘ran (,)) | |
74 | 73 | cncnpi 21590 | . . 3 ⊢ ((𝐹 ∈ ((topGen‘ran (,)) Cn (topGen‘ran (,))) ∧ 𝑋 ∈ ℝ) → 𝐹 ∈ (((topGen‘ran (,)) CnP (topGen‘ran (,)))‘𝑋)) |
75 | 71, 72, 74 | syl2anc 576 | . 2 ⊢ (𝜑 → 𝐹 ∈ (((topGen‘ran (,)) CnP (topGen‘ran (,)))‘𝑋)) |
76 | fouriercn.a | . 2 ⊢ 𝐴 = (𝑛 ∈ ℕ0 ↦ (∫(-π(,)π)((𝐹‘𝑥) · (cos‘(𝑛 · 𝑥))) d𝑥 / π)) | |
77 | fouriercn.b | . 2 ⊢ 𝐵 = (𝑛 ∈ ℕ ↦ (∫(-π(,)π)((𝐹‘𝑥) · (sin‘(𝑛 · 𝑥))) d𝑥 / π)) | |
78 | 1, 2, 3, 4, 19, 24, 43, 55, 56, 75, 76, 77 | fouriercnp 41940 | 1 ⊢ (𝜑 → (((𝐴‘0) / 2) + Σ𝑛 ∈ ℕ (((𝐴‘𝑛) · (cos‘(𝑛 · 𝑋))) + ((𝐵‘𝑛) · (sin‘(𝑛 · 𝑋))))) = (𝐹‘𝑋)) |
Colors of variables: wff setvar class |
Syntax hints: → wi 4 ↔ wb 198 ∧ wa 387 = wceq 1507 ∈ wcel 2050 ≠ wne 2968 ∖ cdif 3827 ∩ cin 3829 ⊆ wss 3830 ∅c0 4179 ↦ cmpt 5008 dom cdm 5407 ran crn 5408 ↾ cres 5409 ⟶wf 6184 ‘cfv 6188 (class class class)co 6976 Fincfn 8306 ℂcc 10333 ℝcr 10334 0cc0 10335 + caddc 10338 · cmul 10340 +∞cpnf 10471 -∞cmnf 10472 ℝ*cxr 10473 -cneg 10671 / cdiv 11098 ℕcn 11439 2c2 11495 ℕ0cn0 11707 (,)cioo 12554 (,]cioc 12555 [,)cico 12556 Σcsu 14903 sincsin 15277 cosccos 15278 πcpi 15280 TopOpenctopn 16551 topGenctg 16567 ℂfldccnfld 20247 Cn ccn 21536 CnP ccnp 21537 –cn→ccncf 23187 ∫citg 23922 limℂ climc 24163 D cdv 24164 |
This theorem was proved from axioms: ax-mp 5 ax-1 6 ax-2 7 ax-3 8 ax-gen 1758 ax-4 1772 ax-5 1869 ax-6 1928 ax-7 1965 ax-8 2052 ax-9 2059 ax-10 2079 ax-11 2093 ax-12 2106 ax-13 2301 ax-ext 2751 ax-rep 5049 ax-sep 5060 ax-nul 5067 ax-pow 5119 ax-pr 5186 ax-un 7279 ax-inf2 8898 ax-cc 9655 ax-cnex 10391 ax-resscn 10392 ax-1cn 10393 ax-icn 10394 ax-addcl 10395 ax-addrcl 10396 ax-mulcl 10397 ax-mulrcl 10398 ax-mulcom 10399 ax-addass 10400 ax-mulass 10401 ax-distr 10402 ax-i2m1 10403 ax-1ne0 10404 ax-1rid 10405 ax-rnegex 10406 ax-rrecex 10407 ax-cnre 10408 ax-pre-lttri 10409 ax-pre-lttrn 10410 ax-pre-ltadd 10411 ax-pre-mulgt0 10412 ax-pre-sup 10413 ax-addf 10414 ax-mulf 10415 |
This theorem depends on definitions: df-bi 199 df-an 388 df-or 834 df-3or 1069 df-3an 1070 df-tru 1510 df-fal 1520 df-ex 1743 df-nf 1747 df-sb 2016 df-mo 2547 df-eu 2584 df-clab 2760 df-cleq 2772 df-clel 2847 df-nfc 2919 df-ne 2969 df-nel 3075 df-ral 3094 df-rex 3095 df-reu 3096 df-rmo 3097 df-rab 3098 df-v 3418 df-sbc 3683 df-csb 3788 df-dif 3833 df-un 3835 df-in 3837 df-ss 3844 df-pss 3846 df-symdif 4107 df-nul 4180 df-if 4351 df-pw 4424 df-sn 4442 df-pr 4444 df-tp 4446 df-op 4448 df-uni 4713 df-int 4750 df-iun 4794 df-iin 4795 df-disj 4898 df-br 4930 df-opab 4992 df-mpt 5009 df-tr 5031 df-id 5312 df-eprel 5317 df-po 5326 df-so 5327 df-fr 5366 df-se 5367 df-we 5368 df-xp 5413 df-rel 5414 df-cnv 5415 df-co 5416 df-dm 5417 df-rn 5418 df-res 5419 df-ima 5420 df-pred 5986 df-ord 6032 df-on 6033 df-lim 6034 df-suc 6035 df-iota 6152 df-fun 6190 df-fn 6191 df-f 6192 df-f1 6193 df-fo 6194 df-f1o 6195 df-fv 6196 df-isom 6197 df-riota 6937 df-ov 6979 df-oprab 6980 df-mpo 6981 df-of 7227 df-ofr 7228 df-om 7397 df-1st 7501 df-2nd 7502 df-supp 7634 df-wrecs 7750 df-recs 7812 df-rdg 7850 df-1o 7905 df-2o 7906 df-oadd 7909 df-omul 7910 df-er 8089 df-map 8208 df-pm 8209 df-ixp 8260 df-en 8307 df-dom 8308 df-sdom 8309 df-fin 8310 df-fsupp 8629 df-fi 8670 df-sup 8701 df-inf 8702 df-oi 8769 df-dju 9124 df-card 9162 df-acn 9165 df-cda 9388 df-pnf 10476 df-mnf 10477 df-xr 10478 df-ltxr 10479 df-le 10480 df-sub 10672 df-neg 10673 df-div 11099 df-nn 11440 df-2 11503 df-3 11504 df-4 11505 df-5 11506 df-6 11507 df-7 11508 df-8 11509 df-9 11510 df-n0 11708 df-xnn0 11780 df-z 11794 df-dec 11912 df-uz 12059 df-q 12163 df-rp 12205 df-xneg 12324 df-xadd 12325 df-xmul 12326 df-ioo 12558 df-ioc 12559 df-ico 12560 df-icc 12561 df-fz 12709 df-fzo 12850 df-fl 12977 df-mod 13053 df-seq 13185 df-exp 13245 df-fac 13449 df-bc 13478 df-hash 13506 df-shft 14287 df-cj 14319 df-re 14320 df-im 14321 df-sqrt 14455 df-abs 14456 df-limsup 14689 df-clim 14706 df-rlim 14707 df-sum 14904 df-ef 15281 df-sin 15283 df-cos 15284 df-pi 15286 df-struct 16341 df-ndx 16342 df-slot 16343 df-base 16345 df-sets 16346 df-ress 16347 df-plusg 16434 df-mulr 16435 df-starv 16436 df-sca 16437 df-vsca 16438 df-ip 16439 df-tset 16440 df-ple 16441 df-ds 16443 df-unif 16444 df-hom 16445 df-cco 16446 df-rest 16552 df-topn 16553 df-0g 16571 df-gsum 16572 df-topgen 16573 df-pt 16574 df-prds 16577 df-xrs 16631 df-qtop 16636 df-imas 16637 df-xps 16639 df-mre 16715 df-mrc 16716 df-acs 16718 df-mgm 17710 df-sgrp 17752 df-mnd 17763 df-submnd 17804 df-mulg 18012 df-cntz 18218 df-cmn 18668 df-psmet 20239 df-xmet 20240 df-met 20241 df-bl 20242 df-mopn 20243 df-fbas 20244 df-fg 20245 df-cnfld 20248 df-top 21206 df-topon 21223 df-topsp 21245 df-bases 21258 df-cld 21331 df-ntr 21332 df-cls 21333 df-nei 21410 df-lp 21448 df-perf 21449 df-cn 21539 df-cnp 21540 df-t1 21626 df-haus 21627 df-cmp 21699 df-tx 21874 df-hmeo 22067 df-fil 22158 df-fm 22250 df-flim 22251 df-flf 22252 df-xms 22633 df-ms 22634 df-tms 22635 df-cncf 23189 df-ovol 23768 df-vol 23769 df-mbf 23923 df-itg1 23924 df-itg2 23925 df-ibl 23926 df-itg 23927 df-0p 23974 df-ditg 24148 df-limc 24167 df-dv 24168 |
This theorem is referenced by: (None) |
Copyright terms: Public domain | W3C validator |