![]() |
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 37191. (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 2651 | . . . 4 ⊢ (LSSum‘𝑈) = (LSSum‘𝑈) | |
15 | 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 | lcfrlem23 37171 | . . 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 37172 | . . . . 5 ⊢ (𝜑 → ( ⊥ ‘{𝑋, 𝑌}) = ((𝐿‘(𝐽‘𝑋)) ∩ (𝐿‘(𝐽‘𝑌)))) |
24 | eqid 2651 | . . . . . 6 ⊢ (.r‘𝑆) = (.r‘𝑆) | |
25 | lcfrlem29.i | . . . . . 6 ⊢ 𝐹 = (invr‘𝑆) | |
26 | eqid 2651 | . . . . . 6 ⊢ (LFnl‘𝑈) = (LFnl‘𝑈) | |
27 | lcfrlem25.d | . . . . . 6 ⊢ 𝐷 = (LDual‘𝑈) | |
28 | eqid 2651 | . . . . . 6 ⊢ ( ·𝑠 ‘𝐷) = ( ·𝑠 ‘𝐷) | |
29 | lcfrlem30.m | . . . . . 6 ⊢ − = (-g‘𝐷) | |
30 | 1, 3, 9 | dvhlvec 36715 | . . . . . 6 ⊢ (𝜑 → 𝑈 ∈ LVec) |
31 | eqid 2651 | . . . . . . 7 ⊢ (0g‘𝐷) = (0g‘𝐷) | |
32 | eqid 2651 | . . . . . . 7 ⊢ {𝑓 ∈ (LFnl‘𝑈) ∣ ( ⊥ ‘( ⊥ ‘(𝐿‘𝑓))) = (𝐿‘𝑓)} = {𝑓 ∈ (LFnl‘𝑈) ∣ ( ⊥ ‘( ⊥ ‘(𝐿‘𝑓))) = (𝐿‘𝑓)} | |
33 | 1, 2, 3, 4, 5, 16, 17, 19, 6, 26, 22, 27, 31, 32, 20, 9, 10 | lcfrlem10 37158 | . . . . . 6 ⊢ (𝜑 → (𝐽‘𝑋) ∈ (LFnl‘𝑈)) |
34 | 1, 2, 3, 4, 5, 16, 17, 19, 6, 26, 22, 27, 31, 32, 20, 9, 11 | lcfrlem10 37158 | . . . . . 6 ⊢ (𝜑 → (𝐽‘𝑌) ∈ (LFnl‘𝑈)) |
35 | eqid 2651 | . . . . . . . 8 ⊢ (LSubSp‘𝑈) = (LSubSp‘𝑈) | |
36 | 1, 3, 9 | dvhlmod 36716 | . . . . . . . 8 ⊢ (𝜑 → 𝑈 ∈ LMod) |
37 | 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 | lcfrlem22 37170 | . . . . . . . 8 ⊢ (𝜑 → 𝐵 ∈ 𝐴) |
38 | 35, 8, 36, 37 | lsatlssel 34602 | . . . . . . 7 ⊢ (𝜑 → 𝐵 ∈ (LSubSp‘𝑈)) |
39 | 4, 35 | lssel 18986 | . . . . . . 7 ⊢ ((𝐵 ∈ (LSubSp‘𝑈) ∧ 𝐼 ∈ 𝐵) → 𝐼 ∈ 𝑉) |
40 | 38, 21, 39 | syl2anc 694 | . . . . . 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 37149 | . . . . 5 ⊢ (𝜑 → ((𝐿‘(𝐽‘𝑋)) ∩ (𝐿‘(𝐽‘𝑌))) ⊆ (𝐿‘𝐶)) |
44 | 23, 43 | eqsstrd 3672 | . . . 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 37176 | . . . . . 6 ⊢ (𝜑 → 𝐼 ≠ 0 ) |
46 | 6, 7, 8, 30, 37, 21, 45 | lsatel 34610 | . . . . 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 37178 | . . . . . . 7 ⊢ (𝜑 → 𝐶 ∈ (LFnl‘𝑈)) |
48 | 26, 22, 35 | lkrlss 34700 | . . . . . . 7 ⊢ ((𝑈 ∈ LMod ∧ 𝐶 ∈ (LFnl‘𝑈)) → (𝐿‘𝐶) ∈ (LSubSp‘𝑈)) |
49 | 36, 47, 48 | syl2anc 694 | . . . . . 6 ⊢ (𝜑 → (𝐿‘𝐶) ∈ (LSubSp‘𝑈)) |
50 | 4, 17, 24, 18, 25, 26, 27, 28, 29, 30, 33, 34, 40, 41, 42, 22 | lcfrlem3 37150 | . . . . . 6 ⊢ (𝜑 → 𝐼 ∈ (𝐿‘𝐶)) |
51 | 35, 7, 36, 49, 50 | lspsnel5a 19044 | . . . . 5 ⊢ (𝜑 → (𝑁‘{𝐼}) ⊆ (𝐿‘𝐶)) |
52 | 46, 51 | eqsstrd 3672 | . . . 4 ⊢ (𝜑 → 𝐵 ⊆ (𝐿‘𝐶)) |
53 | 35 | lsssssubg 19006 | . . . . . . 7 ⊢ (𝑈 ∈ LMod → (LSubSp‘𝑈) ⊆ (SubGrp‘𝑈)) |
54 | 36, 53 | syl 17 | . . . . . 6 ⊢ (𝜑 → (LSubSp‘𝑈) ⊆ (SubGrp‘𝑈)) |
55 | 10 | eldifad 3619 | . . . . . . . 8 ⊢ (𝜑 → 𝑋 ∈ 𝑉) |
56 | 11 | eldifad 3619 | . . . . . . . 8 ⊢ (𝜑 → 𝑌 ∈ 𝑉) |
57 | prssi 4385 | . . . . . . . 8 ⊢ ((𝑋 ∈ 𝑉 ∧ 𝑌 ∈ 𝑉) → {𝑋, 𝑌} ⊆ 𝑉) | |
58 | 55, 56, 57 | syl2anc 694 | . . . . . . 7 ⊢ (𝜑 → {𝑋, 𝑌} ⊆ 𝑉) |
59 | 1, 3, 4, 35, 2 | dochlss 36960 | . . . . . . 7 ⊢ (((𝐾 ∈ HL ∧ 𝑊 ∈ 𝐻) ∧ {𝑋, 𝑌} ⊆ 𝑉) → ( ⊥ ‘{𝑋, 𝑌}) ∈ (LSubSp‘𝑈)) |
60 | 9, 58, 59 | syl2anc 694 | . . . . . 6 ⊢ (𝜑 → ( ⊥ ‘{𝑋, 𝑌}) ∈ (LSubSp‘𝑈)) |
61 | 54, 60 | sseldd 3637 | . . . . 5 ⊢ (𝜑 → ( ⊥ ‘{𝑋, 𝑌}) ∈ (SubGrp‘𝑈)) |
62 | 54, 38 | sseldd 3637 | . . . . 5 ⊢ (𝜑 → 𝐵 ∈ (SubGrp‘𝑈)) |
63 | 54, 49 | sseldd 3637 | . . . . 5 ⊢ (𝜑 → (𝐿‘𝐶) ∈ (SubGrp‘𝑈)) |
64 | 14 | lsmlub 18124 | . . . . 5 ⊢ ((( ⊥ ‘{𝑋, 𝑌}) ∈ (SubGrp‘𝑈) ∧ 𝐵 ∈ (SubGrp‘𝑈) ∧ (𝐿‘𝐶) ∈ (SubGrp‘𝑈)) → ((( ⊥ ‘{𝑋, 𝑌}) ⊆ (𝐿‘𝐶) ∧ 𝐵 ⊆ (𝐿‘𝐶)) ↔ (( ⊥ ‘{𝑋, 𝑌})(LSSum‘𝑈)𝐵) ⊆ (𝐿‘𝐶))) |
65 | 61, 62, 63, 64 | syl3anc 1366 | . . . 4 ⊢ (𝜑 → ((( ⊥ ‘{𝑋, 𝑌}) ⊆ (𝐿‘𝐶) ∧ 𝐵 ⊆ (𝐿‘𝐶)) ↔ (( ⊥ ‘{𝑋, 𝑌})(LSSum‘𝑈)𝐵) ⊆ (𝐿‘𝐶))) |
66 | 44, 52, 65 | mpbi2and 976 | . . 3 ⊢ (𝜑 → (( ⊥ ‘{𝑋, 𝑌})(LSSum‘𝑈)𝐵) ⊆ (𝐿‘𝐶)) |
67 | 15, 66 | eqsstr3d 3673 | . 2 ⊢ (𝜑 → ( ⊥ ‘{(𝑋 + 𝑌)}) ⊆ (𝐿‘𝐶)) |
68 | eqid 2651 | . . 3 ⊢ (LSHyp‘𝑈) = (LSHyp‘𝑈) | |
69 | 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 | lcfrlem17 37165 | . . . 4 ⊢ (𝜑 → (𝑋 + 𝑌) ∈ (𝑉 ∖ { 0 })) |
70 | 1, 2, 3, 4, 6, 68, 9, 69 | dochsnshp 37059 | . . 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 37182 | . . . 4 ⊢ (𝜑 → 𝐶 ≠ (0g‘𝐷)) |
72 | 68, 26, 22, 27, 31, 30, 47 | lduallkr3 34767 | . . . 4 ⊢ (𝜑 → ((𝐿‘𝐶) ∈ (LSHyp‘𝑈) ↔ 𝐶 ≠ (0g‘𝐷))) |
73 | 71, 72 | mpbird 247 | . . 3 ⊢ (𝜑 → (𝐿‘𝐶) ∈ (LSHyp‘𝑈)) |
74 | 68, 30, 70, 73 | lshpcmp 34593 | . 2 ⊢ (𝜑 → (( ⊥ ‘{(𝑋 + 𝑌)}) ⊆ (𝐿‘𝐶) ↔ ( ⊥ ‘{(𝑋 + 𝑌)}) = (𝐿‘𝐶))) |
75 | 67, 74 | mpbid 222 | 1 ⊢ (𝜑 → ( ⊥ ‘{(𝑋 + 𝑌)}) = (𝐿‘𝐶)) |
Colors of variables: wff setvar class |
Syntax hints: → wi 4 ↔ wb 196 ∧ wa 383 = wceq 1523 ∈ wcel 2030 ≠ wne 2823 ∃wrex 2942 {crab 2945 ∖ cdif 3604 ∩ cin 3606 ⊆ wss 3607 {csn 4210 {cpr 4212 ↦ cmpt 4762 ‘cfv 5926 ℩crio 6650 (class class class)co 6690 Basecbs 15904 +gcplusg 15988 .rcmulr 15989 Scalarcsca 15991 ·𝑠 cvsca 15992 0gc0g 16147 -gcsg 17471 SubGrpcsubg 17635 LSSumclsm 18095 invrcinvr 18717 LModclmod 18911 LSubSpclss 18980 LSpanclspn 19019 LSAtomsclsa 34579 LSHypclsh 34580 LFnlclfn 34662 LKerclk 34690 LDualcld 34728 HLchlt 34955 LHypclh 35588 DVecHcdvh 36684 ocHcoch 36953 |
This theorem was proved from axioms: ax-mp 5 ax-1 6 ax-2 7 ax-3 8 ax-gen 1762 ax-4 1777 ax-5 1879 ax-6 1945 ax-7 1981 ax-8 2032 ax-9 2039 ax-10 2059 ax-11 2074 ax-12 2087 ax-13 2282 ax-ext 2631 ax-rep 4804 ax-sep 4814 ax-nul 4822 ax-pow 4873 ax-pr 4936 ax-un 6991 ax-cnex 10030 ax-resscn 10031 ax-1cn 10032 ax-icn 10033 ax-addcl 10034 ax-addrcl 10035 ax-mulcl 10036 ax-mulrcl 10037 ax-mulcom 10038 ax-addass 10039 ax-mulass 10040 ax-distr 10041 ax-i2m1 10042 ax-1ne0 10043 ax-1rid 10044 ax-rnegex 10045 ax-rrecex 10046 ax-cnre 10047 ax-pre-lttri 10048 ax-pre-lttrn 10049 ax-pre-ltadd 10050 ax-pre-mulgt0 10051 ax-riotaBAD 34557 |
This theorem depends on definitions: df-bi 197 df-or 384 df-an 385 df-3or 1055 df-3an 1056 df-tru 1526 df-fal 1529 df-ex 1745 df-nf 1750 df-sb 1938 df-eu 2502 df-mo 2503 df-clab 2638 df-cleq 2644 df-clel 2647 df-nfc 2782 df-ne 2824 df-nel 2927 df-ral 2946 df-rex 2947 df-reu 2948 df-rmo 2949 df-rab 2950 df-v 3233 df-sbc 3469 df-csb 3567 df-dif 3610 df-un 3612 df-in 3614 df-ss 3621 df-pss 3623 df-nul 3949 df-if 4120 df-pw 4193 df-sn 4211 df-pr 4213 df-tp 4215 df-op 4217 df-uni 4469 df-int 4508 df-iun 4554 df-iin 4555 df-br 4686 df-opab 4746 df-mpt 4763 df-tr 4786 df-id 5053 df-eprel 5058 df-po 5064 df-so 5065 df-fr 5102 df-we 5104 df-xp 5149 df-rel 5150 df-cnv 5151 df-co 5152 df-dm 5153 df-rn 5154 df-res 5155 df-ima 5156 df-pred 5718 df-ord 5764 df-on 5765 df-lim 5766 df-suc 5767 df-iota 5889 df-fun 5928 df-fn 5929 df-f 5930 df-f1 5931 df-fo 5932 df-f1o 5933 df-fv 5934 df-riota 6651 df-ov 6693 df-oprab 6694 df-mpt2 6695 df-of 6939 df-om 7108 df-1st 7210 df-2nd 7211 df-tpos 7397 df-undef 7444 df-wrecs 7452 df-recs 7513 df-rdg 7551 df-1o 7605 df-oadd 7609 df-er 7787 df-map 7901 df-en 7998 df-dom 7999 df-sdom 8000 df-fin 8001 df-pnf 10114 df-mnf 10115 df-xr 10116 df-ltxr 10117 df-le 10118 df-sub 10306 df-neg 10307 df-nn 11059 df-2 11117 df-3 11118 df-4 11119 df-5 11120 df-6 11121 df-n0 11331 df-z 11416 df-uz 11726 df-fz 12365 df-struct 15906 df-ndx 15907 df-slot 15908 df-base 15910 df-sets 15911 df-ress 15912 df-plusg 16001 df-mulr 16002 df-sca 16004 df-vsca 16005 df-0g 16149 df-mre 16293 df-mrc 16294 df-acs 16296 df-preset 16975 df-poset 16993 df-plt 17005 df-lub 17021 df-glb 17022 df-join 17023 df-meet 17024 df-p0 17086 df-p1 17087 df-lat 17093 df-clat 17155 df-mgm 17289 df-sgrp 17331 df-mnd 17342 df-submnd 17383 df-grp 17472 df-minusg 17473 df-sbg 17474 df-subg 17638 df-cntz 17796 df-oppg 17822 df-lsm 18097 df-cmn 18241 df-abl 18242 df-mgp 18536 df-ur 18548 df-ring 18595 df-oppr 18669 df-dvdsr 18687 df-unit 18688 df-invr 18718 df-dvr 18729 df-drng 18797 df-lmod 18913 df-lss 18981 df-lsp 19020 df-lvec 19151 df-lsatoms 34581 df-lshyp 34582 df-lcv 34624 df-lfl 34663 df-lkr 34691 df-ldual 34729 df-oposet 34781 df-ol 34783 df-oml 34784 df-covers 34871 df-ats 34872 df-atl 34903 df-cvlat 34927 df-hlat 34956 df-llines 35102 df-lplanes 35103 df-lvols 35104 df-lines 35105 df-psubsp 35107 df-pmap 35108 df-padd 35400 df-lhyp 35592 df-laut 35593 df-ldil 35708 df-ltrn 35709 df-trl 35764 df-tgrp 36348 df-tendo 36360 df-edring 36362 df-dveca 36608 df-disoa 36635 df-dvech 36685 df-dib 36745 df-dic 36779 df-dih 36835 df-doch 36954 df-djh 37001 |
This theorem is referenced by: lcfrlem36 37184 |
Copyright terms: Public domain | W3C validator |