![]() |
Mathbox for Norm Megill |
< Previous
Next >
Nearby theorems |
|
Mirrors > Home > MPE Home > Th. List > Mathboxes > lcfrlem35 | Structured version Visualization version GIF version |
Description: Lemma for lcfr 39980. (Contributed by NM, 2-Mar-2015.) |
Ref | Expression |
---|---|
lcfrlem17.h | ⊢ 𝐻 = (LHyp‘𝐾) |
lcfrlem17.o | ⊢ ⊥ = ((ocH‘𝐾)‘𝑊) |
lcfrlem17.u | ⊢ 𝑈 = ((DVecH‘𝐾)‘𝑊) |
lcfrlem17.v | ⊢ 𝑉 = (Base‘𝑈) |
lcfrlem17.p | ⊢ + = (+g‘𝑈) |
lcfrlem17.z | ⊢ 0 = (0g‘𝑈) |
lcfrlem17.n | ⊢ 𝑁 = (LSpan‘𝑈) |
lcfrlem17.a | ⊢ 𝐴 = (LSAtoms‘𝑈) |
lcfrlem17.k | ⊢ (𝜑 → (𝐾 ∈ HL ∧ 𝑊 ∈ 𝐻)) |
lcfrlem17.x | ⊢ (𝜑 → 𝑋 ∈ (𝑉 ∖ { 0 })) |
lcfrlem17.y | ⊢ (𝜑 → 𝑌 ∈ (𝑉 ∖ { 0 })) |
lcfrlem17.ne | ⊢ (𝜑 → (𝑁‘{𝑋}) ≠ (𝑁‘{𝑌})) |
lcfrlem22.b | ⊢ 𝐵 = ((𝑁‘{𝑋, 𝑌}) ∩ ( ⊥ ‘{(𝑋 + 𝑌)})) |
lcfrlem24.t | ⊢ · = ( ·𝑠 ‘𝑈) |
lcfrlem24.s | ⊢ 𝑆 = (Scalar‘𝑈) |
lcfrlem24.q | ⊢ 𝑄 = (0g‘𝑆) |
lcfrlem24.r | ⊢ 𝑅 = (Base‘𝑆) |
lcfrlem24.j | ⊢ 𝐽 = (𝑥 ∈ (𝑉 ∖ { 0 }) ↦ (𝑣 ∈ 𝑉 ↦ (℩𝑘 ∈ 𝑅 ∃𝑤 ∈ ( ⊥ ‘{𝑥})𝑣 = (𝑤 + (𝑘 · 𝑥))))) |
lcfrlem24.ib | ⊢ (𝜑 → 𝐼 ∈ 𝐵) |
lcfrlem24.l | ⊢ 𝐿 = (LKer‘𝑈) |
lcfrlem25.d | ⊢ 𝐷 = (LDual‘𝑈) |
lcfrlem28.jn | ⊢ (𝜑 → ((𝐽‘𝑌)‘𝐼) ≠ 𝑄) |
lcfrlem29.i | ⊢ 𝐹 = (invr‘𝑆) |
lcfrlem30.m | ⊢ − = (-g‘𝐷) |
lcfrlem30.c | ⊢ 𝐶 = ((𝐽‘𝑋) − (((𝐹‘((𝐽‘𝑌)‘𝐼))(.r‘𝑆)((𝐽‘𝑋)‘𝐼))( ·𝑠 ‘𝐷)(𝐽‘𝑌))) |
Ref | Expression |
---|---|
lcfrlem35 | ⊢ (𝜑 → ( ⊥ ‘{(𝑋 + 𝑌)}) = (𝐿‘𝐶)) |
Step | Hyp | Ref | Expression |
---|---|---|---|
1 | lcfrlem17.h | . . . 4 ⊢ 𝐻 = (LHyp‘𝐾) | |
2 | lcfrlem17.o | . . . 4 ⊢ ⊥ = ((ocH‘𝐾)‘𝑊) | |
3 | lcfrlem17.u | . . . 4 ⊢ 𝑈 = ((DVecH‘𝐾)‘𝑊) | |
4 | lcfrlem17.v | . . . 4 ⊢ 𝑉 = (Base‘𝑈) | |
5 | lcfrlem17.p | . . . 4 ⊢ + = (+g‘𝑈) | |
6 | lcfrlem17.z | . . . 4 ⊢ 0 = (0g‘𝑈) | |
7 | lcfrlem17.n | . . . 4 ⊢ 𝑁 = (LSpan‘𝑈) | |
8 | lcfrlem17.a | . . . 4 ⊢ 𝐴 = (LSAtoms‘𝑈) | |
9 | lcfrlem17.k | . . . 4 ⊢ (𝜑 → (𝐾 ∈ HL ∧ 𝑊 ∈ 𝐻)) | |
10 | lcfrlem17.x | . . . 4 ⊢ (𝜑 → 𝑋 ∈ (𝑉 ∖ { 0 })) | |
11 | lcfrlem17.y | . . . 4 ⊢ (𝜑 → 𝑌 ∈ (𝑉 ∖ { 0 })) | |
12 | lcfrlem17.ne | . . . 4 ⊢ (𝜑 → (𝑁‘{𝑋}) ≠ (𝑁‘{𝑌})) | |
13 | lcfrlem22.b | . . . 4 ⊢ 𝐵 = ((𝑁‘{𝑋, 𝑌}) ∩ ( ⊥ ‘{(𝑋 + 𝑌)})) | |
14 | eqid 2738 | . . . 4 ⊢ (LSSum‘𝑈) = (LSSum‘𝑈) | |
15 | 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 | lcfrlem23 39960 | . . 3 ⊢ (𝜑 → (( ⊥ ‘{𝑋, 𝑌})(LSSum‘𝑈)𝐵) = ( ⊥ ‘{(𝑋 + 𝑌)})) |
16 | lcfrlem24.t | . . . . . 6 ⊢ · = ( ·𝑠 ‘𝑈) | |
17 | lcfrlem24.s | . . . . . 6 ⊢ 𝑆 = (Scalar‘𝑈) | |
18 | lcfrlem24.q | . . . . . 6 ⊢ 𝑄 = (0g‘𝑆) | |
19 | lcfrlem24.r | . . . . . 6 ⊢ 𝑅 = (Base‘𝑆) | |
20 | lcfrlem24.j | . . . . . 6 ⊢ 𝐽 = (𝑥 ∈ (𝑉 ∖ { 0 }) ↦ (𝑣 ∈ 𝑉 ↦ (℩𝑘 ∈ 𝑅 ∃𝑤 ∈ ( ⊥ ‘{𝑥})𝑣 = (𝑤 + (𝑘 · 𝑥))))) | |
21 | lcfrlem24.ib | . . . . . 6 ⊢ (𝜑 → 𝐼 ∈ 𝐵) | |
22 | lcfrlem24.l | . . . . . 6 ⊢ 𝐿 = (LKer‘𝑈) | |
23 | 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, 17, 18, 19, 20, 21, 22 | lcfrlem24 39961 | . . . . 5 ⊢ (𝜑 → ( ⊥ ‘{𝑋, 𝑌}) = ((𝐿‘(𝐽‘𝑋)) ∩ (𝐿‘(𝐽‘𝑌)))) |
24 | eqid 2738 | . . . . . 6 ⊢ (.r‘𝑆) = (.r‘𝑆) | |
25 | lcfrlem29.i | . . . . . 6 ⊢ 𝐹 = (invr‘𝑆) | |
26 | eqid 2738 | . . . . . 6 ⊢ (LFnl‘𝑈) = (LFnl‘𝑈) | |
27 | lcfrlem25.d | . . . . . 6 ⊢ 𝐷 = (LDual‘𝑈) | |
28 | eqid 2738 | . . . . . 6 ⊢ ( ·𝑠 ‘𝐷) = ( ·𝑠 ‘𝐷) | |
29 | lcfrlem30.m | . . . . . 6 ⊢ − = (-g‘𝐷) | |
30 | 1, 3, 9 | dvhlvec 39504 | . . . . . 6 ⊢ (𝜑 → 𝑈 ∈ LVec) |
31 | eqid 2738 | . . . . . . 7 ⊢ (0g‘𝐷) = (0g‘𝐷) | |
32 | eqid 2738 | . . . . . . 7 ⊢ {𝑓 ∈ (LFnl‘𝑈) ∣ ( ⊥ ‘( ⊥ ‘(𝐿‘𝑓))) = (𝐿‘𝑓)} = {𝑓 ∈ (LFnl‘𝑈) ∣ ( ⊥ ‘( ⊥ ‘(𝐿‘𝑓))) = (𝐿‘𝑓)} | |
33 | 1, 2, 3, 4, 5, 16, 17, 19, 6, 26, 22, 27, 31, 32, 20, 9, 10 | lcfrlem10 39947 | . . . . . 6 ⊢ (𝜑 → (𝐽‘𝑋) ∈ (LFnl‘𝑈)) |
34 | 1, 2, 3, 4, 5, 16, 17, 19, 6, 26, 22, 27, 31, 32, 20, 9, 11 | lcfrlem10 39947 | . . . . . 6 ⊢ (𝜑 → (𝐽‘𝑌) ∈ (LFnl‘𝑈)) |
35 | eqid 2738 | . . . . . . . 8 ⊢ (LSubSp‘𝑈) = (LSubSp‘𝑈) | |
36 | 1, 3, 9 | dvhlmod 39505 | . . . . . . . 8 ⊢ (𝜑 → 𝑈 ∈ LMod) |
37 | 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 | lcfrlem22 39959 | . . . . . . . 8 ⊢ (𝜑 → 𝐵 ∈ 𝐴) |
38 | 35, 8, 36, 37 | lsatlssel 37391 | . . . . . . 7 ⊢ (𝜑 → 𝐵 ∈ (LSubSp‘𝑈)) |
39 | 4, 35 | lssel 20351 | . . . . . . 7 ⊢ ((𝐵 ∈ (LSubSp‘𝑈) ∧ 𝐼 ∈ 𝐵) → 𝐼 ∈ 𝑉) |
40 | 38, 21, 39 | syl2anc 585 | . . . . . 6 ⊢ (𝜑 → 𝐼 ∈ 𝑉) |
41 | lcfrlem28.jn | . . . . . 6 ⊢ (𝜑 → ((𝐽‘𝑌)‘𝐼) ≠ 𝑄) | |
42 | lcfrlem30.c | . . . . . 6 ⊢ 𝐶 = ((𝐽‘𝑋) − (((𝐹‘((𝐽‘𝑌)‘𝐼))(.r‘𝑆)((𝐽‘𝑋)‘𝐼))( ·𝑠 ‘𝐷)(𝐽‘𝑌))) | |
43 | 4, 17, 24, 18, 25, 26, 27, 28, 29, 30, 33, 34, 40, 41, 42, 22 | lcfrlem2 39938 | . . . . 5 ⊢ (𝜑 → ((𝐿‘(𝐽‘𝑋)) ∩ (𝐿‘(𝐽‘𝑌))) ⊆ (𝐿‘𝐶)) |
44 | 23, 43 | eqsstrd 3981 | . . . 4 ⊢ (𝜑 → ( ⊥ ‘{𝑋, 𝑌}) ⊆ (𝐿‘𝐶)) |
45 | 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, 17, 18, 19, 20, 21, 22, 27, 41 | lcfrlem28 39965 | . . . . . 6 ⊢ (𝜑 → 𝐼 ≠ 0 ) |
46 | 6, 7, 8, 30, 37, 21, 45 | lsatel 37399 | . . . . 5 ⊢ (𝜑 → 𝐵 = (𝑁‘{𝐼})) |
47 | 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, 17, 18, 19, 20, 21, 22, 27, 41, 25, 29, 42 | lcfrlem30 39967 | . . . . . . 7 ⊢ (𝜑 → 𝐶 ∈ (LFnl‘𝑈)) |
48 | 26, 22, 35 | lkrlss 37489 | . . . . . . 7 ⊢ ((𝑈 ∈ LMod ∧ 𝐶 ∈ (LFnl‘𝑈)) → (𝐿‘𝐶) ∈ (LSubSp‘𝑈)) |
49 | 36, 47, 48 | syl2anc 585 | . . . . . 6 ⊢ (𝜑 → (𝐿‘𝐶) ∈ (LSubSp‘𝑈)) |
50 | 4, 17, 24, 18, 25, 26, 27, 28, 29, 30, 33, 34, 40, 41, 42, 22 | lcfrlem3 39939 | . . . . . 6 ⊢ (𝜑 → 𝐼 ∈ (𝐿‘𝐶)) |
51 | 35, 7, 36, 49, 50 | lspsnel5a 20410 | . . . . 5 ⊢ (𝜑 → (𝑁‘{𝐼}) ⊆ (𝐿‘𝐶)) |
52 | 46, 51 | eqsstrd 3981 | . . . 4 ⊢ (𝜑 → 𝐵 ⊆ (𝐿‘𝐶)) |
53 | 35 | lsssssubg 20372 | . . . . . . 7 ⊢ (𝑈 ∈ LMod → (LSubSp‘𝑈) ⊆ (SubGrp‘𝑈)) |
54 | 36, 53 | syl 17 | . . . . . 6 ⊢ (𝜑 → (LSubSp‘𝑈) ⊆ (SubGrp‘𝑈)) |
55 | 10 | eldifad 3921 | . . . . . . . 8 ⊢ (𝜑 → 𝑋 ∈ 𝑉) |
56 | 11 | eldifad 3921 | . . . . . . . 8 ⊢ (𝜑 → 𝑌 ∈ 𝑉) |
57 | prssi 4780 | . . . . . . . 8 ⊢ ((𝑋 ∈ 𝑉 ∧ 𝑌 ∈ 𝑉) → {𝑋, 𝑌} ⊆ 𝑉) | |
58 | 55, 56, 57 | syl2anc 585 | . . . . . . 7 ⊢ (𝜑 → {𝑋, 𝑌} ⊆ 𝑉) |
59 | 1, 3, 4, 35, 2 | dochlss 39749 | . . . . . . 7 ⊢ (((𝐾 ∈ HL ∧ 𝑊 ∈ 𝐻) ∧ {𝑋, 𝑌} ⊆ 𝑉) → ( ⊥ ‘{𝑋, 𝑌}) ∈ (LSubSp‘𝑈)) |
60 | 9, 58, 59 | syl2anc 585 | . . . . . 6 ⊢ (𝜑 → ( ⊥ ‘{𝑋, 𝑌}) ∈ (LSubSp‘𝑈)) |
61 | 54, 60 | sseldd 3944 | . . . . 5 ⊢ (𝜑 → ( ⊥ ‘{𝑋, 𝑌}) ∈ (SubGrp‘𝑈)) |
62 | 54, 38 | sseldd 3944 | . . . . 5 ⊢ (𝜑 → 𝐵 ∈ (SubGrp‘𝑈)) |
63 | 54, 49 | sseldd 3944 | . . . . 5 ⊢ (𝜑 → (𝐿‘𝐶) ∈ (SubGrp‘𝑈)) |
64 | 14 | lsmlub 19405 | . . . . 5 ⊢ ((( ⊥ ‘{𝑋, 𝑌}) ∈ (SubGrp‘𝑈) ∧ 𝐵 ∈ (SubGrp‘𝑈) ∧ (𝐿‘𝐶) ∈ (SubGrp‘𝑈)) → ((( ⊥ ‘{𝑋, 𝑌}) ⊆ (𝐿‘𝐶) ∧ 𝐵 ⊆ (𝐿‘𝐶)) ↔ (( ⊥ ‘{𝑋, 𝑌})(LSSum‘𝑈)𝐵) ⊆ (𝐿‘𝐶))) |
65 | 61, 62, 63, 64 | syl3anc 1372 | . . . 4 ⊢ (𝜑 → ((( ⊥ ‘{𝑋, 𝑌}) ⊆ (𝐿‘𝐶) ∧ 𝐵 ⊆ (𝐿‘𝐶)) ↔ (( ⊥ ‘{𝑋, 𝑌})(LSSum‘𝑈)𝐵) ⊆ (𝐿‘𝐶))) |
66 | 44, 52, 65 | mpbi2and 711 | . . 3 ⊢ (𝜑 → (( ⊥ ‘{𝑋, 𝑌})(LSSum‘𝑈)𝐵) ⊆ (𝐿‘𝐶)) |
67 | 15, 66 | eqsstrrd 3982 | . 2 ⊢ (𝜑 → ( ⊥ ‘{(𝑋 + 𝑌)}) ⊆ (𝐿‘𝐶)) |
68 | eqid 2738 | . . 3 ⊢ (LSHyp‘𝑈) = (LSHyp‘𝑈) | |
69 | 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 | lcfrlem17 39954 | . . . 4 ⊢ (𝜑 → (𝑋 + 𝑌) ∈ (𝑉 ∖ { 0 })) |
70 | 1, 2, 3, 4, 6, 68, 9, 69 | dochsnshp 39848 | . . 3 ⊢ (𝜑 → ( ⊥ ‘{(𝑋 + 𝑌)}) ∈ (LSHyp‘𝑈)) |
71 | 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, 17, 18, 19, 20, 21, 22, 27, 41, 25, 29, 42 | lcfrlem34 39971 | . . . 4 ⊢ (𝜑 → 𝐶 ≠ (0g‘𝐷)) |
72 | 68, 26, 22, 27, 31, 30, 47 | lduallkr3 37556 | . . . 4 ⊢ (𝜑 → ((𝐿‘𝐶) ∈ (LSHyp‘𝑈) ↔ 𝐶 ≠ (0g‘𝐷))) |
73 | 71, 72 | mpbird 257 | . . 3 ⊢ (𝜑 → (𝐿‘𝐶) ∈ (LSHyp‘𝑈)) |
74 | 68, 30, 70, 73 | lshpcmp 37382 | . 2 ⊢ (𝜑 → (( ⊥ ‘{(𝑋 + 𝑌)}) ⊆ (𝐿‘𝐶) ↔ ( ⊥ ‘{(𝑋 + 𝑌)}) = (𝐿‘𝐶))) |
75 | 67, 74 | mpbid 231 | 1 ⊢ (𝜑 → ( ⊥ ‘{(𝑋 + 𝑌)}) = (𝐿‘𝐶)) |
Colors of variables: wff setvar class |
Syntax hints: → wi 4 ↔ wb 205 ∧ wa 397 = wceq 1542 ∈ wcel 2107 ≠ wne 2942 ∃wrex 3072 {crab 3406 ∖ cdif 3906 ∩ cin 3908 ⊆ wss 3909 {csn 4585 {cpr 4587 ↦ cmpt 5187 ‘cfv 6494 ℩crio 7307 (class class class)co 7352 Basecbs 17043 +gcplusg 17093 .rcmulr 17094 Scalarcsca 17096 ·𝑠 cvsca 17097 0gc0g 17281 -gcsg 18710 SubGrpcsubg 18881 LSSumclsm 19375 invrcinvr 20053 LModclmod 20275 LSubSpclss 20345 LSpanclspn 20385 LSAtomsclsa 37368 LSHypclsh 37369 LFnlclfn 37451 LKerclk 37479 LDualcld 37517 HLchlt 37744 LHypclh 38379 DVecHcdvh 39473 ocHcoch 39742 |
This theorem was proved from axioms: ax-mp 5 ax-1 6 ax-2 7 ax-3 8 ax-gen 1798 ax-4 1812 ax-5 1914 ax-6 1972 ax-7 2012 ax-8 2109 ax-9 2117 ax-10 2138 ax-11 2155 ax-12 2172 ax-ext 2709 ax-rep 5241 ax-sep 5255 ax-nul 5262 ax-pow 5319 ax-pr 5383 ax-un 7665 ax-cnex 11066 ax-resscn 11067 ax-1cn 11068 ax-icn 11069 ax-addcl 11070 ax-addrcl 11071 ax-mulcl 11072 ax-mulrcl 11073 ax-mulcom 11074 ax-addass 11075 ax-mulass 11076 ax-distr 11077 ax-i2m1 11078 ax-1ne0 11079 ax-1rid 11080 ax-rnegex 11081 ax-rrecex 11082 ax-cnre 11083 ax-pre-lttri 11084 ax-pre-lttrn 11085 ax-pre-ltadd 11086 ax-pre-mulgt0 11087 ax-riotaBAD 37347 |
This theorem depends on definitions: df-bi 206 df-an 398 df-or 847 df-3or 1089 df-3an 1090 df-tru 1545 df-fal 1555 df-ex 1783 df-nf 1787 df-sb 2069 df-mo 2540 df-eu 2569 df-clab 2716 df-cleq 2730 df-clel 2816 df-nfc 2888 df-ne 2943 df-nel 3049 df-ral 3064 df-rex 3073 df-rmo 3352 df-reu 3353 df-rab 3407 df-v 3446 df-sbc 3739 df-csb 3855 df-dif 3912 df-un 3914 df-in 3916 df-ss 3926 df-pss 3928 df-nul 4282 df-if 4486 df-pw 4561 df-sn 4586 df-pr 4588 df-tp 4590 df-op 4592 df-uni 4865 df-int 4907 df-iun 4955 df-iin 4956 df-br 5105 df-opab 5167 df-mpt 5188 df-tr 5222 df-id 5530 df-eprel 5536 df-po 5544 df-so 5545 df-fr 5587 df-we 5589 df-xp 5638 df-rel 5639 df-cnv 5640 df-co 5641 df-dm 5642 df-rn 5643 df-res 5644 df-ima 5645 df-pred 6252 df-ord 6319 df-on 6320 df-lim 6321 df-suc 6322 df-iota 6446 df-fun 6496 df-fn 6497 df-f 6498 df-f1 6499 df-fo 6500 df-f1o 6501 df-fv 6502 df-riota 7308 df-ov 7355 df-oprab 7356 df-mpo 7357 df-of 7610 df-om 7796 df-1st 7914 df-2nd 7915 df-tpos 8150 df-undef 8197 df-frecs 8205 df-wrecs 8236 df-recs 8310 df-rdg 8349 df-1o 8405 df-er 8607 df-map 8726 df-en 8843 df-dom 8844 df-sdom 8845 df-fin 8846 df-pnf 11150 df-mnf 11151 df-xr 11152 df-ltxr 11153 df-le 11154 df-sub 11346 df-neg 11347 df-nn 12113 df-2 12175 df-3 12176 df-4 12177 df-5 12178 df-6 12179 df-n0 12373 df-z 12459 df-uz 12723 df-fz 13380 df-struct 16979 df-sets 16996 df-slot 17014 df-ndx 17026 df-base 17044 df-ress 17073 df-plusg 17106 df-mulr 17107 df-sca 17109 df-vsca 17110 df-0g 17283 df-mre 17426 df-mrc 17427 df-acs 17429 df-proset 18144 df-poset 18162 df-plt 18179 df-lub 18195 df-glb 18196 df-join 18197 df-meet 18198 df-p0 18274 df-p1 18275 df-lat 18281 df-clat 18348 df-mgm 18457 df-sgrp 18506 df-mnd 18517 df-submnd 18562 df-grp 18711 df-minusg 18712 df-sbg 18713 df-subg 18884 df-cntz 19056 df-oppg 19083 df-lsm 19377 df-cmn 19523 df-abl 19524 df-mgp 19856 df-ur 19873 df-ring 19920 df-oppr 20002 df-dvdsr 20023 df-unit 20024 df-invr 20054 df-dvr 20065 df-drng 20140 df-lmod 20277 df-lss 20346 df-lsp 20386 df-lvec 20517 df-lsatoms 37370 df-lshyp 37371 df-lcv 37413 df-lfl 37452 df-lkr 37480 df-ldual 37518 df-oposet 37570 df-ol 37572 df-oml 37573 df-covers 37660 df-ats 37661 df-atl 37692 df-cvlat 37716 df-hlat 37745 df-llines 37893 df-lplanes 37894 df-lvols 37895 df-lines 37896 df-psubsp 37898 df-pmap 37899 df-padd 38191 df-lhyp 38383 df-laut 38384 df-ldil 38499 df-ltrn 38500 df-trl 38554 df-tgrp 39138 df-tendo 39150 df-edring 39152 df-dveca 39398 df-disoa 39424 df-dvech 39474 df-dib 39534 df-dic 39568 df-dih 39624 df-doch 39743 df-djh 39790 |
This theorem is referenced by: lcfrlem36 39973 |
Copyright terms: Public domain | W3C validator |