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

Theorem pt1hmeo 20870
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 4897 . . . . 5  |-  ( { A }  X.  {
x } )  =  ( k  e.  { A }  |->  x )
2 pt1hmeo.a . . . . . . 7  |-  ( ph  ->  A  e.  V )
32adantr 471 . . . . . 6  |-  ( (
ph  /\  x  e.  X )  ->  A  e.  V )
4 sneq 3990 . . . . . . . . 9  |-  ( k  =  A  ->  { k }  =  { A } )
54xpeq1d 4876 . . . . . . . 8  |-  ( k  =  A  ->  ( { k }  X.  { x } )  =  ( { A }  X.  { x }
) )
6 opeq1 4180 . . . . . . . . 9  |-  ( k  =  A  ->  <. k ,  x >.  =  <. A ,  x >. )
76sneqd 3992 . . . . . . . 8  |-  ( k  =  A  ->  { <. k ,  x >. }  =  { <. A ,  x >. } )
85, 7eqeq12d 2477 . . . . . . 7  |-  ( k  =  A  ->  (
( { k }  X.  { x }
)  =  { <. k ,  x >. }  <->  ( { A }  X.  { x } )  =  { <. A ,  x >. } ) )
9 vex 3060 . . . . . . . 8  |-  k  e. 
_V
10 vex 3060 . . . . . . . 8  |-  x  e. 
_V
119, 10xpsn 6090 . . . . . . 7  |-  ( { k }  X.  {
x } )  =  { <. k ,  x >. }
128, 11vtoclg 3119 . . . . . 6  |-  ( A  e.  V  ->  ( { A }  X.  {
x } )  =  { <. A ,  x >. } )
133, 12syl 17 . . . . 5  |-  ( (
ph  /\  x  e.  X )  ->  ( { A }  X.  {
x } )  =  { <. A ,  x >. } )
141, 13syl5eqr 2510 . . . 4  |-  ( (
ph  /\  x  e.  X )  ->  (
k  e.  { A }  |->  x )  =  { <. A ,  x >. } )
1514mpteq2dva 4503 . . 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 4655 . . . . 5  |-  { A }  e.  _V
1918a1i 11 . . . 4  |-  ( ph  ->  { A }  e.  _V )
20 f1osng 5876 . . . . . . 7  |-  ( ( A  e.  V  /\  J  e.  (TopOn `  X
) )  ->  { <. A ,  J >. } : { A } -1-1-onto-> { J } )
212, 17, 20syl2anc 671 . . . . . 6  |-  ( ph  ->  { <. A ,  J >. } : { A }
-1-1-onto-> { J } )
22 f1of 5837 . . . . . 6  |-  ( {
<. A ,  J >. } : { A } -1-1-onto-> { J }  ->  { <. A ,  J >. } : { A } --> { J } )
2321, 22syl 17 . . . . 5  |-  ( ph  ->  { <. A ,  J >. } : { A }
--> { J } )
24 topontop 19990 . . . . . . 7  |-  ( J  e.  (TopOn `  X
)  ->  J  e.  Top )
2517, 24syl 17 . . . . . 6  |-  ( ph  ->  J  e.  Top )
2625snssd 4130 . . . . 5  |-  ( ph  ->  { J }  C_  Top )
2723, 26fssd 5761 . . . 4  |-  ( ph  ->  { <. A ,  J >. } : { A }
--> Top )
2817cnmptid 20725 . . . . . 6  |-  ( ph  ->  ( x  e.  X  |->  x )  e.  ( J  Cn  J ) )
2928adantr 471 . . . . 5  |-  ( (
ph  /\  k  e.  { A } )  -> 
( x  e.  X  |->  x )  e.  ( J  Cn  J ) )
30 elsni 4005 . . . . . . . 8  |-  ( k  e.  { A }  ->  k  =  A )
3130fveq2d 5892 . . . . . . 7  |-  ( k  e.  { A }  ->  ( { <. A ,  J >. } `  k
)  =  ( {
<. A ,  J >. } `
 A ) )
32 fvsng 6122 . . . . . . . 8  |-  ( ( A  e.  V  /\  J  e.  (TopOn `  X
) )  ->  ( { <. A ,  J >. } `  A )  =  J )
332, 17, 32syl2anc 671 . . . . . . 7  |-  ( ph  ->  ( { <. A ,  J >. } `  A
)  =  J )
3431, 33sylan9eqr 2518 . . . . . 6  |-  ( (
ph  /\  k  e.  { A } )  -> 
( { <. A ,  J >. } `  k
)  =  J )
3534oveq2d 6331 . . . . 5  |-  ( (
ph  /\  k  e.  { A } )  -> 
( J  Cn  ( { <. A ,  J >. } `  k ) )  =  ( J  Cn  J ) )
3629, 35eleqtrrd 2543 . . . 4  |-  ( (
ph  /\  k  e.  { A } )  -> 
( x  e.  X  |->  x )  e.  ( J  Cn  ( {
<. A ,  J >. } `
 k ) ) )
3716, 17, 19, 27, 36ptcn 20691 . . 3  |-  ( ph  ->  ( x  e.  X  |->  ( k  e.  { A }  |->  x ) )  e.  ( J  Cn  K ) )
3815, 37eqeltrrd 2541 . 2  |-  ( ph  ->  ( x  e.  X  |->  { <. A ,  x >. } )  e.  ( J  Cn  K ) )
39 simprr 771 . . . . . . . . 9  |-  ( (
ph  /\  ( x  e.  X  /\  y  =  { <. A ,  x >. } ) )  -> 
y  =  { <. A ,  x >. } )
4014adantrr 728 . . . . . . . . 9  |-  ( (
ph  /\  ( x  e.  X  /\  y  =  { <. A ,  x >. } ) )  -> 
( k  e.  { A }  |->  x )  =  { <. A ,  x >. } )
4139, 40eqtr4d 2499 . . . . . . . 8  |-  ( (
ph  /\  ( x  e.  X  /\  y  =  { <. A ,  x >. } ) )  -> 
y  =  ( k  e.  { A }  |->  x ) )
42 simprl 769 . . . . . . . . . . 11  |-  ( (
ph  /\  ( x  e.  X  /\  y  =  { <. A ,  x >. } ) )  ->  x  e.  X )
4342adantr 471 . . . . . . . . . 10  |-  ( ( ( ph  /\  (
x  e.  X  /\  y  =  { <. A ,  x >. } ) )  /\  k  e.  { A } )  ->  x  e.  X )
44 eqid 2462 . . . . . . . . . 10  |-  ( k  e.  { A }  |->  x )  =  ( k  e.  { A }  |->  x )
4543, 44fmptd 6069 . . . . . . . . 9  |-  ( (
ph  /\  ( x  e.  X  /\  y  =  { <. A ,  x >. } ) )  -> 
( k  e.  { A }  |->  x ) : { A } --> X )
46 toponmax 19992 . . . . . . . . . . . 12  |-  ( J  e.  (TopOn `  X
)  ->  X  e.  J )
4717, 46syl 17 . . . . . . . . . . 11  |-  ( ph  ->  X  e.  J )
4847adantr 471 . . . . . . . . . 10  |-  ( (
ph  /\  ( x  e.  X  /\  y  =  { <. A ,  x >. } ) )  ->  X  e.  J )
49 elmapg 7511 . . . . . . . . . 10  |-  ( ( X  e.  J  /\  { A }  e.  _V )  ->  ( ( k  e.  { A }  |->  x )  e.  ( X  ^m  { A } )  <->  ( k  e.  { A }  |->  x ) : { A }
--> X ) )
5048, 18, 49sylancl 673 . . . . . . . . 9  |-  ( (
ph  /\  ( x  e.  X  /\  y  =  { <. A ,  x >. } ) )  -> 
( ( k  e. 
{ A }  |->  x )  e.  ( X  ^m  { A }
)  <->  ( k  e. 
{ A }  |->  x ) : { A }
--> X ) )
5145, 50mpbird 240 . . . . . . . 8  |-  ( (
ph  /\  ( x  e.  X  /\  y  =  { <. A ,  x >. } ) )  -> 
( k  e.  { A }  |->  x )  e.  ( X  ^m  { A } ) )
5241, 51eqeltrd 2540 . . . . . . 7  |-  ( (
ph  /\  ( x  e.  X  /\  y  =  { <. A ,  x >. } ) )  -> 
y  e.  ( X  ^m  { A }
) )
5339fveq1d 5890 . . . . . . . 8  |-  ( (
ph  /\  ( x  e.  X  /\  y  =  { <. A ,  x >. } ) )  -> 
( y `  A
)  =  ( {
<. A ,  x >. } `
 A ) )
542adantr 471 . . . . . . . . 9  |-  ( (
ph  /\  ( x  e.  X  /\  y  =  { <. A ,  x >. } ) )  ->  A  e.  V )
55 fvsng 6122 . . . . . . . . 9  |-  ( ( A  e.  V  /\  x  e.  X )  ->  ( { <. A ,  x >. } `  A
)  =  x )
5654, 42, 55syl2anc 671 . . . . . . . 8  |-  ( (
ph  /\  ( x  e.  X  /\  y  =  { <. A ,  x >. } ) )  -> 
( { <. A ,  x >. } `  A
)  =  x )
5753, 56eqtr2d 2497 . . . . . . 7  |-  ( (
ph  /\  ( x  e.  X  /\  y  =  { <. A ,  x >. } ) )  ->  x  =  ( y `  A ) )
5852, 57jca 539 . . . . . 6  |-  ( (
ph  /\  ( x  e.  X  /\  y  =  { <. A ,  x >. } ) )  -> 
( y  e.  ( X  ^m  { A } )  /\  x  =  ( y `  A ) ) )
59 simprr 771 . . . . . . . 8  |-  ( (
ph  /\  ( y  e.  ( X  ^m  { A } )  /\  x  =  ( y `  A ) ) )  ->  x  =  ( y `  A ) )
60 simprl 769 . . . . . . . . . 10  |-  ( (
ph  /\  ( y  e.  ( X  ^m  { A } )  /\  x  =  ( y `  A ) ) )  ->  y  e.  ( X  ^m  { A } ) )
6147adantr 471 . . . . . . . . . . 11  |-  ( (
ph  /\  ( y  e.  ( X  ^m  { A } )  /\  x  =  ( y `  A ) ) )  ->  X  e.  J
)
62 elmapg 7511 . . . . . . . . . . 11  |-  ( ( X  e.  J  /\  { A }  e.  _V )  ->  ( y  e.  ( X  ^m  { A } )  <->  y : { A } --> X ) )
6361, 18, 62sylancl 673 . . . . . . . . . 10  |-  ( (
ph  /\  ( y  e.  ( X  ^m  { A } )  /\  x  =  ( y `  A ) ) )  ->  ( y  e.  ( X  ^m  { A } )  <->  y : { A } --> X ) )
6460, 63mpbid 215 . . . . . . . . 9  |-  ( (
ph  /\  ( y  e.  ( X  ^m  { A } )  /\  x  =  ( y `  A ) ) )  ->  y : { A } --> X )
65 snidg 4006 . . . . . . . . . . 11  |-  ( A  e.  V  ->  A  e.  { A } )
662, 65syl 17 . . . . . . . . . 10  |-  ( ph  ->  A  e.  { A } )
6766adantr 471 . . . . . . . . 9  |-  ( (
ph  /\  ( y  e.  ( X  ^m  { A } )  /\  x  =  ( y `  A ) ) )  ->  A  e.  { A } )
6864, 67ffvelrnd 6046 . . . . . . . 8  |-  ( (
ph  /\  ( y  e.  ( X  ^m  { A } )  /\  x  =  ( y `  A ) ) )  ->  ( y `  A )  e.  X
)
6959, 68eqeltrd 2540 . . . . . . 7  |-  ( (
ph  /\  ( y  e.  ( X  ^m  { A } )  /\  x  =  ( y `  A ) ) )  ->  x  e.  X
)
702adantr 471 . . . . . . . . . . 11  |-  ( (
ph  /\  ( y  e.  ( X  ^m  { A } )  /\  x  =  ( y `  A ) ) )  ->  A  e.  V
)
714feq2d 5737 . . . . . . . . . . . 12  |-  ( k  =  A  ->  (
y : { k } --> X  <->  y : { A } --> X ) )
72 fveq2 5888 . . . . . . . . . . . . . 14  |-  ( k  =  A  ->  (
y `  k )  =  ( y `  A ) )
7372eleq1d 2524 . . . . . . . . . . . . 13  |-  ( k  =  A  ->  (
( y `  k
)  e.  X  <->  ( y `  A )  e.  X
) )
74 id 22 . . . . . . . . . . . . . . . 16  |-  ( k  =  A  ->  k  =  A )
7574, 72opeq12d 4188 . . . . . . . . . . . . . . 15  |-  ( k  =  A  ->  <. k ,  ( y `  k ) >.  =  <. A ,  ( y `  A ) >. )
7675sneqd 3992 . . . . . . . . . . . . . 14  |-  ( k  =  A  ->  { <. k ,  ( y `  k ) >. }  =  { <. A ,  ( y `  A )
>. } )
7776eqeq2d 2472 . . . . . . . . . . . . 13  |-  ( k  =  A  ->  (
y  =  { <. k ,  ( y `  k ) >. }  <->  y  =  { <. A ,  ( y `  A )
>. } ) )
7873, 77anbi12d 722 . . . . . . . . . . . 12  |-  ( k  =  A  ->  (
( ( y `  k )  e.  X  /\  y  =  { <. k ,  ( y `
 k ) >. } )  <->  ( (
y `  A )  e.  X  /\  y  =  { <. A ,  ( y `  A )
>. } ) ) )
799fsn2 6086 . . . . . . . . . . . 12  |-  ( y : { k } --> X  <->  ( ( y `
 k )  e.  X  /\  y  =  { <. k ,  ( y `  k )
>. } ) )
8071, 78, 79vtoclbg 3120 . . . . . . . . . . 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 215 . . . . . . . . 9  |-  ( (
ph  /\  ( y  e.  ( X  ^m  { A } )  /\  x  =  ( y `  A ) ) )  ->  ( ( y `
 A )  e.  X  /\  y  =  { <. A ,  ( y `  A )
>. } ) )
8382simprd 469 . . . . . . . 8  |-  ( (
ph  /\  ( y  e.  ( X  ^m  { A } )  /\  x  =  ( y `  A ) ) )  ->  y  =  { <. A ,  ( y `
 A ) >. } )
8459opeq2d 4187 . . . . . . . . 9  |-  ( (
ph  /\  ( y  e.  ( X  ^m  { A } )  /\  x  =  ( y `  A ) ) )  ->  <. A ,  x >.  =  <. A ,  ( y `  A )
>. )
8584sneqd 3992 . . . . . . . 8  |-  ( (
ph  /\  ( y  e.  ( X  ^m  { A } )  /\  x  =  ( y `  A ) ) )  ->  { <. A ,  x >. }  =  { <. A ,  ( y `
 A ) >. } )
8683, 85eqtr4d 2499 . . . . . . 7  |-  ( (
ph  /\  ( y  e.  ( X  ^m  { A } )  /\  x  =  ( y `  A ) ) )  ->  y  =  { <. A ,  x >. } )
8769, 86jca 539 . . . . . 6  |-  ( (
ph  /\  ( y  e.  ( X  ^m  { A } )  /\  x  =  ( y `  A ) ) )  ->  ( x  e.  X  /\  y  =  { <. A ,  x >. } ) )
8858, 87impbida 848 . . . . 5  |-  ( ph  ->  ( ( x  e.  X  /\  y  =  { <. A ,  x >. } )  <->  ( y  e.  ( X  ^m  { A } )  /\  x  =  ( y `  A ) ) ) )
8988mptcnv 5257 . . . 4  |-  ( ph  ->  `' ( x  e.  X  |->  { <. A ,  x >. } )  =  ( y  e.  ( X  ^m  { A } )  |->  ( y `
 A ) ) )
