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 39935
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 39850. 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 2738 . . . 4 (-g𝑅) = (-g𝑅)
7 hdmapinvlem3.s . . . 4 𝑆 = ((HDMap‘𝐾)‘𝑊)
8 hdmapinvlem3.k . . . 4 (𝜑 → (𝐾 ∈ HL ∧ 𝑊𝐻))
91, 2, 8dvhlmod 39124 . . . . 5 (𝜑𝑈 ∈ LMod)
10 hdmapinvlem3.j . . . . 5 (𝜑𝐽𝐵)
11 eqid 2738 . . . . . . 7 (Base‘𝐾) = (Base‘𝐾)
12 eqid 2738 . . . . . . 7 ((LTrn‘𝐾)‘𝑊) = ((LTrn‘𝐾)‘𝑊)
13 eqid 2738 . . . . . . 7 (0g𝑈) = (0g𝑈)
14 hdmapinvlem3.e . . . . . . 7 𝐸 = ⟨( I ↾ (Base‘𝐾)), ( I ↾ ((LTrn‘𝐾)‘𝑊))⟩
151, 11, 12, 2, 3, 13, 14, 8dvheveccl 39126 . . . . . 6 (𝜑𝐸 ∈ (𝑉 ∖ {(0g𝑈)}))
1615eldifad 3899 . . . . 5 (𝜑𝐸𝑉)
17 hdmapinvlem3.q . . . . . 6 · = ( ·𝑠𝑈)
18 hdmapinvlem3.b . . . . . 6 𝐵 = (Base‘𝑅)
193, 5, 17, 18lmodvscl 20140 . . . . 5 ((𝑈 ∈ LMod ∧ 𝐽𝐵𝐸𝑉) → (𝐽 · 𝐸) ∈ 𝑉)
209, 10, 16, 19syl3anc 1370 . . . 4 (𝜑 → (𝐽 · 𝐸) ∈ 𝑉)
2116snssd 4742 . . . . . 6 (𝜑 → {𝐸} ⊆ 𝑉)
22 hdmapinvlem3.o . . . . . . 7 𝑂 = ((ocH‘𝐾)‘𝑊)
231, 2, 3, 22dochssv 39369 . . . . . 6 (((𝐾 ∈ HL ∧ 𝑊𝐻) ∧ {𝐸} ⊆ 𝑉) → (𝑂‘{𝐸}) ⊆ 𝑉)
248, 21, 23syl2anc 584 . . . . 5 (𝜑 → (𝑂‘{𝐸}) ⊆ 𝑉)
25 hdmapinvlem3.d . . . . 5 (𝜑𝐷 ∈ (𝑂‘{𝐸}))
2624, 25sseldd 3922 . . . 4 (𝜑𝐷𝑉)
27 hdmapinvlem3.i . . . . . 6 (𝜑𝐼𝐵)
283, 5, 17, 18lmodvscl 20140 . . . . . 6 ((𝑈 ∈ LMod ∧ 𝐼𝐵𝐸𝑉) → (𝐼 · 𝐸) ∈ 𝑉)
299, 27, 16, 28syl3anc 1370 . . . . 5 (𝜑 → (𝐼 · 𝐸) ∈ 𝑉)
30 hdmapinvlem3.c . . . . . 6 (𝜑𝐶 ∈ (𝑂‘{𝐸}))
3124, 30sseldd 3922 . . . . 5 (𝜑𝐶𝑉)
32 hdmapinvlem3.p . . . . . 6 + = (+g𝑈)
333, 32lmodvacl 20137 . . . . 5 ((𝑈 ∈ LMod ∧ (𝐼 · 𝐸) ∈ 𝑉𝐶𝑉) → ((𝐼 · 𝐸) + 𝐶) ∈ 𝑉)
349, 29, 31, 33syl3anc 1370 . . . 4 (𝜑 → ((𝐼 · 𝐸) + 𝐶) ∈ 𝑉)
351, 2, 3, 4, 5, 6, 7, 8, 20, 26, 34hdmaplns1 39922 . . 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 39934 . . . 4 (𝜑 → ((𝑆‘((𝐽 · 𝐸) 𝐷))‘((𝐼 · 𝐸) + 𝐶)) = 0 )
413, 4lmodvsubcl 20168 . . . . . 6 ((𝑈 ∈ LMod ∧ (𝐽 · 𝐸) ∈ 𝑉𝐷𝑉) → ((𝐽 · 𝐸) 𝐷) ∈ 𝑉)
429, 20, 26, 41syl3anc 1370 . . . . 5 (𝜑 → ((𝐽 · 𝐸) 𝐷) ∈ 𝑉)
431, 2, 3, 5, 37, 7, 8, 42, 34hdmapip0com 39931 . . . 4 (𝜑 → (((𝑆‘((𝐽 · 𝐸) 𝐷))‘((𝐼 · 𝐸) + 𝐶)) = 0 ↔ ((𝑆‘((𝐼 · 𝐸) + 𝐶))‘((𝐽 · 𝐸) 𝐷)) = 0 ))
4440, 43mpbid 231 . . 3 (𝜑 → ((𝑆‘((𝐼 · 𝐸) + 𝐶))‘((𝐽 · 𝐸) 𝐷)) = 0 )
451, 2, 3, 17, 5, 18, 36, 7, 8, 16, 34, 10hdmaplnm1 39923 . . . . 5 (𝜑 → ((𝑆‘((𝐼 · 𝐸) + 𝐶))‘(𝐽 · 𝐸)) = (𝐽 × ((𝑆‘((𝐼 · 𝐸) + 𝐶))‘𝐸)))
46 eqid 2738 . . . . . . . 8 (+g𝑅) = (+g𝑅)
471, 2, 3, 32, 5, 46, 7, 8, 16, 29, 31hdmaplna2 39924 . . . . . . 7 (𝜑 → ((𝑆‘((𝐼 · 𝐸) + 𝐶))‘𝐸) = (((𝑆‘(𝐼 · 𝐸))‘𝐸)(+g𝑅)((𝑆𝐶)‘𝐸)))
481, 14, 22, 2, 3, 5, 18, 36, 37, 7, 8, 30hdmapinvlem2 39933 . . . . . . . 8 (𝜑 → ((𝑆𝐶)‘𝐸) = 0 )
4948oveq2d 7291 . . . . . . 7 (𝜑 → (((𝑆‘(𝐼 · 𝐸))‘𝐸)(+g𝑅)((𝑆𝐶)‘𝐸)) = (((𝑆‘(𝐼 · 𝐸))‘𝐸)(+g𝑅) 0 ))
505lmodring 20131 . . . . . . . . . . 11 (𝑈 ∈ LMod → 𝑅 ∈ Ring)
519, 50syl 17 . . . . . . . . . 10 (𝜑𝑅 ∈ Ring)
52 ringgrp 19788 . . . . . . . . . 10 (𝑅 ∈ Ring → 𝑅 ∈ Grp)
5351, 52syl 17 . . . . . . . . 9 (𝜑𝑅 ∈ Grp)
541, 2, 3, 5, 18, 7, 8, 16, 29hdmapipcl 39919 . . . . . . . . 9 (𝜑 → ((𝑆‘(𝐼 · 𝐸))‘𝐸) ∈ 𝐵)
5518, 46, 37grprid 18610 . . . . . . . . 9 ((𝑅 ∈ Grp ∧ ((𝑆‘(𝐼 · 𝐸))‘𝐸) ∈ 𝐵) → (((𝑆‘(𝐼 · 𝐸))‘𝐸)(+g𝑅) 0 ) = ((𝑆‘(𝐼 · 𝐸))‘𝐸))
5653, 54, 55syl2anc 584 . . . . . . . 8 (𝜑 → (((𝑆‘(𝐼 · 𝐸))‘𝐸)(+g𝑅) 0 ) = ((𝑆‘(𝐼 · 𝐸))‘𝐸))
571, 2, 3, 17, 5, 18, 36, 7, 38, 8, 16, 16, 27hdmapglnm2 39925 . . . . . . . 8 (𝜑 → ((𝑆‘(𝐼 · 𝐸))‘𝐸) = (((𝑆𝐸)‘𝐸) × (𝐺𝐼)))
58 eqid 2738 . . . . . . . . . . 11 ((HVMap‘𝐾)‘𝑊) = ((HVMap‘𝐾)‘𝑊)
59 eqid 2738 . . . . . . . . . . 11 (1r𝑅) = (1r𝑅)
601, 14, 58, 7, 8, 2, 5, 59hdmapevec2 39850 . . . . . . . . . 10 (𝜑 → ((𝑆𝐸)‘𝐸) = (1r𝑅))
6160oveq1d 7290 . . . . . . . . 9 (𝜑 → (((𝑆𝐸)‘𝐸) × (𝐺𝐼)) = ((1r𝑅) × (𝐺𝐼)))
621, 2, 5, 18, 38, 8, 27hgmapcl 39903 . . . . . . . . . 10 (𝜑 → (𝐺𝐼) ∈ 𝐵)
6318, 36, 59ringlidm 19810 . . . . . . . . . 10 ((𝑅 ∈ Ring ∧ (𝐺𝐼) ∈ 𝐵) → ((1r𝑅) × (𝐺𝐼)) = (𝐺𝐼))
6451, 62, 63syl2anc 584 . . . . . . . . 9 (𝜑 → ((1r𝑅) × (𝐺𝐼)) = (𝐺𝐼))
6561, 64eqtrd 2778 . . . . . . . 8 (𝜑 → (((𝑆𝐸)‘𝐸) × (𝐺𝐼)) = (𝐺𝐼))
6656, 57, 653eqtrd 2782 . . . . . . 7 (𝜑 → (((𝑆‘(𝐼 · 𝐸))‘𝐸)(+g𝑅) 0 ) = (𝐺𝐼))
6747, 49, 663eqtrd 2782 . . . . . 6 (𝜑 → ((𝑆‘((𝐼 · 𝐸) + 𝐶))‘𝐸) = (𝐺𝐼))
6867oveq2d 7291 . . . . 5 (𝜑 → (𝐽 × ((𝑆‘((𝐼 · 𝐸) + 𝐶))‘𝐸)) = (𝐽 × (𝐺𝐼)))
6945, 68eqtrd 2778 . . . 4 (𝜑 → ((𝑆‘((𝐼 · 𝐸) + 𝐶))‘(𝐽 · 𝐸)) = (𝐽 × (𝐺𝐼)))
701, 2, 3, 32, 5, 46, 7, 8, 26, 29, 31hdmaplna2 39924 . . . . 5 (𝜑 → ((𝑆‘((𝐼 · 𝐸) + 𝐶))‘𝐷) = (((𝑆‘(𝐼 · 𝐸))‘𝐷)(+g𝑅)((𝑆𝐶)‘𝐷)))
711, 2, 3, 17, 5, 18, 36, 7, 38, 8, 26, 16, 27hdmapglnm2 39925 . . . . . . 7 (𝜑 → ((𝑆‘(𝐼 · 𝐸))‘𝐷) = (((𝑆𝐸)‘𝐷) × (𝐺𝐼)))
721, 14, 22, 2, 3, 5, 18, 36, 37, 7, 8, 25hdmapinvlem1 39932 . . . . . . . 8 (𝜑 → ((𝑆𝐸)‘𝐷) = 0 )
7372oveq1d 7290 . . . . . . 7 (𝜑 → (((𝑆𝐸)‘𝐷) × (𝐺𝐼)) = ( 0 × (𝐺𝐼)))
7418, 36, 37ringlz 19826 . . . . . . . 8 ((𝑅 ∈ Ring ∧ (𝐺𝐼) ∈ 𝐵) → ( 0 × (𝐺𝐼)) = 0 )
7551, 62, 74syl2anc 584 . . . . . . 7 (𝜑 → ( 0 × (𝐺𝐼)) = 0 )
7671, 73, 753eqtrd 2782 . . . . . 6 (𝜑 → ((𝑆‘(𝐼 · 𝐸))‘𝐷) = 0 )
7776oveq1d 7290 . . . . 5 (𝜑 → (((𝑆‘(𝐼 · 𝐸))‘𝐷)(+g𝑅)((𝑆𝐶)‘𝐷)) = ( 0 (+g𝑅)((𝑆𝐶)‘𝐷)))
781, 2, 3, 5, 18, 7, 8, 26, 31hdmapipcl 39919 . . . . . 6 (𝜑 → ((𝑆𝐶)‘𝐷) ∈ 𝐵)
7918, 46, 37grplid 18609 . . . . . 6 ((𝑅 ∈ Grp ∧ ((𝑆𝐶)‘𝐷) ∈ 𝐵) → ( 0 (+g𝑅)((𝑆𝐶)‘𝐷)) = ((𝑆𝐶)‘𝐷))
8053, 78, 79syl2anc 584 . . . . 5 (𝜑 → ( 0 (+g𝑅)((𝑆𝐶)‘𝐷)) = ((𝑆𝐶)‘𝐷))
8170, 77, 803eqtrd 2782 . . . 4 (𝜑 → ((𝑆‘((𝐼 · 𝐸) + 𝐶))‘𝐷) = ((𝑆𝐶)‘𝐷))
8269, 81oveq12d 7293 . . 3 (𝜑 → (((𝑆‘((𝐼 · 𝐸) + 𝐶))‘(𝐽 · 𝐸))(-g𝑅)((𝑆‘((𝐼 · 𝐸) + 𝐶))‘𝐷)) = ((𝐽 × (𝐺𝐼))(-g𝑅)((𝑆𝐶)‘𝐷)))
8335, 44, 823eqtr3rd 2787 . 2 (𝜑 → ((𝐽 × (𝐺𝐼))(-g𝑅)((𝑆𝐶)‘𝐷)) = 0 )
845, 18, 36lmodmcl 20135 . . . 4 ((𝑈 ∈ LMod ∧ 𝐽𝐵 ∧ (𝐺𝐼) ∈ 𝐵) → (𝐽 × (𝐺𝐼)) ∈ 𝐵)
859, 10, 62, 84syl3anc 1370 . . 3 (𝜑 → (𝐽 × (𝐺𝐼)) ∈ 𝐵)
8618, 37, 6grpsubeq0 18661 . . 3 ((𝑅 ∈ Grp ∧ (𝐽 × (𝐺𝐼)) ∈ 𝐵 ∧ ((𝑆𝐶)‘𝐷) ∈ 𝐵) → (((𝐽 × (𝐺𝐼))(-g𝑅)((𝑆𝐶)‘𝐷)) = 0 ↔ (𝐽 × (𝐺𝐼)) = ((𝑆𝐶)‘𝐷)))
8753, 85, 78, 86syl3anc 1370 . 2 (𝜑 → (((𝐽 × (𝐺𝐼))(-g𝑅)((𝑆𝐶)‘𝐷)) = 0 ↔ (𝐽 × (𝐺𝐼)) = ((𝑆𝐶)‘𝐷)))
8883, 87mpbid 231 1 (𝜑 → (𝐽 × (𝐺𝐼)) = ((𝑆𝐶)‘𝐷))
Colors of variables: wff setvar class
Syntax hints:  wi 4  wb 205  wa 396   = wceq 1539  wcel 2106  wss 3887  {csn 4561  cop 4567   I cid 5488  cres 5591  cfv 6433  (class class class)co 7275  Basecbs 16912  +gcplusg 16962  .rcmulr 16963  Scalarcsca 16965   ·𝑠 cvsca 16966  0gc0g 17150  Grpcgrp 18577  -gcsg 18579  1rcur 19737  Ringcrg 19783  LModclmod 20123  HLchlt 37364  LHypclh 37998  LTrncltrn 38115  DVecHcdvh 39092  ocHcoch 39361  HVMapchvm 39770  HDMapchdma 39806  HGMapchg 39897
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 1913  ax-6 1971  ax-7 2011  ax-8 2108  ax-9 2116  ax-10 2137  ax-11 2154  ax-12 2171  ax-ext 2709  ax-rep 5209  ax-sep 5223  ax-nul 5230  ax-pow 5288  ax-pr 5352  ax-un 7588  ax-cnex 10927  ax-resscn 10928  ax-1cn 10929  ax-icn 10930  ax-addcl 10931  ax-addrcl 10932  ax-mulcl 10933  ax-mulrcl 10934  ax-mulcom 10935  ax-addass 10936  ax-mulass 10937  ax-distr 10938  ax-i2m1 10939  ax-1ne0 10940  ax-1rid 10941  ax-rnegex 10942  ax-rrecex 10943  ax-cnre 10944  ax-pre-lttri 10945  ax-pre-lttrn 10946  ax-pre-ltadd 10947  ax-pre-mulgt0 10948  ax-riotaBAD 36967
This theorem depends on definitions:  df-bi 206  df-an 397  df-or 845  df-3or 1087  df-3an 1088  df-tru 1542  df-fal 1552  df-ex 1783  df-nf 1787  df-sb 2068  df-mo 2540  df-eu 2569  df-clab 2716  df-cleq 2730  df-clel 2816  df-nfc 2889  df-ne 2944  df-nel 3050  df-ral 3069  df-rex 3070  df-rmo 3071  df-reu 3072  df-rab 3073  df-v 3434  df-sbc 3717  df-csb 3833  df-dif 3890  df-un 3892  df-in 3894  df-ss 3904  df-pss 3906  df-nul 4257  df-if 4460  df-pw 4535  df-sn 4562  df-pr 4564  df-tp 4566  df-op 4568  df-ot 4570  df-uni 4840  df-int 4880  df-iun 4926  df-iin 4927  df-br 5075  df-opab 5137  df-mpt 5158  df-tr 5192  df-id 5489  df-eprel 5495  df-po 5503  df-so 5504  df-fr 5544  df-we 5546  df-xp 5595  df-rel 5596  df-cnv 5597  df-co 5598  df-dm 5599  df-rn 5600  df-res 5601  df-ima 5602  df-pred 6202  df-ord 6269  df-on 6270  df-lim 6271  df-suc 6272  df-iota 6391  df-fun 6435  df-fn 6436  df-f 6437  df-f1 6438  df-fo 6439  df-f1o 6440  df-fv 6441  df-riota 7232  df-ov 7278  df-oprab 7279  df-mpo 7280  df-of 7533  df-om 7713  df-1st 7831  df-2nd 7832  df-tpos 8042  df-undef 8089  df-frecs 8097  df-wrecs 8128  df-recs 8202  df-rdg 8241  df-1o 8297  df-er 8498  df-map 8617  df-en 8734  df-dom 8735  df-sdom 8736  df-fin 8737  df-pnf 11011  df-mnf 11012  df-xr 11013  df-ltxr 11014  df-le 11015  df-sub 11207  df-neg 11208  df-nn 11974  df-2 12036  df-3 12037  df-4 12038  df-5 12039  df-6 12040  df-n0 12234  df-z 12320  df-uz 12583  df-fz 13240  df-struct 16848  df-sets 16865  df-slot 16883  df-ndx 16895  df-base 16913  df-ress 16942  df-plusg 16975  df-mulr 16976  df-sca 16978  df-vsca 16979  df-0g 17152  df-mre 17295  df-mrc 17296  df-acs 17298  df-proset 18013  df-poset 18031  df-plt 18048  df-lub 18064  df-glb 18065  df-join 18066  df-meet 18067  df-p0 18143  df-p1 18144  df-lat 18150  df-clat 18217  df-mgm 18326  df-sgrp 18375  df-mnd 18386  df-submnd 18431  df-grp 18580  df-minusg 18581  df-sbg 18582  df-subg 18752  df-cntz 18923  df-oppg 18950  df-lsm 19241  df-cmn 19388  df-abl 19389  df-mgp 19721  df-ur 19738  df-ring 19785  df-oppr 19862  df-dvdsr 19883  df-unit 19884  df-invr 19914  df-dvr 19925  df-drng 19993  df-lmod 20125  df-lss 20194  df-lsp 20234  df-lvec 20365  df-lsatoms 36990  df-lshyp 36991  df-lcv 37033  df-lfl 37072  df-lkr 37100  df-ldual 37138  df-oposet 37190  df-ol 37192  df-oml 37193  df-covers 37280  df-ats 37281  df-atl 37312  df-cvlat 37336  df-hlat 37365  df-llines 37512  df-lplanes 37513  df-lvols 37514  df-lines 37515  df-psubsp 37517  df-pmap 37518  df-padd 37810  df-lhyp 38002  df-laut 38003  df-ldil 38118  df-ltrn 38119  df-trl 38173  df-tgrp 38757  df-tendo 38769  df-edring 38771  df-dveca 39017  df-disoa 39043  df-dvech 39093  df-dib 39153  df-dic 39187  df-dih 39243  df-doch 39362  df-djh 39409  df-lcdual 39601  df-mapd 39639  df-hvmap 39771  df-hdmap1 39807  df-hdmap 39808  df-hgmap 39898
This theorem is referenced by:  hdmapglem5  39936  hgmapvvlem1  39937
  Copyright terms: Public domain W3C validator