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

Theorem cncnp 23094
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 23049 . . . 4 ((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) → (𝐹 ∈ (𝐽 Cn 𝐾) ↔ (𝐹:𝑋𝑌 ∧ ∀𝑦𝐾 (𝐹𝑦) ∈ 𝐽)))
21simprbda 498 . . 3 (((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝐹 ∈ (𝐽 Cn 𝐾)) → 𝐹:𝑋𝑌)
3 eqid 2724 . . . . . . 7 𝐽 = 𝐽
43cncnpi 23092 . . . . . 6 ((𝐹 ∈ (𝐽 Cn 𝐾) ∧ 𝑥 𝐽) → 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))
54ralrimiva 3138 . . . . 5 (𝐹 ∈ (𝐽 Cn 𝐾) → ∀𝑥 𝐽𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))
65adantl 481 . . . 4 (((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝐹 ∈ (𝐽 Cn 𝐾)) → ∀𝑥 𝐽𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))
7 toponuni 22726 . . . . . 6 (𝐽 ∈ (TopOn‘𝑋) → 𝑋 = 𝐽)
87ad2antrr 723 . . . . 5 (((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝐹 ∈ (𝐽 Cn 𝐾)) → 𝑋 = 𝐽)
98raleqdv 3317 . . . 4 (((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝐹 ∈ (𝐽 Cn 𝐾)) → (∀𝑥𝑋 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥) ↔ ∀𝑥 𝐽𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥)))
106, 9mpbird 257 . . 3 (((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝐹 ∈ (𝐽 Cn 𝐾)) → ∀𝑥𝑋 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))
112, 10jca 511 . 2 (((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝐹 ∈ (𝐽 Cn 𝐾)) → (𝐹:𝑋𝑌 ∧ ∀𝑥𝑋 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥)))
12 simprl 768 . . 3 (((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ (𝐹:𝑋𝑌 ∧ ∀𝑥𝑋 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) → 𝐹:𝑋𝑌)
13 cnvimass 6070 . . . . . . . . . 10 (𝐹𝑦) ⊆ dom 𝐹
14 fdm 6716 . . . . . . . . . . 11 (𝐹:𝑋𝑌 → dom 𝐹 = 𝑋)
1514adantl 481 . . . . . . . . . 10 ((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ 𝐹:𝑋𝑌) → dom 𝐹 = 𝑋)
1613, 15sseqtrid 4026 . . . . . . . . 9 ((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ 𝐹:𝑋𝑌) → (𝐹𝑦) ⊆ 𝑋)
17 ssralv 4042 . . . . . . . . 9 ((𝐹𝑦) ⊆ 𝑋 → (∀𝑥𝑋 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥) → ∀𝑥 ∈ (𝐹𝑦)𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥)))
1816, 17syl 17 . . . . . . . 8 ((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ 𝐹:𝑋𝑌) → (∀𝑥𝑋 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥) → ∀𝑥 ∈ (𝐹𝑦)𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥)))
19 simprr 770 . . . . . . . . . . . 12 (((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ 𝐹:𝑋𝑌) ∧ (𝑥 ∈ (𝐹𝑦) ∧ 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) → 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))
20 simpllr 773 . . . . . . . . . . . 12 (((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ 𝐹:𝑋𝑌) ∧ (𝑥 ∈ (𝐹𝑦) ∧ 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) → 𝑦𝐾)
21 ffn 6707 . . . . . . . . . . . . . 14 (𝐹:𝑋𝑌𝐹 Fn 𝑋)
2221ad2antlr 724 . . . . . . . . . . . . 13 (((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ 𝐹:𝑋𝑌) ∧ (𝑥 ∈ (𝐹𝑦) ∧ 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) → 𝐹 Fn 𝑋)
23 simprl 768 . . . . . . . . . . . . 13 (((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ 𝐹:𝑋𝑌) ∧ (𝑥 ∈ (𝐹𝑦) ∧ 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) → 𝑥 ∈ (𝐹𝑦))
24 elpreima 7049 . . . . . . . . . . . . . 14 (𝐹 Fn 𝑋 → (𝑥 ∈ (𝐹𝑦) ↔ (𝑥𝑋 ∧ (𝐹𝑥) ∈ 𝑦)))
2524simplbda 499 . . . . . . . . . . . . 13 ((𝐹 Fn 𝑋𝑥 ∈ (𝐹𝑦)) → (𝐹𝑥) ∈ 𝑦)
2622, 23, 25syl2anc 583 . . . . . . . . . . . 12 (((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ 𝐹:𝑋𝑌) ∧ (𝑥 ∈ (𝐹𝑦) ∧ 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) → (𝐹𝑥) ∈ 𝑦)
27 cnpimaex 23070 . . . . . . . . . . . 12 ((𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥) ∧ 𝑦𝐾 ∧ (𝐹𝑥) ∈ 𝑦) → ∃𝑢𝐽 (𝑥𝑢 ∧ (𝐹𝑢) ⊆ 𝑦))
2819, 20, 26, 27syl3anc 1368 . . . . . . . . . . 11 (((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ 𝐹:𝑋𝑌) ∧ (𝑥 ∈ (𝐹𝑦) ∧ 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) → ∃𝑢𝐽 (𝑥𝑢 ∧ (𝐹𝑢) ⊆ 𝑦))
29 simpllr 773 . . . . . . . . . . . . . . 15 ((((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ 𝐹:𝑋𝑌) ∧ (𝑥 ∈ (𝐹𝑦) ∧ 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) ∧ 𝑢𝐽) → 𝐹:𝑋𝑌)
3029ffund 6711 . . . . . . . . . . . . . 14 ((((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ 𝐹:𝑋𝑌) ∧ (𝑥 ∈ (𝐹𝑦) ∧ 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) ∧ 𝑢𝐽) → Fun 𝐹)
31 simp-4l 780 . . . . . . . . . . . . . . . 16 (((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ 𝐹:𝑋𝑌) ∧ (𝑥 ∈ (𝐹𝑦) ∧ 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) → 𝐽 ∈ (TopOn‘𝑋))
32 toponss 22739 . . . . . . . . . . . . . . . 16 ((𝐽 ∈ (TopOn‘𝑋) ∧ 𝑢𝐽) → 𝑢𝑋)
3331, 32sylan 579 . . . . . . . . . . . . . . 15 ((((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ 𝐹:𝑋𝑌) ∧ (𝑥 ∈ (𝐹𝑦) ∧ 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) ∧ 𝑢𝐽) → 𝑢𝑋)
3429, 14syl 17 . . . . . . . . . . . . . . 15 ((((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ 𝐹:𝑋𝑌) ∧ (𝑥 ∈ (𝐹𝑦) ∧ 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) ∧ 𝑢𝐽) → dom 𝐹 = 𝑋)
3533, 34sseqtrrd 4015 . . . . . . . . . . . . . 14 ((((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ 𝐹:𝑋𝑌) ∧ (𝑥 ∈ (𝐹𝑦) ∧ 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) ∧ 𝑢𝐽) → 𝑢 ⊆ dom 𝐹)
36 funimass3 7045 . . . . . . . . . . . . . 14 ((Fun 𝐹𝑢 ⊆ dom 𝐹) → ((𝐹𝑢) ⊆ 𝑦𝑢 ⊆ (𝐹𝑦)))
3730, 35, 36syl2anc 583 . . . . . . . . . . . . 13 ((((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ 𝐹:𝑋𝑌) ∧ (𝑥 ∈ (𝐹𝑦) ∧ 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) ∧ 𝑢𝐽) → ((𝐹𝑢) ⊆ 𝑦𝑢 ⊆ (𝐹𝑦)))
3837anbi2d 628 . . . . . . . . . . . 12 ((((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ 𝐹:𝑋𝑌) ∧ (𝑥 ∈ (𝐹𝑦) ∧ 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) ∧ 𝑢𝐽) → ((𝑥𝑢 ∧ (𝐹𝑢) ⊆ 𝑦) ↔ (𝑥𝑢𝑢 ⊆ (𝐹𝑦))))
3938rexbidva 3168 . . . . . . . . . . 11 (((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ 𝐹:𝑋𝑌) ∧ (𝑥 ∈ (𝐹𝑦) ∧ 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) → (∃𝑢𝐽 (𝑥𝑢 ∧ (𝐹𝑢) ⊆ 𝑦) ↔ ∃𝑢𝐽 (𝑥𝑢𝑢 ⊆ (𝐹𝑦))))
4028, 39mpbid 231 . . . . . . . . . 10 (((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ 𝐹:𝑋𝑌) ∧ (𝑥 ∈ (𝐹𝑦) ∧ 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) → ∃𝑢𝐽 (𝑥𝑢𝑢 ⊆ (𝐹𝑦)))
4140expr 456 . . . . . . . . 9 (((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ 𝐹:𝑋𝑌) ∧ 𝑥 ∈ (𝐹𝑦)) → (𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥) → ∃𝑢𝐽 (𝑥𝑢𝑢 ⊆ (𝐹𝑦))))
4241ralimdva 3159 . . . . . . . 8 ((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ 𝐹:𝑋𝑌) → (∀𝑥 ∈ (𝐹𝑦)𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥) → ∀𝑥 ∈ (𝐹𝑦)∃𝑢𝐽 (𝑥𝑢𝑢 ⊆ (𝐹𝑦))))
4318, 42syld 47 . . . . . . 7 ((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ 𝐹:𝑋𝑌) → (∀𝑥𝑋 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥) → ∀𝑥 ∈ (𝐹𝑦)∃𝑢𝐽 (𝑥𝑢𝑢 ⊆ (𝐹𝑦))))
4443impr 454 . . . . . 6 ((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ 𝑦𝐾) ∧ (𝐹:𝑋𝑌 ∧ ∀𝑥𝑋 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) → ∀𝑥 ∈ (𝐹𝑦)∃𝑢𝐽 (𝑥𝑢𝑢 ⊆ (𝐹𝑦)))
4544an32s 649 . . . . 5 ((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ (𝐹:𝑋𝑌 ∧ ∀𝑥𝑋 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) ∧ 𝑦𝐾) → ∀𝑥 ∈ (𝐹𝑦)∃𝑢𝐽 (𝑥𝑢𝑢 ⊆ (𝐹𝑦)))
46 topontop 22725 . . . . . . 7 (𝐽 ∈ (TopOn‘𝑋) → 𝐽 ∈ Top)
4746ad3antrrr 727 . . . . . 6 ((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ (𝐹:𝑋𝑌 ∧ ∀𝑥𝑋 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) ∧ 𝑦𝐾) → 𝐽 ∈ Top)
48 eltop2 22788 . . . . . 6 (𝐽 ∈ Top → ((𝐹𝑦) ∈ 𝐽 ↔ ∀𝑥 ∈ (𝐹𝑦)∃𝑢𝐽 (𝑥𝑢𝑢 ⊆ (𝐹𝑦))))
4947, 48syl 17 . . . . 5 ((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ (𝐹:𝑋𝑌 ∧ ∀𝑥𝑋 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) ∧ 𝑦𝐾) → ((𝐹𝑦) ∈ 𝐽 ↔ ∀𝑥 ∈ (𝐹𝑦)∃𝑢𝐽 (𝑥𝑢𝑢 ⊆ (𝐹𝑦))))
5045, 49mpbird 257 . . . 4 ((((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ (𝐹:𝑋𝑌 ∧ ∀𝑥𝑋 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) ∧ 𝑦𝐾) → (𝐹𝑦) ∈ 𝐽)
5150ralrimiva 3138 . . 3 (((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ (𝐹:𝑋𝑌 ∧ ∀𝑥𝑋 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) → ∀𝑦𝐾 (𝐹𝑦) ∈ 𝐽)
521adantr 480 . . 3 (((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ (𝐹:𝑋𝑌 ∧ ∀𝑥𝑋 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) → (𝐹 ∈ (𝐽 Cn 𝐾) ↔ (𝐹:𝑋𝑌 ∧ ∀𝑦𝐾 (𝐹𝑦) ∈ 𝐽)))
5312, 51, 52mpbir2and 710 . 2 (((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) ∧ (𝐹:𝑋𝑌 ∧ ∀𝑥𝑋 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))) → 𝐹 ∈ (𝐽 Cn 𝐾))
5411, 53impbida 798 1 ((𝐽 ∈ (TopOn‘𝑋) ∧ 𝐾 ∈ (TopOn‘𝑌)) → (𝐹 ∈ (𝐽 Cn 𝐾) ↔ (𝐹:𝑋𝑌 ∧ ∀𝑥𝑋 𝐹 ∈ ((𝐽 CnP 𝐾)‘𝑥))))
Colors of variables: wff setvar class
Syntax hints:  wi 4  wb 205  wa 395   = wceq 1533  wcel 2098  wral 3053  wrex 3062  wss 3940   cuni 4899  ccnv 5665  dom cdm 5666  cima 5669  Fun wfun 6527   Fn wfn 6528  wf 6529  cfv 6533  (class class class)co 7401  Topctop 22705  TopOnctopon 22722   Cn ccn 23038   CnP ccnp 23039
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 2163  ax-ext 2695  ax-sep 5289  ax-nul 5296  ax-pow 5353  ax-pr 5417  ax-un 7718
This theorem depends on definitions:  df-bi 206  df-an 396  df-or 845  df-3an 1086  df-tru 1536  df-fal 1546  df-ex 1774  df-nf 1778  df-sb 2060  df-mo 2526  df-eu 2555  df-clab 2702  df-cleq 2716  df-clel 2802  df-nfc 2877  df-ne 2933  df-ral 3054  df-rex 3063  df-rab 3425  df-v 3468  df-sbc 3770  df-csb 3886  df-dif 3943  df-un 3945  df-in 3947  df-ss 3957  df-nul 4315  df-if 4521  df-pw 4596  df-sn 4621  df-pr 4623  df-op 4627  df-uni 4900  df-iun 4989  df-br 5139  df-opab 5201  df-mpt 5222  df-id 5564  df-xp 5672  df-rel 5673  df-cnv 5674  df-co 5675  df-dm 5676  df-rn 5677  df-res 5678  df-ima 5679  df-iota 6485  df-fun 6535  df-fn 6536  df-f 6537  df-fv 6541  df-ov 7404  df-oprab 7405  df-mpo 7406  df-1st 7968  df-2nd 7969  df-map 8817  df-topgen 17385  df-top 22706  df-topon 22723  df-cn 23041  df-cnp 23042
This theorem is referenced by:  cncnp2  23095  cnnei  23096  cnconst2  23097  1stccn  23277  ptcn  23441  cnflf  23816  cnfcf  23856  symgtgp  23920  ghmcnp  23929  metcn  24362  txmetcn  24367  cnlimc  25727  dvcn  25761  dvcnvre  25862  psercn  26268  abelth  26283  cxpcn3  26587  cvmlift2lem11  34759  cvmlift2lem12  34760  cvmlift3lem8  34772  ioccncflimc  45052  cncfuni  45053  icccncfext  45054  icocncflimc  45056  cncfiooicclem1  45060  dirkercncflem2  45271  dirkercncflem4  45273  dirkercncf  45274  fourierdlem32  45306  fourierdlem33  45307  fourierdlem62  45335  fourierdlem93  45366  fourierdlem101  45374
  Copyright terms: Public domain W3C validator