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

Theorem fta1glem1 19604
Description: Lemma for fta1g 19606. (Contributed by Mario Carneiro, 7-Jun-2016.)
Hypotheses
Ref Expression
fta1g.p  |-  P  =  (Poly1 `  R )
fta1g.b  |-  B  =  ( Base `  P
)
fta1g.d  |-  D  =  ( deg1  `  R )
fta1g.o  |-  O  =  (eval1 `  R )
fta1g.w  |-  W  =  ( 0g `  R
)
fta1g.z  |-  .0.  =  ( 0g `  P )
fta1g.1  |-  ( ph  ->  R  e. IDomn )
fta1g.2  |-  ( ph  ->  F  e.  B )
fta1glem.k  |-  K  =  ( Base `  R
)
fta1glem.x  |-  X  =  (var1 `  R )
fta1glem.m  |-  .-  =  ( -g `  P )
fta1glem.a  |-  A  =  (algSc `  P )
fta1glem.g  |-  G  =  ( X  .-  ( A `  T )
)
fta1glem.3  |-  ( ph  ->  N  e.  NN0 )
fta1glem.4  |-  ( ph  ->  ( D `  F
)  =  ( N  +  1 ) )
fta1glem.5  |-  ( ph  ->  T  e.  ( `' ( O `  F
) " { W } ) )
Assertion
Ref Expression
fta1glem1  |-  ( ph  ->  ( D `  ( F (quot1p `  R ) G ) )  =  N )

Proof of Theorem fta1glem1
StepHypRef Expression
1 fta1glem.5 . . . . . . . . . 10  |-  ( ph  ->  T  e.  ( `' ( O `  F
) " { W } ) )
2 eqid 2316 . . . . . . . . . . . . 13  |-  ( R  ^s  K )  =  ( R  ^s  K )
3 fta1glem.k . . . . . . . . . . . . 13  |-  K  =  ( Base `  R
)
4 eqid 2316 . . . . . . . . . . . . 13  |-  ( Base `  ( R  ^s  K ) )  =  ( Base `  ( R  ^s  K ) )
5 fta1g.1 . . . . . . . . . . . . 13  |-  ( ph  ->  R  e. IDomn )
6 fvex 5577 . . . . . . . . . . . . . . 15  |-  ( Base `  R )  e.  _V
73, 6eqeltri 2386 . . . . . . . . . . . . . 14  |-  K  e. 
_V
87a1i 10 . . . . . . . . . . . . 13  |-  ( ph  ->  K  e.  _V )
9 isidom 16094 . . . . . . . . . . . . . . . . . 18  |-  ( R  e. IDomn 
<->  ( R  e.  CRing  /\  R  e. Domn ) )
109simplbi 446 . . . . . . . . . . . . . . . . 17  |-  ( R  e. IDomn  ->  R  e.  CRing )
115, 10syl 15 . . . . . . . . . . . . . . . 16  |-  ( ph  ->  R  e.  CRing )
12 fta1g.o . . . . . . . . . . . . . . . . 17  |-  O  =  (eval1 `  R )
13 fta1g.p . . . . . . . . . . . . . . . . 17  |-  P  =  (Poly1 `  R )
1412, 13, 2, 3evl1rhm 19465 . . . . . . . . . . . . . . . 16  |-  ( R  e.  CRing  ->  O  e.  ( P RingHom  ( R  ^s  K
) ) )
1511, 14syl 15 . . . . . . . . . . . . . . 15  |-  ( ph  ->  O  e.  ( P RingHom 
( R  ^s  K ) ) )
16 fta1g.b . . . . . . . . . . . . . . . 16  |-  B  =  ( Base `  P
)
1716, 4rhmf 15553 . . . . . . . . . . . . . . 15  |-  ( O  e.  ( P RingHom  ( R  ^s  K ) )  ->  O : B --> ( Base `  ( R  ^s  K ) ) )
1815, 17syl 15 . . . . . . . . . . . . . 14  |-  ( ph  ->  O : B --> ( Base `  ( R  ^s  K ) ) )
19 fta1g.2 . . . . . . . . . . . . . 14  |-  ( ph  ->  F  e.  B )
20 ffvelrn 5701 . . . . . . . . . . . . . 14  |-  ( ( O : B --> ( Base `  ( R  ^s  K ) )  /\  F  e.  B )  ->  ( O `  F )  e.  ( Base `  ( R  ^s  K ) ) )
2118, 19, 20syl2anc 642 . . . . . . . . . . . . 13  |-  ( ph  ->  ( O `  F
)  e.  ( Base `  ( R  ^s  K ) ) )
222, 3, 4, 5, 8, 21pwselbas 13437 . . . . . . . . . . . 12  |-  ( ph  ->  ( O `  F
) : K --> K )
23 ffn 5427 . . . . . . . . . . . 12  |-  ( ( O `  F ) : K --> K  -> 
( O `  F
)  Fn  K )
2422, 23syl 15 . . . . . . . . . . 11  |-  ( ph  ->  ( O `  F
)  Fn  K )
25 fniniseg 5684 . . . . . . . . . . 11  |-  ( ( O `  F )  Fn  K  ->  ( T  e.  ( `' ( O `  F )
" { W }
)  <->  ( T  e.  K  /\  ( ( O `  F ) `
 T )  =  W ) ) )