90 xpsng 6089 . . . . . . . . . . 11  |-  ( ( A  e.  V  /\  J  e.  (TopOn `  X
) )  ->  ( { A }  X.  { J } )  =  { <. A ,  J >. } )
912, 17, 90syl2anc 671 . . . . . . . . . 10  |-  ( ph  ->  ( { A }  X.  { J } )  =  { <. A ,  J >. } )
9291eqcomd 2468 . . . . . . . . 9  |-  ( ph  ->  { <. A ,  J >. }  =  ( { A }  X.  { J } ) )
9392fveq2d 5892 . . . . . . . 8  |-  ( ph  ->  ( Xt_ `  { <. A ,  J >. } )  =  ( Xt_ `  ( { A }  X.  { J } ) ) )
9416, 93syl5eq 2508 . . . . . . 7  |-  ( ph  ->  K  =  ( Xt_ `  ( { A }  X.  { J } ) ) )
95 eqid 2462 . . . . . . . . 9  |-  ( Xt_ `  ( { A }  X.  { J } ) )  =  ( Xt_ `  ( { A }  X.  { J } ) )
9695pttoponconst 20661 . . . . . . . 8  |-  ( ( { A }  e.  _V  /\  J  e.  (TopOn `  X ) )  -> 
( Xt_ `  ( { A }  X.  { J } ) )  e.  (TopOn `  ( X  ^m  { A } ) ) )
9719, 17, 96syl2anc 671 . . . . . . 7  |-  ( ph  ->  ( Xt_ `  ( { A }  X.  { J } ) )  e.  (TopOn `  ( X  ^m  { A } ) ) )
9894, 97eqeltrd 2540 . . . . . 6  |-  ( ph  ->  K  e.  (TopOn `  ( X  ^m  { A } ) ) )
99 toponuni 19991 . . . . . 6  |-  ( K  e.  (TopOn `  ( X  ^m  { A }
) )  ->  ( X  ^m  { A }
)  =  U. K
)
10098, 99syl 17 . . . . 5  |-  ( ph  ->  ( X  ^m  { A } )  =  U. K )
101100mpteq1d 4498 . . . 4  |-  ( ph  ->  ( y  e.  ( X  ^m  { A } )  |->  ( y `
 A ) )  =  ( y  e. 
U. K  |->  ( y `
 A ) ) )
10289, 101eqtrd 2496 . . 3  |-  ( ph  ->  `' ( x  e.  X  |->  { <. A ,  x >. } )  =  ( y  e.  U. K  |->  ( y `  A ) ) )
103 eqid 2462 . . . . . 6  |-  U. K  =  U. K
104103, 16ptpjcn 20675 . . . . 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 1276 . . . 4  |-  ( ph  ->  ( y  e.  U. K  |->  ( y `  A ) )  e.  ( K  Cn  ( { <. A ,  J >. } `  A ) ) )
10633oveq2d 6331 . . . 4  |-  ( ph  ->  ( K  Cn  ( { <. A ,  J >. } `  A ) )  =  ( K  Cn  J ) )
107105, 106eleqtrd 2542 . . 3  |-  ( ph  ->  ( y  e.  U. K  |->  ( y `  A ) )  e.  ( K  Cn  J
) )
108102, 107eqeltrd 2540 . 2  |-  ( ph  ->  `' ( x  e.  X  |->  { <. A ,  x >. } )  e.  ( K  Cn  J
) )
109 ishmeo 20823 . 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 675 1  |-  ( ph  ->  ( x  e.  X  |->  { <. A ,  x >. } )  e.  ( J Homeo K ) )
Colors of variables: wff setvar class
Syntax hints:    -> wi 4    <-> wb 189    /\ wa 375    = wceq 1455    e. wcel 1898   _Vcvv 3057   {csn 3980   <.cop 3986   U.cuni 4212    |-> cmpt 4475    X. cxp 4851   `'ccnv 4852   -->wf 5597   -1-1-onto->wf1o 5600   ` cfv 5601  (class class class)co 6315    ^m cmap 7498   Xt_cpt 15386   Topctop 19966  TopOnctopon 19967    Cn ccn 20289   Homeochmeo 20817
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1680  ax-4 1693  ax-5 1769  ax-6 1816  ax-7 1862  ax-8 1900  ax-9 1907  ax-10 1926  ax-11 1931  ax-12 1944  ax-13 2102  ax-ext 2442  ax-rep 4529  ax-sep 4539  ax-nul 4548  ax-pow 4595  ax-pr 4653  ax-un 6610
This theorem depends on definitions:  df-bi 190  df-or 376  df-an 377  df-3or 992  df-3an 993  df-tru 1458  df-ex 1675  df-nf 1679  df-sb 1809  df-eu 2314  df-mo 2315  df-clab 2449  df-cleq 2455  df-clel 2458  df-nfc 2592  df-ne 2635  df-ral 2754  df-rex 2755  df-reu 2756  df-rab 2758  df-v 3059  df-sbc 3280  df-csb 3376  df-dif 3419  df-un 3421  df-in 3423  df-ss 3430  df-pss 3432  df-nul 3744  df-if 3894  df-pw 3965  df-sn 3981  df-pr 3983  df-tp 3985  df-op 3987  df-uni 4213  df-int 4249  df-iun 4294  df-iin 4295  df-br 4417  df-opab 4476  df-mpt 4477  df-tr 4512  df-eprel 4764  df-id 4768  df-po 4774  df-so 4775  df-fr 4812  df-we 4814  df-xp 4859  df-rel 4860  df-cnv 4861  df-co 4862  df-dm 4863  df-rn 4864  df-res 4865  df-ima 4866  df-pred 5399  df-ord 5445  df-on 5446  df-lim 5447  df-suc 5448  df-iota 5565  df-fun 5603  df-fn 5604  df-f 5605  df-f1 5606  df-fo 5607  df-f1o 5608  df-fv 5609  df-ov 6318  df-oprab 6319  df-mpt2 6320  df-om 6720  df-1st 6820  df-2nd 6821  df-wrecs 7054  df-recs 7116  df-rdg 7154  df-1o 7208  df-oadd 7212  df-er 7389  df-map 7500  df-ixp 7549  df-en 7596  df-dom 7597  df-fin 7599  df-fi 7951  df-topgen 15391  df-pt 15392  df-top 19970  df-bases 19971  df-topon 19972  df-cn 20292  df-cnp 20293  df-hmeo 20819
This theorem is referenced by:  xpstopnlem1  20873  ptcmpfi  20877
  Copyright terms: Public domain W3C validator