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

Theorem prfval 17040
 Description: Value of the pairing functor. (Contributed by Mario Carneiro, 12-Jan-2017.)
Hypotheses
Ref Expression
prfval.k 𝑃 = (𝐹 ⟨,⟩F 𝐺)
prfval.b 𝐵 = (Base‘𝐶)
prfval.h 𝐻 = (Hom ‘𝐶)
prfval.c (𝜑𝐹 ∈ (𝐶 Func 𝐷))
prfval.d (𝜑𝐺 ∈ (𝐶 Func 𝐸))
Assertion
Ref Expression
prfval (𝜑𝑃 = ⟨(𝑥𝐵 ↦ ⟨((1st𝐹)‘𝑥), ((1st𝐺)‘𝑥)⟩), (𝑥𝐵, 𝑦𝐵 ↦ ( ∈ (𝑥𝐻𝑦) ↦ ⟨((𝑥(2nd𝐹)𝑦)‘), ((𝑥(2nd𝐺)𝑦)‘)⟩))⟩)
Distinct variable groups:   𝑥,,𝑦,𝐵   𝑥,𝐶,𝑦   ,𝐹,𝑥,𝑦   𝜑,,𝑥,𝑦   𝑥,𝐷,𝑦   ,𝐺,𝑥,𝑦   ,𝐻,𝑥,𝑦
Allowed substitution hints:   𝐶()   𝐷()   𝑃(𝑥,𝑦,)   𝐸(𝑥,𝑦,)

