MPE Home Metamath Proof Explorer < Previous   Next >
Nearby theorems
Mirrors  >  Home  >  MPE Home  >  Th. List  >  gamcvg2lem Structured version   Unicode version

Theorem gamcvg2lem 23976
Description: Lemma for gamcvg2 23977. (Contributed by Mario Carneiro, 10-Jul-2017.)
Hypotheses
Ref Expression
gamcvg2.f  |-  F  =  ( m  e.  NN  |->  ( ( ( ( m  +  1 )  /  m )  ^c  A )  /  (
( A  /  m
)  +  1 ) ) )
gamcvg2.a  |-  ( ph  ->  A  e.  ( CC 
\  ( ZZ  \  NN ) ) )
gamcvg2.g  |-  G  =  ( m  e.  NN  |->  ( ( A  x.  ( log `  ( ( m  +  1 )  /  m ) ) )  -  ( log `  ( ( A  /  m )  +  1 ) ) ) )
Assertion
Ref Expression
gamcvg2lem  |-  ( ph  ->  ( exp  o.  seq 1 (  +  ,  G ) )  =  seq 1 (  x.  ,  F ) )
Distinct variable groups:    A, m    ph, m
Allowed substitution hints:    F( m)    G( m)

Proof of Theorem gamcvg2lem
Dummy variables  k  n  x are mutually distinct and distinct from all other variables.
StepHypRef Expression
1 addcl 9623 . . . . 5  |-  ( ( n  e.  CC  /\  x  e.  CC )  ->  ( n  +  x
)  e.  CC )
21adantl 468 . . . 4  |-  ( ( ( ph  /\  k  e.  NN )  /\  (
n  e.  CC  /\  x  e.  CC )
)  ->  ( n  +  x )  e.  CC )
3 simpll 759 . . . . 5  |-  ( ( ( ph  /\  k  e.  NN )  /\  n  e.  ( 1 ... k
) )  ->  ph )
4 elfznn 11830 . . . . . 6  |-  ( n  e.  ( 1 ... k )  ->  n  e.  NN )
54adantl 468 . . . . 5  |-  ( ( ( ph  /\  k  e.  NN )  /\  n  e.  ( 1 ... k
) )  ->  n  e.  NN )
6 oveq1 6310 . . . . . . . . . . . 12  |-  ( m  =  n  ->  (
m  +  1 )  =  ( n  + 
1 ) )
7 id 23 . . . . . . . . . . . 12  |-  ( m  =  n  ->  m  =  n )
86, 7oveq12d 6321 . . . . . . . . . . 11  |-  ( m  =  n  ->  (
( m  +  1 )  /  m )  =  ( ( n  +  1 )  /  n ) )
98fveq2d 5883 . . . . . . . . . 10  |-  ( m  =  n  ->  ( log `  ( ( m  +  1 )  /  m ) )  =  ( log `  (
( n  +  1 )  /  n ) ) )
109oveq2d 6319 . . . . . . . . 9  |-  ( m  =  n  ->  ( A  x.  ( log `  ( ( m  + 
1 )  /  m
) ) )  =  ( A  x.  ( log `  ( ( n  +  1 )  /  n ) ) ) )
11 oveq2 6311 . . . . . . . . . . 11  |-  ( m  =  n  ->  ( A  /  m )  =  ( A  /  n
) )
1211oveq1d 6318 . . . . . . . . . 10  |-  ( m  =  n  ->  (
( A  /  m
)  +  1 )  =  ( ( A  /  n )  +  1 ) )
1312fveq2d 5883 . . . . . . . . 9  |-  ( m  =  n  ->  ( log `  ( ( A  /  m )  +  1 ) )  =  ( log `  (
( A  /  n
)  +  1 ) ) )
1410, 13oveq12d 6321 . . . . . . . 8  |-  ( m  =  n  ->  (
( A  x.  ( log `  ( ( m  +  1 )  /  m ) ) )  -  ( log `  (
( A  /  m
)  +  1 ) ) )  =  ( ( A  x.  ( log `  ( ( n  +  1 )  /  n ) ) )  -  ( log `  (
( A  /  n
)  +  1 ) ) ) )
15 gamcvg2.g . . . . . . . 8  |-  G  =  ( m  e.  NN  |->  ( ( A  x.  ( log `  ( ( m  +  1 )  /  m ) ) )  -  ( log `  ( ( A  /  m )  +  1 ) ) ) )
16 ovex 6331 . . . . . . . 8  |-  ( ( A  x.  ( log `  ( ( n  + 
1 )  /  n
) ) )  -  ( log `  ( ( A  /  n )  +  1 ) ) )  e.  _V
1714, 15, 16fvmpt 5962 . . . . . . 7  |-  ( n  e.  NN  ->  ( G `  n )  =  ( ( A  x.  ( log `  (
( n  +  1 )  /  n ) ) )  -  ( log `  ( ( A  /  n )  +  1 ) ) ) )
1817adantl 468 . . . . . 6  |-  ( (
ph  /\  n  e.  NN )  ->  ( G `
 n )  =  ( ( A  x.  ( log `  ( ( n  +  1 )  /  n ) ) )  -  ( log `  ( ( A  /  n )  +  1 ) ) ) )
19 gamcvg2.a . . . . . . . . . 10  |-  ( ph  ->  A  e.  ( CC 
\  ( ZZ  \  NN ) ) )
2019adantr 467 . . . . . . . . 9  |-  ( (
ph  /\  n  e.  NN )  ->  A  e.  ( CC  \  ( ZZ  \  NN ) ) )
2120eldifad 3449 . . . . . . . 8  |-  ( (
ph  /\  n  e.  NN )  ->  A  e.  CC )
22 simpr 463 . . . . . . . . . . . . 13  |-  ( (
ph  /\  n  e.  NN )  ->  n  e.  NN )
2322peano2nnd 10628 . . . . . . . . . . . 12  |-  ( (
ph  /\  n  e.  NN )  ->  ( n  +  1 )  e.  NN )
2423nnrpd 11341 . . . . . . . . . . 11  |-  ( (
ph  /\  n  e.  NN )  ->  ( n  +  1 )  e.  RR+ )
2522nnrpd 11341 . . . . . . . . . . 11  |-  ( (
ph  /\  n  e.  NN )  ->  n  e.  RR+ )
2624, 25rpdivcld 11360 . . . . . . . . . 10  |-  ( (
ph  /\  n  e.  NN )  ->  ( ( n  +  1 )  /  n )  e.  RR+ )
2726relogcld 23564 . . . . . . . . 9  |-  ( (
ph  /\  n  e.  NN )  ->  ( log `  ( ( n  + 
1 )  /  n
) )  e.  RR )
2827recnd 9671 . . . . . . . 8  |-  ( (
ph  /\  n  e.  NN )  ->  ( log `  ( ( n  + 
1 )  /  n
) )  e.  CC )
2921, 28mulcld 9665 . . . . . . 7  |-  ( (
ph  /\  n  e.  NN )  ->  ( A  x.  ( log `  (
( n  +  1 )  /  n ) ) )  e.  CC )
3022nncnd 10627 . . . . . . . . . 10  |-  ( (
ph  /\  n  e.  NN )  ->  n  e.  CC )
3122nnne0d 10656 . . . . . . . . . 10  |-  ( (
ph  /\  n  e.  NN )  ->  n  =/=  0 )
3221, 30, 31divcld 10385 . . . . . . . . 9  |-  ( (
ph  /\  n  e.  NN )  ->  ( A  /  n )  e.  CC )
33 1cnd 9661 . . . . . . . . 9  |-  ( (
ph  /\  n  e.  NN )  ->  1  e.  CC )
3432, 33addcld 9664 . . . . . . . 8  |-  ( (
ph  /\  n  e.  NN )  ->  ( ( A  /  n )  +  1 )  e.  CC )
3520, 22dmgmdivn0 23945 . . . . . . . 8  |-  ( (
ph  /\  n  e.  NN )  ->  ( ( A  /  n )  +  1 )  =/=  0 )
3634, 35logcld 23512 . . . . . . 7  |-  ( (
ph  /\  n  e.  NN )  ->  ( log `  ( ( A  /  n )  +  1 ) )  e.  CC )
3729, 36subcld 9988 . . . . . 6  |-  ( (
ph  /\  n  e.  NN )  ->  ( ( A  x.  ( log `  ( ( n  + 
1 )  /  n
) ) )  -  ( log `  ( ( A  /  n )  +  1 ) ) )  e.  CC )
3818, 37eqeltrd 2511 . . . . 5  |-  ( (
ph  /\  n  e.  NN )  ->  ( G `
 n )  e.  CC )
393, 5, 38syl2anc 666 . . . 4  |-  ( ( ( ph  /\  k  e.  NN )  /\  n  e.  ( 1 ... k
) )  ->  ( G `  n )  e.  CC )
40 simpr 463 . . . . 5  |-  ( (
ph  /\  k  e.  NN )  ->  k  e.  NN )
41 nnuz 11196 . . . . 5  |-  NN  =  ( ZZ>= `  1 )
4240, 41syl6eleq 2521 . . . 4  |-  ( (
ph  /\  k  e.  NN )  ->  k  e.  ( ZZ>= `  1 )
)
43 efadd 14141 . . . . 5  |-  ( ( n  e.  CC  /\  x  e.  CC )  ->  ( exp `  (
n  +  x ) )  =  ( ( exp `  n )  x.  ( exp `  x
) ) )
4443adantl 468 . . . 4  |-  ( ( ( ph  /\  k  e.  NN )  /\  (
n  e.  CC  /\  x  e.  CC )
)  ->  ( exp `  ( n  +  x
) )  =  ( ( exp `  n
)  x.  ( exp `  x ) ) )
45 efsub 14147 . . . . . . . 8  |-  ( ( ( A  x.  ( log `  ( ( n  +  1 )  /  n ) ) )  e.  CC  /\  ( log `  ( ( A  /  n )  +  1 ) )  e.  CC )  ->  ( exp `  ( ( A  x.  ( log `  (
( n  +  1 )  /  n ) ) )  -  ( log `  ( ( A  /  n )  +  1 ) ) ) )  =  ( ( exp `  ( A  x.  ( log `  (
( n  +  1 )  /  n ) ) ) )  / 
( exp `  ( log `  ( ( A  /  n )  +  1 ) ) ) ) )
4629, 36, 45syl2anc 666 . . . . . . 7  |-  ( (
ph  /\  n  e.  NN )  ->  ( exp `  ( ( A  x.  ( log `  ( ( n  +  1 )  /  n ) ) )  -  ( log `  ( ( A  /  n )  +  1 ) ) ) )  =  ( ( exp `  ( A  x.  ( log `  ( ( n  +  1 )  /  n ) ) ) )  /  ( exp `  ( log `  (
( A  /  n
)  +  1 ) ) ) ) )
4730, 33addcld 9664 . . . . . . . . . . 11  |-  ( (
ph  /\  n  e.  NN )  ->  ( n  +  1 )  e.  CC )
4847, 30, 31divcld 10385 . . . . . . . . . 10  |-  ( (
ph  /\  n  e.  NN )  ->  ( ( n  +  1 )  /  n )  e.  CC )
4923nnne0d 10656 . . . . . . . . . . 11  |-  ( (
ph  /\  n  e.  NN )  ->  ( n  +  1 )  =/=  0 )
5047, 30, 49, 31divne0d 10401 . . . . . . . . . 10  |-  ( (
ph  /\  n  e.  NN )  ->  ( ( n  +  1 )  /  n )  =/=  0 )
5148, 50, 21cxpefd 23649 . . . . . . . . 9  |-  ( (
ph  /\  n  e.  NN )  ->  ( ( ( n  +  1 )  /  n )  ^c  A )  =  ( exp `  ( A  x.  ( log `  ( ( n  + 
1 )  /  n
) ) ) ) )
5251eqcomd 2431 . . . . . . . 8  |-  ( (
ph  /\  n  e.  NN )  ->  ( exp `  ( A  x.  ( log `  ( ( n  +  1 )  /  n ) ) ) )  =  ( ( ( n  +  1 )  /  n )  ^c  A ) )
53 eflog 23518 . . . . . . . . 9  |-  ( ( ( ( A  /  n )  +  1 )  e.  CC  /\  ( ( A  /  n )  +  1 )  =/=  0 )  ->  ( exp `  ( log `  ( ( A  /  n )  +  1 ) ) )  =  ( ( A  /  n )  +  1 ) )
5434, 35, 53syl2anc 666 . . . . . . . 8  |-  ( (
ph  /\  n  e.  NN )  ->  ( exp `  ( log `  (
( A  /  n
)  +  1 ) ) )  =  ( ( A  /  n
)  +  1 ) )
5552, 54oveq12d 6321 . . . . . . 7  |-  ( (
ph  /\  n  e.  NN )  ->  ( ( exp `  ( A  x.  ( log `  (
( n  +  1 )  /  n ) ) ) )  / 
( exp `  ( log `  ( ( A  /  n )  +  1 ) ) ) )  =  ( ( ( ( n  + 
1 )  /  n
)  ^c  A )  /  ( ( A  /  n )  +  1 ) ) )
5646, 55eqtrd 2464 . . . . . 6  |-  ( (
ph  /\  n  e.  NN )  ->  ( exp `  ( ( A  x.  ( log `  ( ( n  +  1 )  /  n ) ) )  -  ( log `  ( ( A  /  n )  +  1 ) ) ) )  =  ( ( ( ( n  +  1 )  /  n )  ^c  A )  /  ( ( A  /  n )  +  1 ) ) )
5718fveq2d 5883 . . . . . 6  |-  ( (
ph  /\  n  e.  NN )  ->  ( exp `  ( G `  n
) )  =  ( exp `  ( ( A  x.  ( log `  ( ( n  + 
1 )  /  n
) ) )  -  ( log `  ( ( A  /  n )  +  1 ) ) ) ) )
588oveq1d 6318 . . . . . . . . 9  |-  ( m  =  n  ->  (
( ( m  + 
1 )  /  m
)  ^c  A )  =  ( ( ( n  +  1 )  /  n )  ^c  A ) )
5958, 12oveq12d 6321 . . . . . . . 8  |-  ( m  =  n  ->  (
( ( ( m  +  1 )  /  m )  ^c  A )  /  (
( A  /  m
)  +  1 ) )  =  ( ( ( ( n  + 
1 )  /  n
)  ^c  A )  /  ( ( A  /  n )  +  1 ) ) )
60 gamcvg2.f . . . . . . . 8  |-  F  =  ( m  e.  NN  |->  ( ( ( ( m  +  1 )  /  m )  ^c  A )  /  (
( A  /  m
)  +  1 ) ) )
61 ovex 6331 . . . . . . . 8  |-  ( ( ( ( n  + 
1 )  /  n
)  ^c  A )  /  ( ( A  /  n )  +  1 ) )  e.  _V
6259, 60, 61fvmpt 5962 . . . . . . 7  |-  ( n  e.  NN  ->  ( F `  n )  =  ( ( ( ( n  +  1 )  /  n )  ^c  A )  /  ( ( A  /  n )  +  1 ) ) )
6362adantl 468 . . . . . 6  |-  ( (
ph  /\  n  e.  NN )  ->  ( F `
 n )  =  ( ( ( ( n  +  1 )  /  n )  ^c  A )  /  (
( A  /  n
)  +  1 ) ) )
6456, 57, 633eqtr4d 2474 . . . . 5  |-  ( (
ph  /\  n  e.  NN )  ->  ( exp `  ( G `  n
) )  =  ( F `  n ) )
653, 5, 64syl2anc 666 . . . 4  |-  ( ( ( ph  /\  k  e.  NN )  /\  n  e.  ( 1 ... k
) )  ->  ( exp `  ( G `  n ) )  =  ( F `  n
) )
662, 39, 42, 44, 65seqhomo 12261 . . 3  |-  ( (
ph  /\  k  e.  NN )  ->  ( exp `  (  seq 1
(  +  ,  G
) `  k )
)  =  (  seq 1 (  x.  ,  F ) `  k
) )
6766mpteq2dva 4508 . 2  |-  ( ph  ->  ( k  e.  NN  |->  ( exp `  (  seq 1 (  +  ,  G ) `  k
) ) )  =  ( k  e.  NN  |->  (  seq 1 (  x.  ,  F ) `  k ) ) )
68 eff 14129 . . . 4  |-  exp : CC
--> CC
6968a1i 11 . . 3  |-  ( ph  ->  exp : CC --> CC )
70 1z 10969 . . . . 5  |-  1  e.  ZZ
7170a1i 11 . . . 4  |-  ( ph  ->  1  e.  ZZ )
7241, 71, 38serf 12242 . . 3  |-  ( ph  ->  seq 1 (  +  ,  G ) : NN --> CC )
73 fcompt 6072 . . 3  |-  ( ( exp : CC --> CC  /\  seq 1 (  +  ,  G ) : NN --> CC )  ->  ( exp 
o.  seq 1 (  +  ,  G ) )  =  ( k  e.  NN  |->  ( exp `  (  seq 1 (  +  ,  G ) `  k
) ) ) )
7469, 72, 73syl2anc 666 . 2  |-  ( ph  ->  ( exp  o.  seq 1 (  +  ,  G ) )  =  ( k  e.  NN  |->  ( exp `  (  seq 1 (  +  ,  G ) `  k
) ) ) )
75 seqfn 12226 . . . . 5  |-  ( 1  e.  ZZ  ->  seq 1 (  x.  ,  F )  Fn  ( ZZ>=
`  1 ) )
7670, 75mp1i 13 . . . 4  |-  ( ph  ->  seq 1 (  x.  ,  F )  Fn  ( ZZ>= `  1 )
)
7741fneq2i 5687 . . . 4  |-  (  seq 1 (  x.  ,  F )  Fn  NN  <->  seq 1 (  x.  ,  F )  Fn  ( ZZ>=
`  1 ) )
7876, 77sylibr 216 . . 3  |-  ( ph  ->  seq 1 (  x.  ,  F )  Fn  NN )
79 dffn5 5924 . . 3  |-  (  seq 1 (  x.  ,  F )  Fn  NN  <->  seq 1 (  x.  ,  F )  =  ( k  e.  NN  |->  (  seq 1 (  x.  ,  F ) `  k ) ) )
8078, 79sylib 200 . 2  |-  ( ph  ->  seq 1 (  x.  ,  F )  =  ( k  e.  NN  |->  (  seq 1 (  x.  ,  F ) `  k ) ) )
8167, 74, 803eqtr4d 2474 1  |-  ( ph  ->  ( exp  o.  seq 1 (  +  ,  G ) )  =  seq 1 (  x.  ,  F ) )
Colors of variables: wff setvar class
Syntax hints:    -> wi 4    /\ wa 371    = wceq 1438    e. wcel 1869    =/= wne 2619    \ cdif 3434    |-> cmpt 4480    o. ccom 4855    Fn wfn 5594   -->wf 5595   ` cfv 5599  (class class class)co 6303   CCcc 9539   0cc0 9541   1c1 9542    + caddc 9544    x. cmul 9546    - cmin 9862    / cdiv 10271   NNcn 10611   ZZcz 10939   ZZ>=cuz 11161   ...cfz 11786    seqcseq 12214   expce 14107   logclog 23496    ^c ccxp 23497
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1666  ax-4 1679  ax-5 1749  ax-6 1795  ax-7 1840  ax-8 1871  ax-9 1873  ax-10 1888  ax-11 1893  ax-12 1906  ax-13 2054  ax-ext 2401  ax-rep 4534  ax-sep 4544  ax-nul 4553  ax-pow 4600  ax-pr 4658  ax-un 6595  ax-inf2 8150  ax-cnex 9597  ax-resscn 9598  ax-1cn 9599  ax-icn 9600  ax-addcl 9601  ax-addrcl 9602  ax-mulcl 9603  ax-mulrcl 9604  ax-mulcom 9605  ax-addass 9606  ax-mulass 9607  ax-distr 9608  ax-i2m1 9609  ax-1ne0 9610  ax-1rid 9611  ax-rnegex 9612  ax-rrecex 9613  ax-cnre 9614  ax-pre-lttri 9615  ax-pre-lttrn 9616  ax-pre-ltadd 9617  ax-pre-mulgt0 9618  ax-pre-sup 9619  ax-addf 9620  ax-mulf 9621
This theorem depends on definitions:  df-bi 189  df-or 372  df-an 373  df-3or 984  df-3an 985  df-tru 1441  df-fal 1444  df-ex 1661  df-nf 1665  df-sb 1788  df-eu 2270  df-mo 2271  df-clab 2409  df-cleq 2415  df-clel 2418  df-nfc 2573  df-ne 2621  df-nel 2622  df-ral 2781  df-rex 2782  df-reu 2783  df-rmo 2784  df-rab 2785  df-v 3084  df-sbc 3301  df-csb 3397  df-dif 3440  df-un 3442  df-in 3444  df-ss 3451  df-pss 3453  df-nul 3763  df-if 3911  df-pw 3982  df-sn 3998  df-pr 4000  df-tp 4002  df-op 4004  df-uni 4218  df-int 4254  df-iun 4299  df-iin 4300  df-br 4422  df-opab 4481  df-mpt 4482  df-tr 4517  df-eprel 4762  df-id 4766  df-po 4772  df-so 4773  df-fr 4810  df-se 4811  df-we 4812  df-xp 4857  df-rel 4858  df-cnv 4859  df-co 4860  df-dm 4861  df-rn 4862  df-res 4863  df-ima 4864  df-pred 5397  df-ord 5443  df-on 5444  df-lim 5445  df-suc 5446  df-iota 5563  df-fun 5601  df-fn 5602  df-f 5603  df-f1 5604  df-fo 5605  df-f1o 5606  df-fv 5607  df-isom 5608  df-riota 6265  df-ov 6306  df-oprab 6307  df-mpt2 6308  df-of 6543  df-om 6705  df-1st 6805  df-2nd 6806  df-supp 6924  df-wrecs 7034  df-recs 7096  df-rdg 7134  df-1o 7188  df-2o 7189  df-oadd 7192  df-er 7369  df-map 7480  df-pm 7481  df-ixp 7529  df-en 7576  df-dom 7577  df-sdom 7578  df-fin 7579  df-fsupp 7888  df-fi 7929  df-sup 7960  df-inf 7961  df-oi 8029  df-card 8376  df-cda 8600  df-pnf 9679  df-mnf 9680  df-xr 9681  df-ltxr 9682  df-le 9683  df-sub 9864  df-neg 9865  df-div 10272  df-nn 10612  df-2 10670  df-3 10671  df-4 10672  df-5 10673  df-6 10674  df-7 10675  df-8 10676  df-9 10677  df-10 10678  df-n0 10872  df-z 10940  df-dec 11054  df-uz 11162  df-q 11267  df-rp 11305  df-xneg 11411  df-xadd 11412  df-xmul 11413  df-ioo 11641  df-ioc 11642  df-ico 11643  df-icc 11644  df-fz 11787  df-fzo 11918  df-fl 12029  df-mod 12098  df-seq 12215  df-exp 12274  df-fac 12461  df-bc 12489  df-hash 12517  df-shft 13124  df-cj 13156  df-re 13157  df-im 13158  df-sqrt 13292  df-abs 13293  df-limsup 13519  df-clim 13545  df-rlim 13546  df-sum 13746  df-ef 14114  df-sin 14116  df-cos 14117  df-pi 14119  df-struct 15116  df-ndx 15117  df-slot 15118  df-base 15119  df-sets 15120  df-ress 15121  df-plusg 15196  df-mulr 15197  df-starv 15198  df-sca 15199  df-vsca 15200  df-ip 15201  df-tset 15202  df-ple 15203  df-ds 15205  df-unif 15206  df-hom 15207  df-cco 15208  df-rest 15314  df-topn 15315  df-0g 15333  df-gsum 15334  df-topgen 15335  df-pt 15336  df-prds 15339  df-xrs 15393  df-qtop 15399  df-imas 15400  df-xps 15403  df-mre 15485  df-mrc 15486  df-acs 15488  df-mgm 16481  df-sgrp 16520  df-mnd 16530  df-submnd 16576  df-mulg 16669  df-cntz 16964  df-cmn 17425  df-psmet 18955  df-xmet 18956  df-met 18957  df-bl 18958  df-mopn 18959  df-fbas 18960  df-fg 18961  df-cnfld 18964  df-top 19913  df-bases 19914  df-topon 19915  df-topsp 19916  df-cld 20026  df-ntr 20027  df-cls 20028  df-nei 20106  df-lp 20144  df-perf 20145  df-cn 20235  df-cnp 20236  df-haus 20323  df-tx 20569  df-hmeo 20762  df-fil 20853  df-fm 20945  df-flim 20946  df-flf 20947  df-xms 21327  df-ms 21328  df-tms 21329  df-cncf 21902  df-limc 22813  df-dv 22814  df-log 23498  df-cxp 23499
This theorem is referenced by:  gamcvg2  23977
  Copyright terms: Public domain W3C validator