2624, 25syl 15 . . . . . . . . . 10  |-  ( ph  ->  ( T  e.  ( `' ( O `  F ) " { W } )  <->  ( T  e.  K  /\  (
( O `  F
) `  T )  =  W ) ) )
271, 26mpbid 201 . . . . . . . . 9  |-  ( ph  ->  ( T  e.  K  /\  ( ( O `  F ) `  T
)  =  W ) )
2827simprd 449 . . . . . . . 8  |-  ( ph  ->  ( ( O `  F ) `  T
)  =  W )
29 fta1glem.x . . . . . . . . 9  |-  X  =  (var1 `  R )
30 fta1glem.m . . . . . . . . 9  |-  .-  =  ( -g `  P )
31 fta1glem.a . . . . . . . . 9  |-  A  =  (algSc `  P )
32 fta1glem.g . . . . . . . . 9  |-  G  =  ( X  .-  ( A `  T )
)
339simprbi 450 . . . . . . . . . . 11  |-  ( R  e. IDomn  ->  R  e. Domn )
34 domnnzr 16085 . . . . . . . . . . 11  |-  ( R  e. Domn  ->  R  e. NzRing )
3533, 34syl 15 . . . . . . . . . 10  |-  ( R  e. IDomn  ->  R  e. NzRing )
365, 35syl 15 . . . . . . . . 9  |-  ( ph  ->  R  e. NzRing )
3727simpld 445 . . . . . . . . 9  |-  ( ph  ->  T  e.  K )
38 fta1g.w . . . . . . . . 9  |-  W  =  ( 0g `  R
)
39 eqid 2316 . . . . . . . . 9  |-  ( ||r `  P
)  =  ( ||r `  P
)
4013, 16, 3, 29, 30, 31, 32, 12, 36, 11, 37, 19, 38, 39facth1 19603 . . . . . . . 8  |-  ( ph  ->  ( G ( ||r `  P
) F  <->  ( ( O `  F ) `  T )  =  W ) )
4128, 40mpbird 223 . . . . . . 7  |-  ( ph  ->  G ( ||r `
 P ) F )
42 nzrrng 16062 . . . . . . . . 9  |-  ( R  e. NzRing  ->  R  e.  Ring )
4336, 42syl 15 . . . . . . . 8  |-  ( ph  ->  R  e.  Ring )
44 eqid 2316 . . . . . . . . . . 11  |-  (Monic1p `  R
)  =  (Monic1p `  R
)
45 fta1g.d . . . . . . . . . . 11  |-  D  =  ( deg1  `  R )
4613, 16, 3, 29, 30, 31, 32, 12, 36, 11, 37, 44, 45, 38ply1remlem 19601 . . . . . . . . . 10  |-  ( ph  ->  ( G  e.  (Monic1p `  R )  /\  ( D `  G )  =  1  /\  ( `' ( O `  G ) " { W } )  =  { T } ) )
4746simp1d 967 . . . . . . . . 9  |-  ( ph  ->  G  e.  (Monic1p `  R
) )
48 eqid 2316 . . . . . . . . . 10  |-  (Unic1p `  R
)  =  (Unic1p `  R
)
4948, 44mon1puc1p 19589 . . . . . . . . 9  |-  ( ( R  e.  Ring  /\  G  e.  (Monic1p `  R ) )  ->  G  e.  (Unic1p `  R ) )
5043, 47, 49syl2anc 642 . . . . . . . 8  |-  ( ph  ->  G  e.  (Unic1p `  R
) )
51 eqid 2316 . . . . . . . . 9  |-  ( .r
`  P )  =  ( .r `  P
)
52 eqid 2316 . . . . . . . . 9  |-  (quot1p `  R
)  =  (quot1p `  R
)
5313, 39, 16, 48, 51, 52dvdsq1p 19599 . . . . . . . 8  |-  ( ( R  e.  Ring  /\  F  e.  B  /\  G  e.  (Unic1p `  R ) )  ->  ( G (
||r `  P ) F  <->  F  =  ( ( F (quot1p `  R ) G ) ( .r `  P
) G ) ) )
5443, 19, 50, 53syl3anc 1182 . . . . . . 7  |-  ( ph  ->  ( G ( ||r `  P
) F  <->  F  =  ( ( F (quot1p `  R ) G ) ( .r `  P
) G ) ) )
5541, 54mpbid 201 . . . . . 6  |-  ( ph  ->  F  =  ( ( F (quot1p `  R ) G ) ( .r `  P ) G ) )
5613ply1crng 16326 . . . . . . . 8  |-  ( R  e.  CRing  ->  P  e.  CRing
)
5711, 56syl 15 . . . . . . 7  |-  ( ph  ->  P  e.  CRing )
5852, 13, 16, 48q1pcl 19594 . . . . . . . 8  |-  ( ( R  e.  Ring  /\  F  e.  B  /\  G  e.  (Unic1p `  R ) )  ->  ( F (quot1p `  R ) G )  e.  B )
5943, 19, 50, 58syl3anc 1182 . . . . . . 7  |-  ( ph  ->  ( F (quot1p `  R
) G )  e.  B )
6013, 16, 44mon1pcl 19583 . . . . . . . 8  |-  ( G  e.  (Monic1p `  R )  ->  G  e.  B )
6147, 60syl 15 . . . . . . 7  |-  ( ph  ->  G  e.  B )
6216, 51crngcom 15404 . . . . . . 7  |-  ( ( P  e.  CRing  /\  ( F (quot1p `  R ) G )  e.  B  /\  G  e.  B )  ->  ( ( F (quot1p `  R ) G ) ( .r `  P
) G )  =  ( G ( .r
`  P ) ( F (quot1p `  R ) G ) ) )
6357, 59, 61, 62syl3anc 1182 . . . . . 6  |-  ( ph  ->  ( ( F (quot1p `  R ) G ) ( .r `  P
) G )  =  ( G ( .r
`  P ) ( F (quot1p `  R ) G ) ) )
6455, 63eqtrd 2348 . . . . 5  |-  ( ph  ->  F  =  ( G ( .r `  P
) ( F (quot1p `  R ) G ) ) )
6564fveq2d 5567 . . . 4  |-  ( ph  ->  ( D `  F
)  =  ( D `
 ( G ( .r `  P ) ( F (quot1p `  R
) G ) ) ) )
66 fta1glem.4 . . . 4  |-  ( ph  ->  ( D `  F
)  =  ( N  +  1 ) )
67 eqid 2316 . . . . 5  |-  (RLReg `  R )  =  (RLReg `  R )
68 fta1g.z . . . . 5  |-  .0.  =  ( 0g `  P )
6946simp2d 968 . . . . . . 7  |-  ( ph  ->  ( D `  G
)  =  1 )
70 1nn0 10028 . . . . . . 7  |-  1  e.  NN0
7169, 70syl6eqel 2404 . . . . . 6  |-  ( ph  ->  ( D `  G
)  e.  NN0 )
7245, 13, 68, 16deg1nn0clb 19529 . . . . . . 7  |-  ( ( R  e.  Ring  /\  G  e.  B )  ->  ( G  =/=  .0.  <->  ( D `  G )  e.  NN0 ) )
7343, 61, 72syl2anc 642 . . . . . 6  |-  ( ph  ->  ( G  =/=  .0.  <->  ( D `  G )  e.  NN0 ) )
7471, 73mpbird 223 . . . . 5  |-  ( ph  ->  G  =/=  .0.  )
75 eqid 2316 . . . . . . . 8  |-  (Unit `  R )  =  (Unit `  R )
7667, 75unitrrg 16083 . . . . . . 7  |-  ( R  e.  Ring  ->  (Unit `  R )  C_  (RLReg `  R ) )
7743, 76syl 15 . . . . . 6  |-  ( ph  ->  (Unit `  R )  C_  (RLReg `  R )
)
7845, 75, 48uc1pldg 19587 . . . . . . 7  |-  ( G  e.  (Unic1p `  R )  -> 
( (coe1 `  G ) `  ( D `  G ) )  e.  (Unit `  R ) )
7950, 78syl 15 . . . . . 6  |-  ( ph  ->  ( (coe1 `  G ) `  ( D `  G ) )  e.  (Unit `  R ) )
8077, 79sseldd 3215 . . . . 5  |-  ( ph  ->  ( (coe1 `  G ) `  ( D `  G ) )  e.  (RLReg `  R ) )
81 fta1glem.3 . . . . . . . . . 10  |-  ( ph  ->  N  e.  NN0 )
82 peano2nn0 10051 . . . . . . . . . 10  |-  ( N  e.  NN0  ->  ( N  +  1 )  e. 
NN0 )
8381, 82syl 15 . . . . . . . . 9  |-  ( ph  ->  ( N  +  1 )  e.  NN0 )
8466, 83eqeltrd 2390 . . . . . . . 8  |-  ( ph  ->  ( D `  F
)  e.  NN0 )
8545, 13, 68, 16deg1nn0clb 19529 . . . . . . . . 9  |-  ( ( R  e.  Ring  /\  F  e.  B )  ->  ( F  =/=  .0.  <->  ( D `  F )  e.  NN0 ) )
8643, 19, 85syl2anc 642 . . . . . . . 8  |-  ( ph  ->  ( F  =/=  .0.  <->  ( D `  F )  e.  NN0 ) )
8784, 86mpbird 223 . . . . . . 7  |-  ( ph  ->  F  =/=  .0.  )
8855eqcomd 2321 . . . . . . 7  |-  ( ph  ->  ( ( F (quot1p `  R ) G ) ( .r `  P
) G )  =  F )
89 crngrng 15400 . . . . . . . . 9  |-  ( P  e.  CRing  ->  P  e.  Ring )
9057, 89syl 15 . . . . . . . 8  |-  ( ph  ->  P  e.  Ring )
9116, 51, 68rnglz 15426 . . . . . . . 8  |-  ( ( P  e.  Ring  /\  G  e.  B )  ->  (  .0.  ( .r `  P
) G )  =  .0.  )
9290, 61, 91syl2anc 642 . . . . . . 7  |-  ( ph  ->  (  .0.  ( .r
`  P ) G )  =  .0.  )
9387, 88, 923netr4d 2506 . . . . . 6  |-  ( ph  ->  ( ( F (quot1p `  R ) G ) ( .r `  P
) G )  =/=  (  .0.  ( .r
`  P ) G ) )
94 oveq1 5907 . . . . . . 7  |-  ( ( F (quot1p `  R ) G )  =  .0.  ->  ( ( F (quot1p `  R
) G ) ( .r `  P ) G )  =  (  .0.  ( .r `  P ) G ) )
9594necon3i 2518 . . . . . 6  |-  ( ( ( F (quot1p `  R
) G ) ( .r `  P ) G )  =/=  (  .0.  ( .r `  P
) G )  -> 
( F (quot1p `  R
) G )  =/= 
.0.  )
9693, 95syl 15 . . . . 5  |-  ( ph  ->  ( F (quot1p `  R
) G )  =/= 
.0.  )
9745, 13, 67, 16, 51, 68, 43, 61, 74, 80, 59, 96deg1mul2 19553 . . . 4  |-  ( ph  ->  ( D `  ( G ( .r `  P ) ( F (quot1p `  R ) G ) ) )  =  ( ( D `  G )  +  ( D `  ( F (quot1p `  R ) G ) ) ) )
9865, 66, 973eqtr3d 2356 . . 3  |-  ( ph  ->  ( N  +  1 )  =  ( ( D `  G )  +  ( D `  ( F (quot1p `  R ) G ) ) ) )
9981nn0cnd 10067 . . . 4  |-  ( ph  ->  N  e.  CC )
100 ax-1cn 8840 . . . 4  |-  1  e.  CC
101 addcom 9043 . . . 4  |-  ( ( N  e.  CC  /\  1  e.  CC )  ->  ( N  +  1 )  =  ( 1  +  N ) )
10299, 100, 101sylancl 643 . . 3  |-  ( ph  ->  ( N  +  1 )  =  ( 1  +  N ) )
10369oveq1d 5915 . . 3  |-  ( ph  ->  ( ( D `  G )  +  ( D `  ( F (quot1p `  R ) G ) ) )  =  ( 1  +  ( D `  ( F (quot1p `  R ) G ) ) ) )
10498, 102, 1033eqtr3rd 2357 . 2  |-  ( ph  ->  ( 1  +  ( D `  ( F (quot1p `  R ) G ) ) )  =  ( 1  +  N
) )
105100a1i 10 . . 3  |-  ( ph  ->  1  e.  CC )
10645, 13, 68, 16deg1nn0cl 19527 . . . . 5  |-  ( ( R  e.  Ring  /\  ( F (quot1p `  R ) G )  e.  B  /\  ( F (quot1p `  R ) G )  =/=  .0.  )  ->  ( D `  ( F (quot1p `  R ) G ) )  e.  NN0 )
10743, 59, 96, 106syl3anc 1182 . . . 4  |-  ( ph  ->  ( D `  ( F (quot1p `  R ) G ) )  e.  NN0 )
108107nn0cnd 10067 . . 3  |-  ( ph  ->  ( D `  ( F (quot1p `  R ) G ) )  e.  CC )
109105, 108, 99addcand 9060 . 2  |-  ( ph  ->  ( ( 1  +  ( D `  ( F (quot1p `  R ) G ) ) )  =  ( 1  +  N
)  <->  ( D `  ( F (quot1p `  R ) G ) )  =  N ) )
110104, 109mpbid 201 1  |-  ( ph  ->  ( D `  ( F (quot1p `  R ) G ) )  =  N )
Colors of variables: wff set class
Syntax hints:    -> wi 4    <-> wb 176    /\ wa 358    = wceq 1633    e. wcel 1701    =/= wne 2479   _Vcvv 2822    C_ wss 3186   {csn 3674   class class class wbr 4060   `'ccnv 4725   "cima 4729    Fn wfn 5287   -->wf 5288   ` cfv 5292  (class class class)co 5900   CCcc 8780   1c1 8783    + caddc 8785   NN0cn0 10012   Basecbs 13195   .rcmulr 13256    ^s cpws 13396   0gc0g 13449   -gcsg 14414   Ringcrg 15386   CRingccrg 15387   ||rcdsr 15469  Unitcui 15470   RingHom crh 15543  NzRingcnzr 16058  RLRegcrlreg 16069  Domncdomn 16070  IDomncidom 16071  algSccascl 16101  var1cv1 16300  Poly1cpl1 16301  eval1ce1 16303  coe1cco1 16304   deg1 cdg1 19493  Monic1pcmn1 19564  Unic1pcuc1p 19565  quot1pcq1p 19566
This theorem is referenced by:  fta1glem2  19605
This theorem was proved from axioms:  ax-1 5  ax-2 6  ax-3 7  ax-mp 8  ax-gen 1537  ax-5 1548  ax-17 1607  ax-9 1645  ax-8 1666  ax-13 1703  ax-14 1705  ax-6 1720  ax-7 1725  ax-11 1732  ax-12 1897  ax-ext 2297  ax-rep 4168  ax-sep 4178  ax-nul 4186  ax-pow 4225  ax-pr 4251  ax-un 4549  ax-inf2 7387  ax-cnex 8838  ax-resscn 8839  ax-1cn 8840  ax-icn 8841  ax-addcl 8842  ax-addrcl 8843  ax-mulcl 8844  ax-mulrcl 8845  ax-mulcom 8846  ax-addass 8847  ax-mulass 8848  ax-distr 8849  ax-i2m1 8850  ax-1ne0 8851  ax-1rid 8852  ax-rnegex 8853  ax-rrecex 8854  ax-cnre 8855  ax-pre-lttri 8856  ax-pre-lttrn 8857  ax-pre-ltadd 8858  ax-pre-mulgt0 8859  ax-pre-sup 8860  ax-addf 8861  ax-mulf 8862
This theorem depends on definitions:  df-bi 177  df-or 359  df-an 360  df-3or 935  df-3an 936  df-tru 1310  df-ex 1533  df-nf 1536  df-sb 1640  df-eu 2180  df-mo 2181  df-clab 2303  df-cleq 2309  df-clel 2312  df-nfc 2441  df-ne 2481  df-nel 2482  df-ral 2582  df-rex 2583  df-reu 2584  df-rmo 2585  df-rab 2586  df-v 2824  df-sbc 3026  df-csb 3116  df-dif 3189  df-un 3191  df-in 3193  df-ss 3200  df-pss 3202  df-nul 3490  df-if 3600  df-pw 3661  df-sn 3680  df-pr 3681  df-tp 3682  df-op 3683  df-uni 3865  df-int 3900  df-iun 3944  df-iin 3945  df-br 4061  df-opab 4115  df-mpt 4116  df-tr 4151  df-eprel 4342  df-id 4346  df-po 4351  df-so 4352  df-fr 4389  df-se 4390  df-we 4391  df-ord 4432  df-on 4433  df-lim 4434  df-suc 4435  df-om 4694  df-xp 4732  df-rel 4733  df-cnv 4734  df-co 4735  df-dm 4736  df-rn 4737  df-res 4738  df-ima 4739  df-iota 5256  df-fun 5294  df-fn 5295  df-f 5296  df-f1 5297  df-fo 5298  df-f1o 5299  df-fv 5300  df-isom 5301  df-ov 5903  df-oprab 5904  df-mpt2 5905  df-of 6120  df-ofr 6121  df-1st 6164  df-2nd 6165  df-tpos 6276  df-riota 6346  df-recs 6430  df-rdg 6465  df-1o 6521  df-2o 6522  df-oadd 6525  df-er 6702  df-map 6817  df-pm 6818  df-ixp 6861  df-en 6907  df-dom 6908  df-sdom 6909  df-fin 6910  df-sup 7239  df-oi 7270  df-card 7617  df-pnf 8914  df-mnf 8915  df-xr 8916  df-ltxr 8917  df-le 8918  df-sub 9084  df-neg 9085  df-nn 9792  df-2 9849  df-3 9850  df-4 9851  df-5 9852  df-6 9853  df-7 9854  df-8 9855  df-9 9856  df-10 9857  df-n0 10013  df-z 10072  df-dec 10172  df-uz 10278  df-fz 10830  df-fzo 10918  df-seq 11094  df-hash 11385  df-struct 13197  df-ndx 13198  df-slot 13199  df-base 13200  df-sets 13201  df-ress 13202  df-plusg 13268  df-mulr 13269  df-starv 13270  df-sca 13271  df-vsca 13272  df-tset 13274  df-ple 13275  df-ds 13277  df-unif 13278  df-hom 13279  df-cco 13280  df-prds 13397  df-pws 13399  df-0g 13453  df-gsum 13454  df-mre 13537  df-mrc 13538  df-acs 13540  df-mnd 14416  df-mhm 14464  df-submnd 14465  df-grp 14538  df-minusg 14539  df-sbg 14540  df-mulg 14541  df-subg 14667  df-ghm 14730  df-cntz 14842  df-cmn 15140  df-abl 15141  df-mgp 15375  df-rng 15389  df-cring 15390  df-ur 15391  df-oppr 15454  df-dvdsr 15472  df-unit 15473  df-invr 15503  df-rnghom 15545  df-subrg 15592  df-lmod 15678  df-lss 15739  df-lsp 15778  df-nzr 16059  df-rlreg 16073  df-domn 16074  df-idom 16075  df-assa 16102  df-asp 16103  df-ascl 16104  df-psr 16147  df-mvr 16148  df-mpl 16149  df-evls 16150  df-evl 16151  df-opsr 16155  df-psr1 16306  df-vr1 16307  df-ply1 16308  df-evl1 16310  df-coe1 16311  df-cnfld 16433  df-mdeg 19494  df-deg1 19495  df-mon1 19569  df-uc1p 19570  df-q1p 19571  df-r1p 19572
  Copyright terms: Public domain W3C validator