Proof of Theorem prfval
Dummy variables 𝑓 𝑏 𝑔 are mutually distinct and distinct from all other variables.
StepHypRef Expression
1 prfval.k . 2 𝑃 = (𝐹 ⟨,⟩F 𝐺)
2 df-prf 17016 . . . 4 ⟨,⟩F = (𝑓 ∈ V, 𝑔 ∈ V ↦ dom (1st𝑓) / 𝑏⟨(𝑥𝑏 ↦ ⟨((1st𝑓)‘𝑥), ((1st𝑔)‘𝑥)⟩), (𝑥𝑏, 𝑦𝑏 ↦ ( ∈ dom (𝑥(2nd𝑓)𝑦) ↦ ⟨((𝑥(2nd𝑓)𝑦)‘), ((𝑥(2nd𝑔)𝑦)‘)⟩))⟩)
32a1i 11 . . 3 (𝜑 → ⟨,⟩F = (𝑓 ∈ V, 𝑔 ∈ V ↦ dom (1st𝑓) / 𝑏⟨(𝑥𝑏 ↦ ⟨((1st𝑓)‘𝑥), ((1st𝑔)‘𝑥)⟩), (𝑥𝑏, 𝑦𝑏 ↦ ( ∈ dom (𝑥(2nd𝑓)𝑦) ↦ ⟨((𝑥(2nd𝑓)𝑦)‘), ((𝑥(2nd𝑔)𝑦)‘)⟩))⟩))
4 fvex 6362 . . . . . 6 (1st𝑓) ∈ V
54dmex 7264 . . . . 5 dom (1st𝑓) ∈ V
65a1i 11 . . . 4 ((𝜑 ∧ (𝑓 = 𝐹𝑔 = 𝐺)) → dom (1st𝑓) ∈ V)
7 simprl 811 . . . . . . 7 ((𝜑 ∧ (𝑓 = 𝐹𝑔 = 𝐺)) → 𝑓 = 𝐹)
87fveq2d 6356 . . . . . 6 ((𝜑 ∧ (𝑓 = 𝐹𝑔 = 𝐺)) → (1st𝑓) = (1st𝐹))
98dmeqd 5481 . . . . 5 ((𝜑 ∧ (𝑓 = 𝐹𝑔 = 𝐺)) → dom (1st𝑓) = dom (1st𝐹))
10 prfval.b . . . . . . . 8 𝐵 = (Base‘𝐶)
11 eqid 2760 . . . . . . . 8 (Base‘𝐷) = (Base‘𝐷)
12 relfunc 16723 . . . . . . . . 9 Rel (𝐶 Func 𝐷)
13 prfval.c . . . . . . . . 9 (𝜑𝐹 ∈ (𝐶 Func 𝐷))
14 1st2ndbr 7384 . . . . . . . . 9 ((Rel (𝐶 Func 𝐷) ∧ 𝐹 ∈ (𝐶 Func 𝐷)) → (1st𝐹)(𝐶 Func 𝐷)(2nd𝐹))
1512, 13, 14sylancr 698 . . . . . . . 8 (𝜑 → (1st𝐹)(𝐶 Func 𝐷)(2nd𝐹))
1610, 11, 15funcf1 16727 . . . . . . 7 (𝜑 → (1st𝐹):𝐵⟶(Base‘𝐷))
17 fdm 6212 . . . . . . 7 ((1st𝐹):𝐵⟶(Base‘𝐷) → dom (1st𝐹) = 𝐵)
1816, 17syl 17 . . . . . 6 (𝜑 → dom (1st𝐹) = 𝐵)
1918adantr 472 . . . . 5 ((𝜑 ∧ (𝑓 = 𝐹𝑔 = 𝐺)) → dom (1st𝐹) = 𝐵)
209, 19eqtrd 2794 . . . 4 ((𝜑 ∧ (𝑓 = 𝐹𝑔 = 𝐺)) → dom (1st𝑓) = 𝐵)
21 simpr 479 . . . . . 6 (((𝜑 ∧ (𝑓 = 𝐹𝑔 = 𝐺)) ∧ 𝑏 = 𝐵) → 𝑏 = 𝐵)
22 simplrl 819 . . . . . . . . 9 (((𝜑 ∧ (𝑓 = 𝐹𝑔 = 𝐺)) ∧ 𝑏 = 𝐵) → 𝑓 = 𝐹)
2322fveq2d 6356 . . . . . . . 8 (((𝜑 ∧ (𝑓 = 𝐹𝑔 = 𝐺)) ∧ 𝑏 = 𝐵) → (1st𝑓) = (1st𝐹))
2423fveq1d 6354 . . . . . . 7 (((𝜑 ∧ (𝑓 = 𝐹𝑔 = 𝐺)) ∧ 𝑏 = 𝐵) → ((1st𝑓)‘𝑥) = ((1st𝐹)‘𝑥))
25 simplrr 820 . . . . . . . . 9 (((𝜑 ∧ (𝑓 = 𝐹𝑔 = 𝐺)) ∧ 𝑏 = 𝐵) → 𝑔 = 𝐺)
2625fveq2d 6356 . . . . . . . 8 (((𝜑 ∧ (𝑓 = 𝐹𝑔 = 𝐺)) ∧ 𝑏 = 𝐵) → (1st𝑔) = (1st𝐺))
2726fveq1d 6354 . . . . . . 7 (((𝜑 ∧ (𝑓 = 𝐹𝑔 = 𝐺)) ∧ 𝑏 = 𝐵) → ((1st𝑔)‘𝑥) = ((1st𝐺)‘𝑥))
2824, 27opeq12d 4561 . . . . . 6 (((𝜑 ∧ (𝑓 = 𝐹𝑔 = 𝐺)) ∧ 𝑏 = 𝐵) → ⟨((1st𝑓)‘𝑥), ((1st𝑔)‘𝑥)⟩ = ⟨((1st𝐹)‘𝑥), ((1st𝐺)‘𝑥)⟩)
2921, 28mpteq12dv 4885 . . . . 5 (((𝜑 ∧ (𝑓 = 𝐹𝑔 = 𝐺)) ∧ 𝑏 = 𝐵) → (𝑥𝑏 ↦ ⟨((1st𝑓)‘𝑥), ((1st𝑔)‘𝑥)⟩) = (𝑥𝐵 ↦ ⟨((1st𝐹)‘𝑥), ((1st𝐺)‘𝑥)⟩))
30 eqidd 2761 . . . . . . 7 (((𝜑 ∧ (𝑓 = 𝐹𝑔 = 𝐺)) ∧ 𝑏 = 𝐵) → ( ∈ dom (𝑥(2nd𝑓)𝑦) ↦ ⟨((𝑥(2nd𝑓)𝑦)‘), ((𝑥(2nd𝑔)𝑦)‘)⟩) = ( ∈ dom (𝑥(2nd𝑓)𝑦) ↦ ⟨((𝑥(2nd𝑓)𝑦)‘), ((𝑥(2nd𝑔)𝑦)‘)⟩))
3121, 21, 30mpt2eq123dv 6882 . . . . . 6 (((𝜑 ∧ (𝑓 = 𝐹𝑔 = 𝐺)) ∧ 𝑏 = 𝐵) → (𝑥𝑏, 𝑦𝑏 ↦ ( ∈ dom (𝑥(2nd𝑓)𝑦) ↦ ⟨((𝑥(2nd𝑓)𝑦)‘), ((𝑥(2nd𝑔)𝑦)‘)⟩)) = (𝑥𝐵, 𝑦𝐵 ↦ ( ∈ dom (𝑥(2nd𝑓)𝑦) ↦ ⟨((𝑥(2nd𝑓)𝑦)‘), ((𝑥(2nd𝑔)𝑦)‘)⟩)))
3222ad2antrr 764 . . . . . . . . . . . . 13 (((((𝜑 ∧ (𝑓 = 𝐹𝑔 = 𝐺)) ∧ 𝑏 = 𝐵) ∧ 𝑥𝐵) ∧ 𝑦𝐵) → 𝑓 = 𝐹)
3332fveq2d 6356 . . . . . . . . . . . 12 (((((𝜑 ∧ (𝑓 = 𝐹𝑔 = 𝐺)) ∧ 𝑏 = 𝐵) ∧ 𝑥𝐵) ∧ 𝑦𝐵) → (2nd𝑓) = (2nd𝐹))
3433oveqd 6830 . . . . . . . . . . 11 (((((𝜑 ∧ (𝑓 = 𝐹𝑔 = 𝐺)) ∧ 𝑏 = 𝐵) ∧ 𝑥𝐵) ∧ 𝑦𝐵) → (𝑥(2nd𝑓)𝑦) = (𝑥(2nd𝐹)𝑦))
3534dmeqd 5481 . . . . . . . . . 10 (((((𝜑 ∧ (𝑓 = 𝐹𝑔 = 𝐺)) ∧ 𝑏 = 𝐵) ∧ 𝑥𝐵) ∧ 𝑦𝐵) → dom (𝑥(2nd𝑓)𝑦) = dom (𝑥(2nd𝐹)𝑦))
36 prfval.h . . . . . . . . . . . 12 𝐻 = (Hom ‘𝐶)
37 eqid 2760 . . . . . . . . . . . 12 (Hom ‘𝐷) = (Hom ‘𝐷)
3815ad4antr 771 . . . . . . . . . . . 12 (((((𝜑 ∧ (𝑓 = 𝐹𝑔 = 𝐺)) ∧ 𝑏 = 𝐵) ∧ 𝑥𝐵) ∧ 𝑦𝐵) → (1st𝐹)(𝐶 Func 𝐷)(2nd𝐹))
39 simplr 809 . . . . . . . . . . . 12 (((((𝜑 ∧ (𝑓 = 𝐹𝑔 = 𝐺)) ∧ 𝑏 = 𝐵) ∧ 𝑥𝐵) ∧ 𝑦𝐵) → 𝑥𝐵)
40 simpr 479 . . . . . . . . . . . 12 (((((𝜑 ∧ (𝑓 = 𝐹𝑔 = 𝐺)) ∧ 𝑏 = 𝐵) ∧ 𝑥𝐵) ∧ 𝑦𝐵) → 𝑦𝐵)
4110, 36, 37, 38, 39, 40funcf2 16729 . . . . . . . . . . 11 (((((𝜑 ∧ (𝑓 = 𝐹𝑔 = 𝐺)) ∧ 𝑏 = 𝐵) ∧ 𝑥𝐵) ∧ 𝑦𝐵) → (𝑥(2nd𝐹)𝑦):(𝑥𝐻𝑦)⟶(((1st𝐹)‘𝑥)(Hom ‘𝐷)((1st𝐹)‘𝑦)))
42 fdm 6212 . . . . . . . . . . 11 ((𝑥(2nd𝐹)𝑦):(𝑥𝐻𝑦)⟶(((1st𝐹)‘𝑥)(Hom ‘𝐷)((1st𝐹)‘𝑦)) → dom (𝑥(2nd𝐹)𝑦) = (𝑥𝐻𝑦))
4341, 42syl 17 . . . . . . . . . 10 (((((𝜑 ∧ (𝑓 = 𝐹𝑔 = 𝐺)) ∧ 𝑏 = 𝐵) ∧ 𝑥𝐵) ∧ 𝑦𝐵) → dom (𝑥(2nd𝐹)𝑦) = (𝑥𝐻𝑦))
4435, 43eqtrd 2794 . . . . . . . . 9 (((((𝜑 ∧ (𝑓 = 𝐹𝑔 = 𝐺)) ∧ 𝑏 = 𝐵) ∧ 𝑥𝐵) ∧ 𝑦𝐵) → dom (𝑥(2nd𝑓)𝑦) = (𝑥𝐻𝑦))
4534fveq1d 6354 . . . . . . . . . 10 (((((𝜑 ∧ (𝑓 = 𝐹𝑔 = 𝐺)) ∧ 𝑏 = 𝐵) ∧ 𝑥𝐵) ∧ 𝑦𝐵) → ((𝑥(2nd𝑓)𝑦)‘) = ((𝑥(2nd𝐹)𝑦)‘))
4625ad2antrr 764 . . . . . . . . . . . . 13 (((((𝜑 ∧ (𝑓 = 𝐹𝑔 = 𝐺)) ∧ 𝑏 = 𝐵) ∧ 𝑥𝐵) ∧ 𝑦𝐵) → 𝑔 = 𝐺)
4746fveq2d 6356 . . . . . . . . . . . 12 (((((𝜑 ∧ (𝑓 = 𝐹𝑔 = 𝐺)) ∧ 𝑏 = 𝐵) ∧ 𝑥𝐵) ∧ 𝑦𝐵) → (2nd𝑔) = (2nd𝐺))
4847oveqd 6830 . . . . . . . . . . 11 (((((𝜑 ∧ (𝑓 = 𝐹𝑔 = 𝐺)) ∧ 𝑏 = 𝐵) ∧ 𝑥𝐵) ∧ 𝑦𝐵) → (𝑥(2nd𝑔)𝑦) = (𝑥(2nd𝐺)𝑦))
4948fveq1d 6354 . . . . . . . . . 10 (((((𝜑 ∧ (𝑓 = 𝐹𝑔 = 𝐺)) ∧ 𝑏 = 𝐵) ∧ 𝑥𝐵) ∧ 𝑦𝐵) → ((𝑥(2nd𝑔)𝑦)‘) = ((𝑥(2nd𝐺)𝑦)‘))
5045, 49opeq12d 4561 . . . . . . . . 9 (((((𝜑 ∧ (𝑓 = 𝐹𝑔 = 𝐺)) ∧ 𝑏 = 𝐵) ∧ 𝑥𝐵) ∧ 𝑦𝐵) → ⟨((𝑥(2nd𝑓)𝑦)‘), ((𝑥(2nd𝑔)𝑦)‘)⟩ = ⟨((𝑥(2nd𝐹)𝑦)‘), ((𝑥(2nd𝐺)𝑦)‘)⟩)
5144, 50mpteq12dv 4885 . . . . . . . 8 (((((𝜑 ∧ (𝑓 = 𝐹𝑔 = 𝐺)) ∧ 𝑏 = 𝐵) ∧ 𝑥𝐵) ∧ 𝑦𝐵) → ( ∈ dom (𝑥(2nd𝑓)𝑦) ↦ ⟨((𝑥(2nd𝑓)𝑦)‘), ((𝑥(2nd𝑔)𝑦)‘)⟩) = ( ∈ (𝑥𝐻𝑦) ↦ ⟨((𝑥(2nd𝐹)𝑦)‘), ((𝑥(2nd𝐺)𝑦)‘)⟩))
52513impa 1101 . . . . . . 7 ((((𝜑 ∧ (𝑓 = 𝐹𝑔 = 𝐺)) ∧ 𝑏 = 𝐵) ∧ 𝑥𝐵𝑦𝐵) → ( ∈ dom (𝑥(2nd𝑓)𝑦) ↦ ⟨((𝑥(2nd𝑓)𝑦)‘), ((𝑥(2nd𝑔)𝑦)‘)⟩) = ( ∈ (𝑥𝐻𝑦) ↦ ⟨((𝑥(2nd𝐹)𝑦)‘), ((𝑥(2nd𝐺)𝑦)‘)⟩))
5352mpt2eq3dva 6884 . . . . . 6 (((𝜑 ∧ (𝑓 = 𝐹𝑔 = 𝐺)) ∧ 𝑏 = 𝐵) → (𝑥𝐵, 𝑦𝐵 ↦ ( ∈ dom (𝑥(2nd𝑓)𝑦) ↦ ⟨((𝑥(2nd𝑓)𝑦)‘), ((𝑥(2nd𝑔)𝑦)‘)⟩)) = (𝑥𝐵, 𝑦𝐵 ↦ ( ∈ (𝑥𝐻𝑦) ↦ ⟨((𝑥(2nd𝐹)𝑦)‘), ((𝑥(2nd𝐺)𝑦)‘)⟩)))
5431, 53eqtrd 2794 . . . . 5 (((𝜑 ∧ (𝑓 = 𝐹𝑔 = 𝐺)) ∧ 𝑏 = 𝐵) → (𝑥𝑏, 𝑦𝑏 ↦ ( ∈ dom (𝑥(2nd𝑓)𝑦) ↦ ⟨((𝑥(2nd𝑓)𝑦)‘), ((𝑥(2nd𝑔)𝑦)‘)⟩)) = (𝑥𝐵, 𝑦𝐵 ↦ ( ∈ (𝑥𝐻𝑦) ↦ ⟨((𝑥(2nd𝐹)𝑦)‘), ((𝑥(2nd𝐺)𝑦)‘)⟩)))
5529, 54opeq12d 4561 . . . 4 (((𝜑 ∧ (𝑓 = 𝐹𝑔 = 𝐺)) ∧ 𝑏 = 𝐵) → ⟨(𝑥𝑏 ↦ ⟨((1st𝑓)‘𝑥), ((1st𝑔)‘𝑥)⟩), (𝑥𝑏, 𝑦𝑏 ↦ ( ∈ dom (𝑥(2nd𝑓)𝑦) ↦ ⟨((𝑥(2nd𝑓)𝑦)‘), ((𝑥(2nd𝑔)𝑦)‘)⟩))⟩ = ⟨(𝑥𝐵 ↦ ⟨((1st𝐹)‘𝑥), ((1st𝐺)‘𝑥)⟩), (𝑥𝐵, 𝑦𝐵 ↦ ( ∈ (𝑥𝐻𝑦) ↦ ⟨((𝑥(2nd𝐹)𝑦)‘), ((𝑥(2nd𝐺)𝑦)‘)⟩))⟩)
566, 20, 55csbied2 3702 . . 3 ((𝜑 ∧ (𝑓 = 𝐹𝑔 = 𝐺)) → dom (1st𝑓) / 𝑏⟨(𝑥𝑏 ↦ ⟨((1st𝑓)‘𝑥), ((1st𝑔)‘𝑥)⟩), (𝑥𝑏, 𝑦𝑏 ↦ ( ∈ dom (𝑥(2nd𝑓)𝑦) ↦ ⟨((𝑥(2nd𝑓)𝑦)‘), ((𝑥(2nd𝑔)𝑦)‘)⟩))⟩ = ⟨(𝑥𝐵 ↦ ⟨((1st𝐹)‘𝑥), ((1st𝐺)‘𝑥)⟩), (𝑥𝐵, 𝑦𝐵 ↦ ( ∈ (𝑥𝐻𝑦) ↦ ⟨((𝑥(2nd𝐹)𝑦)‘), ((𝑥(2nd𝐺)𝑦)‘)⟩))⟩)
57 elex 3352 . . . 4 (𝐹 ∈ (𝐶 Func 𝐷) → 𝐹 ∈ V)
5813, 57syl 17 . . 3 (𝜑𝐹 ∈ V)
59 prfval.d . . . 4 (𝜑𝐺 ∈ (𝐶 Func 𝐸))
60 elex 3352 . . . 4 (𝐺 ∈ (𝐶 Func 𝐸) → 𝐺 ∈ V)
6159, 60syl 17 . . 3 (𝜑𝐺 ∈ V)
62 opex 5081 . . . 4 ⟨(𝑥𝐵 ↦ ⟨((1st𝐹)‘𝑥), ((1st𝐺)‘𝑥)⟩), (𝑥𝐵, 𝑦𝐵 ↦ ( ∈ (𝑥𝐻𝑦) ↦ ⟨((𝑥(2nd𝐹)𝑦)‘), ((𝑥(2nd𝐺)𝑦)‘)⟩))⟩ ∈ V
6362a1i 11 . . 3 (𝜑 → ⟨(𝑥𝐵 ↦ ⟨((1st𝐹)‘𝑥), ((1st𝐺)‘𝑥)⟩), (𝑥𝐵, 𝑦𝐵 ↦ ( ∈ (𝑥𝐻𝑦) ↦ ⟨((𝑥(2nd𝐹)𝑦)‘), ((𝑥(2nd𝐺)𝑦)‘)⟩))⟩ ∈ V)
643, 56, 58, 61, 63ovmpt2d 6953 . 2 (𝜑 → (𝐹 ⟨,⟩F 𝐺) = ⟨(𝑥𝐵 ↦ ⟨((1st𝐹)‘𝑥), ((1st𝐺)‘𝑥)⟩), (𝑥𝐵, 𝑦𝐵 ↦ ( ∈ (𝑥𝐻𝑦) ↦ ⟨((𝑥(2nd𝐹)𝑦)‘), ((𝑥(2nd𝐺)𝑦)‘)⟩))⟩)
651, 64syl5eq 2806 1 (𝜑𝑃 = ⟨(𝑥𝐵 ↦ ⟨((1st𝐹)‘𝑥), ((1st𝐺)‘𝑥)⟩), (𝑥𝐵, 𝑦𝐵 ↦ ( ∈ (𝑥𝐻𝑦) ↦ ⟨((𝑥(2nd𝐹)𝑦)‘), ((𝑥(2nd𝐺)𝑦)‘)⟩))⟩)
 Colors of variables: wff setvar class Syntax hints:   → wi 4   ∧ wa 383   = wceq 1632   ∈ wcel 2139  Vcvv 3340  ⦋csb 3674  ⟨cop 4327   class class class wbr 4804   ↦ cmpt 4881  dom cdm 5266  Rel wrel 5271  ⟶wf 6045  ‘cfv 6049  (class class class)co 6813   ↦ cmpt2 6815  1st c1st 7331  2nd c2nd 7332  Basecbs 16059  Hom chom 16154   Func cfunc 16715   ⟨,⟩F cprf 17012 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-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-rab 3059  df-v 3342  df-sbc 3577  df-csb 3675  df-dif 3718  df-un 3720  df-in 3722  df-ss 3729  df-nul 4059  df-if 4231  df-pw 4304  df-sn 4322  df-pr 4324  df-op 4328  df-uni 4589  df-iun 4674  df-br 4805  df-opab 4865  df-mpt 4882  df-id 5174  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-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-1st 7333  df-2nd 7334  df-map 8025  df-ixp 8075  df-func 16719  df-prf 17016 This theorem is referenced by:  prf1  17041  prf2fval  17042  prfcl  17044  prf1st  17045  prf2nd  17046  1st2ndprf  17047
 Copyright terms: Public domain W3C validator