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

Theorem oeoelem 7847
Description: Lemma for oeoe 7848. (Contributed by Eric Schmidt, 26-May-2009.)
Hypotheses
Ref Expression
oeoelem.1 𝐴 ∈ On
oeoelem.2 ∅ ∈ 𝐴
Assertion
Ref Expression
oeoelem ((𝐵 ∈ On ∧ 𝐶 ∈ On) → ((𝐴𝑜 𝐵) ↑𝑜 𝐶) = (𝐴𝑜 (𝐵 ·𝑜 𝐶)))

Proof of Theorem oeoelem
Dummy variables 𝑥 𝑦 𝑧 𝑤 are mutually distinct and distinct from all other variables.
StepHypRef Expression
1 oveq2 6821 . . . 4 (𝑥 = ∅ → ((𝐴𝑜 𝐵) ↑𝑜 𝑥) = ((𝐴𝑜 𝐵) ↑𝑜 ∅))
2 oveq2 6821 . . . . 5 (𝑥 = ∅ → (𝐵 ·𝑜 𝑥) = (𝐵 ·𝑜 ∅))
32oveq2d 6829 . . . 4 (𝑥 = ∅ → (𝐴𝑜 (𝐵 ·𝑜 𝑥)) = (𝐴𝑜 (𝐵 ·𝑜 ∅)))
41, 3eqeq12d 2775 . . 3 (𝑥 = ∅ → (((𝐴𝑜 𝐵) ↑𝑜 𝑥) = (𝐴𝑜 (𝐵 ·𝑜 𝑥)) ↔ ((𝐴𝑜 𝐵) ↑𝑜 ∅) = (𝐴𝑜 (𝐵 ·𝑜 ∅))))
5 oveq2 6821 . . . 4 (𝑥 = 𝑦 → ((𝐴𝑜 𝐵) ↑𝑜 𝑥) = ((𝐴𝑜 𝐵) ↑𝑜 𝑦))
6 oveq2 6821 . . . . 5 (𝑥 = 𝑦 → (𝐵 ·𝑜 𝑥) = (𝐵 ·𝑜 𝑦))
76oveq2d 6829 . . . 4 (𝑥 = 𝑦 → (𝐴𝑜 (𝐵 ·𝑜 𝑥)) = (𝐴𝑜 (𝐵 ·𝑜 𝑦)))
85, 7eqeq12d 2775 . . 3 (𝑥 = 𝑦 → (((𝐴𝑜 𝐵) ↑𝑜 𝑥) = (𝐴𝑜 (𝐵 ·𝑜 𝑥)) ↔ ((𝐴𝑜 𝐵) ↑𝑜 𝑦) = (𝐴𝑜 (𝐵 ·𝑜 𝑦))))
9 oveq2 6821 . . . 4 (𝑥 = suc 𝑦 → ((𝐴𝑜 𝐵) ↑𝑜 𝑥) = ((𝐴𝑜 𝐵) ↑𝑜 suc 𝑦))
10 oveq2 6821 . . . . 5 (𝑥 = suc 𝑦 → (𝐵 ·𝑜 𝑥) = (𝐵 ·𝑜 suc 𝑦))
1110oveq2d 6829 . . . 4 (𝑥 = suc 𝑦 → (𝐴𝑜 (𝐵 ·𝑜 𝑥)) = (𝐴𝑜 (𝐵 ·𝑜 suc 𝑦)))
129, 11eqeq12d 2775 . . 3 (𝑥 = suc 𝑦 → (((𝐴𝑜 𝐵) ↑𝑜 𝑥) = (𝐴𝑜 (𝐵 ·𝑜 𝑥)) ↔ ((𝐴𝑜 𝐵) ↑𝑜 suc 𝑦) = (𝐴𝑜 (𝐵 ·𝑜 suc 𝑦))))
13 oveq2 6821 . . . 4 (𝑥 = 𝐶 → ((𝐴𝑜 𝐵) ↑𝑜 𝑥) = ((𝐴𝑜 𝐵) ↑𝑜 𝐶))
14 oveq2 6821 . . . . 5 (𝑥 = 𝐶 → (𝐵 ·𝑜 𝑥) = (𝐵 ·𝑜 𝐶))
1514oveq2d 6829 . . . 4 (𝑥 = 𝐶 → (𝐴𝑜 (𝐵 ·𝑜 𝑥)) = (𝐴𝑜 (𝐵 ·𝑜 𝐶)))
1613, 15eqeq12d 2775 . . 3 (𝑥 = 𝐶 → (((𝐴𝑜 𝐵) ↑𝑜 𝑥) = (𝐴𝑜 (𝐵 ·𝑜 𝑥)) ↔ ((𝐴𝑜 𝐵) ↑𝑜 𝐶) = (𝐴𝑜 (𝐵 ·𝑜 𝐶))))
17 oeoelem.1 . . . . . 6 𝐴 ∈ On
18 oecl 7786 . . . . . 6 ((𝐴 ∈ On ∧ 𝐵 ∈ On) → (𝐴𝑜 𝐵) ∈ On)
1917, 18mpan 708 . . . . 5 (𝐵 ∈ On → (𝐴𝑜 𝐵) ∈ On)
20 oe0 7771 . . . . 5 ((𝐴𝑜 𝐵) ∈ On → ((𝐴𝑜 𝐵) ↑𝑜 ∅) = 1𝑜)
2119, 20syl 17 . . . 4 (𝐵 ∈ On → ((𝐴𝑜 𝐵) ↑𝑜 ∅) = 1𝑜)
22 om0 7766 . . . . . 6 (𝐵 ∈ On → (𝐵 ·𝑜 ∅) = ∅)
2322oveq2d 6829 . . . . 5 (𝐵 ∈ On → (𝐴𝑜 (𝐵 ·𝑜 ∅)) = (𝐴𝑜 ∅))
24 oe0 7771 . . . . . 6 (𝐴 ∈ On → (𝐴𝑜 ∅) = 1𝑜)
2517, 24ax-mp 5 . . . . 5 (𝐴𝑜 ∅) = 1𝑜
2623, 25syl6eq 2810 . . . 4 (𝐵 ∈ On → (𝐴𝑜 (𝐵 ·𝑜 ∅)) = 1𝑜)
2721, 26eqtr4d 2797 . . 3 (𝐵 ∈ On → ((𝐴𝑜 𝐵) ↑𝑜 ∅) = (𝐴𝑜 (𝐵 ·𝑜 ∅)))
28 oveq1 6820 . . . . 5 (((𝐴𝑜 𝐵) ↑𝑜 𝑦) = (𝐴𝑜 (𝐵 ·𝑜 𝑦)) → (((𝐴𝑜 𝐵) ↑𝑜 𝑦) ·𝑜 (𝐴𝑜 𝐵)) = ((𝐴𝑜 (𝐵 ·𝑜 𝑦)) ·𝑜 (𝐴𝑜 𝐵)))
29 oesuc 7776 . . . . . . 7 (((𝐴𝑜 𝐵) ∈ On ∧ 𝑦 ∈ On) → ((𝐴𝑜 𝐵) ↑𝑜 suc 𝑦) = (((𝐴𝑜 𝐵) ↑𝑜 𝑦) ·𝑜 (𝐴𝑜 𝐵)))
3019, 29sylan 489 . . . . . 6 ((𝐵 ∈ On ∧ 𝑦 ∈ On) → ((𝐴𝑜 𝐵) ↑𝑜 suc 𝑦) = (((𝐴𝑜 𝐵) ↑𝑜 𝑦) ·𝑜 (𝐴𝑜 𝐵)))
31 omsuc 7775 . . . . . . . 8 ((𝐵 ∈ On ∧ 𝑦 ∈ On) → (𝐵 ·𝑜 suc 𝑦) = ((𝐵 ·𝑜 𝑦) +𝑜 𝐵))
3231oveq2d 6829 . . . . . . 7 ((𝐵 ∈ On ∧ 𝑦 ∈ On) → (𝐴𝑜 (𝐵 ·𝑜 suc 𝑦)) = (𝐴𝑜 ((𝐵 ·𝑜 𝑦) +𝑜 𝐵)))
33 omcl 7785 . . . . . . . . 9 ((𝐵 ∈ On ∧ 𝑦 ∈ On) → (𝐵 ·𝑜 𝑦) ∈ On)
34 oeoa 7846 . . . . . . . . . 10 ((𝐴 ∈ On ∧ (𝐵 ·𝑜 𝑦) ∈ On ∧ 𝐵 ∈ On) → (𝐴𝑜 ((𝐵 ·𝑜 𝑦) +𝑜 𝐵)) = ((𝐴𝑜 (𝐵 ·𝑜 𝑦)) ·𝑜 (𝐴𝑜 𝐵)))
3517, 34mp3an1 1560 . . . . . . . . 9 (((𝐵 ·𝑜 𝑦) ∈ On ∧ 𝐵 ∈ On) → (𝐴𝑜 ((𝐵 ·𝑜 𝑦) +𝑜 𝐵)) = ((𝐴𝑜 (𝐵 ·𝑜 𝑦)) ·𝑜 (𝐴𝑜 𝐵)))
3633, 35sylan 489 . . . . . . . 8 (((𝐵 ∈ On ∧ 𝑦 ∈ On) ∧ 𝐵 ∈ On) → (𝐴𝑜 ((𝐵 ·𝑜 𝑦) +𝑜 𝐵)) = ((𝐴𝑜 (𝐵 ·𝑜 𝑦)) ·𝑜 (𝐴𝑜 𝐵)))
3736anabss1 890 . . . . . . 7 ((𝐵 ∈ On ∧ 𝑦 ∈ On) → (𝐴𝑜 ((𝐵 ·𝑜 𝑦) +𝑜 𝐵)) = ((𝐴𝑜 (𝐵 ·𝑜 𝑦)) ·𝑜 (𝐴𝑜 𝐵)))
3832, 37eqtrd 2794 . . . . . 6 ((𝐵 ∈ On ∧ 𝑦 ∈ On) → (𝐴𝑜 (𝐵 ·𝑜 suc 𝑦)) = ((𝐴𝑜 (𝐵 ·𝑜 𝑦)) ·𝑜 (𝐴𝑜 𝐵)))
3930, 38eqeq12d 2775 . . . . 5 ((𝐵 ∈ On ∧ 𝑦 ∈ On) → (((𝐴𝑜 𝐵) ↑𝑜 suc 𝑦) = (𝐴𝑜 (𝐵 ·𝑜 suc 𝑦)) ↔ (((𝐴𝑜 𝐵) ↑𝑜 𝑦) ·𝑜 (𝐴𝑜 𝐵)) = ((𝐴𝑜 (𝐵 ·𝑜 𝑦)) ·𝑜 (𝐴𝑜 𝐵))))
4028, 39syl5ibr 236 . . . 4 ((𝐵 ∈ On ∧ 𝑦 ∈ On) → (((𝐴𝑜 𝐵) ↑𝑜 𝑦) = (𝐴𝑜 (𝐵 ·𝑜 𝑦)) → ((𝐴𝑜 𝐵) ↑𝑜 suc 𝑦) = (𝐴𝑜 (𝐵 ·𝑜 suc 𝑦))))
4140expcom 450 . . 3 (𝑦 ∈ On → (𝐵 ∈ On → (((𝐴𝑜 𝐵) ↑𝑜 𝑦) = (𝐴𝑜 (𝐵 ·𝑜 𝑦)) → ((𝐴𝑜 𝐵) ↑𝑜 suc 𝑦) = (𝐴𝑜 (𝐵 ·𝑜 suc 𝑦)))))
42 iuneq2 4689 . . . . 5 (∀𝑦𝑥 ((𝐴𝑜 𝐵) ↑𝑜 𝑦) = (𝐴𝑜 (𝐵 ·𝑜 𝑦)) → 𝑦𝑥 ((𝐴𝑜 𝐵) ↑𝑜 𝑦) = 𝑦𝑥 (𝐴𝑜 (𝐵 ·𝑜 𝑦)))
43 vex 3343 . . . . . . 7 𝑥 ∈ V
44 oeoelem.2 . . . . . . . . . . 11 ∅ ∈ 𝐴
45 oen0 7835 . . . . . . . . . . 11 (((𝐴 ∈ On ∧ 𝐵 ∈ On) ∧ ∅ ∈ 𝐴) → ∅ ∈ (𝐴𝑜 𝐵))
4644, 45mpan2 709 . . . . . . . . . 10 ((𝐴 ∈ On ∧ 𝐵 ∈ On) → ∅ ∈ (𝐴𝑜 𝐵))
47 oelim 7783 . . . . . . . . . . 11 ((((𝐴𝑜 𝐵) ∈ On ∧ (𝑥 ∈ V ∧ Lim 𝑥)) ∧ ∅ ∈ (𝐴𝑜 𝐵)) → ((𝐴𝑜 𝐵) ↑𝑜 𝑥) = 𝑦𝑥 ((𝐴𝑜 𝐵) ↑𝑜 𝑦))
4818, 47sylanl1 685 . . . . . . . . . 10 ((((𝐴 ∈ On ∧ 𝐵 ∈ On) ∧ (𝑥 ∈ V ∧ Lim 𝑥)) ∧ ∅ ∈ (𝐴𝑜 𝐵)) → ((𝐴𝑜 𝐵) ↑𝑜 𝑥) = 𝑦𝑥 ((𝐴𝑜 𝐵) ↑𝑜 𝑦))
4946, 48sylan2 492 . . . . . . . . 9 ((((𝐴 ∈ On ∧ 𝐵 ∈ On) ∧ (𝑥 ∈ V ∧ Lim 𝑥)) ∧ (𝐴 ∈ On ∧ 𝐵 ∈ On)) → ((𝐴𝑜 𝐵) ↑𝑜 𝑥) = 𝑦𝑥 ((𝐴𝑜 𝐵) ↑𝑜 𝑦))
5049anabss1 890 . . . . . . . 8 (((𝐴 ∈ On ∧ 𝐵 ∈ On) ∧ (𝑥 ∈ V ∧ Lim 𝑥)) → ((𝐴𝑜 𝐵) ↑𝑜 𝑥) = 𝑦𝑥 ((𝐴𝑜 𝐵) ↑𝑜 𝑦))
5117, 50mpanl1 718 . . . . . . 7 ((𝐵 ∈ On ∧ (𝑥 ∈ V ∧ Lim 𝑥)) → ((𝐴𝑜 𝐵) ↑𝑜 𝑥) = 𝑦𝑥 ((𝐴𝑜 𝐵) ↑𝑜 𝑦))
5243, 51mpanr1 721 . . . . . 6 ((𝐵 ∈ On ∧ Lim 𝑥) → ((𝐴𝑜 𝐵) ↑𝑜 𝑥) = 𝑦𝑥 ((𝐴𝑜 𝐵) ↑𝑜 𝑦))
53 omlim 7782 . . . . . . . . 9 ((𝐵 ∈ On ∧ (𝑥 ∈ V ∧ Lim 𝑥)) → (𝐵 ·𝑜 𝑥) = 𝑦𝑥 (𝐵 ·𝑜 𝑦))
5443, 53mpanr1 721 . . . . . . . 8 ((𝐵 ∈ On ∧ Lim 𝑥) → (𝐵 ·𝑜 𝑥) = 𝑦𝑥 (𝐵 ·𝑜 𝑦))
5554oveq2d 6829 . . . . . . 7 ((𝐵 ∈ On ∧ Lim 𝑥) → (𝐴𝑜 (𝐵 ·𝑜 𝑥)) = (𝐴𝑜 𝑦𝑥 (𝐵 ·𝑜 𝑦)))
5643a1i 11 . . . . . . . 8 ((𝐵 ∈ On ∧ Lim 𝑥) → 𝑥 ∈ V)
57 limord 5945 . . . . . . . . . . . 12 (Lim 𝑥 → Ord 𝑥)
58 ordelon 5908 . . . . . . . . . . . 12 ((Ord 𝑥𝑦𝑥) → 𝑦 ∈ On)
5957, 58sylan 489 . . . . . . . . . . 11 ((Lim 𝑥𝑦𝑥) → 𝑦 ∈ On)
6059, 33sylan2 492 . . . . . . . . . 10 ((𝐵 ∈ On ∧ (Lim 𝑥𝑦𝑥)) → (𝐵 ·𝑜 𝑦) ∈ On)
6160anassrs 683 . . . . . . . . 9 (((𝐵 ∈ On ∧ Lim 𝑥) ∧ 𝑦𝑥) → (𝐵 ·𝑜 𝑦) ∈ On)
6261ralrimiva 3104 . . . . . . . 8 ((𝐵 ∈ On ∧ Lim 𝑥) → ∀𝑦𝑥 (𝐵 ·𝑜 𝑦) ∈ On)
63 0ellim 5948 . . . . . . . . . 10 (Lim 𝑥 → ∅ ∈ 𝑥)
64 ne0i 4064 . . . . . . . . . 10 (∅ ∈ 𝑥𝑥 ≠ ∅)
6563, 64syl 17 . . . . . . . . 9 (Lim 𝑥𝑥 ≠ ∅)
6665adantl 473 . . . . . . . 8 ((𝐵 ∈ On ∧ Lim 𝑥) → 𝑥 ≠ ∅)
67 vex 3343 . . . . . . . . . 10 𝑤 ∈ V
68 oelim 7783 . . . . . . . . . . . 12 (((𝐴 ∈ On ∧ (𝑤 ∈ V ∧ Lim 𝑤)) ∧ ∅ ∈ 𝐴) → (𝐴𝑜 𝑤) = 𝑧𝑤 (𝐴𝑜 𝑧))
6944, 68mpan2 709 . . . . . . . . . . 11 ((𝐴 ∈ On ∧ (𝑤 ∈ V ∧ Lim 𝑤)) → (𝐴𝑜 𝑤) = 𝑧𝑤 (𝐴𝑜 𝑧))
7017, 69mpan 708 . . . . . . . . . 10 ((𝑤 ∈ V ∧ Lim 𝑤) → (𝐴𝑜 𝑤) = 𝑧𝑤 (𝐴𝑜 𝑧))
7167, 70mpan 708 . . . . . . . . 9 (Lim 𝑤 → (𝐴𝑜 𝑤) = 𝑧𝑤 (𝐴𝑜 𝑧))
72 oewordi 7840 . . . . . . . . . . . 12 (((𝑧 ∈ On ∧ 𝑤 ∈ On ∧ 𝐴 ∈ On) ∧ ∅ ∈ 𝐴) → (𝑧𝑤 → (𝐴𝑜 𝑧) ⊆ (𝐴𝑜 𝑤)))
7344, 72mpan2 709 . . . . . . . . . . 11 ((𝑧 ∈ On ∧ 𝑤 ∈ On ∧ 𝐴 ∈ On) → (𝑧𝑤 → (𝐴𝑜 𝑧) ⊆ (𝐴𝑜 𝑤)))
7417, 73mp3an3 1562 . . . . . . . . . 10 ((𝑧 ∈ On ∧ 𝑤 ∈ On) → (𝑧𝑤 → (𝐴𝑜 𝑧) ⊆ (𝐴𝑜 𝑤)))
75743impia 1110 . . . . . . . . 9 ((𝑧 ∈ On ∧ 𝑤 ∈ On ∧ 𝑧𝑤) → (𝐴𝑜 𝑧) ⊆ (𝐴𝑜 𝑤))
7671, 75onoviun 7609 . . . . . . . 8 ((𝑥 ∈ V ∧ ∀𝑦𝑥 (𝐵 ·𝑜 𝑦) ∈ On ∧ 𝑥 ≠ ∅) → (𝐴𝑜 𝑦𝑥 (𝐵 ·𝑜 𝑦)) = 𝑦𝑥 (𝐴𝑜 (𝐵 ·𝑜 𝑦)))
7756, 62, 66, 76syl3anc 1477 . . . . . . 7 ((𝐵 ∈ On ∧ Lim 𝑥) → (𝐴𝑜 𝑦𝑥 (𝐵 ·𝑜 𝑦)) = 𝑦𝑥 (𝐴𝑜 (𝐵 ·𝑜 𝑦)))
7855, 77eqtrd 2794 . . . . . 6 ((𝐵 ∈ On ∧ Lim 𝑥) → (𝐴𝑜 (𝐵 ·𝑜 𝑥)) = 𝑦𝑥 (𝐴𝑜 (𝐵 ·𝑜 𝑦)))
7952, 78eqeq12d 2775 . . . . 5 ((𝐵 ∈ On ∧ Lim 𝑥) → (((𝐴𝑜 𝐵) ↑𝑜 𝑥) = (𝐴𝑜 (𝐵 ·𝑜 𝑥)) ↔ 𝑦𝑥 ((𝐴𝑜 𝐵) ↑𝑜 𝑦) = 𝑦𝑥 (𝐴𝑜 (𝐵 ·𝑜 𝑦))))
8042, 79syl5ibr 236 . . . 4 ((𝐵 ∈ On ∧ Lim 𝑥) → (∀𝑦𝑥 ((𝐴𝑜 𝐵) ↑𝑜 𝑦) = (𝐴𝑜 (𝐵 ·𝑜 𝑦)) → ((𝐴𝑜 𝐵) ↑𝑜 𝑥) = (𝐴𝑜 (𝐵 ·𝑜 𝑥))))
8180expcom 450 . . 3 (Lim 𝑥 → (𝐵 ∈ On → (∀𝑦𝑥 ((𝐴𝑜 𝐵) ↑𝑜 𝑦) = (𝐴𝑜 (𝐵 ·𝑜 𝑦)) → ((𝐴𝑜 𝐵) ↑𝑜 𝑥) = (𝐴𝑜 (𝐵 ·𝑜 𝑥)))))
824, 8, 12, 16, 27, 41, 81tfinds3 7229 . 2 (𝐶 ∈ On → (𝐵 ∈ On → ((𝐴𝑜 𝐵) ↑𝑜 𝐶) = (𝐴𝑜 (𝐵 ·𝑜 𝐶))))
8382impcom 445 1 ((𝐵 ∈ On ∧ 𝐶 ∈ On) → ((𝐴𝑜 𝐵) ↑𝑜 𝐶) = (𝐴𝑜 (𝐵 ·𝑜 𝐶)))
Colors of variables: wff setvar class
Syntax hints:  wi 4  wa 383  w3a 1072   = wceq 1632  wcel 2139  wne 2932  wral 3050  Vcvv 3340  wss 3715  c0 4058   ciun 4672  Ord word 5883  Oncon0 5884  Lim wlim 5885  suc csuc 5886  (class class class)co 6813  1𝑜c1o 7722   +𝑜 coa 7726   ·𝑜 comu 7727  𝑜 coe 7728
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1871  ax-4 1886  ax-5 1988  ax-6 2054  ax-7 2090  ax-8 2141  ax-9 2148  ax-10 2168  ax-11 2183  ax-12 2196  ax-13 2391  ax-ext 2740  ax-rep 4923  ax-sep 4933  ax-nul 4941  ax-pow 4992  ax-pr 5055  ax-un 7114
This theorem depends on definitions:  df-bi 197  df-or 384  df-an 385  df-3or 1073  df-3an 1074  df-tru 1635  df-ex 1854  df-nf 1859  df-sb 2047  df-eu 2611  df-mo 2612  df-clab 2747  df-cleq 2753  df-clel 2756  df-nfc 2891  df-ne 2933  df-ral 3055  df-rex 3056  df-reu 3057  df-rmo 3058  df-rab 3059  df-v 3342  df-sbc 3577  df-csb 3675  df-dif 3718  df-un 3720  df-in 3722  df-ss 3729  df-pss 3731  df-nul 4059  df-if 4231  df-pw 4304  df-sn 4322  df-pr 4324  df-tp 4326  df-op 4328  df-uni 4589  df-int 4628  df-iun 4674  df-br 4805  df-opab 4865  df-mpt 4882  df-tr 4905  df-id 5174  df-eprel 5179  df-po 5187  df-so 5188  df-fr 5225  df-we 5227  df-xp 5272  df-rel 5273  df-cnv 5274  df-co 5275  df-dm 5276  df-rn 5277  df-res 5278  df-ima 5279  df-pred 5841  df-ord 5887  df-on 5888  df-lim 5889  df-suc 5890  df-iota 6012  df-fun 6051  df-fn 6052  df-f 6053  df-f1 6054  df-fo 6055  df-f1o 6056  df-fv 6057  df-ov 6816  df-oprab 6817  df-mpt2 6818  df-om 7231  df-1st 7333  df-2nd 7334  df-wrecs 7576  df-recs 7637  df-rdg 7675  df-1o 7729  df-2o 7730  df-oadd 7733  df-omul 7734  df-oexp 7735
This theorem is referenced by:  oeoe  7848
  Copyright terms: Public domain W3C validator