Users' Mathboxes Mathbox for Norm Megill < Previous   Next >
Nearby theorems
Mirrors  >  Home  >  MPE Home  >  Th. List  >   Mathboxes  >  hdmapinvlem4 Structured version   Visualization version   GIF version

Theorem hdmapinvlem4 39051
Description: Part 1.1 of Proposition 1 of [Baer] p. 110. We use 𝐶, 𝐷, 𝐼, and 𝐽 for Baer's u, v, s, and t. Our unit vector 𝐸 has the required properties for his w by hdmapevec2 38966. Our ((𝑆𝐷)‘𝐶) means his f(u,v) (note argument reversal). (Contributed by NM, 12-Jun-2015.)
Hypotheses
Ref Expression
hdmapinvlem3.h 𝐻 = (LHyp‘𝐾)
hdmapinvlem3.e 𝐸 = ⟨( I ↾ (Base‘𝐾)), ( I ↾ ((LTrn‘𝐾)‘𝑊))⟩
hdmapinvlem3.o 𝑂 = ((ocH‘𝐾)‘𝑊)
hdmapinvlem3.u 𝑈 = ((DVecH‘𝐾)‘𝑊)
hdmapinvlem3.v 𝑉 = (Base‘𝑈)
hdmapinvlem3.p + = (+g𝑈)
hdmapinvlem3.m = (-g𝑈)
hdmapinvlem3.q · = ( ·𝑠𝑈)
hdmapinvlem3.r 𝑅 = (Scalar‘𝑈)
hdmapinvlem3.b 𝐵 = (Base‘𝑅)
hdmapinvlem3.t × = (.r𝑅)
hdmapinvlem3.z 0 = (0g𝑅)
hdmapinvlem3.s 𝑆 = ((HDMap‘𝐾)‘𝑊)
hdmapinvlem3.g 𝐺 = ((HGMap‘𝐾)‘𝑊)
hdmapinvlem3.k (𝜑 → (𝐾 ∈ HL ∧ 𝑊𝐻))
hdmapinvlem3.c (𝜑𝐶 ∈ (𝑂‘{𝐸}))
hdmapinvlem3.d (𝜑𝐷 ∈ (𝑂‘{𝐸}))
hdmapinvlem3.i (𝜑𝐼𝐵)
hdmapinvlem3.j (𝜑𝐽𝐵)
hdmapinvlem3.ij (𝜑 → (𝐼 × (𝐺𝐽)) = ((𝑆𝐷)‘𝐶))
Assertion
Ref Expression
hdmapinvlem4 (𝜑 → (𝐽 × (𝐺𝐼)) = ((𝑆𝐶)‘𝐷))

