Users' Mathboxes Mathbox for Glauco Siliprandi < Previous   Next >
Nearby theorems
Mirrors  >  Home  >  MPE Home  >  Th. List  >   Mathboxes  >  etransclem41 Structured version   Visualization version   GIF version

Theorem etransclem41 44926
Description: ๐‘ƒ does not divide the P-1 -th derivative of ๐น applied to 0. This is the first part of case 2: proven in in [Juillerat] p. 13 . (Contributed by Glauco Siliprandi, 5-Apr-2020.)
Hypotheses
Ref Expression
etransclem41.m (๐œ‘ โ†’ ๐‘€ โˆˆ โ„•0)
etransclem41.p (๐œ‘ โ†’ ๐‘ƒ โˆˆ โ„™)
etransclem41.mp (๐œ‘ โ†’ (!โ€˜๐‘€) < ๐‘ƒ)
etransclem41.f ๐น = (๐‘ฅ โˆˆ โ„ โ†ฆ ((๐‘ฅโ†‘(๐‘ƒ โˆ’ 1)) ยท โˆ๐‘— โˆˆ (1...๐‘€)((๐‘ฅ โˆ’ ๐‘—)โ†‘๐‘ƒ)))
Assertion
Ref Expression
etransclem41 (๐œ‘ โ†’ ยฌ ๐‘ƒ โˆฅ ((((โ„ D๐‘› ๐น)โ€˜(๐‘ƒ โˆ’ 1))โ€˜0) / (!โ€˜(๐‘ƒ โˆ’ 1))))
Distinct variable groups:   ๐‘—,๐‘€,๐‘ฅ   ๐‘ƒ,๐‘—,๐‘ฅ   ๐œ‘,๐‘—,๐‘ฅ
Allowed substitution hints:   ๐น(๐‘ฅ,๐‘—)

