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

Theorem metsscmetcld 25362
Description: A complete subspace of a metric space is closed in the parent space. Formerly part of proof for cmetss 25363. (Contributed by NM, 28-Jan-2008.) (Revised by Mario Carneiro, 15-Oct-2015.) (Revised by AV, 9-Oct-2022.)
Hypothesis
Ref Expression
metsscmetcld.j 𝐽 = (MetOpen‘𝐷)
Assertion
Ref Expression
metsscmetcld ((𝐷 ∈ (Met‘𝑋) ∧ (𝐷 ↾ (𝑌 × 𝑌)) ∈ (CMet‘𝑌)) → 𝑌 ∈ (Clsd‘𝐽))

Proof of Theorem metsscmetcld
Dummy variables 𝑥 𝑓 are mutually distinct and distinct from all other variables.
StepHypRef Expression
1 metxmet 24359 . . . . . . 7 (𝐷 ∈ (Met‘𝑋) → 𝐷 ∈ (∞Met‘𝑋))
21adantr 480 . . . . . 6 ((𝐷 ∈ (Met‘𝑋) ∧ (𝐷 ↾ (𝑌 × 𝑌)) ∈ (CMet‘𝑌)) → 𝐷 ∈ (∞Met‘𝑋))
3 metsscmetcld.j . . . . . . 7 𝐽 = (MetOpen‘𝐷)
43mopntopon 24464 . . . . . 6 (𝐷 ∈ (∞Met‘𝑋) → 𝐽 ∈ (TopOn‘𝑋))
52, 4syl 17 . . . . 5 ((𝐷 ∈ (Met‘𝑋) ∧ (𝐷 ↾ (𝑌 × 𝑌)) ∈ (CMet‘𝑌)) → 𝐽 ∈ (TopOn‘𝑋))
6 resss 6021 . . . . . . 7 (𝐷 ↾ (𝑌 × 𝑌)) ⊆ 𝐷
7 dmss 5915 . . . . . . 7 ((𝐷 ↾ (𝑌 × 𝑌)) ⊆ 𝐷 → dom (𝐷 ↾ (𝑌 × 𝑌)) ⊆ dom 𝐷)
8 dmss 5915 . . . . . . 7 (dom (𝐷 ↾ (𝑌 × 𝑌)) ⊆ dom 𝐷 → dom dom (𝐷 ↾ (𝑌 × 𝑌)) ⊆ dom dom 𝐷)
96, 7, 8mp2b 10 . . . . . 6 dom dom (𝐷 ↾ (𝑌 × 𝑌)) ⊆ dom dom 𝐷
10 cmetmet 25333 . . . . . . . 8 ((𝐷 ↾ (𝑌 × 𝑌)) ∈ (CMet‘𝑌) → (𝐷 ↾ (𝑌 × 𝑌)) ∈ (Met‘𝑌))
11 metdmdm 24361 . . . . . . . 8 ((𝐷 ↾ (𝑌 × 𝑌)) ∈ (Met‘𝑌) → 𝑌 = dom dom (𝐷 ↾ (𝑌 × 𝑌)))
1210, 11syl 17 . . . . . . 7 ((𝐷 ↾ (𝑌 × 𝑌)) ∈ (CMet‘𝑌) → 𝑌 = dom dom (𝐷 ↾ (𝑌 × 𝑌)))
13 metdmdm 24361 . . . . . . 7 (𝐷 ∈ (Met‘𝑋) → 𝑋 = dom dom 𝐷)
14 sseq12 4022 . . . . . . 7 ((𝑌 = dom dom (𝐷 ↾ (𝑌 × 𝑌)) ∧ 𝑋 = dom dom 𝐷) → (𝑌𝑋 ↔ dom dom (𝐷 ↾ (𝑌 × 𝑌)) ⊆ dom dom 𝐷))
1512, 13, 14syl2anr 597 . . . . . 6 ((𝐷 ∈ (Met‘𝑋) ∧ (𝐷 ↾ (𝑌 × 𝑌)) ∈ (CMet‘𝑌)) → (𝑌𝑋 ↔ dom dom (𝐷 ↾ (𝑌 × 𝑌)) ⊆ dom dom 𝐷))
169, 15mpbiri 258 . . . . 5 ((𝐷 ∈ (Met‘𝑋) ∧ (𝐷 ↾ (𝑌 × 𝑌)) ∈ (CMet‘𝑌)) → 𝑌𝑋)
17 flimcls 24008 . . . . 5 ((𝐽 ∈ (TopOn‘𝑋) ∧ 𝑌𝑋) → (𝑥 ∈ ((cls‘𝐽)‘𝑌) ↔ ∃𝑓 ∈ (Fil‘𝑋)(𝑌𝑓𝑥 ∈ (𝐽 fLim 𝑓))))
185, 16, 17syl2anc 584 . . . 4 ((𝐷 ∈ (Met‘𝑋) ∧ (𝐷 ↾ (𝑌 × 𝑌)) ∈ (CMet‘𝑌)) → (𝑥 ∈ ((cls‘𝐽)‘𝑌) ↔ ∃𝑓 ∈ (Fil‘𝑋)(𝑌𝑓𝑥 ∈ (𝐽 fLim 𝑓))))
19 simprrr 782 . . . . . 6 (((𝐷 ∈ (Met‘𝑋) ∧ (𝐷 ↾ (𝑌 × 𝑌)) ∈ (CMet‘𝑌)) ∧ (𝑓 ∈ (Fil‘𝑋) ∧ (𝑌𝑓𝑥 ∈ (𝐽 fLim 𝑓)))) → 𝑥 ∈ (𝐽 fLim 𝑓))
202adantr 480 . . . . . . . 8 (((𝐷 ∈ (Met‘𝑋) ∧ (𝐷 ↾ (𝑌 × 𝑌)) ∈ (CMet‘𝑌)) ∧ (𝑓 ∈ (Fil‘𝑋) ∧ (𝑌𝑓𝑥 ∈ (𝐽 fLim 𝑓)))) → 𝐷 ∈ (∞Met‘𝑋))
213methaus 24548 . . . . . . . 8 (𝐷 ∈ (∞Met‘𝑋) → 𝐽 ∈ Haus)
22 hausflimi 24003 . . . . . . . 8 (𝐽 ∈ Haus → ∃*𝑥 𝑥 ∈ (𝐽 fLim 𝑓))
2320, 21, 223syl 18 . . . . . . 7 (((𝐷 ∈ (Met‘𝑋) ∧ (𝐷 ↾ (𝑌 × 𝑌)) ∈ (CMet‘𝑌)) ∧ (𝑓 ∈ (Fil‘𝑋) ∧ (𝑌𝑓𝑥 ∈ (𝐽 fLim 𝑓)))) → ∃*𝑥 𝑥 ∈ (𝐽 fLim 𝑓))
2420, 4syl 17 . . . . . . . . . . 11 (((𝐷 ∈ (Met‘𝑋) ∧ (𝐷 ↾ (𝑌 × 𝑌)) ∈ (CMet‘𝑌)) ∧ (𝑓 ∈ (Fil‘𝑋) ∧ (𝑌𝑓𝑥 ∈ (𝐽 fLim 𝑓)))) → 𝐽 ∈ (TopOn‘𝑋))
25 simprl 771 . . . . . . . . . . 11 (((𝐷 ∈ (Met‘𝑋) ∧ (𝐷 ↾ (𝑌 × 𝑌)) ∈ (CMet‘𝑌)) ∧ (𝑓 ∈ (Fil‘𝑋) ∧ (𝑌𝑓𝑥 ∈ (𝐽 fLim 𝑓)))) → 𝑓 ∈ (Fil‘𝑋))
26 simprrl 781 . . . . . . . . . . 11 (((𝐷 ∈ (Met‘𝑋) ∧ (𝐷 ↾ (𝑌 × 𝑌)) ∈ (CMet‘𝑌)) ∧ (𝑓 ∈ (Fil‘𝑋) ∧ (𝑌𝑓𝑥 ∈ (𝐽 fLim 𝑓)))) → 𝑌𝑓)
27 flimrest 24006 . . . . . . . . . . 11 ((𝐽 ∈ (TopOn‘𝑋) ∧ 𝑓 ∈ (Fil‘𝑋) ∧ 𝑌𝑓) → ((𝐽t 𝑌) fLim (𝑓t 𝑌)) = ((𝐽 fLim 𝑓) ∩ 𝑌))
2824, 25, 26, 27syl3anc 1370 . . . . . . . . . 10 (((𝐷 ∈ (Met‘𝑋) ∧ (𝐷 ↾ (𝑌 × 𝑌)) ∈ (CMet‘𝑌)) ∧ (𝑓 ∈ (Fil‘𝑋) ∧ (𝑌𝑓𝑥 ∈ (𝐽 fLim 𝑓)))) → ((𝐽t 𝑌) fLim (𝑓t 𝑌)) = ((𝐽 fLim 𝑓) ∩ 𝑌))
2916adantr 480 . . . . . . . . . . . 12 (((𝐷 ∈ (Met‘𝑋) ∧ (𝐷 ↾ (𝑌 × 𝑌)) ∈ (CMet‘𝑌)) ∧ (𝑓 ∈ (Fil‘𝑋) ∧ (𝑌𝑓𝑥 ∈ (𝐽 fLim 𝑓)))) → 𝑌𝑋)
30 eqid 2734 . . . . . . . . . . . . 13 (𝐷 ↾ (𝑌 × 𝑌)) = (𝐷 ↾ (𝑌 × 𝑌))
31 eqid 2734 . . . . . . . . . . . . 13 (MetOpen‘(𝐷 ↾ (𝑌 × 𝑌))) = (MetOpen‘(𝐷 ↾ (𝑌 × 𝑌)))
3230, 3, 31metrest 24552 . . . . . . . . . . . 12 ((𝐷 ∈ (∞Met‘𝑋) ∧ 𝑌𝑋) → (𝐽t 𝑌) = (MetOpen‘(𝐷 ↾ (𝑌 × 𝑌))))
3320, 29, 32syl2anc 584 . . . . . . . . . . 11 (((𝐷 ∈ (Met‘𝑋) ∧ (𝐷 ↾ (𝑌 × 𝑌)) ∈ (CMet‘𝑌)) ∧ (𝑓 ∈ (Fil‘𝑋) ∧ (𝑌𝑓𝑥 ∈ (𝐽 fLim 𝑓)))) → (𝐽t 𝑌) = (MetOpen‘(𝐷 ↾ (𝑌 × 𝑌))))
3433oveq1d 7445 . . . . . . . . . 10 (((𝐷 ∈ (Met‘𝑋) ∧ (𝐷 ↾ (𝑌 × 𝑌)) ∈ (CMet‘𝑌)) ∧ (𝑓 ∈ (Fil‘𝑋) ∧ (𝑌𝑓𝑥 ∈ (𝐽 fLim 𝑓)))) → ((𝐽t 𝑌) fLim (𝑓t 𝑌)) = ((MetOpen‘(𝐷 ↾ (𝑌 × 𝑌))) fLim (𝑓t 𝑌)))
3528, 34eqtr3d 2776 . . . . . . . . 9 (((𝐷 ∈ (Met‘𝑋) ∧ (𝐷 ↾ (𝑌 × 𝑌)) ∈ (CMet‘𝑌)) ∧ (𝑓 ∈ (Fil‘𝑋) ∧ (𝑌𝑓𝑥 ∈ (𝐽 fLim 𝑓)))) → ((𝐽 fLim 𝑓) ∩ 𝑌) = ((MetOpen‘(𝐷 ↾ (𝑌 × 𝑌))) fLim (𝑓t 𝑌)))
36 simplr 769 . . . . . . . . . 10 (((𝐷 ∈ (Met‘𝑋) ∧ (𝐷 ↾ (𝑌 × 𝑌)) ∈ (CMet‘𝑌)) ∧ (𝑓 ∈ (Fil‘𝑋) ∧ (𝑌𝑓𝑥 ∈ (𝐽 fLim 𝑓)))) → (𝐷 ↾ (𝑌 × 𝑌)) ∈ (CMet‘𝑌))
373flimcfil 25361 . . . . . . . . . . . 12 ((𝐷 ∈ (∞Met‘𝑋) ∧ 𝑥 ∈ (𝐽 fLim 𝑓)) → 𝑓 ∈ (CauFil‘𝐷))
3820, 19, 37syl2anc 584 . . . . . . . . . . 11 (((𝐷 ∈ (Met‘𝑋) ∧ (𝐷 ↾ (𝑌 × 𝑌)) ∈ (CMet‘𝑌)) ∧ (𝑓 ∈ (Fil‘𝑋) ∧ (𝑌𝑓𝑥 ∈ (𝐽 fLim 𝑓)))) → 𝑓 ∈ (CauFil‘𝐷))
39 cfilres 25343 . . . . . . . . . . . 12 ((𝐷 ∈ (∞Met‘𝑋) ∧ 𝑓 ∈ (Fil‘𝑋) ∧ 𝑌𝑓) → (𝑓 ∈ (CauFil‘𝐷) ↔ (𝑓t 𝑌) ∈ (CauFil‘(𝐷 ↾ (𝑌 × 𝑌)))))
4020, 25, 26, 39syl3anc 1370 . . . . . . . . . . 11 (((𝐷 ∈ (Met‘𝑋) ∧ (𝐷 ↾ (𝑌 × 𝑌)) ∈ (CMet‘𝑌)) ∧ (𝑓 ∈ (Fil‘𝑋) ∧ (𝑌𝑓𝑥 ∈ (𝐽 fLim 𝑓)))) → (𝑓 ∈ (CauFil‘𝐷) ↔ (𝑓t 𝑌) ∈ (CauFil‘(𝐷 ↾ (𝑌 × 𝑌)))))
4138, 40mpbid 232 . . . . . . . . . 10 (((𝐷 ∈ (Met‘𝑋) ∧ (𝐷 ↾ (𝑌 × 𝑌)) ∈ (CMet‘𝑌)) ∧ (𝑓 ∈ (Fil‘𝑋) ∧ (𝑌𝑓𝑥 ∈ (𝐽 fLim 𝑓)))) → (𝑓t 𝑌) ∈ (CauFil‘(𝐷 ↾ (𝑌 × 𝑌))))
4231cmetcvg 25332 . . . . . . . . . 10 (((𝐷 ↾ (𝑌 × 𝑌)) ∈ (CMet‘𝑌) ∧ (𝑓t 𝑌) ∈ (CauFil‘(𝐷 ↾ (𝑌 × 𝑌)))) → ((MetOpen‘(𝐷 ↾ (𝑌 × 𝑌))) fLim (𝑓t 𝑌)) ≠ ∅)
4336, 41, 42syl2anc 584 . . . . . . . . 9 (((𝐷 ∈ (Met‘𝑋) ∧ (𝐷 ↾ (𝑌 × 𝑌)) ∈ (CMet‘𝑌)) ∧ (𝑓 ∈ (Fil‘𝑋) ∧ (𝑌𝑓𝑥 ∈ (𝐽 fLim 𝑓)))) → ((MetOpen‘(𝐷 ↾ (𝑌 × 𝑌))) fLim (𝑓t 𝑌)) ≠ ∅)
4435, 43eqnetrd 3005 . . . . . . . 8 (((𝐷 ∈ (Met‘𝑋) ∧ (𝐷 ↾ (𝑌 × 𝑌)) ∈ (CMet‘𝑌)) ∧ (𝑓 ∈ (Fil‘𝑋) ∧ (𝑌𝑓𝑥 ∈ (𝐽 fLim 𝑓)))) → ((𝐽 fLim 𝑓) ∩ 𝑌) ≠ ∅)
45 ndisj 4375 . . . . . . . 8 (((𝐽 fLim 𝑓) ∩ 𝑌) ≠ ∅ ↔ ∃𝑥(𝑥 ∈ (𝐽 fLim 𝑓) ∧ 𝑥𝑌))
4644, 45sylib 218 . . . . . . 7 (((𝐷 ∈ (Met‘𝑋) ∧ (𝐷 ↾ (𝑌 × 𝑌)) ∈ (CMet‘𝑌)) ∧ (𝑓 ∈ (Fil‘𝑋) ∧ (𝑌𝑓𝑥 ∈ (𝐽 fLim 𝑓)))) → ∃𝑥(𝑥 ∈ (𝐽 fLim 𝑓) ∧ 𝑥𝑌))
47 mopick 2622 . . . . . . 7 ((∃*𝑥 𝑥 ∈ (𝐽 fLim 𝑓) ∧ ∃𝑥(𝑥 ∈ (𝐽 fLim 𝑓) ∧ 𝑥𝑌)) → (𝑥 ∈ (𝐽 fLim 𝑓) → 𝑥𝑌))
4823, 46, 47syl2anc 584 . . . . . 6 (((𝐷 ∈ (Met‘𝑋) ∧ (𝐷 ↾ (𝑌 × 𝑌)) ∈ (CMet‘𝑌)) ∧ (𝑓 ∈ (Fil‘𝑋) ∧ (𝑌𝑓𝑥 ∈ (𝐽 fLim 𝑓)))) → (𝑥 ∈ (𝐽 fLim 𝑓) → 𝑥𝑌))
4919, 48mpd 15 . . . . 5 (((𝐷 ∈ (Met‘𝑋) ∧ (𝐷 ↾ (𝑌 × 𝑌)) ∈ (CMet‘𝑌)) ∧ (𝑓 ∈ (Fil‘𝑋) ∧ (𝑌𝑓𝑥 ∈ (𝐽 fLim 𝑓)))) → 𝑥𝑌)
5049rexlimdvaa 3153 . . . 4 ((𝐷 ∈ (Met‘𝑋) ∧ (𝐷 ↾ (𝑌 × 𝑌)) ∈ (CMet‘𝑌)) → (∃𝑓 ∈ (Fil‘𝑋)(𝑌𝑓𝑥 ∈ (𝐽 fLim 𝑓)) → 𝑥𝑌))
5118, 50sylbid 240 . . 3 ((𝐷 ∈ (Met‘𝑋) ∧ (𝐷 ↾ (𝑌 × 𝑌)) ∈ (CMet‘𝑌)) → (𝑥 ∈ ((cls‘𝐽)‘𝑌) → 𝑥𝑌))
5251ssrdv 4000 . 2 ((𝐷 ∈ (Met‘𝑋) ∧ (𝐷 ↾ (𝑌 × 𝑌)) ∈ (CMet‘𝑌)) → ((cls‘𝐽)‘𝑌) ⊆ 𝑌)
533mopntop 24465 . . . 4 (𝐷 ∈ (∞Met‘𝑋) → 𝐽 ∈ Top)
542, 53syl 17 . . 3 ((𝐷 ∈ (Met‘𝑋) ∧ (𝐷 ↾ (𝑌 × 𝑌)) ∈ (CMet‘𝑌)) → 𝐽 ∈ Top)
553mopnuni 24466 . . . . 5 (𝐷 ∈ (∞Met‘𝑋) → 𝑋 = 𝐽)
562, 55syl 17 . . . 4 ((𝐷 ∈ (Met‘𝑋) ∧ (𝐷 ↾ (𝑌 × 𝑌)) ∈ (CMet‘𝑌)) → 𝑋 = 𝐽)
5716, 56sseqtrd 4035 . . 3 ((𝐷 ∈ (Met‘𝑋) ∧ (𝐷 ↾ (𝑌 × 𝑌)) ∈ (CMet‘𝑌)) → 𝑌 𝐽)
58 eqid 2734 . . . 4 𝐽 = 𝐽
5958iscld4 23088 . . 3 ((𝐽 ∈ Top ∧ 𝑌 𝐽) → (𝑌 ∈ (Clsd‘𝐽) ↔ ((cls‘𝐽)‘𝑌) ⊆ 𝑌))
6054, 57, 59syl2anc 584 . 2 ((𝐷 ∈ (Met‘𝑋) ∧ (𝐷 ↾ (𝑌 × 𝑌)) ∈ (CMet‘𝑌)) → (𝑌 ∈ (Clsd‘𝐽) ↔ ((cls‘𝐽)‘𝑌) ⊆ 𝑌))
6152, 60mpbird 257 1 ((𝐷 ∈ (Met‘𝑋) ∧ (𝐷 ↾ (𝑌 × 𝑌)) ∈ (CMet‘𝑌)) → 𝑌 ∈ (Clsd‘𝐽))
Colors of variables: wff setvar class
Syntax hints:  wi 4  wb 206  wa 395   = wceq 1536  wex 1775  wcel 2105  ∃*wmo 2535  wne 2937  wrex 3067  cin 3961  wss 3962  c0 4338   cuni 4911   × cxp 5686  dom cdm 5688  cres 5690  cfv 6562  (class class class)co 7430  t crest 17466  ∞Metcxmet 21366  Metcmet 21367  MetOpencmopn 21371  Topctop 22914  TopOnctopon 22931  Clsdccld 23039  clsccl 23041  Hauscha 23331  Filcfil 23868   fLim cflim 23957  CauFilccfil 25299  CMetccmet 25301
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1791  ax-4 1805  ax-5 1907  ax-6 1964  ax-7 2004  ax-8 2107  ax-9 2115  ax-10 2138  ax-11 2154  ax-12 2174  ax-ext 2705  ax-rep 5284  ax-sep 5301  ax-nul 5311  ax-pow 5370  ax-pr 5437  ax-un 7753  ax-cnex 11208  ax-resscn 11209  ax-1cn 11210  ax-icn 11211  ax-addcl 11212  ax-addrcl 11213  ax-mulcl 11214  ax-mulrcl 11215  ax-mulcom 11216  ax-addass 11217  ax-mulass 11218  ax-distr 11219  ax-i2m1 11220  ax-1ne0 11221  ax-1rid 11222  ax-rnegex 11223  ax-rrecex 11224  ax-cnre 11225  ax-pre-lttri 11226  ax-pre-lttrn 11227  ax-pre-ltadd 11228  ax-pre-mulgt0 11229  ax-pre-sup 11230
This theorem depends on definitions:  df-bi 207  df-an 396  df-or 848  df-3or 1087  df-3an 1088  df-tru 1539  df-fal 1549  df-ex 1776  df-nf 1780  df-sb 2062  df-mo 2537  df-eu 2566  df-clab 2712  df-cleq 2726  df-clel 2813  df-nfc 2889  df-ne 2938  df-nel 3044  df-ral 3059  df-rex 3068  df-rmo 3377  df-reu 3378  df-rab 3433  df-v 3479  df-sbc 3791  df-csb 3908  df-dif 3965  df-un 3967  df-in 3969  df-ss 3979  df-pss 3982  df-nul 4339  df-if 4531  df-pw 4606  df-sn 4631  df-pr 4633  df-op 4637  df-uni 4912  df-int 4951  df-iun 4997  df-iin 4998  df-br 5148  df-opab 5210  df-mpt 5231  df-tr 5265  df-id 5582  df-eprel 5588  df-po 5596  df-so 5597  df-fr 5640  df-we 5642  df-xp 5694  df-rel 5695  df-cnv 5696  df-co 5697  df-dm 5698  df-rn 5699  df-res 5700  df-ima 5701  df-pred 6322  df-ord 6388  df-on 6389  df-lim 6390  df-suc 6391  df-iota 6515  df-fun 6564  df-fn 6565  df-f 6566  df-f1 6567  df-fo 6568  df-f1o 6569  df-fv 6570  df-riota 7387  df-ov 7433  df-oprab 7434  df-mpo 7435  df-om 7887  df-1st 8012  df-2nd 8013  df-frecs 8304  df-wrecs 8335  df-recs 8409  df-rdg 8448  df-1o 8504  df-2o 8505  df-er 8743  df-map 8866  df-en 8984  df-dom 8985  df-sdom 8986  df-fin 8987  df-fi 9448  df-sup 9479  df-inf 9480  df-pnf 11294  df-mnf 11295  df-xr 11296  df-ltxr 11297  df-le 11298  df-sub 11491  df-neg 11492  df-div 11918  df-nn 12264  df-2 12326  df-n0 12524  df-z 12611  df-uz 12876  df-q 12988  df-rp 13032  df-xneg 13151  df-xadd 13152  df-xmul 13153  df-ico 13389  df-icc 13390  df-rest 17468  df-topgen 17489  df-psmet 21373  df-xmet 21374  df-met 21375  df-bl 21376  df-mopn 21377  df-fbas 21378  df-fg 21379  df-top 22915  df-topon 22932  df-bases 22968  df-cld 23042  df-ntr 23043  df-cls 23044  df-nei 23121  df-haus 23338  df-fil 23869  df-flim 23962  df-cfil 25302  df-cmet 25304
This theorem is referenced by:  cmetss  25363  cmssmscld  25397
  Copyright terms: Public domain W3C validator