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

Theorem cnrest2 21138
Description: Equivalence of continuity in the parent topology and continuity in a subspace. (Contributed by Jeff Hankins, 10-Jul-2009.) (Proof shortened by Mario Carneiro, 21-Aug-2015.)
Assertion
Ref Expression
cnrest2 ((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) → (𝐹 ∈ (𝐽 Cn 𝐾) ↔ 𝐹 ∈ (𝐽 Cn (𝐾t 𝐵))))

Proof of Theorem cnrest2
Dummy variables 𝑥 𝑦 are mutually distinct and distinct from all other variables.
StepHypRef Expression
1 cntop1 21092 . . . 4 (𝐹 ∈ (𝐽 Cn 𝐾) → 𝐽 ∈ Top)
21a1i 11 . . 3 ((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) → (𝐹 ∈ (𝐽 Cn 𝐾) → 𝐽 ∈ Top))
3 eqid 2651 . . . . . . . 8 𝐽 = 𝐽
4 eqid 2651 . . . . . . . 8 𝐾 = 𝐾
53, 4cnf 21098 . . . . . . 7 (𝐹 ∈ (𝐽 Cn 𝐾) → 𝐹: 𝐽 𝐾)
6 ffn 6083 . . . . . . 7 (𝐹: 𝐽 𝐾𝐹 Fn 𝐽)
75, 6syl 17 . . . . . 6 (𝐹 ∈ (𝐽 Cn 𝐾) → 𝐹 Fn 𝐽)
87a1i 11 . . . . 5 ((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) → (𝐹 ∈ (𝐽 Cn 𝐾) → 𝐹 Fn 𝐽))
9 simp2 1082 . . . . 5 ((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) → ran 𝐹𝐵)
108, 9jctird 566 . . . 4 ((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) → (𝐹 ∈ (𝐽 Cn 𝐾) → (𝐹 Fn 𝐽 ∧ ran 𝐹𝐵)))
11 df-f 5930 . . . 4 (𝐹: 𝐽𝐵 ↔ (𝐹 Fn 𝐽 ∧ ran 𝐹𝐵))
1210, 11syl6ibr 242 . . 3 ((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) → (𝐹 ∈ (𝐽 Cn 𝐾) → 𝐹: 𝐽𝐵))
132, 12jcad 554 . 2 ((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) → (𝐹 ∈ (𝐽 Cn 𝐾) → (𝐽 ∈ Top ∧ 𝐹: 𝐽𝐵)))
14 cntop1 21092 . . . . 5 (𝐹 ∈ (𝐽 Cn (𝐾t 𝐵)) → 𝐽 ∈ Top)
1514adantl 481 . . . 4 (((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) ∧ 𝐹 ∈ (𝐽 Cn (𝐾t 𝐵))) → 𝐽 ∈ Top)
163toptopon 20770 . . . . . 6 (𝐽 ∈ Top ↔ 𝐽 ∈ (TopOn‘ 𝐽))
1715, 16sylib 208 . . . . 5 (((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) ∧ 𝐹 ∈ (𝐽 Cn (𝐾t 𝐵))) → 𝐽 ∈ (TopOn‘ 𝐽))
18 resttopon 21013 . . . . . . 7 ((𝐾 ∈ (TopOn‘𝑌) ∧ 𝐵𝑌) → (𝐾t 𝐵) ∈ (TopOn‘𝐵))
19183adant2 1100 . . . . . 6 ((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) → (𝐾t 𝐵) ∈ (TopOn‘𝐵))
2019adantr 480 . . . . 5 (((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) ∧ 𝐹 ∈ (𝐽 Cn (𝐾t 𝐵))) → (𝐾t 𝐵) ∈ (TopOn‘𝐵))
21 simpr 476 . . . . 5 (((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) ∧ 𝐹 ∈ (𝐽 Cn (𝐾t 𝐵))) → 𝐹 ∈ (𝐽 Cn (𝐾t 𝐵)))
22 cnf2 21101 . . . . 5 ((𝐽 ∈ (TopOn‘ 𝐽) ∧ (𝐾t 𝐵) ∈ (TopOn‘𝐵) ∧ 𝐹 ∈ (𝐽 Cn (𝐾t 𝐵))) → 𝐹: 𝐽𝐵)
2317, 20, 21, 22syl3anc 1366 . . . 4 (((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) ∧ 𝐹 ∈ (𝐽 Cn (𝐾t 𝐵))) → 𝐹: 𝐽𝐵)
2415, 23jca 553 . . 3 (((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) ∧ 𝐹 ∈ (𝐽 Cn (𝐾t 𝐵))) → (𝐽 ∈ Top ∧ 𝐹: 𝐽𝐵))
2524ex 449 . 2 ((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) → (𝐹 ∈ (𝐽 Cn (𝐾t 𝐵)) → (𝐽 ∈ Top ∧ 𝐹: 𝐽𝐵)))
26 vex 3234 . . . . . . . . 9 𝑥 ∈ V
2726inex1 4832 . . . . . . . 8 (𝑥𝐵) ∈ V
2827a1i 11 . . . . . . 7 ((((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) ∧ (𝐽 ∈ Top ∧ 𝐹: 𝐽𝐵)) ∧ 𝑥𝐾) → (𝑥𝐵) ∈ V)
29 simpl1 1084 . . . . . . . 8 (((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) ∧ (𝐽 ∈ Top ∧ 𝐹: 𝐽𝐵)) → 𝐾 ∈ (TopOn‘𝑌))
30 toponmax 20778 . . . . . . . . . 10 (𝐾 ∈ (TopOn‘𝑌) → 𝑌𝐾)
3129, 30syl 17 . . . . . . . . 9 (((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) ∧ (𝐽 ∈ Top ∧ 𝐹: 𝐽𝐵)) → 𝑌𝐾)
32 simpl3 1086 . . . . . . . . 9 (((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) ∧ (𝐽 ∈ Top ∧ 𝐹: 𝐽𝐵)) → 𝐵𝑌)
3331, 32ssexd 4838 . . . . . . . 8 (((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) ∧ (𝐽 ∈ Top ∧ 𝐹: 𝐽𝐵)) → 𝐵 ∈ V)
34 elrest 16135 . . . . . . . 8 ((𝐾 ∈ (TopOn‘𝑌) ∧ 𝐵 ∈ V) → (𝑦 ∈ (𝐾t 𝐵) ↔ ∃𝑥𝐾 𝑦 = (𝑥𝐵)))
3529, 33, 34syl2anc 694 . . . . . . 7 (((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) ∧ (𝐽 ∈ Top ∧ 𝐹: 𝐽𝐵)) → (𝑦 ∈ (𝐾t 𝐵) ↔ ∃𝑥𝐾 𝑦 = (𝑥𝐵)))
36 imaeq2 5497 . . . . . . . . 9 (𝑦 = (𝑥𝐵) → (𝐹𝑦) = (𝐹 “ (𝑥𝐵)))
3736eleq1d 2715 . . . . . . . 8 (𝑦 = (𝑥𝐵) → ((𝐹𝑦) ∈ 𝐽 ↔ (𝐹 “ (𝑥𝐵)) ∈ 𝐽))
3837adantl 481 . . . . . . 7 ((((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) ∧ (𝐽 ∈ Top ∧ 𝐹: 𝐽𝐵)) ∧ 𝑦 = (𝑥𝐵)) → ((𝐹𝑦) ∈ 𝐽 ↔ (𝐹 “ (𝑥𝐵)) ∈ 𝐽))
3928, 35, 38ralxfr2d 4912 . . . . . 6 (((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) ∧ (𝐽 ∈ Top ∧ 𝐹: 𝐽𝐵)) → (∀𝑦 ∈ (𝐾t 𝐵)(𝐹𝑦) ∈ 𝐽 ↔ ∀𝑥𝐾 (𝐹 “ (𝑥𝐵)) ∈ 𝐽))
40 simplrr 818 . . . . . . . . . 10 ((((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) ∧ (𝐽 ∈ Top ∧ 𝐹: 𝐽𝐵)) ∧ 𝑥𝐾) → 𝐹: 𝐽𝐵)
41 ffun 6086 . . . . . . . . . 10 (𝐹: 𝐽𝐵 → Fun 𝐹)
42 inpreima 6382 . . . . . . . . . 10 (Fun 𝐹 → (𝐹 “ (𝑥𝐵)) = ((𝐹𝑥) ∩ (𝐹𝐵)))
4340, 41, 423syl 18 . . . . . . . . 9 ((((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) ∧ (𝐽 ∈ Top ∧ 𝐹: 𝐽𝐵)) ∧ 𝑥𝐾) → (𝐹 “ (𝑥𝐵)) = ((𝐹𝑥) ∩ (𝐹𝐵)))
44 cnvimass 5520 . . . . . . . . . . . 12 (𝐹𝑥) ⊆ dom 𝐹
45 cnvimarndm 5521 . . . . . . . . . . . 12 (𝐹 “ ran 𝐹) = dom 𝐹
4644, 45sseqtr4i 3671 . . . . . . . . . . 11 (𝐹𝑥) ⊆ (𝐹 “ ran 𝐹)
47 simpll2 1121 . . . . . . . . . . . 12 ((((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) ∧ (𝐽 ∈ Top ∧ 𝐹: 𝐽𝐵)) ∧ 𝑥𝐾) → ran 𝐹𝐵)
48 imass2 5536 . . . . . . . . . . . 12 (ran 𝐹𝐵 → (𝐹 “ ran 𝐹) ⊆ (𝐹𝐵))
4947, 48syl 17 . . . . . . . . . . 11 ((((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) ∧ (𝐽 ∈ Top ∧ 𝐹: 𝐽𝐵)) ∧ 𝑥𝐾) → (𝐹 “ ran 𝐹) ⊆ (𝐹𝐵))
5046, 49syl5ss 3647 . . . . . . . . . 10 ((((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) ∧ (𝐽 ∈ Top ∧ 𝐹: 𝐽𝐵)) ∧ 𝑥𝐾) → (𝐹𝑥) ⊆ (𝐹𝐵))
51 df-ss 3621 . . . . . . . . . 10 ((𝐹𝑥) ⊆ (𝐹𝐵) ↔ ((𝐹𝑥) ∩ (𝐹𝐵)) = (𝐹𝑥))
5250, 51sylib 208 . . . . . . . . 9 ((((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) ∧ (𝐽 ∈ Top ∧ 𝐹: 𝐽𝐵)) ∧ 𝑥𝐾) → ((𝐹𝑥) ∩ (𝐹𝐵)) = (𝐹𝑥))
5343, 52eqtrd 2685 . . . . . . . 8 ((((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) ∧ (𝐽 ∈ Top ∧ 𝐹: 𝐽𝐵)) ∧ 𝑥𝐾) → (𝐹 “ (𝑥𝐵)) = (𝐹𝑥))
5453eleq1d 2715 . . . . . . 7 ((((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) ∧ (𝐽 ∈ Top ∧ 𝐹: 𝐽𝐵)) ∧ 𝑥𝐾) → ((𝐹 “ (𝑥𝐵)) ∈ 𝐽 ↔ (𝐹𝑥) ∈ 𝐽))
5554ralbidva 3014 . . . . . 6 (((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) ∧ (𝐽 ∈ Top ∧ 𝐹: 𝐽𝐵)) → (∀𝑥𝐾 (𝐹 “ (𝑥𝐵)) ∈ 𝐽 ↔ ∀𝑥𝐾 (𝐹𝑥) ∈ 𝐽))
56 simprr 811 . . . . . . . 8 (((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) ∧ (𝐽 ∈ Top ∧ 𝐹: 𝐽𝐵)) → 𝐹: 𝐽𝐵)
5756, 32fssd 6095 . . . . . . 7 (((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) ∧ (𝐽 ∈ Top ∧ 𝐹: 𝐽𝐵)) → 𝐹: 𝐽𝑌)
5857biantrurd 528 . . . . . 6 (((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) ∧ (𝐽 ∈ Top ∧ 𝐹: 𝐽𝐵)) → (∀𝑥𝐾 (𝐹𝑥) ∈ 𝐽 ↔ (𝐹: 𝐽𝑌 ∧ ∀𝑥𝐾 (𝐹𝑥) ∈ 𝐽)))
5939, 55, 583bitrrd 295 . . . . 5 (((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) ∧ (𝐽 ∈ Top ∧ 𝐹: 𝐽𝐵)) → ((𝐹: 𝐽𝑌 ∧ ∀𝑥𝐾 (𝐹𝑥) ∈ 𝐽) ↔ ∀𝑦 ∈ (𝐾t 𝐵)(𝐹𝑦) ∈ 𝐽))
6056biantrurd 528 . . . . 5 (((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) ∧ (𝐽 ∈ Top ∧ 𝐹: 𝐽𝐵)) → (∀𝑦 ∈ (𝐾t 𝐵)(𝐹𝑦) ∈ 𝐽 ↔ (𝐹: 𝐽𝐵 ∧ ∀𝑦 ∈ (𝐾t 𝐵)(𝐹𝑦) ∈ 𝐽)))
6159, 60bitrd 268 . . . 4 (((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) ∧ (𝐽 ∈ Top ∧ 𝐹: 𝐽𝐵)) → ((𝐹: 𝐽𝑌 ∧ ∀𝑥𝐾 (𝐹𝑥) ∈ 𝐽) ↔ (𝐹: 𝐽𝐵 ∧ ∀𝑦 ∈ (𝐾t 𝐵)(𝐹𝑦) ∈ 𝐽)))
62 simprl 809 . . . . . 6 (((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) ∧ (𝐽 ∈ Top ∧ 𝐹: 𝐽𝐵)) → 𝐽 ∈ Top)
6362, 16sylib 208 . . . . 5 (((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) ∧ (𝐽 ∈ Top ∧ 𝐹: 𝐽𝐵)) → 𝐽 ∈ (TopOn‘ 𝐽))
64 iscn 21087 . . . . 5 ((𝐽 ∈ (TopOn‘ 𝐽) ∧ 𝐾 ∈ (TopOn‘𝑌)) → (𝐹 ∈ (𝐽 Cn 𝐾) ↔ (𝐹: 𝐽𝑌 ∧ ∀𝑥𝐾 (𝐹𝑥) ∈ 𝐽)))
6563, 29, 64syl2anc 694 . . . 4 (((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) ∧ (𝐽 ∈ Top ∧ 𝐹: 𝐽𝐵)) → (𝐹 ∈ (𝐽 Cn 𝐾) ↔ (𝐹: 𝐽𝑌 ∧ ∀𝑥𝐾 (𝐹𝑥) ∈ 𝐽)))
6619adantr 480 . . . . 5 (((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) ∧ (𝐽 ∈ Top ∧ 𝐹: 𝐽𝐵)) → (𝐾t 𝐵) ∈ (TopOn‘𝐵))
67 iscn 21087 . . . . 5 ((𝐽 ∈ (TopOn‘ 𝐽) ∧ (𝐾t 𝐵) ∈ (TopOn‘𝐵)) → (𝐹 ∈ (𝐽 Cn (𝐾t 𝐵)) ↔ (𝐹: 𝐽𝐵 ∧ ∀𝑦 ∈ (𝐾t 𝐵)(𝐹𝑦) ∈ 𝐽)))
6863, 66, 67syl2anc 694 . . . 4 (((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) ∧ (𝐽 ∈ Top ∧ 𝐹: 𝐽𝐵)) → (𝐹 ∈ (𝐽 Cn (𝐾t 𝐵)) ↔ (𝐹: 𝐽𝐵 ∧ ∀𝑦 ∈ (𝐾t 𝐵)(𝐹𝑦) ∈ 𝐽)))
6961, 65, 683bitr4d 300 . . 3 (((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) ∧ (𝐽 ∈ Top ∧ 𝐹: 𝐽𝐵)) → (𝐹 ∈ (𝐽 Cn 𝐾) ↔ 𝐹 ∈ (𝐽 Cn (𝐾t 𝐵))))
7069ex 449 . 2 ((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) → ((𝐽 ∈ Top ∧ 𝐹: 𝐽𝐵) → (𝐹 ∈ (𝐽 Cn 𝐾) ↔ 𝐹 ∈ (𝐽 Cn (𝐾t 𝐵)))))
7113, 25, 70pm5.21ndd 368 1 ((𝐾 ∈ (TopOn‘𝑌) ∧ ran 𝐹𝐵𝐵𝑌) → (𝐹 ∈ (𝐽 Cn 𝐾) ↔ 𝐹 ∈ (𝐽 Cn (𝐾t 𝐵))))
Colors of variables: wff setvar class
Syntax hints:  wi 4  wb 196  wa 383  w3a 1054   = wceq 1523  wcel 2030  wral 2941  wrex 2942  Vcvv 3231  cin 3606  wss 3607   cuni 4468  ccnv 5142  dom cdm 5143  ran crn 5144  cima 5146  Fun wfun 5920   Fn wfn 5921  wf 5922  cfv 5926  (class class class)co 6690  t crest 16128  Topctop 20746  TopOnctopon 20763   Cn ccn 21076
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1762  ax-4 1777  ax-5 1879  ax-6 1945  ax-7 1981  ax-8 2032  ax-9 2039  ax-10 2059  ax-11 2074  ax-12 2087  ax-13 2282  ax-ext 2631  ax-rep 4804  ax-sep 4814  ax-nul 4822  ax-pow 4873  ax-pr 4936  ax-un 6991
This theorem depends on definitions:  df-bi 197  df-or 384  df-an 385  df-3or 1055  df-3an 1056  df-tru 1526  df-ex 1745  df-nf 1750  df-sb 1938  df-eu 2502  df-mo 2503  df-clab 2638  df-cleq 2644  df-clel 2647  df-nfc 2782  df-ne 2824  df-ral 2946  df-rex 2947  df-reu 2948  df-rab 2950  df-v 3233  df-sbc 3469  df-csb 3567  df-dif 3610  df-un 3612  df-in 3614  df-ss 3621  df-pss 3623  df-nul 3949  df-if 4120  df-pw 4193  df-sn 4211  df-pr 4213  df-tp 4215  df-op 4217  df-uni 4469  df-int 4508  df-iun 4554  df-br 4686  df-opab 4746  df-mpt 4763  df-tr 4786  df-id 5053  df-eprel 5058  df-po 5064  df-so 5065  df-fr 5102  df-we 5104  df-xp 5149  df-rel 5150  df-cnv 5151  df-co 5152  df-dm 5153  df-rn 5154  df-res 5155  df-ima 5156  df-pred 5718  df-ord 5764  df-on 5765  df-lim 5766  df-suc 5767  df-iota 5889  df-fun 5928  df-fn 5929  df-f 5930  df-f1 5931  df-fo 5932  df-f1o 5933  df-fv 5934  df-ov 6693  df-oprab 6694  df-mpt2 6695  df-om 7108  df-1st 7210  df-2nd 7211  df-wrecs 7452  df-recs 7513  df-rdg 7551  df-oadd 7609  df-er 7787  df-map 7901  df-en 7998  df-fin 8001  df-fi 8358  df-rest 16130  df-topgen 16151  df-top 20747  df-topon 20764  df-bases 20798  df-cn 21079
This theorem is referenced by:  cnrest2r  21139  rncmp  21247  connima  21276  conncn  21277  kgencn2  21408  kgencn3  21409  qtoprest  21568  hmeores  21622  symgtgp  21952  submtmd  21955  subgtgp  21956  metdcn2  22689  metdscn2  22707  cnmptre  22773  iimulcn  22784  icchmeo  22787  evth  22805  evth2  22806  lebnumlem2  22808  reparphti  22843  efrlim  24741  rmulccn  30102  raddcn  30103  xrge0mulc1cn  30115  cvxpconn  31350  cvxsconn  31351  cvmliftmolem1  31389  cvmliftlem8  31400  cvmlift2lem9  31419  cvmlift3lem6  31432  ivthALT  32455  knoppcnlem10  32617  broucube  33573  areacirclem2  33631  cnres2  33692  cnresima  33693  refsumcn  39503  icccncfext  40418
  Copyright terms: Public domain W3C validator