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

Theorem oeoelem 7678
Description: Lemma for oeoe 7679. (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 6658 . . . 4 (𝑥 = ∅ → ((𝐴𝑜 𝐵) ↑𝑜 𝑥) = ((𝐴𝑜 𝐵) ↑𝑜 ∅))
2 oveq2 6658 . . . . 5 (𝑥 = ∅ → (𝐵 ·𝑜 𝑥) = (𝐵 ·𝑜 ∅))
32oveq2d 6666 . . . 4 (𝑥 = ∅ → (𝐴𝑜 (𝐵 ·𝑜 𝑥)) = (𝐴𝑜 (𝐵 ·𝑜 ∅)))
41, 3eqeq12d 2637 . . 3 (𝑥 = ∅ → (((𝐴𝑜 𝐵) ↑𝑜 𝑥) = (𝐴𝑜 (𝐵 ·𝑜 𝑥)) ↔ ((𝐴𝑜 𝐵) ↑𝑜 ∅) = (𝐴𝑜 (𝐵 ·𝑜 ∅))))
5 oveq2 6658 . . . 4 (𝑥 = 𝑦 → ((𝐴𝑜 𝐵) ↑𝑜 𝑥) = ((𝐴𝑜 𝐵) ↑𝑜 𝑦))
6 oveq2 6658 . . . . 5 (𝑥 = 𝑦 → (𝐵 ·𝑜 𝑥) = (𝐵 ·𝑜 𝑦))
76oveq2d 6666 . . . 4 (𝑥 = 𝑦 → (𝐴𝑜 (𝐵 ·𝑜 𝑥)) = (𝐴𝑜 (𝐵 ·𝑜 𝑦)))
85, 7eqeq12d 2637 . . 3 (𝑥 = 𝑦 → (((𝐴𝑜 𝐵) ↑𝑜 𝑥) = (𝐴𝑜 (𝐵 ·𝑜 𝑥)) ↔ ((𝐴𝑜 𝐵) ↑𝑜 𝑦) = (𝐴𝑜 (𝐵 ·𝑜 𝑦))))
9 oveq2 6658 . . . 4 (𝑥 = suc 𝑦 → ((𝐴𝑜 𝐵) ↑𝑜 𝑥) = ((𝐴𝑜 𝐵) ↑𝑜 suc 𝑦))
10 oveq2 6658 . . . . 5 (𝑥 = suc 𝑦 → (𝐵 ·𝑜 𝑥) = (𝐵 ·𝑜 suc 𝑦))
1110oveq2d 6666 . . . 4 (𝑥 = suc 𝑦 → (𝐴𝑜 (𝐵 ·𝑜 𝑥)) = (𝐴𝑜 (𝐵 ·𝑜 suc 𝑦)))
129, 11eqeq12d 2637 . . 3 (𝑥 = suc 𝑦 → (((𝐴𝑜 𝐵) ↑𝑜 𝑥) = (𝐴𝑜 (𝐵 ·𝑜 𝑥)) ↔ ((𝐴𝑜 𝐵) ↑𝑜 suc 𝑦) = (𝐴𝑜 (𝐵 ·𝑜 suc 𝑦))))
13 oveq2 6658 . . . 4 (𝑥 = 𝐶 → ((𝐴𝑜 𝐵) ↑𝑜 𝑥) = ((𝐴𝑜 𝐵) ↑𝑜 𝐶))
14 oveq2 6658 . . . . 5 (𝑥 = 𝐶 → (𝐵 ·𝑜 𝑥) = (𝐵 ·𝑜 𝐶))
1514oveq2d 6666 . . . 4 (𝑥 = 𝐶 → (𝐴𝑜 (𝐵 ·𝑜 𝑥)) = (𝐴𝑜 (𝐵 ·𝑜 𝐶)))
1613, 15eqeq12d 2637 . . 3 (𝑥 = 𝐶 → (((𝐴𝑜 𝐵) ↑𝑜 𝑥) = (𝐴𝑜 (𝐵 ·𝑜 𝑥)) ↔ ((𝐴𝑜 𝐵) ↑𝑜 𝐶) = (𝐴𝑜 (𝐵 ·𝑜 𝐶))))
17 oeoelem.1 . . . . . 6 𝐴 ∈ On
18 oecl 7617 . . . . . 6 ((𝐴 ∈ On ∧ 𝐵 ∈ On) → (𝐴𝑜 𝐵) ∈ On)
1917, 18mpan 706 . . . . 5 (𝐵 ∈ On → (𝐴𝑜 𝐵) ∈ On)
20 oe0 7602 . . . . 5 ((𝐴𝑜 𝐵) ∈ On → ((𝐴𝑜 𝐵) ↑𝑜 ∅) = 1𝑜)
2119, 20syl 17 . . . 4 (𝐵 ∈ On → ((𝐴𝑜 𝐵) ↑𝑜 ∅) = 1𝑜)
22 om0 7597 . . . . . 6 (𝐵 ∈ On → (𝐵 ·𝑜 ∅) = ∅)
2322oveq2d 6666 . . . . 5 (𝐵 ∈ On → (𝐴𝑜 (𝐵 ·𝑜 ∅)) = (𝐴𝑜 ∅))
24 oe0 7602 . . . . . 6 (𝐴 ∈ On → (𝐴𝑜 ∅) = 1𝑜)
2517, 24ax-mp 5 . . . . 5 (𝐴𝑜 ∅) = 1𝑜
2623, 25syl6eq 2672 . . . 4 (𝐵 ∈ On → (𝐴𝑜 (𝐵 ·𝑜 ∅)) = 1𝑜)
2721, 26eqtr4d 2659 . . 3 (𝐵 ∈ On → ((𝐴𝑜 𝐵) ↑𝑜 ∅) = (𝐴𝑜 (𝐵 ·𝑜 ∅)))
28 oveq1 6657 . . . . 5 (((𝐴𝑜 𝐵) ↑𝑜 𝑦) = (𝐴𝑜 (𝐵 ·𝑜 𝑦)) → (((𝐴𝑜 𝐵) ↑𝑜 𝑦) ·𝑜 (𝐴𝑜 𝐵)) = ((𝐴𝑜 (𝐵 ·𝑜 𝑦)) ·𝑜 (𝐴𝑜 𝐵)))
29 oesuc 7607 . . . . . . 7 (((𝐴𝑜 𝐵) ∈ On ∧ 𝑦 ∈ On) → ((𝐴𝑜 𝐵) ↑𝑜 suc 𝑦) = (((𝐴𝑜 𝐵) ↑𝑜 𝑦) ·𝑜 (𝐴𝑜 𝐵)))
3019, 29sylan 488 . . . . . 6 ((𝐵 ∈ On ∧ 𝑦 ∈ On) → ((𝐴𝑜 𝐵) ↑𝑜 suc 𝑦) = (((𝐴𝑜 𝐵) ↑𝑜 𝑦) ·𝑜 (𝐴𝑜 𝐵)))
31 omsuc 7606 . . . . . . . 8 ((𝐵 ∈ On ∧ 𝑦 ∈ On) → (𝐵 ·𝑜 suc 𝑦) = ((𝐵 ·𝑜 𝑦) +𝑜 𝐵))
3231oveq2d 6666 . . . . . . 7 ((𝐵 ∈ On ∧ 𝑦 ∈ On) → (𝐴𝑜 (𝐵 ·𝑜 suc 𝑦)) = (𝐴𝑜 ((𝐵 ·𝑜 𝑦) +𝑜 𝐵)))
33 omcl 7616 . . . . . . . . 9 ((𝐵 ∈ On ∧ 𝑦 ∈ On) → (𝐵 ·𝑜 𝑦) ∈ On)
34 oeoa 7677 . . . . . . . . . 10 ((𝐴 ∈ On ∧ (𝐵 ·𝑜 𝑦) ∈ On ∧ 𝐵 ∈ On) → (𝐴𝑜 ((𝐵 ·𝑜 𝑦) +𝑜 𝐵)) = ((𝐴𝑜 (𝐵 ·𝑜 𝑦)) ·𝑜 (𝐴𝑜 𝐵)))
3517, 34mp3an1 1411 . . . . . . . . 9 (((𝐵 ·𝑜 𝑦) ∈ On ∧ 𝐵 ∈ On) → (𝐴𝑜 ((𝐵 ·𝑜 𝑦) +𝑜 𝐵)) = ((𝐴𝑜 (𝐵 ·𝑜 𝑦)) ·𝑜 (𝐴𝑜 𝐵)))
3633, 35sylan 488 . . . . . . . 8 (((𝐵 ∈ On ∧ 𝑦 ∈ On) ∧ 𝐵 ∈ On) → (𝐴𝑜 ((𝐵 ·𝑜 𝑦) +𝑜 𝐵)) = ((𝐴𝑜 (𝐵 ·𝑜 𝑦)) ·𝑜 (𝐴𝑜 𝐵)))
3736anabss1 855 . . . . . . 7 ((𝐵 ∈ On ∧ 𝑦 ∈ On) → (𝐴𝑜 ((𝐵 ·𝑜 𝑦) +𝑜 𝐵)) = ((𝐴𝑜 (𝐵 ·𝑜 𝑦)) ·𝑜 (𝐴𝑜 𝐵)))
3832, 37eqtrd 2656 . . . . . 6 ((𝐵 ∈ On ∧ 𝑦 ∈ On) → (𝐴𝑜 (𝐵 ·𝑜 suc 𝑦)) = ((𝐴𝑜 (𝐵 ·𝑜 𝑦)) ·𝑜 (𝐴𝑜 𝐵)))
3930, 38eqeq12d 2637 . . . . 5 ((𝐵 ∈ On ∧ 𝑦 ∈ On) → (((𝐴𝑜 𝐵) ↑𝑜 suc 𝑦) = (𝐴𝑜 (𝐵 ·𝑜 suc 𝑦)) ↔ (((𝐴𝑜 𝐵) ↑𝑜 𝑦) ·𝑜 (𝐴𝑜 𝐵)) = ((𝐴𝑜 (𝐵 ·𝑜 𝑦)) ·𝑜 (𝐴𝑜 𝐵))))
4028, 39syl5ibr 236 . . . 4 ((𝐵 ∈ On ∧ 𝑦 ∈ On) → (((𝐴𝑜 𝐵) ↑𝑜 𝑦) = (𝐴𝑜 (𝐵 ·𝑜 𝑦)) → ((𝐴𝑜 𝐵) ↑𝑜 suc 𝑦) = (𝐴𝑜 (𝐵 ·𝑜 suc 𝑦))))
4140expcom 451 . . 3 (𝑦 ∈ On → (𝐵 ∈ On → (((𝐴𝑜 𝐵) ↑𝑜 𝑦) = (𝐴𝑜 (𝐵 ·𝑜 𝑦)) → ((𝐴𝑜 𝐵) ↑𝑜 suc 𝑦) = (𝐴𝑜 (𝐵 ·𝑜 suc 𝑦)))))
42 iuneq2 4537 . . . . 5 (∀𝑦𝑥 ((𝐴𝑜 𝐵) ↑𝑜 𝑦) = (𝐴𝑜 (𝐵 ·𝑜 𝑦)) → 𝑦𝑥 ((𝐴𝑜 𝐵) ↑𝑜 𝑦) = 𝑦𝑥 (𝐴𝑜 (𝐵 ·𝑜 𝑦)))
43 vex 3203 . . . . . . 7 𝑥 ∈ V
44 oeoelem.2 . . . . . . . . . . 11 ∅ ∈ 𝐴
45 oen0 7666 . . . . . . . . . . 11 (((𝐴 ∈ On ∧ 𝐵 ∈ On) ∧ ∅ ∈ 𝐴) → ∅ ∈ (𝐴𝑜 𝐵))
4644, 45mpan2 707 . . . . . . . . . 10 ((𝐴 ∈ On ∧ 𝐵 ∈ On) → ∅ ∈ (𝐴𝑜 𝐵))
47 oelim 7614 . . . . . . . . . . 11 ((((𝐴𝑜 𝐵) ∈ On ∧ (𝑥 ∈ V ∧ Lim 𝑥)) ∧ ∅ ∈ (𝐴𝑜 𝐵)) → ((𝐴𝑜 𝐵) ↑𝑜 𝑥) = 𝑦𝑥 ((𝐴𝑜 𝐵) ↑𝑜 𝑦))
4818, 47sylanl1 682 . . . . . . . . . 10 ((((𝐴 ∈ On ∧ 𝐵 ∈ On) ∧ (𝑥 ∈ V ∧ Lim 𝑥)) ∧ ∅ ∈ (𝐴𝑜 𝐵)) → ((𝐴𝑜 𝐵) ↑𝑜 𝑥) = 𝑦𝑥 ((𝐴𝑜 𝐵) ↑𝑜 𝑦))
4946, 48sylan2 491 . . . . . . . . 9 ((((𝐴 ∈ On ∧ 𝐵 ∈ On) ∧ (𝑥 ∈ V ∧ Lim 𝑥)) ∧ (𝐴 ∈ On ∧ 𝐵 ∈ On)) → ((𝐴𝑜 𝐵) ↑𝑜 𝑥) = 𝑦𝑥 ((𝐴𝑜 𝐵) ↑𝑜 𝑦))
5049anabss1 855 . . . . . . . 8 (((𝐴 ∈ On ∧ 𝐵 ∈ On) ∧ (𝑥 ∈ V ∧ Lim 𝑥)) → ((𝐴𝑜 𝐵) ↑𝑜 𝑥) = 𝑦𝑥 ((𝐴𝑜 𝐵) ↑𝑜 𝑦))
5117, 50mpanl1 716 . . . . . . 7 ((𝐵 ∈ On ∧ (𝑥 ∈ V ∧ Lim 𝑥)) → ((𝐴𝑜 𝐵) ↑𝑜 𝑥) = 𝑦𝑥 ((𝐴𝑜 𝐵) ↑𝑜 𝑦))
5243, 51mpanr1 719 . . . . . 6 ((𝐵 ∈ On ∧ Lim 𝑥) → ((𝐴𝑜 𝐵) ↑𝑜 𝑥) = 𝑦𝑥 ((𝐴𝑜 𝐵) ↑𝑜 𝑦))
53 omlim 7613 . . . . . . . . 9 ((𝐵 ∈ On ∧ (𝑥 ∈ V ∧ Lim 𝑥)) → (𝐵 ·𝑜 𝑥) = 𝑦𝑥 (𝐵 ·𝑜 𝑦))
5443, 53mpanr1 719 . . . . . . . 8 ((𝐵 ∈ On ∧ Lim 𝑥) → (𝐵 ·𝑜 𝑥) = 𝑦𝑥 (𝐵 ·𝑜 𝑦))
5554oveq2d 6666 . . . . . . 7 ((𝐵 ∈ On ∧ Lim 𝑥) → (𝐴𝑜 (𝐵 ·𝑜 𝑥)) = (𝐴𝑜 𝑦𝑥 (𝐵 ·𝑜 𝑦)))
5643a1i 11 . . . . . . . 8 ((𝐵 ∈ On ∧ Lim 𝑥) → 𝑥 ∈ V)
57 limord 5784 . . . . . . . . . . . 12 (Lim 𝑥 → Ord 𝑥)
58 ordelon 5747 . . . . . . . . . . . 12 ((Ord 𝑥𝑦𝑥) → 𝑦 ∈ On)
5957, 58sylan 488 . . . . . . . . . . 11 ((Lim 𝑥𝑦𝑥) → 𝑦 ∈ On)
6059, 33sylan2 491 . . . . . . . . . 10 ((𝐵 ∈ On ∧ (Lim 𝑥𝑦𝑥)) → (𝐵 ·𝑜 𝑦) ∈ On)
6160anassrs 680 . . . . . . . . 9 (((𝐵 ∈ On ∧ Lim 𝑥) ∧ 𝑦𝑥) → (𝐵 ·𝑜 𝑦) ∈ On)
6261ralrimiva 2966 . . . . . . . 8 ((𝐵 ∈ On ∧ Lim 𝑥) → ∀𝑦𝑥 (𝐵 ·𝑜 𝑦) ∈ On)
63 0ellim 5787 . . . . . . . . . 10 (Lim 𝑥 → ∅ ∈ 𝑥)
64 ne0i 3921 . . . . . . . . . 10 (∅ ∈ 𝑥𝑥 ≠ ∅)
6563, 64syl 17 . . . . . . . . 9 (Lim 𝑥𝑥 ≠ ∅)
6665adantl 482 . . . . . . . 8 ((𝐵 ∈ On ∧ Lim 𝑥) → 𝑥 ≠ ∅)
67 vex 3203 . . . . . . . . . 10 𝑤 ∈ V
68 oelim 7614 . . . . . . . . . . . 12 (((𝐴 ∈ On ∧ (𝑤 ∈ V ∧ Lim 𝑤)) ∧ ∅ ∈ 𝐴) → (𝐴𝑜 𝑤) = 𝑧𝑤 (𝐴𝑜 𝑧))
6944, 68mpan2 707 . . . . . . . . . . 11 ((𝐴 ∈ On ∧ (𝑤 ∈ V ∧ Lim 𝑤)) → (𝐴𝑜 𝑤) = 𝑧𝑤 (𝐴𝑜 𝑧))
7017, 69mpan 706 . . . . . . . . . 10 ((𝑤 ∈ V ∧ Lim 𝑤) → (𝐴𝑜 𝑤) = 𝑧𝑤 (𝐴𝑜 𝑧))
7167, 70mpan 706 . . . . . . . . 9 (Lim 𝑤 → (𝐴𝑜 𝑤) = 𝑧𝑤 (𝐴𝑜 𝑧))
72 oewordi 7671 . . . . . . . . . . . 12 (((𝑧 ∈ On ∧ 𝑤 ∈ On ∧ 𝐴 ∈ On) ∧ ∅ ∈ 𝐴) → (𝑧𝑤 → (𝐴𝑜 𝑧) ⊆ (𝐴𝑜 𝑤)))
7344, 72mpan2 707 . . . . . . . . . . 11 ((𝑧 ∈ On ∧ 𝑤 ∈ On ∧ 𝐴 ∈ On) → (𝑧𝑤 → (𝐴𝑜 𝑧) ⊆ (𝐴𝑜 𝑤)))
7417, 73mp3an3 1413 . . . . . . . . . 10 ((𝑧 ∈ On ∧ 𝑤 ∈ On) → (𝑧𝑤 → (𝐴𝑜 𝑧) ⊆ (𝐴𝑜 𝑤)))
75743impia 1261 . . . . . . . . 9 ((𝑧 ∈ On ∧ 𝑤 ∈ On ∧ 𝑧𝑤) → (𝐴𝑜 𝑧) ⊆ (𝐴𝑜 𝑤))
7671, 75onoviun 7440 . . . . . . . 8 ((𝑥 ∈ V ∧ ∀𝑦𝑥 (𝐵 ·𝑜 𝑦) ∈ On ∧ 𝑥 ≠ ∅) → (𝐴𝑜 𝑦𝑥 (𝐵 ·𝑜 𝑦)) = 𝑦𝑥 (𝐴𝑜 (𝐵 ·𝑜 𝑦)))
7756, 62, 66, 76syl3anc 1326 . . . . . . 7 ((𝐵 ∈ On ∧ Lim 𝑥) → (𝐴𝑜 𝑦𝑥 (𝐵 ·𝑜 𝑦)) = 𝑦𝑥 (𝐴𝑜 (𝐵 ·𝑜 𝑦)))
7855, 77eqtrd 2656 . . . . . 6 ((𝐵 ∈ On ∧ Lim 𝑥) → (𝐴𝑜 (𝐵 ·𝑜 𝑥)) = 𝑦𝑥 (𝐴𝑜 (𝐵 ·𝑜 𝑦)))
7952, 78eqeq12d 2637 . . . . 5 ((𝐵 ∈ On ∧ Lim 𝑥) → (((𝐴𝑜 𝐵) ↑𝑜 𝑥) = (𝐴𝑜 (𝐵 ·𝑜 𝑥)) ↔ 𝑦𝑥 ((𝐴𝑜 𝐵) ↑𝑜 𝑦) = 𝑦𝑥 (𝐴𝑜 (𝐵 ·𝑜 𝑦))))
8042, 79syl5ibr 236 . . . 4 ((𝐵 ∈ On ∧ Lim 𝑥) → (∀𝑦𝑥 ((𝐴𝑜 𝐵) ↑𝑜 𝑦) = (𝐴𝑜 (𝐵 ·𝑜 𝑦)) → ((𝐴𝑜 𝐵) ↑𝑜 𝑥) = (𝐴𝑜 (𝐵 ·𝑜 𝑥))))
8180expcom 451 . . 3 (Lim 𝑥 → (𝐵 ∈ On → (∀𝑦𝑥 ((𝐴𝑜 𝐵) ↑𝑜 𝑦) = (𝐴𝑜 (𝐵 ·𝑜 𝑦)) → ((𝐴𝑜 𝐵) ↑𝑜 𝑥) = (𝐴𝑜 (𝐵 ·𝑜 𝑥)))))
824, 8, 12, 16, 27, 41, 81tfinds3 7064 . 2 (𝐶 ∈ On → (𝐵 ∈ On → ((𝐴𝑜 𝐵) ↑𝑜 𝐶) = (𝐴𝑜 (𝐵 ·𝑜 𝐶))))
8382impcom 446 1 ((𝐵 ∈ On ∧ 𝐶 ∈ On) → ((𝐴𝑜 𝐵) ↑𝑜 𝐶) = (𝐴𝑜 (𝐵 ·𝑜 𝐶)))
Colors of variables: wff setvar class
Syntax hints:  wi 4  wa 384  w3a 1037   = wceq 1483  wcel 1990  wne 2794  wral 2912  Vcvv 3200  wss 3574  c0 3915   ciun 4520  Ord word 5722  Oncon0 5723  Lim wlim 5724  suc csuc 5725  (class class class)co 6650  1𝑜c1o 7553   +𝑜 coa 7557   ·𝑜 comu 7558  𝑜 coe 7559
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1722  ax-4 1737  ax-5 1839  ax-6 1888  ax-7 1935  ax-8 1992  ax-9 1999  ax-10 2019  ax-11 2034  ax-12 2047  ax-13 2246  ax-ext 2602  ax-rep 4771  ax-sep 4781  ax-nul 4789  ax-pow 4843  ax-pr 4906  ax-un 6949
This theorem depends on definitions:  df-bi 197  df-or 385  df-an 386  df-3or 1038  df-3an 1039  df-tru 1486  df-ex 1705  df-nf 1710  df-sb 1881  df-eu 2474  df-mo 2475  df-clab 2609  df-cleq 2615  df-clel 2618  df-nfc 2753  df-ne 2795  df-ral 2917  df-rex 2918  df-reu 2919  df-rmo 2920  df-rab 2921  df-v 3202  df-sbc 3436  df-csb 3534  df-dif 3577  df-un 3579  df-in 3581  df-ss 3588  df-pss 3590  df-nul 3916  df-if 4087  df-pw 4160  df-sn 4178  df-pr 4180  df-tp 4182  df-op 4184  df-uni 4437  df-int 4476  df-iun 4522  df-br 4654  df-opab 4713  df-mpt 4730  df-tr 4753  df-id 5024  df-eprel 5029  df-po 5035  df-so 5036  df-fr 5073  df-we 5075  df-xp 5120  df-rel 5121  df-cnv 5122  df-co 5123  df-dm 5124  df-rn 5125  df-res 5126  df-ima 5127  df-pred 5680  df-ord 5726  df-on 5727  df-lim 5728  df-suc 5729  df-iota 5851  df-fun 5890  df-fn 5891  df-f 5892  df-f1 5893  df-fo 5894  df-f1o 5895  df-fv 5896  df-ov 6653  df-oprab 6654  df-mpt2 6655  df-om 7066  df-1st 7168  df-2nd 7169  df-wrecs 7407  df-recs 7468  df-rdg 7506  df-1o 7560  df-2o 7561  df-oadd 7564  df-omul 7565  df-oexp 7566
This theorem is referenced by:  oeoe  7679
  Copyright terms: Public domain W3C validator