Proof of Theorem etransclem41
Dummy variables ๐‘ ๐‘‘ ๐‘˜ ๐‘› ๐‘š are mutually distinct and distinct from all other variables.
StepHypRef Expression
1 etransclem41.mp . . . . . . 7 (๐œ‘ โ†’ (!โ€˜๐‘€) < ๐‘ƒ)
2 etransclem41.m . . . . . . . . . 10 (๐œ‘ โ†’ ๐‘€ โˆˆ โ„•0)
32faccld 14240 . . . . . . . . 9 (๐œ‘ โ†’ (!โ€˜๐‘€) โˆˆ โ„•)
43nnred 12223 . . . . . . . 8 (๐œ‘ โ†’ (!โ€˜๐‘€) โˆˆ โ„)
5 etransclem41.p . . . . . . . . . 10 (๐œ‘ โ†’ ๐‘ƒ โˆˆ โ„™)
6 prmnn 16607 . . . . . . . . . 10 (๐‘ƒ โˆˆ โ„™ โ†’ ๐‘ƒ โˆˆ โ„•)
75, 6syl 17 . . . . . . . . 9 (๐œ‘ โ†’ ๐‘ƒ โˆˆ โ„•)
87nnred 12223 . . . . . . . 8 (๐œ‘ โ†’ ๐‘ƒ โˆˆ โ„)
94, 8ltnled 11357 . . . . . . 7 (๐œ‘ โ†’ ((!โ€˜๐‘€) < ๐‘ƒ โ†” ยฌ ๐‘ƒ โ‰ค (!โ€˜๐‘€)))
101, 9mpbid 231 . . . . . 6 (๐œ‘ โ†’ ยฌ ๐‘ƒ โ‰ค (!โ€˜๐‘€))
117nnzd 12581 . . . . . . . . 9 (๐œ‘ โ†’ ๐‘ƒ โˆˆ โ„ค)
1211, 3jca 513 . . . . . . . 8 (๐œ‘ โ†’ (๐‘ƒ โˆˆ โ„ค โˆง (!โ€˜๐‘€) โˆˆ โ„•))
1312adantr 482 . . . . . . 7 ((๐œ‘ โˆง ๐‘ƒ โˆฅ (!โ€˜๐‘€)) โ†’ (๐‘ƒ โˆˆ โ„ค โˆง (!โ€˜๐‘€) โˆˆ โ„•))
14 simpr 486 . . . . . . 7 ((๐œ‘ โˆง ๐‘ƒ โˆฅ (!โ€˜๐‘€)) โ†’ ๐‘ƒ โˆฅ (!โ€˜๐‘€))
15 dvdsle 16249 . . . . . . 7 ((๐‘ƒ โˆˆ โ„ค โˆง (!โ€˜๐‘€) โˆˆ โ„•) โ†’ (๐‘ƒ โˆฅ (!โ€˜๐‘€) โ†’ ๐‘ƒ โ‰ค (!โ€˜๐‘€)))
1613, 14, 15sylc 65 . . . . . 6 ((๐œ‘ โˆง ๐‘ƒ โˆฅ (!โ€˜๐‘€)) โ†’ ๐‘ƒ โ‰ค (!โ€˜๐‘€))
1710, 16mtand 815 . . . . 5 (๐œ‘ โ†’ ยฌ ๐‘ƒ โˆฅ (!โ€˜๐‘€))
18 fzfid 13934 . . . . . . . . . 10 (โŠค โ†’ (1...๐‘€) โˆˆ Fin)
19 elfzelz 13497 . . . . . . . . . . . . 13 (๐‘— โˆˆ (1...๐‘€) โ†’ ๐‘— โˆˆ โ„ค)
2019znegcld 12664 . . . . . . . . . . . 12 (๐‘— โˆˆ (1...๐‘€) โ†’ -๐‘— โˆˆ โ„ค)
2120zcnd 12663 . . . . . . . . . . 11 (๐‘— โˆˆ (1...๐‘€) โ†’ -๐‘— โˆˆ โ„‚)
2221adantl 483 . . . . . . . . . 10 ((โŠค โˆง ๐‘— โˆˆ (1...๐‘€)) โ†’ -๐‘— โˆˆ โ„‚)
2318, 22fprodabs2 44246 . . . . . . . . 9 (โŠค โ†’ (absโ€˜โˆ๐‘— โˆˆ (1...๐‘€)-๐‘—) = โˆ๐‘— โˆˆ (1...๐‘€)(absโ€˜-๐‘—))
2423mptru 1549 . . . . . . . 8 (absโ€˜โˆ๐‘— โˆˆ (1...๐‘€)-๐‘—) = โˆ๐‘— โˆˆ (1...๐‘€)(absโ€˜-๐‘—)
2519zcnd 12663 . . . . . . . . . . 11 (๐‘— โˆˆ (1...๐‘€) โ†’ ๐‘— โˆˆ โ„‚)
2625absnegd 15392 . . . . . . . . . 10 (๐‘— โˆˆ (1...๐‘€) โ†’ (absโ€˜-๐‘—) = (absโ€˜๐‘—))
2719zred 12662 . . . . . . . . . . 11 (๐‘— โˆˆ (1...๐‘€) โ†’ ๐‘— โˆˆ โ„)
28 0red 11213 . . . . . . . . . . . 12 (๐‘— โˆˆ (1...๐‘€) โ†’ 0 โˆˆ โ„)
29 1red 11211 . . . . . . . . . . . . 13 (๐‘— โˆˆ (1...๐‘€) โ†’ 1 โˆˆ โ„)
30 0lt1 11732 . . . . . . . . . . . . . 14 0 < 1
3130a1i 11 . . . . . . . . . . . . 13 (๐‘— โˆˆ (1...๐‘€) โ†’ 0 < 1)
32 elfzle1 13500 . . . . . . . . . . . . 13 (๐‘— โˆˆ (1...๐‘€) โ†’ 1 โ‰ค ๐‘—)
3328, 29, 27, 31, 32ltletrd 11370 . . . . . . . . . . . 12 (๐‘— โˆˆ (1...๐‘€) โ†’ 0 < ๐‘—)
3428, 27, 33ltled 11358 . . . . . . . . . . 11 (๐‘— โˆˆ (1...๐‘€) โ†’ 0 โ‰ค ๐‘—)
3527, 34absidd 15365 . . . . . . . . . 10 (๐‘— โˆˆ (1...๐‘€) โ†’ (absโ€˜๐‘—) = ๐‘—)
3626, 35eqtrd 2773 . . . . . . . . 9 (๐‘— โˆˆ (1...๐‘€) โ†’ (absโ€˜-๐‘—) = ๐‘—)
3736prodeq2i 15859 . . . . . . . 8 โˆ๐‘— โˆˆ (1...๐‘€)(absโ€˜-๐‘—) = โˆ๐‘— โˆˆ (1...๐‘€)๐‘—
3824, 37eqtri 2761 . . . . . . 7 (absโ€˜โˆ๐‘— โˆˆ (1...๐‘€)-๐‘—) = โˆ๐‘— โˆˆ (1...๐‘€)๐‘—
39 fprodfac 15913 . . . . . . . 8 (๐‘€ โˆˆ โ„•0 โ†’ (!โ€˜๐‘€) = โˆ๐‘— โˆˆ (1...๐‘€)๐‘—)
402, 39syl 17 . . . . . . 7 (๐œ‘ โ†’ (!โ€˜๐‘€) = โˆ๐‘— โˆˆ (1...๐‘€)๐‘—)
4138, 40eqtr4id 2792 . . . . . 6 (๐œ‘ โ†’ (absโ€˜โˆ๐‘— โˆˆ (1...๐‘€)-๐‘—) = (!โ€˜๐‘€))
4241breq2d 5159 . . . . 5 (๐œ‘ โ†’ (๐‘ƒ โˆฅ (absโ€˜โˆ๐‘— โˆˆ (1...๐‘€)-๐‘—) โ†” ๐‘ƒ โˆฅ (!โ€˜๐‘€)))
4317, 42mtbird 325 . . . 4 (๐œ‘ โ†’ ยฌ ๐‘ƒ โˆฅ (absโ€˜โˆ๐‘— โˆˆ (1...๐‘€)-๐‘—))
44 fzfid 13934 . . . . . 6 (๐œ‘ โ†’ (1...๐‘€) โˆˆ Fin)
4520adantl 483 . . . . . 6 ((๐œ‘ โˆง ๐‘— โˆˆ (1...๐‘€)) โ†’ -๐‘— โˆˆ โ„ค)
4644, 45fprodzcl 15894 . . . . 5 (๐œ‘ โ†’ โˆ๐‘— โˆˆ (1...๐‘€)-๐‘— โˆˆ โ„ค)
47 dvdsabsb 16215 . . . . 5 ((๐‘ƒ โˆˆ โ„ค โˆง โˆ๐‘— โˆˆ (1...๐‘€)-๐‘— โˆˆ โ„ค) โ†’ (๐‘ƒ โˆฅ โˆ๐‘— โˆˆ (1...๐‘€)-๐‘— โ†” ๐‘ƒ โˆฅ (absโ€˜โˆ๐‘— โˆˆ (1...๐‘€)-๐‘—)))
4811, 46, 47syl2anc 585 . . . 4 (๐œ‘ โ†’ (๐‘ƒ โˆฅ โˆ๐‘— โˆˆ (1...๐‘€)-๐‘— โ†” ๐‘ƒ โˆฅ (absโ€˜โˆ๐‘— โˆˆ (1...๐‘€)-๐‘—)))
4943, 48mtbird 325 . . 3 (๐œ‘ โ†’ ยฌ ๐‘ƒ โˆฅ โˆ๐‘— โˆˆ (1...๐‘€)-๐‘—)
50 prmdvdsexp 16648 . . . 4 ((๐‘ƒ โˆˆ โ„™ โˆง โˆ๐‘— โˆˆ (1...๐‘€)-๐‘— โˆˆ โ„ค โˆง ๐‘ƒ โˆˆ โ„•) โ†’ (๐‘ƒ โˆฅ (โˆ๐‘— โˆˆ (1...๐‘€)-๐‘—โ†‘๐‘ƒ) โ†” ๐‘ƒ โˆฅ โˆ๐‘— โˆˆ (1...๐‘€)-๐‘—))
515, 46, 7, 50syl3anc 1372 . . 3 (๐œ‘ โ†’ (๐‘ƒ โˆฅ (โˆ๐‘— โˆˆ (1...๐‘€)-๐‘—โ†‘๐‘ƒ) โ†” ๐‘ƒ โˆฅ โˆ๐‘— โˆˆ (1...๐‘€)-๐‘—))
5249, 51mtbird 325 . 2 (๐œ‘ โ†’ ยฌ ๐‘ƒ โˆฅ (โˆ๐‘— โˆˆ (1...๐‘€)-๐‘—โ†‘๐‘ƒ))
53 etransclem41.f . . . . . 6 ๐น = (๐‘ฅ โˆˆ โ„ โ†ฆ ((๐‘ฅโ†‘(๐‘ƒ โˆ’ 1)) ยท โˆ๐‘— โˆˆ (1...๐‘€)((๐‘ฅ โˆ’ ๐‘—)โ†‘๐‘ƒ)))
54 etransclem11 44896 . . . . . 6 (๐‘š โˆˆ โ„•0 โ†ฆ {๐‘‘ โˆˆ ((0...๐‘š) โ†‘m (0...๐‘€)) โˆฃ ฮฃ๐‘˜ โˆˆ (0...๐‘€)(๐‘‘โ€˜๐‘˜) = ๐‘š}) = (๐‘› โˆˆ โ„•0 โ†ฆ {๐‘ โˆˆ ((0...๐‘›) โ†‘m (0...๐‘€)) โˆฃ ฮฃ๐‘— โˆˆ (0...๐‘€)(๐‘โ€˜๐‘—) = ๐‘›})
55 eqeq1 2737 . . . . . . . 8 (๐‘˜ = ๐‘— โ†’ (๐‘˜ = 0 โ†” ๐‘— = 0))
5655ifbid 4550 . . . . . . 7 (๐‘˜ = ๐‘— โ†’ if(๐‘˜ = 0, (๐‘ƒ โˆ’ 1), 0) = if(๐‘— = 0, (๐‘ƒ โˆ’ 1), 0))
5756cbvmptv 5260 . . . . . 6 (๐‘˜ โˆˆ (0...๐‘€) โ†ฆ if(๐‘˜ = 0, (๐‘ƒ โˆ’ 1), 0)) = (๐‘— โˆˆ (0...๐‘€) โ†ฆ if(๐‘— = 0, (๐‘ƒ โˆ’ 1), 0))
587, 2, 53, 54, 57etransclem35 44920 . . . . 5 (๐œ‘ โ†’ (((โ„ D๐‘› ๐น)โ€˜(๐‘ƒ โˆ’ 1))โ€˜0) = ((!โ€˜(๐‘ƒ โˆ’ 1)) ยท (โˆ๐‘— โˆˆ (1...๐‘€)-๐‘—โ†‘๐‘ƒ)))
5958oveq1d 7419 . . . 4 (๐œ‘ โ†’ ((((โ„ D๐‘› ๐น)โ€˜(๐‘ƒ โˆ’ 1))โ€˜0) / (!โ€˜(๐‘ƒ โˆ’ 1))) = (((!โ€˜(๐‘ƒ โˆ’ 1)) ยท (โˆ๐‘— โˆˆ (1...๐‘€)-๐‘—โ†‘๐‘ƒ)) / (!โ€˜(๐‘ƒ โˆ’ 1))))
6021adantl 483 . . . . . . 7 ((๐œ‘ โˆง ๐‘— โˆˆ (1...๐‘€)) โ†’ -๐‘— โˆˆ โ„‚)
6144, 60fprodcl 15892 . . . . . 6 (๐œ‘ โ†’ โˆ๐‘— โˆˆ (1...๐‘€)-๐‘— โˆˆ โ„‚)
627nnnn0d 12528 . . . . . 6 (๐œ‘ โ†’ ๐‘ƒ โˆˆ โ„•0)
6361, 62expcld 14107 . . . . 5 (๐œ‘ โ†’ (โˆ๐‘— โˆˆ (1...๐‘€)-๐‘—โ†‘๐‘ƒ) โˆˆ โ„‚)
64 nnm1nn0 12509 . . . . . . . 8 (๐‘ƒ โˆˆ โ„• โ†’ (๐‘ƒ โˆ’ 1) โˆˆ โ„•0)
657, 64syl 17 . . . . . . 7 (๐œ‘ โ†’ (๐‘ƒ โˆ’ 1) โˆˆ โ„•0)
6665faccld 14240 . . . . . 6 (๐œ‘ โ†’ (!โ€˜(๐‘ƒ โˆ’ 1)) โˆˆ โ„•)
6766nncnd 12224 . . . . 5 (๐œ‘ โ†’ (!โ€˜(๐‘ƒ โˆ’ 1)) โˆˆ โ„‚)
6866nnne0d 12258 . . . . 5 (๐œ‘ โ†’ (!โ€˜(๐‘ƒ โˆ’ 1)) โ‰  0)
6963, 67, 68divcan3d 11991 . . . 4 (๐œ‘ โ†’ (((!โ€˜(๐‘ƒ โˆ’ 1)) ยท (โˆ๐‘— โˆˆ (1...๐‘€)-๐‘—โ†‘๐‘ƒ)) / (!โ€˜(๐‘ƒ โˆ’ 1))) = (โˆ๐‘— โˆˆ (1...๐‘€)-๐‘—โ†‘๐‘ƒ))
7059, 69eqtrd 2773 . . 3 (๐œ‘ โ†’ ((((โ„ D๐‘› ๐น)โ€˜(๐‘ƒ โˆ’ 1))โ€˜0) / (!โ€˜(๐‘ƒ โˆ’ 1))) = (โˆ๐‘— โˆˆ (1...๐‘€)-๐‘—โ†‘๐‘ƒ))
7170breq2d 5159 . 2 (๐œ‘ โ†’ (๐‘ƒ โˆฅ ((((โ„ D๐‘› ๐น)โ€˜(๐‘ƒ โˆ’ 1))โ€˜0) / (!โ€˜(๐‘ƒ โˆ’ 1))) โ†” ๐‘ƒ โˆฅ (โˆ๐‘— โˆˆ (1...๐‘€)-๐‘—โ†‘๐‘ƒ)))
7252, 71mtbird 325 1 (๐œ‘ โ†’ ยฌ ๐‘ƒ โˆฅ ((((โ„ D๐‘› ๐น)โ€˜(๐‘ƒ โˆ’ 1))โ€˜0) / (!โ€˜(๐‘ƒ โˆ’ 1))))
Colors of variables: wff setvar class
Syntax hints:  ยฌ wn 3   โ†’ wi 4   โ†” wb 205   โˆง wa 397   = wceq 1542  โŠคwtru 1543   โˆˆ wcel 2107  {crab 3433  ifcif 4527   class class class wbr 5147   โ†ฆ cmpt 5230  โ€˜cfv 6540  (class class class)co 7404   โ†‘m cmap 8816  โ„‚cc 11104  โ„cr 11105  0cc0 11106  1c1 11107   ยท cmul 11111   < clt 11244   โ‰ค cle 11245   โˆ’ cmin 11440  -cneg 11441   / cdiv 11867  โ„•cn 12208  โ„•0cn0 12468  โ„คcz 12554  ...cfz 13480  โ†‘cexp 14023  !cfa 14229  abscabs 15177  ฮฃcsu 15628  โˆcprod 15845   โˆฅ cdvds 16193  โ„™cprime 16604   D๐‘› cdvn 25363
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 2704  ax-rep 5284  ax-sep 5298  ax-nul 5305  ax-pow 5362  ax-pr 5426  ax-un 7720  ax-inf2 9632  ax-cnex 11162  ax-resscn 11163  ax-1cn 11164  ax-icn 11165  ax-addcl 11166  ax-addrcl 11167  ax-mulcl 11168  ax-mulrcl 11169  ax-mulcom 11170  ax-addass 11171  ax-mulass 11172  ax-distr 11173  ax-i2m1 11174  ax-1ne0 11175  ax-1rid 11176  ax-rnegex 11177  ax-rrecex 11178  ax-cnre 11179  ax-pre-lttri 11180  ax-pre-lttrn 11181  ax-pre-ltadd 11182  ax-pre-mulgt0 11183  ax-pre-sup 11184  ax-addf 11185  ax-mulf 11186
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 2535  df-eu 2564  df-clab 2711  df-cleq 2725  df-clel 2811  df-nfc 2886  df-ne 2942  df-nel 3048  df-ral 3063  df-rex 3072  df-rmo 3377  df-reu 3378  df-rab 3434  df-v 3477  df-sbc 3777  df-csb 3893  df-dif 3950  df-un 3952  df-in 3954  df-ss 3964  df-pss 3966  df-nul 4322  df-if 4528  df-pw 4603  df-sn 4628  df-pr 4630  df-tp 4632  df-op 4634  df-uni 4908  df-int 4950  df-iun 4998  df-iin 4999  df-br 5148  df-opab 5210  df-mpt 5231  df-tr 5265  df-id 5573  df-eprel 5579  df-po 5587  df-so 5588  df-fr 5630  df-se 5631  df-we 5632  df-xp 5681  df-rel 5682  df-cnv 5683  df-co 5684  df-dm 5685  df-rn 5686  df-res 5687  df-ima 5688  df-pred 6297  df-ord 6364  df-on 6365  df-lim 6366  df-suc 6367  df-iota 6492  df-fun 6542  df-fn 6543  df-f 6544  df-f1 6545  df-fo 6546  df-f1o 6547  df-fv 6548  df-isom 6549  df-riota 7360  df-ov 7407  df-oprab 7408  df-mpo 7409  df-of 7665  df-om 7851  df-1st 7970  df-2nd 7971  df-supp 8142  df-frecs 8261  df-wrecs 8292  df-recs 8366  df-rdg 8405  df-1o 8461  df-2o 8462  df-er 8699  df-map 8818  df-pm 8819  df-ixp 8888  df-en 8936  df-dom 8937  df-sdom 8938  df-fin 8939  df-fsupp 9358  df-fi 9402  df-sup 9433  df-inf 9434  df-oi 9501  df-card 9930  df-pnf 11246  df-mnf 11247  df-xr 11248  df-ltxr 11249  df-le 11250  df-sub 11442  df-neg 11443  df-div 11868  df-nn 12209  df-2 12271  df-3 12272  df-4 12273  df-5 12274  df-6 12275  df-7 12276  df-8 12277  df-9 12278  df-n0 12469  df-z 12555  df-dec 12674  df-uz 12819  df-q 12929  df-rp 12971  df-xneg 13088  df-xadd 13089  df-xmul 13090  df-ioo 13324  df-ico 13326  df-icc 13327  df-fz 13481  df-fzo 13624  df-fl 13753  df-mod 13831  df-seq 13963  df-exp 14024  df-fac 14230  df-bc 14259  df-hash 14287  df-cj 15042  df-re 15043  df-im 15044  df-sqrt 15178  df-abs 15179  df-clim 15428  df-sum 15629  df-prod 15846  df-dvds 16194  df-gcd 16432  df-prm 16605  df-struct 17076  df-sets 17093  df-slot 17111  df-ndx 17123  df-base 17141  df-ress 17170  df-plusg 17206  df-mulr 17207  df-starv 17208  df-sca 17209  df-vsca 17210  df-ip 17211  df-tset 17212  df-ple 17213  df-ds 17215  df-unif 17216  df-hom 17217  df-cco 17218  df-rest 17364  df-topn 17365  df-0g 17383  df-gsum 17384  df-topgen 17385  df-pt 17386  df-prds 17389  df-xrs 17444  df-qtop 17449  df-imas 17450  df-xps 17452  df-mre 17526  df-mrc 17527  df-acs 17529  df-mgm 18557  df-sgrp 18606  df-mnd 18622  df-submnd 18668  df-mulg 18945  df-cntz 19175  df-cmn 19643  df-psmet 20921  df-xmet 20922  df-met 20923  df-bl 20924  df-mopn 20925  df-fbas 20926  df-fg 20927  df-cnfld 20930  df-top 22378  df-topon 22395  df-topsp 22417  df-bases 22431  df-cld 22505  df-ntr 22506  df-cls 22507  df-nei 22584  df-lp 22622  df-perf 22623  df-cn 22713  df-cnp 22714  df-haus 22801  df-tx 23048  df-hmeo 23241  df-fil 23332  df-fm 23424  df-flim 23425  df-flf 23426  df-xms 23808  df-ms 23809  df-tms 23810  df-cncf 24376  df-limc 25365  df-dv 25366  df-dvn 25367
This theorem is referenced by:  etransclem44  44929
  Copyright terms: Public domain W3C validator