MPE Home Metamath Proof Explorer < Previous   Next >
Nearby theorems
Mirrors  >  Home  >  MPE Home  >  Th. List  >  dvdsq1p Structured version   Visualization version   GIF version

Theorem dvdsq1p 25669
Description: Divisibility in a polynomial ring is witnessed by the quotient. (Contributed by Stefan O'Rear, 28-Mar-2015.)
Hypotheses
Ref Expression
dvdsq1p.p ๐‘ƒ = (Poly1โ€˜๐‘…)
dvdsq1p.d โˆฅ = (โˆฅrโ€˜๐‘ƒ)
dvdsq1p.b ๐ต = (Baseโ€˜๐‘ƒ)
dvdsq1p.c ๐ถ = (Unic1pโ€˜๐‘…)
dvdsq1p.t ยท = (.rโ€˜๐‘ƒ)
dvdsq1p.q ๐‘„ = (quot1pโ€˜๐‘…)
Assertion
Ref Expression
dvdsq1p ((๐‘… โˆˆ Ring โˆง ๐น โˆˆ ๐ต โˆง ๐บ โˆˆ ๐ถ) โ†’ (๐บ โˆฅ ๐น โ†” ๐น = ((๐น๐‘„๐บ) ยท ๐บ)))

Proof of Theorem dvdsq1p
Dummy variable ๐‘ž is distinct from all other variables.
StepHypRef Expression
1 dvdsq1p.p . . . . . 6 ๐‘ƒ = (Poly1โ€˜๐‘…)
2 dvdsq1p.b . . . . . 6 ๐ต = (Baseโ€˜๐‘ƒ)
3 dvdsq1p.c . . . . . 6 ๐ถ = (Unic1pโ€˜๐‘…)
41, 2, 3uc1pcl 25652 . . . . 5 (๐บ โˆˆ ๐ถ โ†’ ๐บ โˆˆ ๐ต)
543ad2ant3 1135 . . . 4 ((๐‘… โˆˆ Ring โˆง ๐น โˆˆ ๐ต โˆง ๐บ โˆˆ ๐ถ) โ†’ ๐บ โˆˆ ๐ต)
6 dvdsq1p.d . . . . 5 โˆฅ = (โˆฅrโ€˜๐‘ƒ)
7 dvdsq1p.t . . . . 5 ยท = (.rโ€˜๐‘ƒ)
82, 6, 7dvdsr2 20169 . . . 4 (๐บ โˆˆ ๐ต โ†’ (๐บ โˆฅ ๐น โ†” โˆƒ๐‘ž โˆˆ ๐ต (๐‘ž ยท ๐บ) = ๐น))
95, 8syl 17 . . 3 ((๐‘… โˆˆ Ring โˆง ๐น โˆˆ ๐ต โˆง ๐บ โˆˆ ๐ถ) โ†’ (๐บ โˆฅ ๐น โ†” โˆƒ๐‘ž โˆˆ ๐ต (๐‘ž ยท ๐บ) = ๐น))
10 eqcom 2739 . . . . 5 ((๐‘ž ยท ๐บ) = ๐น โ†” ๐น = (๐‘ž ยท ๐บ))
11 simprr 771 . . . . . . 7 (((๐‘… โˆˆ Ring โˆง ๐น โˆˆ ๐ต โˆง ๐บ โˆˆ ๐ถ) โˆง (๐‘ž โˆˆ ๐ต โˆง ๐น = (๐‘ž ยท ๐บ))) โ†’ ๐น = (๐‘ž ยท ๐บ))
12 simprl 769 . . . . . . . . 9 (((๐‘… โˆˆ Ring โˆง ๐น โˆˆ ๐ต โˆง ๐บ โˆˆ ๐ถ) โˆง (๐‘ž โˆˆ ๐ต โˆง ๐น = (๐‘ž ยท ๐บ))) โ†’ ๐‘ž โˆˆ ๐ต)
13 simpl1 1191 . . . . . . . . . . . . . . . . 17 (((๐‘… โˆˆ Ring โˆง ๐น โˆˆ ๐ต โˆง ๐บ โˆˆ ๐ถ) โˆง ๐‘ž โˆˆ ๐ต) โ†’ ๐‘… โˆˆ Ring)
141ply1ring 21761 . . . . . . . . . . . . . . . . 17 (๐‘… โˆˆ Ring โ†’ ๐‘ƒ โˆˆ Ring)
1513, 14syl 17 . . . . . . . . . . . . . . . 16 (((๐‘… โˆˆ Ring โˆง ๐น โˆˆ ๐ต โˆง ๐บ โˆˆ ๐ถ) โˆง ๐‘ž โˆˆ ๐ต) โ†’ ๐‘ƒ โˆˆ Ring)
16 ringgrp 20054 . . . . . . . . . . . . . . . 16 (๐‘ƒ โˆˆ Ring โ†’ ๐‘ƒ โˆˆ Grp)
1715, 16syl 17 . . . . . . . . . . . . . . 15 (((๐‘… โˆˆ Ring โˆง ๐น โˆˆ ๐ต โˆง ๐บ โˆˆ ๐ถ) โˆง ๐‘ž โˆˆ ๐ต) โ†’ ๐‘ƒ โˆˆ Grp)
18 simpl2 1192 . . . . . . . . . . . . . . 15 (((๐‘… โˆˆ Ring โˆง ๐น โˆˆ ๐ต โˆง ๐บ โˆˆ ๐ถ) โˆง ๐‘ž โˆˆ ๐ต) โ†’ ๐น โˆˆ ๐ต)
19 simpr 485 . . . . . . . . . . . . . . . 16 (((๐‘… โˆˆ Ring โˆง ๐น โˆˆ ๐ต โˆง ๐บ โˆˆ ๐ถ) โˆง ๐‘ž โˆˆ ๐ต) โ†’ ๐‘ž โˆˆ ๐ต)
205adantr 481 . . . . . . . . . . . . . . . 16 (((๐‘… โˆˆ Ring โˆง ๐น โˆˆ ๐ต โˆง ๐บ โˆˆ ๐ถ) โˆง ๐‘ž โˆˆ ๐ต) โ†’ ๐บ โˆˆ ๐ต)
212, 7ringcl 20066 . . . . . . . . . . . . . . . 16 ((๐‘ƒ โˆˆ Ring โˆง ๐‘ž โˆˆ ๐ต โˆง ๐บ โˆˆ ๐ต) โ†’ (๐‘ž ยท ๐บ) โˆˆ ๐ต)
2215, 19, 20, 21syl3anc 1371 . . . . . . . . . . . . . . 15 (((๐‘… โˆˆ Ring โˆง ๐น โˆˆ ๐ต โˆง ๐บ โˆˆ ๐ถ) โˆง ๐‘ž โˆˆ ๐ต) โ†’ (๐‘ž ยท ๐บ) โˆˆ ๐ต)
23 eqid 2732 . . . . . . . . . . . . . . . 16 (0gโ€˜๐‘ƒ) = (0gโ€˜๐‘ƒ)
24 eqid 2732 . . . . . . . . . . . . . . . 16 (-gโ€˜๐‘ƒ) = (-gโ€˜๐‘ƒ)
252, 23, 24grpsubeq0 18905 . . . . . . . . . . . . . . 15 ((๐‘ƒ โˆˆ Grp โˆง ๐น โˆˆ ๐ต โˆง (๐‘ž ยท ๐บ) โˆˆ ๐ต) โ†’ ((๐น(-gโ€˜๐‘ƒ)(๐‘ž ยท ๐บ)) = (0gโ€˜๐‘ƒ) โ†” ๐น = (๐‘ž ยท ๐บ)))
2617, 18, 22, 25syl3anc 1371 . . . . . . . . . . . . . 14 (((๐‘… โˆˆ Ring โˆง ๐น โˆˆ ๐ต โˆง ๐บ โˆˆ ๐ถ) โˆง ๐‘ž โˆˆ ๐ต) โ†’ ((๐น(-gโ€˜๐‘ƒ)(๐‘ž ยท ๐บ)) = (0gโ€˜๐‘ƒ) โ†” ๐น = (๐‘ž ยท ๐บ)))
2726biimprd 247 . . . . . . . . . . . . 13 (((๐‘… โˆˆ Ring โˆง ๐น โˆˆ ๐ต โˆง ๐บ โˆˆ ๐ถ) โˆง ๐‘ž โˆˆ ๐ต) โ†’ (๐น = (๐‘ž ยท ๐บ) โ†’ (๐น(-gโ€˜๐‘ƒ)(๐‘ž ยท ๐บ)) = (0gโ€˜๐‘ƒ)))
2827impr 455 . . . . . . . . . . . 12 (((๐‘… โˆˆ Ring โˆง ๐น โˆˆ ๐ต โˆง ๐บ โˆˆ ๐ถ) โˆง (๐‘ž โˆˆ ๐ต โˆง ๐น = (๐‘ž ยท ๐บ))) โ†’ (๐น(-gโ€˜๐‘ƒ)(๐‘ž ยท ๐บ)) = (0gโ€˜๐‘ƒ))
2928fveq2d 6892 . . . . . . . . . . 11 (((๐‘… โˆˆ Ring โˆง ๐น โˆˆ ๐ต โˆง ๐บ โˆˆ ๐ถ) โˆง (๐‘ž โˆˆ ๐ต โˆง ๐น = (๐‘ž ยท ๐บ))) โ†’ (( deg1 โ€˜๐‘…)โ€˜(๐น(-gโ€˜๐‘ƒ)(๐‘ž ยท ๐บ))) = (( deg1 โ€˜๐‘…)โ€˜(0gโ€˜๐‘ƒ)))
30 simpl1 1191 . . . . . . . . . . . 12 (((๐‘… โˆˆ Ring โˆง ๐น โˆˆ ๐ต โˆง ๐บ โˆˆ ๐ถ) โˆง (๐‘ž โˆˆ ๐ต โˆง ๐น = (๐‘ž ยท ๐บ))) โ†’ ๐‘… โˆˆ Ring)
31 eqid 2732 . . . . . . . . . . . . 13 ( deg1 โ€˜๐‘…) = ( deg1 โ€˜๐‘…)
3231, 1, 23deg1z 25596 . . . . . . . . . . . 12 (๐‘… โˆˆ Ring โ†’ (( deg1 โ€˜๐‘…)โ€˜(0gโ€˜๐‘ƒ)) = -โˆž)
3330, 32syl 17 . . . . . . . . . . 11 (((๐‘… โˆˆ Ring โˆง ๐น โˆˆ ๐ต โˆง ๐บ โˆˆ ๐ถ) โˆง (๐‘ž โˆˆ ๐ต โˆง ๐น = (๐‘ž ยท ๐บ))) โ†’ (( deg1 โ€˜๐‘…)โ€˜(0gโ€˜๐‘ƒ)) = -โˆž)
3429, 33eqtrd 2772 . . . . . . . . . 10 (((๐‘… โˆˆ Ring โˆง ๐น โˆˆ ๐ต โˆง ๐บ โˆˆ ๐ถ) โˆง (๐‘ž โˆˆ ๐ต โˆง ๐น = (๐‘ž ยท ๐บ))) โ†’ (( deg1 โ€˜๐‘…)โ€˜(๐น(-gโ€˜๐‘ƒ)(๐‘ž ยท ๐บ))) = -โˆž)
3531, 3uc1pdeg 25656 . . . . . . . . . . . . . 14 ((๐‘… โˆˆ Ring โˆง ๐บ โˆˆ ๐ถ) โ†’ (( deg1 โ€˜๐‘…)โ€˜๐บ) โˆˆ โ„•0)
36353adant2 1131 . . . . . . . . . . . . 13 ((๐‘… โˆˆ Ring โˆง ๐น โˆˆ ๐ต โˆง ๐บ โˆˆ ๐ถ) โ†’ (( deg1 โ€˜๐‘…)โ€˜๐บ) โˆˆ โ„•0)
3736nn0red 12529 . . . . . . . . . . . 12 ((๐‘… โˆˆ Ring โˆง ๐น โˆˆ ๐ต โˆง ๐บ โˆˆ ๐ถ) โ†’ (( deg1 โ€˜๐‘…)โ€˜๐บ) โˆˆ โ„)
3837adantr 481 . . . . . . . . . . 11 (((๐‘… โˆˆ Ring โˆง ๐น โˆˆ ๐ต โˆง ๐บ โˆˆ ๐ถ) โˆง (๐‘ž โˆˆ ๐ต โˆง ๐น = (๐‘ž ยท ๐บ))) โ†’ (( deg1 โ€˜๐‘…)โ€˜๐บ) โˆˆ โ„)
3938mnfltd 13100 . . . . . . . . . 10 (((๐‘… โˆˆ Ring โˆง ๐น โˆˆ ๐ต โˆง ๐บ โˆˆ ๐ถ) โˆง (๐‘ž โˆˆ ๐ต โˆง ๐น = (๐‘ž ยท ๐บ))) โ†’ -โˆž < (( deg1 โ€˜๐‘…)โ€˜๐บ))
4034, 39eqbrtrd 5169 . . . . . . . . 9 (((๐‘… โˆˆ Ring โˆง ๐น โˆˆ ๐ต โˆง ๐บ โˆˆ ๐ถ) โˆง (๐‘ž โˆˆ ๐ต โˆง ๐น = (๐‘ž ยท ๐บ))) โ†’ (( deg1 โ€˜๐‘…)โ€˜(๐น(-gโ€˜๐‘ƒ)(๐‘ž ยท ๐บ))) < (( deg1 โ€˜๐‘…)โ€˜๐บ))
41 dvdsq1p.q . . . . . . . . . . 11 ๐‘„ = (quot1pโ€˜๐‘…)
4241, 1, 2, 31, 24, 7, 3q1peqb 25663 . . . . . . . . . 10 ((๐‘… โˆˆ Ring โˆง ๐น โˆˆ ๐ต โˆง ๐บ โˆˆ ๐ถ) โ†’ ((๐‘ž โˆˆ ๐ต โˆง (( deg1 โ€˜๐‘…)โ€˜(๐น(-gโ€˜๐‘ƒ)(๐‘ž ยท ๐บ))) < (( deg1 โ€˜๐‘…)โ€˜๐บ)) โ†” (๐น๐‘„๐บ) = ๐‘ž))
4342adantr 481 . . . . . . . . 9 (((๐‘… โˆˆ Ring โˆง ๐น โˆˆ ๐ต โˆง ๐บ โˆˆ ๐ถ) โˆง (๐‘ž โˆˆ ๐ต โˆง ๐น = (๐‘ž ยท ๐บ))) โ†’ ((๐‘ž โˆˆ ๐ต โˆง (( deg1 โ€˜๐‘…)โ€˜(๐น(-gโ€˜๐‘ƒ)(๐‘ž ยท ๐บ))) < (( deg1 โ€˜๐‘…)โ€˜๐บ)) โ†” (๐น๐‘„๐บ) = ๐‘ž))
4412, 40, 43mpbi2and 710 . . . . . . . 8 (((๐‘… โˆˆ Ring โˆง ๐น โˆˆ ๐ต โˆง ๐บ โˆˆ ๐ถ) โˆง (๐‘ž โˆˆ ๐ต โˆง ๐น = (๐‘ž ยท ๐บ))) โ†’ (๐น๐‘„๐บ) = ๐‘ž)
4544oveq1d 7420 . . . . . . 7 (((๐‘… โˆˆ Ring โˆง ๐น โˆˆ ๐ต โˆง ๐บ โˆˆ ๐ถ) โˆง (๐‘ž โˆˆ ๐ต โˆง ๐น = (๐‘ž ยท ๐บ))) โ†’ ((๐น๐‘„๐บ) ยท ๐บ) = (๐‘ž ยท ๐บ))
4611, 45eqtr4d 2775 . . . . . 6 (((๐‘… โˆˆ Ring โˆง ๐น โˆˆ ๐ต โˆง ๐บ โˆˆ ๐ถ) โˆง (๐‘ž โˆˆ ๐ต โˆง ๐น = (๐‘ž ยท ๐บ))) โ†’ ๐น = ((๐น๐‘„๐บ) ยท ๐บ))
4746expr 457 . . . . 5 (((๐‘… โˆˆ Ring โˆง ๐น โˆˆ ๐ต โˆง ๐บ โˆˆ ๐ถ) โˆง ๐‘ž โˆˆ ๐ต) โ†’ (๐น = (๐‘ž ยท ๐บ) โ†’ ๐น = ((๐น๐‘„๐บ) ยท ๐บ)))
4810, 47biimtrid 241 . . . 4 (((๐‘… โˆˆ Ring โˆง ๐น โˆˆ ๐ต โˆง ๐บ โˆˆ ๐ถ) โˆง ๐‘ž โˆˆ ๐ต) โ†’ ((๐‘ž ยท ๐บ) = ๐น โ†’ ๐น = ((๐น๐‘„๐บ) ยท ๐บ)))
4948rexlimdva 3155 . . 3 ((๐‘… โˆˆ Ring โˆง ๐น โˆˆ ๐ต โˆง ๐บ โˆˆ ๐ถ) โ†’ (โˆƒ๐‘ž โˆˆ ๐ต (๐‘ž ยท ๐บ) = ๐น โ†’ ๐น = ((๐น๐‘„๐บ) ยท ๐บ)))
509, 49sylbid 239 . 2 ((๐‘… โˆˆ Ring โˆง ๐น โˆˆ ๐ต โˆง ๐บ โˆˆ ๐ถ) โ†’ (๐บ โˆฅ ๐น โ†’ ๐น = ((๐น๐‘„๐บ) ยท ๐บ)))
5141, 1, 2, 3q1pcl 25664 . . . 4 ((๐‘… โˆˆ Ring โˆง ๐น โˆˆ ๐ต โˆง ๐บ โˆˆ ๐ถ) โ†’ (๐น๐‘„๐บ) โˆˆ ๐ต)
522, 6, 7dvdsrmul 20170 . . . 4 ((๐บ โˆˆ ๐ต โˆง (๐น๐‘„๐บ) โˆˆ ๐ต) โ†’ ๐บ โˆฅ ((๐น๐‘„๐บ) ยท ๐บ))
535, 51, 52syl2anc 584 . . 3 ((๐‘… โˆˆ Ring โˆง ๐น โˆˆ ๐ต โˆง ๐บ โˆˆ ๐ถ) โ†’ ๐บ โˆฅ ((๐น๐‘„๐บ) ยท ๐บ))
54 breq2 5151 . . 3 (๐น = ((๐น๐‘„๐บ) ยท ๐บ) โ†’ (๐บ โˆฅ ๐น โ†” ๐บ โˆฅ ((๐น๐‘„๐บ) ยท ๐บ)))
5553, 54syl5ibrcom 246 . 2 ((๐‘… โˆˆ Ring โˆง ๐น โˆˆ ๐ต โˆง ๐บ โˆˆ ๐ถ) โ†’ (๐น = ((๐น๐‘„๐บ) ยท ๐บ) โ†’ ๐บ โˆฅ ๐น))
5650, 55impbid 211 1 ((๐‘… โˆˆ Ring โˆง ๐น โˆˆ ๐ต โˆง ๐บ โˆˆ ๐ถ) โ†’ (๐บ โˆฅ ๐น โ†” ๐น = ((๐น๐‘„๐บ) ยท ๐บ)))
Colors of variables: wff setvar class
Syntax hints:   โ†’ wi 4   โ†” wb 205   โˆง wa 396   โˆง w3a 1087   = wceq 1541   โˆˆ wcel 2106  โˆƒwrex 3070   class class class wbr 5147  โ€˜cfv 6540  (class class class)co 7405  โ„cr 11105  -โˆžcmnf 11242   < clt 11244  โ„•0cn0 12468  Basecbs 17140  .rcmulr 17194  0gc0g 17381  Grpcgrp 18815  -gcsg 18817  Ringcrg 20049  โˆฅrcdsr 20160  Poly1cpl1 21692   deg1 cdg1 25560  Unic1pcuc1p 25635  quot1pcq1p 25636
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1797  ax-4 1811  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 2703  ax-rep 5284  ax-sep 5298  ax-nul 5305  ax-pow 5362  ax-pr 5426  ax-un 7721  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 397  df-or 846  df-3or 1088  df-3an 1089  df-tru 1544  df-fal 1554  df-ex 1782  df-nf 1786  df-sb 2068  df-mo 2534  df-eu 2563  df-clab 2710  df-cleq 2724  df-clel 2810  df-nfc 2885  df-ne 2941  df-nel 3047  df-ral 3062  df-rex 3071  df-rmo 3376  df-reu 3377  df-rab 3433  df-v 3476  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 7361  df-ov 7408  df-oprab 7409  df-mpo 7410  df-of 7666  df-ofr 7667  df-om 7852  df-1st 7971  df-2nd 7972  df-supp 8143  df-tpos 8207  df-frecs 8262  df-wrecs 8293  df-recs 8367  df-rdg 8406  df-1o 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-sup 9433  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-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-fz 13481  df-fzo 13624  df-seq 13963  df-hash 14287  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-0g 17383  df-gsum 17384  df-prds 17389  df-pws 17391  df-mre 17526  df-mrc 17527  df-acs 17529  df-mgm 18557  df-sgrp 18606  df-mnd 18622  df-mhm 18667  df-submnd 18668  df-grp 18818  df-minusg 18819  df-sbg 18820  df-mulg 18945  df-subg 18997  df-ghm 19084  df-cntz 19175  df-cmn 19644  df-abl 19645  df-mgp 19982  df-ur 19999  df-ring 20051  df-cring 20052  df-oppr 20142  df-dvdsr 20163  df-unit 20164  df-invr 20194  df-subrg 20353  df-lmod 20465  df-lss 20535  df-rlreg 20891  df-cnfld 20937  df-psr 21453  df-mvr 21454  df-mpl 21455  df-opsr 21457  df-psr1 21695  df-vr1 21696  df-ply1 21697  df-coe1 21698  df-mdeg 25561  df-deg1 25562  df-uc1p 25640  df-q1p 25641
This theorem is referenced by:  dvdsr1p  25670  fta1glem1  25674  fta1glem2  25675
  Copyright terms: Public domain W3C validator