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

Theorem oeoelem 7630
Description: Lemma for oeoe 7631. (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 6618 . . . 4 (𝑥 = ∅ → ((𝐴𝑜 𝐵) ↑𝑜 𝑥) = ((𝐴𝑜 𝐵) ↑𝑜 ∅))
2 oveq2 6618 . . . . 5 (𝑥 = ∅ → (𝐵 ·𝑜 𝑥) = (𝐵 ·𝑜 ∅))
32oveq2d 6626 . . . 4 (𝑥 = ∅ → (𝐴𝑜 (𝐵 ·𝑜 𝑥)) = (𝐴𝑜 (𝐵 ·𝑜 ∅)))
41, 3eqeq12d 2636 . . 3 (𝑥 = ∅ → (((𝐴𝑜 𝐵) ↑𝑜 𝑥) = (𝐴𝑜 (𝐵 ·𝑜 𝑥)) ↔ ((𝐴𝑜 𝐵) ↑𝑜 ∅) = (𝐴𝑜 (𝐵 ·𝑜 ∅))))
5 oveq2 6618 . . . 4 (𝑥 = 𝑦 → ((𝐴𝑜 𝐵) ↑𝑜 𝑥) = ((𝐴𝑜 𝐵) ↑𝑜 𝑦))
6 oveq2 6618 . . . . 5 (𝑥 = 𝑦 → (𝐵 ·𝑜 𝑥) = (𝐵 ·𝑜 𝑦))
76oveq2d 6626 . . . 4 (𝑥 = 𝑦 → (𝐴𝑜 (𝐵 ·𝑜 𝑥)) = (𝐴𝑜 (𝐵 ·𝑜 𝑦)))
85, 7eqeq12d 2636 . . 3 (𝑥 = 𝑦 → (((𝐴𝑜 𝐵) ↑𝑜 𝑥) = (𝐴𝑜 (𝐵 ·𝑜 𝑥)) ↔ ((𝐴𝑜 𝐵) ↑𝑜 𝑦) = (𝐴𝑜 (𝐵 ·𝑜 𝑦))))
9 oveq2 6618 . . . 4 (𝑥 = suc 𝑦 → ((𝐴𝑜 𝐵) ↑𝑜 𝑥) = ((𝐴𝑜 𝐵) ↑𝑜 suc 𝑦))
10 oveq2 6618 . . . . 5 (𝑥 = suc 𝑦 → (𝐵 ·𝑜 𝑥) = (𝐵 ·𝑜 suc 𝑦))
1110oveq2d 6626 . . . 4 (𝑥 = suc 𝑦 → (𝐴𝑜 (𝐵 ·𝑜 𝑥)) = (𝐴𝑜 (𝐵 ·𝑜 suc 𝑦)))
129, 11eqeq12d 2636 . . 3 (𝑥 = suc 𝑦 → (((𝐴𝑜 𝐵) ↑𝑜 𝑥) = (𝐴𝑜 (𝐵 ·𝑜 𝑥)) ↔ ((𝐴𝑜 𝐵) ↑𝑜 suc 𝑦) = (𝐴𝑜 (𝐵 ·𝑜 suc 𝑦))))
13 oveq2 6618 . . . 4 (𝑥 = 𝐶 → ((𝐴𝑜 𝐵) ↑𝑜 𝑥) = ((𝐴𝑜 𝐵) ↑𝑜 𝐶))
14 oveq2 6618 . . . . 5 (𝑥 = 𝐶 → (𝐵 ·𝑜 𝑥) = (𝐵 ·𝑜 𝐶))
1514oveq2d 6626 . . . 4 (𝑥 = 𝐶 → (𝐴𝑜 (𝐵 ·𝑜 𝑥)) = (𝐴𝑜 (𝐵 ·𝑜 𝐶)))
1613, 15eqeq12d 2636 . . 3 (𝑥 = 𝐶 → (((𝐴𝑜 𝐵) ↑𝑜 𝑥) = (𝐴𝑜 (𝐵 ·𝑜 𝑥)) ↔ ((𝐴𝑜 𝐵) ↑𝑜 𝐶) = (𝐴𝑜 (𝐵 ·𝑜 𝐶))))
17 oeoelem.1 . . . . . 6 𝐴 ∈ On
18 oecl 7569 . . . . . 6 ((𝐴 ∈ On ∧ 𝐵 ∈ On) → (𝐴𝑜 𝐵) ∈ On)
1917, 18mpan 705 . . . . 5 (𝐵 ∈ On → (𝐴𝑜 𝐵) ∈ On)
20 oe0 7554 . . . . 5 ((𝐴𝑜 𝐵) ∈ On → ((𝐴𝑜 𝐵) ↑𝑜 ∅) = 1𝑜)
2119, 20syl 17 . . . 4 (𝐵 ∈ On → ((𝐴𝑜 𝐵) ↑𝑜 ∅) = 1𝑜)
22 om0 7549 . . . . . 6 (𝐵 ∈ On → (𝐵 ·𝑜 ∅) = ∅)
2322oveq2d 6626 . . . . 5 (𝐵 ∈ On → (𝐴𝑜 (𝐵 ·𝑜 ∅)) = (𝐴𝑜 ∅))
24 oe0 7554 . . . . . 6 (𝐴 ∈ On → (𝐴𝑜 ∅) = 1𝑜)
2517, 24ax-mp 5 . . . . 5 (𝐴𝑜 ∅) = 1𝑜
2623, 25syl6eq 2671 . . . 4 (𝐵 ∈ On → (𝐴𝑜 (𝐵 ·𝑜 ∅)) = 1𝑜)
2721, 26eqtr4d 2658 . . 3 (𝐵 ∈ On → ((𝐴𝑜 𝐵) ↑𝑜 ∅) = (𝐴𝑜 (𝐵 ·𝑜 ∅)))
28 oveq1 6617 . . . . 5 (((𝐴𝑜 𝐵) ↑𝑜 𝑦) = (𝐴𝑜 (𝐵 ·𝑜 𝑦)) → (((𝐴𝑜 𝐵) ↑𝑜 𝑦) ·𝑜 (𝐴𝑜 𝐵)) = ((𝐴𝑜 (𝐵 ·𝑜 𝑦)) ·𝑜 (𝐴𝑜 𝐵)))
29 oesuc 7559 . . . . . . 7 (((𝐴𝑜 𝐵) ∈ On ∧ 𝑦 ∈ On) → ((𝐴𝑜 𝐵) ↑𝑜 suc 𝑦) = (((𝐴𝑜 𝐵) ↑𝑜 𝑦) ·𝑜 (𝐴𝑜 𝐵)))
3019, 29sylan 488 . . . . . 6 ((𝐵 ∈ On ∧ 𝑦 ∈ On) → ((𝐴𝑜 𝐵) ↑𝑜 suc 𝑦) = (((𝐴𝑜 𝐵) ↑𝑜 𝑦) ·𝑜 (𝐴𝑜 𝐵)))
31 omsuc 7558 . . . . . . . 8 ((𝐵 ∈ On ∧ 𝑦 ∈ On) → (𝐵 ·𝑜 suc 𝑦) = ((𝐵 ·𝑜 𝑦) +𝑜 𝐵))
3231oveq2d 6626 . . . . . . 7 ((𝐵 ∈ On ∧ 𝑦 ∈ On) → (𝐴𝑜 (𝐵 ·𝑜 suc 𝑦)) = (𝐴𝑜 ((𝐵 ·𝑜 𝑦) +𝑜 𝐵)))
33 omcl 7568 . . . . . . . . 9 ((𝐵 ∈ On ∧ 𝑦 ∈ On) → (𝐵 ·𝑜 𝑦) ∈ On)
34 oeoa 7629 . . . . . . . . . 10 ((𝐴 ∈ On ∧ (𝐵 ·𝑜 𝑦) ∈ On ∧ 𝐵 ∈ On) → (𝐴𝑜 ((𝐵 ·𝑜 𝑦) +𝑜 𝐵)) = ((𝐴𝑜 (𝐵 ·𝑜 𝑦)) ·𝑜 (𝐴𝑜 𝐵)))
3517, 34mp3an1 1408 . . . . . . . . 9 (((𝐵 ·𝑜 𝑦) ∈ On ∧ 𝐵 ∈ On) → (𝐴𝑜 ((𝐵 ·𝑜 𝑦) +𝑜 𝐵)) = ((𝐴𝑜 (𝐵 ·𝑜 𝑦)) ·𝑜 (𝐴𝑜 𝐵)))
3633, 35sylan 488 . . . . . . . 8 (((𝐵 ∈ On ∧ 𝑦 ∈ On) ∧ 𝐵 ∈ On) → (𝐴𝑜 ((𝐵 ·𝑜 𝑦) +𝑜 𝐵)) = ((𝐴𝑜 (𝐵 ·𝑜 𝑦)) ·𝑜 (𝐴𝑜 𝐵)))
3736anabss1 854 . . . . . . 7 ((𝐵 ∈ On ∧ 𝑦 ∈ On) → (𝐴𝑜 ((𝐵 ·𝑜 𝑦) +𝑜 𝐵)) = ((𝐴𝑜 (𝐵 ·𝑜 𝑦)) ·𝑜 (𝐴𝑜 𝐵)))
3832, 37eqtrd 2655 . . . . . 6 ((𝐵 ∈ On ∧ 𝑦 ∈ On) → (𝐴𝑜 (𝐵 ·𝑜 suc 𝑦)) = ((𝐴𝑜 (𝐵 ·𝑜 𝑦)) ·𝑜 (𝐴𝑜 𝐵)))
3930, 38eqeq12d 2636 . . . . 5 ((𝐵 ∈ On ∧ 𝑦 ∈ On) → (((𝐴𝑜 𝐵) ↑𝑜 suc 𝑦) = (𝐴𝑜 (𝐵 ·𝑜 suc 𝑦)) ↔ (((𝐴𝑜 𝐵) ↑𝑜 𝑦) ·𝑜 (𝐴𝑜 𝐵)) = ((𝐴𝑜 (𝐵 ·𝑜 𝑦)) ·𝑜 (𝐴𝑜 𝐵))))
4028, 39syl5ibr 236 . . . 4 ((𝐵 ∈ On ∧ 𝑦 ∈ On) → (((𝐴𝑜 𝐵) ↑𝑜 𝑦) = (𝐴𝑜 (𝐵 ·𝑜 𝑦)) → ((𝐴𝑜 𝐵) ↑𝑜 suc 𝑦) = (𝐴𝑜 (𝐵 ·𝑜 suc 𝑦))))
4140expcom 451 . . 3 (𝑦 ∈ On → (𝐵 ∈ On → (((𝐴𝑜 𝐵) ↑𝑜 𝑦) = (𝐴𝑜 (𝐵 ·𝑜 𝑦)) → ((𝐴𝑜 𝐵) ↑𝑜 suc 𝑦) = (𝐴𝑜 (𝐵 ·𝑜 suc 𝑦)))))
42 iuneq2 4508 . . . . 5 (∀𝑦𝑥 ((𝐴𝑜 𝐵) ↑𝑜 𝑦) = (𝐴𝑜 (𝐵 ·𝑜 𝑦)) → 𝑦𝑥 ((𝐴𝑜 𝐵) ↑𝑜 𝑦) = 𝑦𝑥 (𝐴𝑜 (𝐵 ·𝑜 𝑦)))
43 vex 3192 . . . . . . 7 𝑥 ∈ V
44 oeoelem.2 . . . . . . . . . . 11 ∅ ∈ 𝐴
45 oen0 7618 . . . . . . . . . . 11 (((𝐴 ∈ On ∧ 𝐵 ∈ On) ∧ ∅ ∈ 𝐴) → ∅ ∈ (𝐴𝑜 𝐵))
4644, 45mpan2 706 . . . . . . . . . 10 ((𝐴 ∈ On ∧ 𝐵 ∈ On) → ∅ ∈ (𝐴𝑜 𝐵))
47 oelim 7566 . . . . . . . . . . 11 ((((𝐴𝑜 𝐵) ∈ On ∧ (𝑥 ∈ V ∧ Lim 𝑥)) ∧ ∅ ∈ (𝐴𝑜 𝐵)) → ((𝐴𝑜 𝐵) ↑𝑜 𝑥) = 𝑦𝑥 ((𝐴𝑜 𝐵) ↑𝑜 𝑦))
4818, 47sylanl1 681 . . . . . . . . . 10 ((((𝐴 ∈ On ∧ 𝐵 ∈ On) ∧ (𝑥 ∈ V ∧ Lim 𝑥)) ∧ ∅ ∈ (𝐴𝑜 𝐵)) → ((𝐴𝑜 𝐵) ↑𝑜 𝑥) = 𝑦𝑥 ((𝐴𝑜 𝐵) ↑𝑜 𝑦))
4946, 48sylan2 491 . . . . . . . . 9 ((((𝐴 ∈ On ∧ 𝐵 ∈ On) ∧ (𝑥 ∈ V ∧ Lim 𝑥)) ∧ (𝐴 ∈ On ∧ 𝐵 ∈ On)) → ((𝐴𝑜 𝐵) ↑𝑜 𝑥) = 𝑦𝑥 ((𝐴𝑜 𝐵) ↑𝑜 𝑦))
5049anabss1 854 . . . . . . . 8 (((𝐴 ∈ On ∧ 𝐵 ∈ On) ∧ (𝑥 ∈ V ∧ Lim 𝑥)) → ((𝐴𝑜 𝐵) ↑𝑜 𝑥) = 𝑦𝑥 ((𝐴𝑜 𝐵) ↑𝑜 𝑦))
5117, 50mpanl1 715 . . . . . . 7 ((𝐵 ∈ On ∧ (𝑥 ∈ V ∧ Lim 𝑥)) → ((𝐴𝑜 𝐵) ↑𝑜 𝑥) = 𝑦𝑥 ((𝐴𝑜 𝐵) ↑𝑜 𝑦))
5243, 51mpanr1 718 . . . . . 6 ((𝐵 ∈ On ∧ Lim 𝑥) → ((𝐴𝑜 𝐵) ↑𝑜 𝑥) = 𝑦𝑥 ((𝐴𝑜 𝐵) ↑𝑜 𝑦))
53 omlim 7565 . . . . . . . . 9 ((𝐵 ∈ On ∧ (𝑥 ∈ V ∧ Lim 𝑥)) → (𝐵 ·𝑜 𝑥) = 𝑦𝑥 (𝐵 ·𝑜 𝑦))
5443, 53mpanr1 718 . . . . . . . 8 ((𝐵 ∈ On ∧ Lim 𝑥) → (𝐵 ·𝑜 𝑥) = 𝑦𝑥 (𝐵 ·𝑜 𝑦))
5554oveq2d 6626 . . . . . . 7 ((𝐵 ∈ On ∧ Lim 𝑥) → (𝐴𝑜 (𝐵 ·𝑜 𝑥)) = (𝐴𝑜 𝑦𝑥 (𝐵 ·𝑜 𝑦)))
5643a1i 11 . . . . . . . 8 ((𝐵 ∈ On ∧ Lim 𝑥) → 𝑥 ∈ V)
57 limord 5748 . . . . . . . . . . . 12 (Lim 𝑥 → Ord 𝑥)
58 ordelon 5711 . . . . . . . . . . . 12 ((Ord 𝑥𝑦𝑥) → 𝑦 ∈ On)
5957, 58sylan 488 . . . . . . . . . . 11 ((Lim 𝑥𝑦𝑥) → 𝑦 ∈ On)
6059, 33sylan2 491 . . . . . . . . . 10 ((𝐵 ∈ On ∧ (Lim 𝑥𝑦𝑥)) → (𝐵 ·𝑜 𝑦) ∈ On)
6160anassrs 679 . . . . . . . . 9 (((𝐵 ∈ On ∧ Lim 𝑥) ∧ 𝑦𝑥) → (𝐵 ·𝑜 𝑦) ∈ On)
6261ralrimiva 2961 . . . . . . . 8 ((𝐵 ∈ On ∧ Lim 𝑥) → ∀𝑦𝑥 (𝐵 ·𝑜 𝑦) ∈ On)
63 0ellim 5751 . . . . . . . . . 10 (Lim 𝑥 → ∅ ∈ 𝑥)
64 ne0i 3902 . . . . . . . . . 10 (∅ ∈ 𝑥𝑥 ≠ ∅)
6563, 64syl 17 . . . . . . . . 9 (Lim 𝑥𝑥 ≠ ∅)
6665adantl 482 . . . . . . . 8 ((𝐵 ∈ On ∧ Lim 𝑥) → 𝑥 ≠ ∅)
67 vex 3192 . . . . . . . . . 10 𝑤 ∈ V
68 oelim 7566 . . . . . . . . . . . 12 (((𝐴 ∈ On ∧ (𝑤 ∈ V ∧ Lim 𝑤)) ∧ ∅ ∈ 𝐴) → (𝐴𝑜 𝑤) = 𝑧𝑤 (𝐴𝑜 𝑧))
6944, 68mpan2 706 . . . . . . . . . . 11 ((𝐴 ∈ On ∧ (𝑤 ∈ V ∧ Lim 𝑤)) → (𝐴𝑜 𝑤) = 𝑧𝑤 (𝐴𝑜 𝑧))
7017, 69mpan 705 . . . . . . . . . 10 ((𝑤 ∈ V ∧ Lim 𝑤) → (𝐴𝑜 𝑤) = 𝑧𝑤 (𝐴𝑜 𝑧))
7167, 70mpan 705 . . . . . . . . 9 (Lim 𝑤 → (𝐴𝑜 𝑤) = 𝑧𝑤 (𝐴𝑜 𝑧))
72 oewordi 7623 . . . . . . . . . . . 12 (((𝑧 ∈ On ∧ 𝑤 ∈ On ∧ 𝐴 ∈ On) ∧ ∅ ∈ 𝐴) → (𝑧𝑤 → (𝐴𝑜 𝑧) ⊆ (𝐴𝑜 𝑤)))
7344, 72mpan2 706 . . . . . . . . . . 11 ((𝑧 ∈ On ∧ 𝑤 ∈ On ∧ 𝐴 ∈ On) → (𝑧𝑤 → (𝐴𝑜 𝑧) ⊆ (𝐴𝑜 𝑤)))
7417, 73mp3an3 1410 . . . . . . . . . 10 ((𝑧 ∈ On ∧ 𝑤 ∈ On) → (𝑧𝑤 → (𝐴𝑜 𝑧) ⊆ (𝐴𝑜 𝑤)))
75743impia 1258 . . . . . . . . 9 ((𝑧 ∈ On ∧ 𝑤 ∈ On ∧ 𝑧𝑤) → (𝐴𝑜 𝑧) ⊆ (𝐴𝑜 𝑤))
7671, 75onoviun 7392 . . . . . . . 8 ((𝑥 ∈ V ∧ ∀𝑦𝑥 (𝐵 ·𝑜 𝑦) ∈ On ∧ 𝑥 ≠ ∅) → (𝐴𝑜 𝑦𝑥 (𝐵 ·𝑜 𝑦)) = 𝑦𝑥 (𝐴𝑜 (𝐵 ·𝑜 𝑦)))
7756, 62, 66, 76syl3anc 1323 . . . . . . 7 ((𝐵 ∈ On ∧ Lim 𝑥) → (𝐴𝑜 𝑦𝑥 (𝐵 ·𝑜 𝑦)) = 𝑦𝑥 (𝐴𝑜 (𝐵 ·𝑜 𝑦)))
7855, 77eqtrd 2655 . . . . . 6 ((𝐵 ∈ On ∧ Lim 𝑥) → (𝐴𝑜 (𝐵 ·𝑜 𝑥)) = 𝑦𝑥 (𝐴𝑜 (𝐵 ·𝑜 𝑦)))
7952, 78eqeq12d 2636 . . . . 5 ((𝐵 ∈ On ∧ Lim 𝑥) → (((𝐴𝑜 𝐵) ↑𝑜 𝑥) = (𝐴𝑜 (𝐵 ·𝑜 𝑥)) ↔ 𝑦𝑥 ((𝐴𝑜 𝐵) ↑𝑜 𝑦) = 𝑦𝑥 (𝐴𝑜 (𝐵 ·𝑜 𝑦))))
8042, 79syl5ibr 236 . . . 4 ((𝐵 ∈ On ∧ Lim 𝑥) → (∀𝑦𝑥 ((𝐴𝑜 𝐵) ↑𝑜 𝑦) = (𝐴𝑜 (𝐵 ·𝑜 𝑦)) → ((𝐴𝑜 𝐵) ↑𝑜 𝑥) = (𝐴𝑜 (𝐵 ·𝑜 𝑥))))
8180expcom 451 . . 3 (Lim 𝑥 → (𝐵 ∈ On → (∀𝑦𝑥 ((𝐴𝑜 𝐵) ↑𝑜 𝑦) = (𝐴𝑜 (𝐵 ·𝑜 𝑦)) → ((𝐴𝑜 𝐵) ↑𝑜 𝑥) = (𝐴𝑜 (𝐵 ·𝑜 𝑥)))))
824, 8, 12, 16, 27, 41, 81tfinds3 7018 . 2 (𝐶 ∈ On → (𝐵 ∈ On → ((𝐴𝑜 𝐵) ↑𝑜 𝐶) = (𝐴𝑜 (𝐵 ·𝑜 𝐶))))
8382impcom 446 1 ((𝐵 ∈ On ∧ 𝐶 ∈ On) → ((𝐴𝑜 𝐵) ↑𝑜 𝐶) = (𝐴𝑜 (𝐵 ·𝑜 𝐶)))
Colors of variables: wff setvar class
Syntax hints:  wi 4  wa 384  w3a 1036   = wceq 1480  wcel 1987  wne 2790  wral 2907  Vcvv 3189  wss 3559  c0 3896   ciun 4490  Ord word 5686  Oncon0 5687  Lim wlim 5688  suc csuc 5689  (class class class)co 6610  1𝑜c1o 7505   +𝑜 coa 7509   ·𝑜 comu 7510  𝑜 coe 7511
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1719  ax-4 1734  ax-5 1836  ax-6 1885  ax-7 1932  ax-8 1989  ax-9 1996  ax-10 2016  ax-11 2031  ax-12 2044  ax-13 2245  ax-ext 2601  ax-rep 4736  ax-sep 4746  ax-nul 4754  ax-pow 4808  ax-pr 4872  ax-un 6909
This theorem depends on definitions:  df-bi 197  df-or 385  df-an 386  df-3or 1037  df-3an 1038  df-tru 1483  df-ex 1702  df-nf 1707  df-sb 1878  df-eu 2473  df-mo 2474  df-clab 2608  df-cleq 2614  df-clel 2617  df-nfc 2750  df-ne 2791  df-ral 2912  df-rex 2913  df-reu 2914  df-rmo 2915  df-rab 2916  df-v 3191  df-sbc 3422  df-csb 3519  df-dif 3562  df-un 3564  df-in 3566  df-ss 3573  df-pss 3575  df-nul 3897  df-if 4064  df-pw 4137  df-sn 4154  df-pr 4156  df-tp 4158  df-op 4160  df-uni 4408  df-int 4446  df-iun 4492  df-br 4619  df-opab 4679  df-mpt 4680  df-tr 4718  df-eprel 4990  df-id 4994  df-po 5000  df-so 5001  df-fr 5038  df-we 5040  df-xp 5085  df-rel 5086  df-cnv 5087  df-co 5088  df-dm 5089  df-rn 5090  df-res 5091  df-ima 5092  df-pred 5644  df-ord 5690  df-on 5691  df-lim 5692  df-suc 5693  df-iota 5815  df-fun 5854  df-fn 5855  df-f 5856  df-f1 5857  df-fo 5858  df-f1o 5859  df-fv 5860  df-ov 6613  df-oprab 6614  df-mpt2 6615  df-om 7020  df-1st 7120  df-2nd 7121  df-wrecs 7359  df-recs 7420  df-rdg 7458  df-1o 7512  df-2o 7513  df-oadd 7516  df-omul 7517  df-oexp 7518
This theorem is referenced by:  oeoe  7631
  Copyright terms: Public domain W3C validator