Proof of Theorem hdmapinvlem4
StepHypRef Expression
1 hdmapinvlem3.h . . . 4 𝐻 = (LHyp‘𝐾)
2 hdmapinvlem3.u . . . 4 𝑈 = ((DVecH‘𝐾)‘𝑊)
3 hdmapinvlem3.v . . . 4 𝑉 = (Base‘𝑈)
4 hdmapinvlem3.m . . . 4 = (-g𝑈)
5 hdmapinvlem3.r . . . 4 𝑅 = (Scalar‘𝑈)
6 eqid 2821 . . . 4 (-g𝑅) = (-g𝑅)
7 hdmapinvlem3.s . . . 4 𝑆 = ((HDMap‘𝐾)‘𝑊)
8 hdmapinvlem3.k . . . 4 (𝜑 → (𝐾 ∈ HL ∧ 𝑊𝐻))
91, 2, 8dvhlmod 38240 . . . . 5 (𝜑𝑈 ∈ LMod)
10 hdmapinvlem3.j . . . . 5 (𝜑𝐽𝐵)
11 eqid 2821 . . . . . . 7 (Base‘𝐾) = (Base‘𝐾)
12 eqid 2821 . . . . . . 7 ((LTrn‘𝐾)‘𝑊) = ((LTrn‘𝐾)‘𝑊)
13 eqid 2821 . . . . . . 7 (0g𝑈) = (0g𝑈)
14 hdmapinvlem3.e . . . . . . 7 𝐸 = ⟨( I ↾ (Base‘𝐾)), ( I ↾ ((LTrn‘𝐾)‘𝑊))⟩
151, 11, 12, 2, 3, 13, 14, 8dvheveccl 38242 . . . . . 6 (𝜑𝐸 ∈ (𝑉 ∖ {(0g𝑈)}))
1615eldifad 3947 . . . . 5 (𝜑𝐸𝑉)
17 hdmapinvlem3.q . . . . . 6 · = ( ·𝑠𝑈)
18 hdmapinvlem3.b . . . . . 6 𝐵 = (Base‘𝑅)
193, 5, 17, 18lmodvscl 19645 . . . . 5 ((𝑈 ∈ LMod ∧ 𝐽𝐵𝐸𝑉) → (𝐽 · 𝐸) ∈ 𝑉)
209, 10, 16, 19syl3anc 1367 . . . 4 (𝜑 → (𝐽 · 𝐸) ∈ 𝑉)
2116snssd 4735 . . . . . 6 (𝜑 → {𝐸} ⊆ 𝑉)
22 hdmapinvlem3.o . . . . . . 7 𝑂 = ((ocH‘𝐾)‘𝑊)
231, 2, 3, 22dochssv 38485 . . . . . 6 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ {𝐸} ⊆ 𝑉) → (𝑂‘{𝐸}) ⊆ 𝑉)
248, 21, 23syl2anc 586 . . . . 5 (𝜑 → (𝑂‘{𝐸}) ⊆ 𝑉)
25 hdmapinvlem3.d . . . . 5 (𝜑𝐷 ∈ (𝑂‘{𝐸}))
2624, 25sseldd 3967 . . . 4 (𝜑𝐷𝑉)
27 hdmapinvlem3.i . . . . . 6 (𝜑𝐼𝐵)
283, 5, 17, 18lmodvscl 19645 . . . . . 6 ((𝑈 ∈ LMod ∧ 𝐼𝐵𝐸𝑉) → (𝐼 · 𝐸) ∈ 𝑉)
299, 27, 16, 28syl3anc 1367 . . . . 5 (𝜑 → (𝐼 · 𝐸) ∈ 𝑉)
30 hdmapinvlem3.c . . . . . 6 (𝜑𝐶 ∈ (𝑂‘{𝐸}))
3124, 30sseldd 3967 . . . . 5 (𝜑𝐶𝑉)
32 hdmapinvlem3.p . . . . . 6 + = (+g𝑈)
333, 32lmodvacl 19642 . . . . 5 ((𝑈 ∈ LMod ∧ (𝐼 · 𝐸) ∈ 𝑉𝐶𝑉) → ((𝐼 · 𝐸) + 𝐶) ∈ 𝑉)
349, 29, 31, 33syl3anc 1367 . . . 4 (𝜑 → ((𝐼 · 𝐸) + 𝐶) ∈ 𝑉)
351, 2, 3, 4, 5, 6, 7, 8, 20, 26, 34hdmaplns1 39038 . . 3 (𝜑 → ((𝑆‘((𝐼 · 𝐸) + 𝐶))‘((𝐽 · 𝐸) 𝐷)) = (((𝑆‘((𝐼 · 𝐸) + 𝐶))‘(𝐽 · 𝐸))(-g𝑅)((𝑆‘((𝐼 · 𝐸) + 𝐶))‘𝐷)))
36 hdmapinvlem3.t . . . . 5 × = (.r𝑅)
37 hdmapinvlem3.z . . . . 5 0 = (0g𝑅)
38 hdmapinvlem3.g . . . . 5 𝐺 = ((HGMap‘𝐾)‘𝑊)
39 hdmapinvlem3.ij . . . . 5 (𝜑 → (𝐼 × (𝐺𝐽)) = ((𝑆𝐷)‘𝐶))
401, 14, 22, 2, 3, 32, 4, 17, 5, 18, 36, 37, 7, 38, 8, 30, 25, 27, 10, 39hdmapinvlem3 39050 . . . 4 (𝜑 → ((𝑆‘((𝐽 · 𝐸) 𝐷))‘((𝐼 · 𝐸) + 𝐶)) = 0 )
413, 4lmodvsubcl 19673 . . . . . 6 ((𝑈 ∈ LMod ∧ (𝐽 · 𝐸) ∈ 𝑉𝐷𝑉) → ((𝐽 · 𝐸) 𝐷) ∈ 𝑉)
429, 20, 26, 41syl3anc 1367 . . . . 5 (𝜑 → ((𝐽 · 𝐸) 𝐷) ∈ 𝑉)
431, 2, 3, 5, 37, 7, 8, 42, 34hdmapip0com 39047 . . . 4 (𝜑 → (((𝑆‘((𝐽 · 𝐸) 𝐷))‘((𝐼 · 𝐸) + 𝐶)) = 0 ↔ ((𝑆‘((𝐼 · 𝐸) + 𝐶))‘((𝐽 · 𝐸) 𝐷)) = 0 ))
4440, 43mpbid 234 . . 3 (𝜑 → ((𝑆‘((𝐼 · 𝐸) + 𝐶))‘((𝐽 · 𝐸) 𝐷)) = 0 )
451, 2, 3, 17, 5, 18, 36, 7, 8, 16, 34, 10hdmaplnm1 39039 . . . . 5 (𝜑 → ((𝑆‘((𝐼 · 𝐸) + 𝐶))‘(𝐽 · 𝐸)) = (𝐽 × ((𝑆‘((𝐼 · 𝐸) + 𝐶))‘𝐸)))
46 eqid 2821 . . . . . . . 8 (+g𝑅) = (+g𝑅)
471, 2, 3, 32, 5, 46, 7, 8, 16, 29, 31hdmaplna2 39040 . . . . . . 7 (𝜑 → ((𝑆‘((𝐼 · 𝐸) + 𝐶))‘𝐸) = (((𝑆‘(𝐼 · 𝐸))‘𝐸)(+g𝑅)((𝑆𝐶)‘𝐸)))
481, 14, 22, 2, 3, 5, 18, 36, 37, 7, 8, 30hdmapinvlem2 39049 . . . . . . . 8 (𝜑 → ((𝑆𝐶)‘𝐸) = 0 )
4948oveq2d 7166 . . . . . . 7 (𝜑 → (((𝑆‘(𝐼 · 𝐸))‘𝐸)(+g𝑅)((𝑆𝐶)‘𝐸)) = (((𝑆‘(𝐼 · 𝐸))‘𝐸)(+g𝑅) 0 ))
505lmodring 19636 . . . . . . . . . . 11 (𝑈 ∈ LMod → 𝑅 ∈ Ring)
519, 50syl 17 . . . . . . . . . 10 (𝜑𝑅 ∈ Ring)
52 ringgrp 19296 . . . . . . . . . 10 (𝑅 ∈ Ring → 𝑅 ∈ Grp)
5351, 52syl 17 . . . . . . . . 9 (𝜑𝑅 ∈ Grp)
541, 2, 3, 5, 18, 7, 8, 16, 29hdmapipcl 39035 . . . . . . . . 9 (𝜑 → ((𝑆‘(𝐼 · 𝐸))‘𝐸) ∈ 𝐵)
5518, 46, 37grprid 18128 . . . . . . . . 9 ((𝑅 ∈ Grp ∧ ((𝑆‘(𝐼 · 𝐸))‘𝐸) ∈ 𝐵) → (((𝑆‘(𝐼 · 𝐸))‘𝐸)(+g𝑅) 0 ) = ((𝑆‘(𝐼 · 𝐸))‘𝐸))
5653, 54, 55syl2anc 586 . . . . . . . 8 (𝜑 → (((𝑆‘(𝐼 · 𝐸))‘𝐸)(+g𝑅) 0 ) = ((𝑆‘(𝐼 · 𝐸))‘𝐸))
571, 2, 3, 17, 5, 18, 36, 7, 38, 8, 16, 16, 27hdmapglnm2 39041 . . . . . . . 8 (𝜑 → ((𝑆‘(𝐼 · 𝐸))‘𝐸) = (((𝑆𝐸)‘𝐸) × (𝐺𝐼)))
58 eqid 2821 . . . . . . . . . . 11 ((HVMap‘𝐾)‘𝑊) = ((HVMap‘𝐾)‘𝑊)
59 eqid 2821 . . . . . . . . . . 11 (1r𝑅) = (1r𝑅)
601, 14, 58, 7, 8, 2, 5, 59hdmapevec2 38966 . . . . . . . . . 10 (𝜑 → ((𝑆𝐸)‘𝐸) = (1r𝑅))
6160oveq1d 7165 . . . . . . . . 9 (𝜑 → (((𝑆𝐸)‘𝐸) × (𝐺𝐼)) = ((1r𝑅) × (𝐺𝐼)))
621, 2, 5, 18, 38, 8, 27hgmapcl 39019 . . . . . . . . . 10 (𝜑 → (𝐺𝐼) ∈ 𝐵)
6318, 36, 59ringlidm 19315 . . . . . . . . . 10 ((𝑅 ∈ Ring ∧ (𝐺𝐼) ∈ 𝐵) → ((1r𝑅) × (𝐺𝐼)) = (𝐺𝐼))
6451, 62, 63syl2anc 586 . . . . . . . . 9 (𝜑 → ((1r𝑅) × (𝐺𝐼)) = (𝐺𝐼))
6561, 64eqtrd 2856 . . . . . . . 8 (𝜑 → (((𝑆𝐸)‘𝐸) × (𝐺𝐼)) = (𝐺𝐼))
6656, 57, 653eqtrd 2860 . . . . . . 7 (𝜑 → (((𝑆‘(𝐼 · 𝐸))‘𝐸)(+g𝑅) 0 ) = (𝐺𝐼))
6747, 49, 663eqtrd 2860 . . . . . 6 (𝜑 → ((𝑆‘((𝐼 · 𝐸) + 𝐶))‘𝐸) = (𝐺𝐼))
6867oveq2d 7166 . . . . 5 (𝜑 → (𝐽 × ((𝑆‘((𝐼 · 𝐸) + 𝐶))‘𝐸)) = (𝐽 × (𝐺𝐼)))
6945, 68eqtrd 2856 . . . 4 (𝜑 → ((𝑆‘((𝐼 · 𝐸) + 𝐶))‘(𝐽 · 𝐸)) = (𝐽 × (𝐺𝐼)))
701, 2, 3, 32, 5, 46, 7, 8, 26, 29, 31hdmaplna2 39040 . . . . 5 (𝜑 → ((𝑆‘((𝐼 · 𝐸) + 𝐶))‘𝐷) = (((𝑆‘(𝐼 · 𝐸))‘𝐷)(+g𝑅)((𝑆𝐶)‘𝐷)))
711, 2, 3, 17, 5, 18, 36, 7, 38, 8, 26, 16, 27hdmapglnm2 39041 . . . . . . 7 (𝜑 → ((𝑆‘(𝐼 · 𝐸))‘𝐷) = (((𝑆𝐸)‘𝐷) × (𝐺𝐼)))
721, 14, 22, 2, 3, 5, 18, 36, 37, 7, 8, 25hdmapinvlem1 39048 . . . . . . . 8 (𝜑 → ((𝑆𝐸)‘𝐷) = 0 )
7372oveq1d 7165 . . . . . . 7 (𝜑 → (((𝑆𝐸)‘𝐷) × (𝐺𝐼)) = ( 0 × (𝐺𝐼)))
7418, 36, 37ringlz 19331 . . . . . . . 8 ((𝑅 ∈ Ring ∧ (𝐺𝐼) ∈ 𝐵) → ( 0 × (𝐺𝐼)) = 0 )
7551, 62, 74syl2anc 586 . . . . . . 7 (𝜑 → ( 0 × (𝐺𝐼)) = 0 )
7671, 73, 753eqtrd 2860 . . . . . 6 (𝜑 → ((𝑆‘(𝐼 · 𝐸))‘𝐷) = 0 )
7776oveq1d 7165 . . . . 5 (𝜑 → (((𝑆‘(𝐼 · 𝐸))‘𝐷)(+g𝑅)((𝑆𝐶)‘𝐷)) = ( 0 (+g𝑅)((𝑆𝐶)‘𝐷)))
781, 2, 3, 5, 18, 7, 8, 26, 31hdmapipcl 39035 . . . . . 6 (𝜑 → ((𝑆𝐶)‘𝐷) ∈ 𝐵)
7918, 46, 37grplid 18127 . . . . . 6 ((𝑅 ∈ Grp ∧ ((𝑆𝐶)‘𝐷) ∈ 𝐵) → ( 0 (+g𝑅)((𝑆𝐶)‘𝐷)) = ((𝑆𝐶)‘𝐷))
8053, 78, 79syl2anc 586 . . . . 5 (𝜑 → ( 0 (+g𝑅)((𝑆𝐶)‘𝐷)) = ((𝑆𝐶)‘𝐷))
8170, 77, 803eqtrd 2860 . . . 4 (𝜑 → ((𝑆‘((𝐼 · 𝐸) + 𝐶))‘𝐷) = ((𝑆𝐶)‘𝐷))
8269, 81oveq12d 7168 . . 3 (𝜑 → (((𝑆‘((𝐼 · 𝐸) + 𝐶))‘(𝐽 · 𝐸))(-g𝑅)((𝑆‘((𝐼 · 𝐸) + 𝐶))‘𝐷)) = ((𝐽 × (𝐺𝐼))(-g𝑅)((𝑆𝐶)‘𝐷)))
8335, 44, 823eqtr3rd 2865 . 2 (𝜑 → ((𝐽 × (𝐺𝐼))(-g𝑅)((𝑆𝐶)‘𝐷)) = 0 )
845, 18, 36lmodmcl 19640 . . . 4 ((𝑈 ∈ LMod ∧ 𝐽𝐵 ∧ (𝐺𝐼) ∈ 𝐵) → (𝐽 × (𝐺𝐼)) ∈ 𝐵)
859, 10, 62, 84syl3anc 1367 . . 3 (𝜑 → (𝐽 × (𝐺𝐼)) ∈ 𝐵)
8618, 37, 6grpsubeq0 18179 . . 3 ((𝑅 ∈ Grp ∧ (𝐽 × (𝐺𝐼)) ∈ 𝐵 ∧ ((𝑆𝐶)‘𝐷) ∈ 𝐵) → (((𝐽 × (𝐺𝐼))(-g𝑅)((𝑆𝐶)‘𝐷)) = 0 ↔ (𝐽 × (𝐺𝐼)) = ((𝑆𝐶)‘𝐷)))
8753, 85, 78, 86syl3anc 1367 . 2 (𝜑 → (((𝐽 × (𝐺𝐼))(-g𝑅)((𝑆𝐶)‘𝐷)) = 0 ↔ (𝐽 × (𝐺𝐼)) = ((𝑆𝐶)‘𝐷)))
8883, 87mpbid 234 1 (𝜑 → (𝐽 × (𝐺𝐼)) = ((𝑆𝐶)‘𝐷))
Colors of variables: wff setvar class
Syntax hints:  wi 4  wb 208  wa 398   = wceq 1533  wcel 2110  wss 3935  {csn 4560  cop 4566   I cid 5453  cres 5551  cfv 6349  (class class class)co 7150  Basecbs 16477  +gcplusg 16559  .rcmulr 16560  Scalarcsca 16562   ·𝑠 cvsca 16563  0gc0g 16707  Grpcgrp 18097  -gcsg 18099  1rcur 19245  Ringcrg 19291  LModclmod 19628  HLchlt 36480  LHypclh 37114  LTrncltrn 37231  DVecHcdvh 38208  ocHcoch 38477  HVMapchvm 38886  HDMapchdma 38922  HGMapchg 39013
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1792  ax-4 1806  ax-5 1907  ax-6 1966  ax-7 2011  ax-8 2112  ax-9 2120  ax-10 2141  ax-11 2157  ax-12 2173  ax-ext 2793  ax-rep 5182  ax-sep 5195  ax-nul 5202  ax-pow 5258  ax-pr 5321  ax-un 7455  ax-cnex 10587  ax-resscn 10588  ax-1cn 10589  ax-icn 10590  ax-addcl 10591  ax-addrcl 10592  ax-mulcl 10593  ax-mulrcl 10594  ax-mulcom 10595  ax-addass 10596  ax-mulass 10597  ax-distr 10598  ax-i2m1 10599  ax-1ne0 10600  ax-1rid 10601  ax-rnegex 10602  ax-rrecex 10603  ax-cnre 10604  ax-pre-lttri 10605  ax-pre-lttrn 10606  ax-pre-ltadd 10607  ax-pre-mulgt0 10608  ax-riotaBAD 36083
This theorem depends on definitions:  df-bi 209  df-an 399  df-or 844  df-3or 1084  df-3an 1085  df-tru 1536  df-fal 1546  df-ex 1777  df-nf 1781  df-sb 2066  df-mo 2618  df-eu 2650  df-clab 2800  df-cleq 2814  df-clel 2893  df-nfc 2963  df-ne 3017  df-nel 3124  df-ral 3143  df-rex 3144  df-reu 3145  df-rmo 3146  df-rab 3147  df-v 3496  df-sbc 3772  df-csb 3883  df-dif 3938  df-un 3940  df-in 3942  df-ss 3951  df-pss 3953  df-nul 4291  df-if 4467  df-pw 4540  df-sn 4561  df-pr 4563  df-tp 4565  df-op 4567  df-ot 4569  df-uni 4832  df-int 4869  df-iun 4913  df-iin 4914  df-br 5059  df-opab 5121  df-mpt 5139  df-tr 5165  df-id 5454  df-eprel 5459  df-po 5468  df-so 5469  df-fr 5508  df-we 5510  df-xp 5555  df-rel 5556  df-cnv 5557  df-co 5558  df-dm 5559  df-rn 5560  df-res 5561  df-ima 5562  df-pred 6142  df-ord 6188  df-on 6189  df-lim 6190  df-suc 6191  df-iota 6308  df-fun 6351  df-fn 6352  df-f 6353  df-f1 6354  df-fo 6355  df-f1o 6356  df-fv 6357  df-riota 7108  df-ov 7153  df-oprab 7154  df-mpo 7155  df-of 7403  df-om 7575  df-1st 7683  df-2nd 7684  df-tpos 7886  df-undef 7933  df-wrecs 7941  df-recs 8002  df-rdg 8040  df-1o 8096  df-oadd 8100  df-er 8283  df-map 8402  df-en 8504  df-dom 8505  df-sdom 8506  df-fin 8507  df-pnf 10671  df-mnf 10672  df-xr 10673  df-ltxr 10674  df-le 10675  df-sub 10866  df-neg 10867  df-nn 11633  df-2 11694  df-3 11695  df-4 11696  df-5 11697  df-6 11698  df-n0 11892  df-z 11976  df-uz 12238  df-fz 12887  df-struct 16479  df-ndx 16480  df-slot 16481  df-base 16483  df-sets 16484  df-ress 16485  df-plusg 16572  df-mulr 16573  df-sca 16575  df-vsca 16576  df-0g 16709  df-mre 16851  df-mrc 16852  df-acs 16854  df-proset 17532  df-poset 17550  df-plt 17562  df-lub 17578  df-glb 17579  df-join 17580  df-meet 17581  df-p0 17643  df-p1 17644  df-lat 17650  df-clat 17712  df-mgm 17846  df-sgrp 17895  df-mnd 17906  df-submnd 17951  df-grp 18100  df-minusg 18101  df-sbg 18102  df-subg 18270  df-cntz 18441  df-oppg 18468  df-lsm 18755  df-cmn 18902  df-abl 18903  df-mgp 19234  df-ur 19246  df-ring 19293  df-oppr 19367  df-dvdsr 19385  df-unit 19386  df-invr 19416  df-dvr 19427  df-drng 19498  df-lmod 19630  df-lss 19698  df-lsp 19738  df-lvec 19869  df-lsatoms 36106  df-lshyp 36107  df-lcv 36149  df-lfl 36188  df-lkr 36216  df-ldual 36254  df-oposet 36306  df-ol 36308  df-oml 36309  df-covers 36396  df-ats 36397  df-atl 36428  df-cvlat 36452  df-hlat 36481  df-llines 36628  df-lplanes 36629  df-lvols 36630  df-lines 36631  df-psubsp 36633  df-pmap 36634  df-padd 36926  df-lhyp 37118  df-laut 37119  df-ldil 37234  df-ltrn 37235  df-trl 37289  df-tgrp 37873  df-tendo 37885  df-edring 37887  df-dveca 38133  df-disoa 38159  df-dvech 38209  df-dib 38269  df-dic 38303  df-dih 38359  df-doch 38478  df-djh 38525  df-lcdual 38717  df-mapd 38755  df-hvmap 38887  df-hdmap1 38923  df-hdmap 38924  df-hgmap 39014
This theorem is referenced by:  hdmapglem5  39052  hgmapvvlem1  39053
  Copyright terms: Public domain W3C validator