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

Theorem cncnp 21882
Description: A continuous function is continuous at all points. Theorem 7.2(g) of [Munkres] p. 107. (Contributed by NM, 15-May-2007.) (Proof shortened by Mario Carneiro, 21-Aug-2015.)
Assertion
Ref Expression
cncnp ((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) → (𝐹 ∈ (𝐽 Cn 𝐾) ↔ (𝐹:𝑋𝑌 ∧ ∀𝑥𝑋 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))))
Distinct variable groups:   𝑥,𝐹   𝑥,𝐽   𝑥,𝐾   𝑥,𝑋   𝑥,𝑌

Proof of Theorem cncnp
Dummy variables 𝑢 𝑦 are mutually distinct and distinct from all other variables.
StepHypRef Expression
1 iscn 21837 . . . 4 ((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) → (𝐹 ∈ (𝐽 Cn 𝐾) ↔ (𝐹:𝑋𝑌 ∧ ∀𝑦𝐾 (𝐹𝑦) ∈ 𝐽)))
21simprbda 501 . . 3 (((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝐹 ∈ (𝐽 Cn 𝐾)) → 𝐹:𝑋𝑌)
3 eqid 2821 . . . . . . 7 𝐽 = 𝐽
43cncnpi 21880 . . . . . 6 ((𝐹 ∈ (𝐽 Cn 𝐾) ∧ 𝑥 𝐽) → 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))
54ralrimiva 3182 . . . . 5 (𝐹 ∈ (𝐽 Cn 𝐾) → ∀𝑥 𝐽𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))
65adantl 484 . . . 4 (((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝐹 ∈ (𝐽 Cn 𝐾)) → ∀𝑥 𝐽𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))
7 toponuni 21516 . . . . . 6 (𝐽 ∈ (TopOn‘𝑋) → 𝑋 = 𝐽)
87ad2antrr 724 . . . . 5 (((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝐹 ∈ (𝐽 Cn 𝐾)) → 𝑋 = 𝐽)
98raleqdv 3415 . . . 4 (((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝐹 ∈ (𝐽 Cn 𝐾)) → (∀𝑥𝑋 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥) ↔ ∀𝑥 𝐽𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥)))
106, 9mpbird 259 . . 3 (((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝐹 ∈ (𝐽 Cn 𝐾)) → ∀𝑥𝑋 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))
112, 10jca 514 . 2 (((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝐹 ∈ (𝐽 Cn 𝐾)) → (𝐹:𝑋𝑌 ∧ ∀𝑥𝑋 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥)))
12 simprl 769 . . 3 (((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ (𝐹:𝑋𝑌 ∧ ∀𝑥𝑋 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) → 𝐹:𝑋𝑌)
13 cnvimass 5943 . . . . . . . . . 10 (𝐹𝑦) ⊆ dom 𝐹
14 fdm 6516 . . . . . . . . . . 11 (𝐹:𝑋𝑌 → dom 𝐹 = 𝑋)
1514adantl 484 . . . . . . . . . 10 ((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ 𝐹:𝑋𝑌) → dom 𝐹 = 𝑋)
1613, 15sseqtrid 4018 . . . . . . . . 9 ((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ 𝐹:𝑋𝑌) → (𝐹𝑦) ⊆ 𝑋)
17 ssralv 4032 . . . . . . . . 9 ((𝐹𝑦) ⊆ 𝑋 → (∀𝑥𝑋 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥) → ∀𝑥 ∈ (𝐹𝑦)𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥)))
1816, 17syl 17 . . . . . . . 8 ((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ 𝐹:𝑋𝑌) → (∀𝑥𝑋 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥) → ∀𝑥 ∈ (𝐹𝑦)𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥)))
19 simprr 771 . . . . . . . . . . . 12 (((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ 𝐹:𝑋𝑌) ∧ (𝑥 ∈ (𝐹𝑦) ∧ 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) → 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))
20 simpllr 774 . . . . . . . . . . . 12 (((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ 𝐹:𝑋𝑌) ∧ (𝑥 ∈ (𝐹𝑦) ∧ 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) → 𝑦𝐾)
21 ffn 6508 . . . . . . . . . . . . . 14 (𝐹:𝑋𝑌𝐹 Fn 𝑋)
2221ad2antlr 725 . . . . . . . . . . . . 13 (((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ 𝐹:𝑋𝑌) ∧ (𝑥 ∈ (𝐹𝑦) ∧ 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) → 𝐹 Fn 𝑋)
23 simprl 769 . . . . . . . . . . . . 13 (((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ 𝐹:𝑋𝑌) ∧ (𝑥 ∈ (𝐹𝑦) ∧ 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) → 𝑥 ∈ (𝐹𝑦))
24 elpreima 6822 . . . . . . . . . . . . . 14 (𝐹 Fn 𝑋 → (𝑥 ∈ (𝐹𝑦) ↔ (𝑥𝑋 ∧ (𝐹𝑥) ∈ 𝑦)))
2524simplbda 502 . . . . . . . . . . . . 13 ((𝐹 Fn 𝑋𝑥 ∈ (𝐹𝑦)) → (𝐹𝑥) ∈ 𝑦)
2622, 23, 25syl2anc 586 . . . . . . . . . . . 12 (((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ 𝐹:𝑋𝑌) ∧ (𝑥 ∈ (𝐹𝑦) ∧ 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) → (𝐹𝑥) ∈ 𝑦)
27 cnpimaex 21858 . . . . . . . . . . . 12 ((𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥) ∧ 𝑦𝐾 ∧ (𝐹𝑥) ∈ 𝑦) → ∃𝑢𝐽 (𝑥𝑢 ∧ (𝐹𝑢) ⊆ 𝑦))
2819, 20, 26, 27syl3anc 1367 . . . . . . . . . . 11 (((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ 𝐹:𝑋𝑌) ∧ (𝑥 ∈ (𝐹𝑦) ∧ 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) → ∃𝑢𝐽 (𝑥𝑢 ∧ (𝐹𝑢) ⊆ 𝑦))
29 simpllr 774 . . . . . . . . . . . . . . 15 ((((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ 𝐹:𝑋𝑌) ∧ (𝑥 ∈ (𝐹𝑦) ∧ 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) ∧ 𝑢𝐽) → 𝐹:𝑋𝑌)
3029ffund 6512 . . . . . . . . . . . . . 14 ((((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ 𝐹:𝑋𝑌) ∧ (𝑥 ∈ (𝐹𝑦) ∧ 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) ∧ 𝑢𝐽) → Fun 𝐹)
31 simp-4l 781 . . . . . . . . . . . . . . . 16 (((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ 𝐹:𝑋𝑌) ∧ (𝑥 ∈ (𝐹𝑦) ∧ 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) → 𝐽 ∈ (TopOn‘𝑋))
32 toponss 21529 . . . . . . . . . . . . . . . 16 ((𝐽 ∈ (TopOn‘𝑋) ∧ 𝑢𝐽) → 𝑢𝑋)
3331, 32sylan 582 . . . . . . . . . . . . . . 15 ((((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ 𝐹:𝑋𝑌) ∧ (𝑥 ∈ (𝐹𝑦) ∧ 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) ∧ 𝑢𝐽) → 𝑢𝑋)
3429, 14syl 17 . . . . . . . . . . . . . . 15 ((((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ 𝐹:𝑋𝑌) ∧ (𝑥 ∈ (𝐹𝑦) ∧ 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) ∧ 𝑢𝐽) → dom 𝐹 = 𝑋)
3533, 34sseqtrrd 4007 . . . . . . . . . . . . . 14 ((((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ 𝐹:𝑋𝑌) ∧ (𝑥 ∈ (𝐹𝑦) ∧ 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) ∧ 𝑢𝐽) → 𝑢 ⊆ dom 𝐹)
36 funimass3 6818 . . . . . . . . . . . . . 14 ((Fun 𝐹𝑢 ⊆ dom 𝐹) → ((𝐹𝑢) ⊆ 𝑦𝑢 ⊆ (𝐹𝑦)))
3730, 35, 36syl2anc 586 . . . . . . . . . . . . 13 ((((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ 𝐹:𝑋𝑌) ∧ (𝑥 ∈ (𝐹𝑦) ∧ 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) ∧ 𝑢𝐽) → ((𝐹𝑢) ⊆ 𝑦𝑢 ⊆ (𝐹𝑦)))
3837anbi2d 630 . . . . . . . . . . . 12 ((((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ 𝐹:𝑋𝑌) ∧ (𝑥 ∈ (𝐹𝑦) ∧ 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) ∧ 𝑢𝐽) → ((𝑥𝑢 ∧ (𝐹𝑢) ⊆ 𝑦) ↔ (𝑥𝑢𝑢 ⊆ (𝐹𝑦))))
3938rexbidva 3296 . . . . . . . . . . 11 (((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ 𝐹:𝑋𝑌) ∧ (𝑥 ∈ (𝐹𝑦) ∧ 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) → (∃𝑢𝐽 (𝑥𝑢 ∧ (𝐹𝑢) ⊆ 𝑦) ↔ ∃𝑢𝐽 (𝑥𝑢𝑢 ⊆ (𝐹𝑦))))
4028, 39mpbid 234 . . . . . . . . . 10 (((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ 𝐹:𝑋𝑌) ∧ (𝑥 ∈ (𝐹𝑦) ∧ 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) → ∃𝑢𝐽 (𝑥𝑢𝑢 ⊆ (𝐹𝑦)))
4140expr 459 . . . . . . . . 9 (((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ 𝐹:𝑋𝑌) ∧ 𝑥 ∈ (𝐹𝑦)) → (𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥) → ∃𝑢𝐽 (𝑥𝑢𝑢 ⊆ (𝐹𝑦))))
4241ralimdva 3177 . . . . . . . 8 ((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ 𝐹:𝑋𝑌) → (∀𝑥 ∈ (𝐹𝑦)𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥) → ∀𝑥 ∈ (𝐹𝑦)∃𝑢𝐽 (𝑥𝑢𝑢 ⊆ (𝐹𝑦))))
4318, 42syld 47 . . . . . . 7 ((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ 𝐹:𝑋𝑌) → (∀𝑥𝑋 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥) → ∀𝑥 ∈ (𝐹𝑦)∃𝑢𝐽 (𝑥𝑢𝑢 ⊆ (𝐹𝑦))))
4443impr 457 . . . . . 6 ((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ (𝐹:𝑋𝑌 ∧ ∀𝑥𝑋 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) → ∀𝑥 ∈ (𝐹𝑦)∃𝑢𝐽 (𝑥𝑢𝑢 ⊆ (𝐹𝑦)))
4544an32s 650 . . . . 5 ((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ (𝐹:𝑋𝑌 ∧ ∀𝑥𝑋 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) ∧ 𝑦𝐾) → ∀𝑥 ∈ (𝐹𝑦)∃𝑢𝐽 (𝑥𝑢𝑢 ⊆ (𝐹𝑦)))
46 topontop 21515 . . . . . . 7 (𝐽 ∈ (TopOn‘𝑋) → 𝐽 ∈ Top)
4746ad3antrrr 728 . . . . . 6 ((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ (𝐹:𝑋𝑌 ∧ ∀𝑥𝑋 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) ∧ 𝑦𝐾) → 𝐽 ∈ Top)
48 eltop2 21577 . . . . . 6 (𝐽 ∈ Top → ((𝐹𝑦) ∈ 𝐽 ↔ ∀𝑥 ∈ (𝐹𝑦)∃𝑢𝐽 (𝑥𝑢𝑢 ⊆ (𝐹𝑦))))
4947, 48syl 17 . . . . 5 ((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ (𝐹:𝑋𝑌 ∧ ∀𝑥𝑋 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) ∧ 𝑦𝐾) → ((𝐹𝑦) ∈ 𝐽 ↔ ∀𝑥 ∈ (𝐹𝑦)∃𝑢𝐽 (𝑥𝑢𝑢 ⊆ (𝐹𝑦))))
5045, 49mpbird 259 . . . 4 ((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ (𝐹:𝑋𝑌 ∧ ∀𝑥𝑋 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) ∧ 𝑦𝐾) → (𝐹𝑦) ∈ 𝐽)
5150ralrimiva 3182 . . 3 (((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ (𝐹:𝑋𝑌 ∧ ∀𝑥𝑋 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) → ∀𝑦𝐾 (𝐹𝑦) ∈ 𝐽)
521adantr 483 . . 3 (((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ (𝐹:𝑋𝑌 ∧ ∀𝑥𝑋 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) → (𝐹 ∈ (𝐽 Cn 𝐾) ↔ (𝐹:𝑋𝑌 ∧ ∀𝑦𝐾 (𝐹𝑦) ∈ 𝐽)))
5312, 51, 52mpbir2and 711 . 2 (((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ (𝐹:𝑋𝑌 ∧ ∀𝑥𝑋 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) → 𝐹 ∈ (𝐽 Cn 𝐾))
5411, 53impbida 799 1 ((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) → (𝐹 ∈ (𝐽 Cn 𝐾) ↔ (𝐹:𝑋𝑌 ∧ ∀𝑥𝑋 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))))
Colors of variables: wff setvar class
Syntax hints:  wi 4  wb 208  wa 398   = wceq 1533  wcel 2110  wral 3138  wrex 3139  wss 3935   cuni 4831  ccnv 5548  dom cdm 5549  cima 5552  Fun wfun 6343   Fn wfn 6344  wf 6345  cfv 6349  (class class class)co 7150  Topctop 21495  TopOnctopon 21512   Cn ccn 21826   CnP ccnp 21827
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1792  ax-4 1806  ax-5 1907  ax-6 1966  ax-7 2011  ax-8 2112  ax-9 2120  ax-10 2141  ax-11 2157  ax-12 2173  ax-ext 2793  ax-sep 5195  ax-nul 5202  ax-pow 5258  ax-pr 5321  ax-un 7455
This theorem depends on definitions:  df-bi 209  df-an 399  df-or 844  df-3an 1085  df-tru 1536  df-ex 1777  df-nf 1781  df-sb 2066  df-mo 2618  df-eu 2650  df-clab 2800  df-cleq 2814  df-clel 2893  df-nfc 2963  df-ne 3017  df-ral 3143  df-rex 3144  df-rab 3147  df-v 3496  df-sbc 3772  df-csb 3883  df-dif 3938  df-un 3940  df-in 3942  df-ss 3951  df-nul 4291  df-if 4467  df-pw 4540  df-sn 4561  df-pr 4563  df-op 4567  df-uni 4832  df-iun 4913  df-br 5059  df-opab 5121  df-mpt 5139  df-id 5454  df-xp 5555  df-rel 5556  df-cnv 5557  df-co 5558  df-dm 5559  df-rn 5560  df-res 5561  df-ima 5562  df-iota 6308  df-fun 6351  df-fn 6352  df-f 6353  df-fv 6357  df-ov 7153  df-oprab 7154  df-mpo 7155  df-1st 7683  df-2nd 7684  df-map 8402  df-topgen 16711  df-top 21496  df-topon 21513  df-cn 21829  df-cnp 21830
This theorem is referenced by:  cncnp2  21883  cnnei  21884  cnconst2  21885  1stccn  22065  ptcn  22229  cnflf  22604  cnfcf  22644  symgtgp  22708  ghmcnp  22717  metcn  23147  txmetcn  23152  cnlimc  24480  dvcn  24512  dvcnvre  24610  psercn  25008  abelth  25023  cxpcn3  25323  cvmlift2lem11  32555  cvmlift2lem12  32556  cvmlift3lem8  32568  ioccncflimc  42161  cncfuni  42162  icccncfext  42163  icocncflimc  42165  cncfiooicclem1  42169  dirkercncflem2  42383  dirkercncflem4  42385  dirkercncf  42386  fourierdlem32  42418  fourierdlem33  42419  fourierdlem62  42447  fourierdlem93  42478  fourierdlem101  42486
  Copyright terms: Public domain W3C validator