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

Theorem pt1hmeo 20763
Description: The canonical homeomorphism from a topological product on a singleton to the topology of the factor. (Contributed by Mario Carneiro, 3-Feb-2015.)
Hypotheses
Ref Expression
pt1hmeo.j  |-  K  =  ( Xt_ `  { <. A ,  J >. } )
pt1hmeo.a  |-  ( ph  ->  A  e.  V )
pt1hmeo.r  |-  ( ph  ->  J  e.  (TopOn `  X ) )
Assertion
Ref Expression
pt1hmeo  |-  ( ph  ->  ( x  e.  X  |->  { <. A ,  x >. } )  e.  ( J Homeo K ) )
Distinct variable groups:    x, A    x, J    x, K    ph, x    x, X
Allowed substitution hint:    V( x)

Proof of Theorem pt1hmeo
Dummy variables  k 
y are mutually distinct and distinct from all other variables.
StepHypRef Expression
1 fconstmpt 4840 . . . . 5  |-  ( { A }  X.  {
x } )  =  ( k  e.  { A }  |->  x )
2 pt1hmeo.a . . . . . . 7  |-  ( ph  ->  A  e.  V )
32adantr 466 . . . . . 6  |-  ( (
ph  /\  x  e.  X )  ->  A  e.  V )
4 sneq 3951 . . . . . . . . 9  |-  ( k  =  A  ->  { k }  =  { A } )
54xpeq1d 4819 . . . . . . . 8  |-  ( k  =  A  ->  ( { k }  X.  { x } )  =  ( { A }  X.  { x }
) )
6 opeq1 4130 . . . . . . . . 9  |-  ( k  =  A  ->  <. k ,  x >.  =  <. A ,  x >. )
76sneqd 3953 . . . . . . . 8  |-  ( k  =  A  ->  { <. k ,  x >. }  =  { <. A ,  x >. } )
85, 7eqeq12d 2443 . . . . . . 7  |-  ( k  =  A  ->  (
( { k }  X.  { x }
)  =  { <. k ,  x >. }  <->  ( { A }  X.  { x } )  =  { <. A ,  x >. } ) )
9 vex 3025 . . . . . . . 8  |-  k  e. 
_V
10 vex 3025 . . . . . . . 8  |-  x  e. 
_V
119, 10xpsn 6025 . . . . . . 7  |-  ( { k }  X.  {
x } )  =  { <. k ,  x >. }
128, 11vtoclg 3082 . . . . . 6  |-  ( A  e.  V  ->  ( { A }  X.  {
x } )  =  { <. A ,  x >. } )
133, 12syl 17 . . . . 5  |-  ( (
ph  /\  x  e.  X )  ->  ( { A }  X.  {
x } )  =  { <. A ,  x >. } )
141, 13syl5eqr 2476 . . . 4  |-  ( (
ph  /\  x  e.  X )  ->  (
k  e.  { A }  |->  x )  =  { <. A ,  x >. } )
1514mpteq2dva 4453 . . 3  |-  ( ph  ->  ( x  e.  X  |->  ( k  e.  { A }  |->  x ) )  =  ( x  e.  X  |->  { <. A ,  x >. } ) )
16 pt1hmeo.j . . . 4  |-  K  =  ( Xt_ `  { <. A ,  J >. } )
17 pt1hmeo.r . . . 4  |-  ( ph  ->  J  e.  (TopOn `  X ) )
18 snex 4605 . . . . 5  |-  { A }  e.  _V
1918a1i 11 . . . 4  |-  ( ph  ->  { A }  e.  _V )
20 f1osng 5813 . . . . . . 7  |-  ( ( A  e.  V  /\  J  e.  (TopOn `  X
) )  ->  { <. A ,  J >. } : { A } -1-1-onto-> { J } )
212, 17, 20syl2anc 665 . . . . . 6  |-  ( ph  ->  { <. A ,  J >. } : { A }
-1-1-onto-> { J } )
22 f1of 5774 . . . . . 6  |-  ( {
<. A ,  J >. } : { A } -1-1-onto-> { J }  ->  { <. A ,  J >. } : { A } --> { J } )
2321, 22syl 17 . . . . 5  |-  ( ph  ->  { <. A ,  J >. } : { A }
--> { J } )
24 topontop 19883 . . . . . . 7  |-  ( J  e.  (TopOn `  X
)  ->  J  e.  Top )
2517, 24syl 17 . . . . . 6  |-  ( ph  ->  J  e.  Top )
2625snssd 4088 . . . . 5  |-  ( ph  ->  { J }  C_  Top )
2723, 26fssd 5698 . . . 4  |-  ( ph  ->  { <. A ,  J >. } : { A }
--> Top )
2817cnmptid 20618 . . . . . 6  |-  ( ph  ->  ( x  e.  X  |->  x )  e.  ( J  Cn  J ) )
2928adantr 466 . . . . 5  |-  ( (
ph  /\  k  e.  { A } )  -> 
( x  e.  X  |->  x )  e.  ( J  Cn  J ) )
30 elsni 3966 . . . . . . . 8  |-  ( k  e.  { A }  ->  k  =  A )
3130fveq2d 5829 . . . . . . 7  |-  ( k  e.  { A }  ->  ( { <. A ,  J >. } `  k
)  =  ( {
<. A ,  J >. } `
 A ) )
32 fvsng 6057 . . . . . . . 8  |-  ( ( A  e.  V  /\  J  e.  (TopOn `  X
) )  ->  ( { <. A ,  J >. } `  A )  =  J )
332, 17, 32syl2anc 665 . . . . . . 7  |-  ( ph  ->  ( { <. A ,  J >. } `  A
)  =  J )
3431, 33sylan9eqr 2484 . . . . . 6  |-  ( (
ph  /\  k  e.  { A } )  -> 
( { <. A ,  J >. } `  k
)  =  J )
3534oveq2d 6265 . . . . 5  |-  ( (
ph  /\  k  e.  { A } )  -> 
( J  Cn  ( { <. A ,  J >. } `  k ) )  =  ( J  Cn  J ) )
3629, 35eleqtrrd 2509 . . . 4  |-  ( (
ph  /\  k  e.  { A } )  -> 
( x  e.  X  |->  x )  e.  ( J  Cn  ( {
<. A ,  J >. } `
 k ) ) )
3716, 17, 19, 27, 36ptcn 20584 . . 3  |-  ( ph  ->  ( x  e.  X  |->  ( k  e.  { A }  |->  x ) )  e.  ( J  Cn  K ) )
3815, 37eqeltrrd 2507 . 2  |-  ( ph  ->  ( x  e.  X  |->  { <. A ,  x >. } )  e.  ( J  Cn  K ) )
39 simprr 764 . . . . . . . . 9  |-  ( (
ph  /\  ( x  e.  X  /\  y  =  { <. A ,  x >. } ) )  -> 
y  =  { <. A ,  x >. } )
4014adantrr 721 . . . . . . . . 9  |-  ( (
ph  /\  ( x  e.  X  /\  y  =  { <. A ,  x >. } ) )  -> 
( k  e.  { A }  |->  x )  =  { <. A ,  x >. } )
4139, 40eqtr4d 2465 . . . . . . . 8  |-  ( (
ph  /\  ( x  e.  X  /\  y  =  { <. A ,  x >. } ) )  -> 
y  =  ( k  e.  { A }  |->  x ) )
42 simprl 762 . . . . . . . . . . 11  |-  ( (
ph  /\  ( x  e.  X  /\  y  =  { <. A ,  x >. } ) )  ->  x  e.  X )
4342adantr 466 . . . . . . . . . 10  |-  ( ( ( ph  /\  (
x  e.  X  /\  y  =  { <. A ,  x >. } ) )  /\  k  e.  { A } )  ->  x  e.  X )
44 eqid 2428 . . . . . . . . . 10  |-  ( k  e.  { A }  |->  x )  =  ( k  e.  { A }  |->  x )
4543, 44fmptd 6005 . . . . . . . . 9  |-  ( (
ph  /\  ( x  e.  X  /\  y  =  { <. A ,  x >. } ) )  -> 
( k  e.  { A }  |->  x ) : { A } --> X )
46 toponmax 19885 . . . . . . . . . . . 12  |-  ( J  e.  (TopOn `  X
)  ->  X  e.  J )
4717, 46syl 17 . . . . . . . . . . 11  |-  ( ph  ->  X  e.  J )
4847adantr 466 . . . . . . . . . 10  |-  ( (
ph  /\  ( x  e.  X  /\  y  =  { <. A ,  x >. } ) )  ->  X  e.  J )
49 elmapg 7440 . . . . . . . . . 10  |-  ( ( X  e.  J  /\  { A }  e.  _V )  ->  ( ( k  e.  { A }  |->  x )  e.  ( X  ^m  { A } )  <->  ( k  e.  { A }  |->  x ) : { A }
--> X ) )
5048, 18, 49sylancl 666 . . . . . . . . 9  |-  ( (
ph  /\  ( x  e.  X  /\  y  =  { <. A ,  x >. } ) )  -> 
( ( k  e. 
{ A }  |->  x )  e.  ( X  ^m  { A }
)  <->  ( k  e. 
{ A }  |->  x ) : { A }
--> X ) )
5145, 50mpbird 235 . . . . . . . 8  |-  ( (
ph  /\  ( x  e.  X  /\  y  =  { <. A ,  x >. } ) )  -> 
( k  e.  { A }  |->  x )  e.  ( X  ^m  { A } ) )
5241, 51eqeltrd 2506 . . . . . . 7  |-  ( (
ph  /\  ( x  e.  X  /\  y  =  { <. A ,  x >. } ) )  -> 
y  e.  ( X  ^m  { A }
) )
5339fveq1d 5827 . . . . . . . 8  |-  ( (
ph  /\  ( x  e.  X  /\  y  =  { <. A ,  x >. } ) )  -> 
( y `  A
)  =  ( {
<. A ,  x >. } `
 A ) )
542adantr 466 . . . . . . . . 9  |-  ( (
ph  /\  ( x  e.  X  /\  y  =  { <. A ,  x >. } ) )  ->  A  e.  V )
55 fvsng 6057 . . . . . . . . 9  |-  ( ( A  e.  V  /\  x  e.  X )  ->  ( { <. A ,  x >. } `  A
)  =  x )
5654, 42, 55syl2anc 665 . . . . . . . 8  |-  ( (
ph  /\  ( x  e.  X  /\  y  =  { <. A ,  x >. } ) )  -> 
( { <. A ,  x >. } `  A
)  =  x )
5753, 56eqtr2d 2463 . . . . . . 7  |-  ( (
ph  /\  ( x  e.  X  /\  y  =  { <. A ,  x >. } ) )  ->  x  =  ( y `  A ) )
5852, 57jca 534 . . . . . 6  |-  ( (
ph  /\  ( x  e.  X  /\  y  =  { <. A ,  x >. } ) )  -> 
( y  e.  ( X  ^m  { A } )  /\  x  =  ( y `  A ) ) )
59 simprr 764 . . . . . . . 8  |-  ( (
ph  /\  ( y  e.  ( X  ^m  { A } )  /\  x  =  ( y `  A ) ) )  ->  x  =  ( y `  A ) )
60 simprl 762 . . . . . . . . . 10  |-  ( (
ph  /\  ( y  e.  ( X  ^m  { A } )  /\  x  =  ( y `  A ) ) )  ->  y  e.  ( X  ^m  { A } ) )
6147adantr 466 . . . . . . . . . . 11  |-  ( (
ph  /\  ( y  e.  ( X  ^m  { A } )  /\  x  =  ( y `  A ) ) )  ->  X  e.  J
)
62 elmapg 7440 . . . . . . . . . . 11  |-  ( ( X  e.  J  /\  { A }  e.  _V )  ->  ( y  e.  ( X  ^m  { A } )  <->  y : { A } --> X ) )
6361, 18, 62sylancl 666 . . . . . . . . . 10  |-  ( (
ph  /\  ( y  e.  ( X  ^m  { A } )  /\  x  =  ( y `  A ) ) )  ->  ( y  e.  ( X  ^m  { A } )  <->  y : { A } --> X ) )
6460, 63mpbid 213 . . . . . . . . 9  |-  ( (
ph  /\  ( y  e.  ( X  ^m  { A } )  /\  x  =  ( y `  A ) ) )  ->  y : { A } --> X )
65 snidg 3967 . . . . . . . . . . 11  |-  ( A  e.  V  ->  A  e.  { A } )
662, 65syl 17 . . . . . . . . . 10  |-  ( ph  ->  A  e.  { A } )
6766adantr 466 . . . . . . . . 9  |-  ( (
ph  /\  ( y  e.  ( X  ^m  { A } )  /\  x  =  ( y `  A ) ) )  ->  A  e.  { A } )
6864, 67ffvelrnd 5982 . . . . . . . 8  |-  ( (
ph  /\  ( y  e.  ( X  ^m  { A } )  /\  x  =  ( y `  A ) ) )  ->  ( y `  A )  e.  X
)
6959, 68eqeltrd 2506 . . . . . . 7  |-  ( (
ph  /\  ( y  e.  ( X  ^m  { A } )  /\  x  =  ( y `  A ) ) )  ->  x  e.  X
)
702adantr 466 . . . . . . . . . . 11  |-  ( (
ph  /\  ( y  e.  ( X  ^m  { A } )  /\  x  =  ( y `  A ) ) )  ->  A  e.  V
)
714feq2d 5676 . . . . . . . . . . . 12  |-  ( k  =  A  ->  (
y : { k } --> X  <->  y : { A } --> X ) )
72 fveq2 5825 . . . . . . . . . . . . . 14  |-  ( k  =  A  ->  (
y `  k )  =  ( y `  A ) )
7372eleq1d 2490 . . . . . . . . . . . . 13  |-  ( k  =  A  ->  (
( y `  k
)  e.  X  <->  ( y `  A )  e.  X
) )
74 id 22 . . . . . . . . . . . . . . . 16  |-  ( k  =  A  ->  k  =  A )
7574, 72opeq12d 4138 . . . . . . . . . . . . . . 15  |-  ( k  =  A  ->  <. k ,  ( y `  k ) >.  =  <. A ,  ( y `  A ) >. )
7675sneqd 3953 . . . . . . . . . . . . . 14  |-  ( k  =  A  ->  { <. k ,  ( y `  k ) >. }  =  { <. A ,  ( y `  A )
>. } )
7776eqeq2d 2438 . . . . . . . . . . . . 13  |-  ( k  =  A  ->  (
y  =  { <. k ,  ( y `  k ) >. }  <->  y  =  { <. A ,  ( y `  A )
>. } ) )
7873, 77anbi12d 715 . . . . . . . . . . . 12  |-  ( k  =  A  ->  (
( ( y `  k )  e.  X  /\  y  =  { <. k ,  ( y `
 k ) >. } )  <->  ( (
y `  A )  e.  X  /\  y  =  { <. A ,  ( y `  A )
>. } ) ) )
799fsn2 6021 . . . . . . . . . . . 12  |-  ( y : { k } --> X  <->  ( ( y `
 k )  e.  X  /\  y  =  { <. k ,  ( y `  k )
>. } ) )
8071, 78, 79vtoclbg 3083 . . . . . . . . . . 11  |-  ( A  e.  V  ->  (
y : { A }
--> X  <->  ( ( y `
 A )  e.  X  /\  y  =  { <. A ,  ( y `  A )
>. } ) ) )
8170, 80syl 17 . . . . . . . . . 10  |-  ( (
ph  /\  ( y  e.  ( X  ^m  { A } )  /\  x  =  ( y `  A ) ) )  ->  ( y : { A } --> X  <->  ( (
y `  A )  e.  X  /\  y  =  { <. A ,  ( y `  A )
>. } ) ) )
8264, 81mpbid 213 . . . . . . . . 9  |-  ( (
ph  /\  ( y  e.  ( X  ^m  { A } )  /\  x  =  ( y `  A ) ) )  ->  ( ( y `
 A )  e.  X  /\  y  =  { <. A ,  ( y `  A )
>. } ) )
8382simprd 464 . . . . . . . 8  |-  ( (
ph  /\  ( y  e.  ( X  ^m  { A } )  /\  x  =  ( y `  A ) ) )  ->  y  =  { <. A ,  ( y `
 A ) >. } )
8459opeq2d 4137 . . . . . . . . 9  |-  ( (
ph  /\  ( y  e.  ( X  ^m  { A } )  /\  x  =  ( y `  A ) ) )  ->  <. A ,  x >.  =  <. A ,  ( y `  A )
>. )
8584sneqd 3953 . . . . . . . 8  |-  ( (
ph  /\  ( y  e.  ( X  ^m  { A } )  /\  x  =  ( y `  A ) ) )  ->  { <. A ,  x >. }  =  { <. A ,  ( y `
 A ) >. } )
8683, 85eqtr4d 2465 . . . . . . 7  |-  ( (
ph  /\  ( y  e.  ( X  ^m  { A } )  /\  x  =  ( y `  A ) ) )  ->  y  =  { <. A ,  x >. } )
8769, 86jca 534 . . . . . 6  |-  ( (
ph  /\  ( y  e.  ( X  ^m  { A } )  /\  x  =  ( y `  A ) ) )  ->  ( x  e.  X  /\  y  =  { <. A ,  x >. } ) )
8858, 87impbida 840 . . . . 5  |-  ( ph  ->  ( ( x  e.  X  /\  y  =  { <. A ,  x >. } )  <->  ( y  e.  ( X  ^m  { A } )  /\  x  =  ( y `  A ) ) ) )
8988mptcnv 5200 . . . 4  |-  ( ph  ->  `' ( x  e.  X  |->  { <. A ,  x >. } )  =  ( y  e.  ( X  ^m  { A } )  |->  ( y `
 A ) ) )
90 xpsng 6024 . . . . . . . . . . 11  |-  ( ( A  e.  V  /\  J  e.  (TopOn `  X
) )  ->  ( { A }  X.  { J } )  =  { <. A ,  J >. } )
912, 17, 90syl2anc 665 . . . . . . . . . 10  |-  ( ph  ->  ( { A }  X.  { J } )  =  { <. A ,  J >. } )
9291eqcomd 2434 . . . . . . . . 9  |-  ( ph  ->  { <. A ,  J >. }  =  ( { A }  X.  { J } ) )
9392fveq2d 5829 . . . . . . . 8  |-  ( ph  ->  ( Xt_ `  { <. A ,  J >. } )  =  ( Xt_ `  ( { A }  X.  { J } ) ) )
9416, 93syl5eq 2474 . . . . . . 7  |-  ( ph  ->  K  =  ( Xt_ `  ( { A }  X.  { J } ) ) )
95 eqid 2428 . . . . . . . . 9  |-  ( Xt_ `  ( { A }  X.  { J } ) )  =  ( Xt_ `  ( { A }  X.  { J } ) )
9695pttoponconst 20554 . . . . . . . 8  |-  ( ( { A }  e.  _V  /\  J  e.  (TopOn `  X ) )  -> 
( Xt_ `  ( { A }  X.  { J } ) )  e.  (TopOn `  ( X  ^m  { A } ) ) )
9719, 17, 96syl2anc 665 . . . . . . 7  |-  ( ph  ->  ( Xt_ `  ( { A }  X.  { J } ) )  e.  (TopOn `  ( X  ^m  { A } ) ) )
9894, 97eqeltrd 2506 . . . . . 6  |-  ( ph  ->  K  e.  (TopOn `  ( X  ^m  { A } ) ) )
99 toponuni 19884 . . . . . 6  |-  ( K  e.  (TopOn `  ( X  ^m  { A }
) )  ->  ( X  ^m  { A }
)  =  U. K
)
10098, 99syl 17 . . . . 5  |-  ( ph  ->  ( X  ^m  { A } )  =  U. K )
101100mpteq1d 4448 . . . 4  |-  ( ph  ->  ( y  e.  ( X  ^m  { A } )  |->  ( y `
 A ) )  =  ( y  e. 
U. K  |->  ( y `
 A ) ) )
10289, 101eqtrd 2462 . . 3  |-  ( ph  ->  `' ( x  e.  X  |->  { <. A ,  x >. } )  =  ( y  e.  U. K  |->  ( y `  A ) ) )
103 eqid 2428 . . . . . 6  |-  U. K  =  U. K
104103, 16ptpjcn 20568 . . . . 5  |-  ( ( { A }  e.  _V  /\  { <. A ,  J >. } : { A } --> Top  /\  A  e. 
{ A } )  ->  ( y  e. 
U. K  |->  ( y `
 A ) )  e.  ( K  Cn  ( { <. A ,  J >. } `  A ) ) )
10519, 27, 66, 104syl3anc 1264 . . . 4  |-  ( ph  ->  ( y  e.  U. K  |->  ( y `  A ) )  e.  ( K  Cn  ( { <. A ,  J >. } `  A ) ) )
10633oveq2d 6265 . . . 4  |-  ( ph  ->  ( K  Cn  ( { <. A ,  J >. } `  A ) )  =  ( K  Cn  J ) )
107105, 106eleqtrd 2508 . . 3  |-  ( ph  ->  ( y  e.  U. K  |->  ( y `  A ) )  e.  ( K  Cn  J
) )
108102, 107eqeltrd 2506 . 2  |-  ( ph  ->  `' ( x  e.  X  |->  { <. A ,  x >. } )  e.  ( K  Cn  J
) )
109 ishmeo 20716 . 2  |-  ( ( x  e.  X  |->  {
<. A ,  x >. } )  e.  ( J
Homeo K )  <->  ( (
x  e.  X  |->  {
<. A ,  x >. } )  e.  ( J  Cn  K )  /\  `' ( x  e.  X  |->  { <. A ,  x >. } )  e.  ( K  Cn  J
) ) )
11038, 108, 109sylanbrc 668 1  |-  ( ph  ->  ( x  e.  X  |->  { <. A ,  x >. } )  e.  ( J Homeo K ) )
Colors of variables: wff setvar class
Syntax hints:    -> wi 4    <-> wb 187    /\ wa 370    = wceq 1437    e. wcel 1872   _Vcvv 3022   {csn 3941   <.cop 3947   U.cuni 4162    |-> cmpt 4425    X. cxp 4794   `'ccnv 4795   -->wf 5540   -1-1-onto->wf1o 5543   ` cfv 5544  (class class class)co 6249    ^m cmap 7427   Xt_cpt 15280   Topctop 19859  TopOnctopon 19860    Cn ccn 20182   Homeochmeo 20710
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1663  ax-4 1676  ax-5 1752  ax-6 1798  ax-7 1843  ax-8 1874  ax-9 1876  ax-10 1891  ax-11 1896  ax-12 1909  ax-13 2063  ax-ext 2408  ax-rep 4479  ax-sep 4489  ax-nul 4498  ax-pow 4545  ax-pr 4603  ax-un 6541
This theorem depends on definitions:  df-bi 188  df-or 371  df-an 372  df-3or 983  df-3an 984  df-tru 1440  df-ex 1658  df-nf 1662  df-sb 1791  df-eu 2280  df-mo 2281  df-clab 2415  df-cleq 2421  df-clel 2424  df-nfc 2558  df-ne 2601  df-ral 2719  df-rex 2720  df-reu 2721  df-rab 2723  df-v 3024  df-sbc 3243  df-csb 3339  df-dif 3382  df-un 3384  df-in 3386  df-ss 3393  df-pss 3395  df-nul 3705  df-if 3855  df-pw 3926  df-sn 3942  df-pr 3944  df-tp 3946  df-op 3948  df-uni 4163  df-int 4199  df-iun 4244  df-iin 4245  df-br 4367  df-opab 4426  df-mpt 4427  df-tr 4462  df-eprel 4707  df-id 4711  df-po 4717  df-so 4718  df-fr 4755  df-we 4757  df-xp 4802  df-rel 4803  df-cnv 4804  df-co 4805  df-dm 4806  df-rn 4807  df-res 4808  df-ima 4809  df-pred 5342  df-ord 5388  df-on 5389  df-lim 5390  df-suc 5391  df-iota 5508  df-fun 5546  df-fn 5547  df-f 5548  df-f1 5549  df-fo 5550  df-f1o 5551  df-fv 5552  df-ov 6252  df-oprab 6253  df-mpt2 6254  df-om 6651  df-1st 6751  df-2nd 6752  df-wrecs 6983  df-recs 7045  df-rdg 7083  df-1o 7137  df-oadd 7141  df-er 7318  df-map 7429  df-ixp 7478  df-en 7525  df-dom 7526  df-fin 7528  df-fi 7878  df-topgen 15285  df-pt 15286  df-top 19863  df-bases 19864  df-topon 19865  df-cn 20185  df-cnp 20186  df-hmeo 20712
This theorem is referenced by:  xpstopnlem1  20766  ptcmpfi  20770
  Copyright terms: Public domain W3C validator