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

Theorem hashf1 11661
Description: The permutation number  |  A  |  !  x.  (  |  B  |  _C  |  A  |  )  =  |  B  |  !  /  (  |  B  |  -  |  A  | 
) ! counts the number of injections from  A to  B. (Contributed by Mario Carneiro, 21-Jan-2015.)
Assertion
Ref Expression
hashf1  |-  ( ( A  e.  Fin  /\  B  e.  Fin )  ->  ( # `  {
f  |  f : A -1-1-> B } )  =  ( ( ! `
 ( # `  A
) )  x.  (
( # `  B )  _C  ( # `  A
) ) ) )
Distinct variable groups:    A, f    B, f

Proof of Theorem hashf1
Dummy variables  x  y  z are mutually distinct and distinct from all other variables.
StepHypRef Expression
1 f1eq2 5594 . . . . . . . . 9  |-  ( x  =  (/)  ->  ( f : x -1-1-> B  <->  f : (/) -1-1->
B ) )
2 f1fn 5599 . . . . . . . . . . . 12  |-  ( f : (/) -1-1-> B  ->  f  Fn  (/) )
3 fn0 5523 . . . . . . . . . . . 12  |-  ( f  Fn  (/)  <->  f  =  (/) )
42, 3sylib 189 . . . . . . . . . . 11  |-  ( f : (/) -1-1-> B  ->  f  =  (/) )
5 f10 5668 . . . . . . . . . . . 12  |-  (/) : (/) -1-1-> B
6 f1eq1 5593 . . . . . . . . . . . 12  |-  ( f  =  (/)  ->  ( f : (/) -1-1-> B  <->  (/) : (/) -1-1-> B ) )
75, 6mpbiri 225 . . . . . . . . . . 11  |-  ( f  =  (/)  ->  f :
(/) -1-1-> B )
84, 7impbii 181 . . . . . . . . . 10  |-  ( f : (/) -1-1-> B  <->  f  =  (/) )
9 elsn 3789 . . . . . . . . . 10  |-  ( f  e.  { (/) }  <->  f  =  (/) )
108, 9bitr4i 244 . . . . . . . . 9  |-  ( f : (/) -1-1-> B  <->  f  e.  { (/)
} )
111, 10syl6bb 253 . . . . . . . 8  |-  ( x  =  (/)  ->  ( f : x -1-1-> B  <->  f  e.  {
(/) } ) )
1211abbi1dv 2520 . . . . . . 7  |-  ( x  =  (/)  ->  { f  |  f : x
-1-1-> B }  =  { (/)
} )
1312fveq2d 5691 . . . . . 6  |-  ( x  =  (/)  ->  ( # `  { f  |  f : x -1-1-> B }
)  =  ( # `  { (/) } ) )
14 0ex 4299 . . . . . . 7  |-  (/)  e.  _V
15 hashsng 11602 . . . . . . 7  |-  ( (/)  e.  _V  ->  ( # `  { (/)
} )  =  1 )
1614, 15ax-mp 8 . . . . . 6  |-  ( # `  { (/) } )  =  1
1713, 16syl6eq 2452 . . . . 5  |-  ( x  =  (/)  ->  ( # `  { f  |  f : x -1-1-> B }
)  =  1 )
18 fveq2 5687 . . . . . . . . 9  |-  ( x  =  (/)  ->  ( # `  x )  =  (
# `  (/) ) )
19 hash0 11601 . . . . . . . . 9  |-  ( # `  (/) )  =  0
2018, 19syl6eq 2452 . . . . . . . 8  |-  ( x  =  (/)  ->  ( # `  x )  =  0 )
2120fveq2d 5691 . . . . . . 7  |-  ( x  =  (/)  ->  ( ! `
 ( # `  x
) )  =  ( ! `  0 ) )
22 fac0 11524 . . . . . . 7  |-  ( ! `
 0 )  =  1
2321, 22syl6eq 2452 . . . . . 6  |-  ( x  =  (/)  ->  ( ! `
 ( # `  x
) )  =  1 )
2420oveq2d 6056 . . . . . 6  |-  ( x  =  (/)  ->  ( (
# `  B )  _C  ( # `  x
) )  =  ( ( # `  B
)  _C  0 ) )
2523, 24oveq12d 6058 . . . . 5  |-  ( x  =  (/)  ->  ( ( ! `  ( # `  x ) )  x.  ( ( # `  B
)  _C  ( # `  x ) ) )  =  ( 1  x.  ( ( # `  B
)  _C  0 ) ) )
2617, 25eqeq12d 2418 . . . 4  |-  ( x  =  (/)  ->  ( (
# `  { f  |  f : x
-1-1-> B } )  =  ( ( ! `  ( # `  x ) )  x.  ( (
# `  B )  _C  ( # `  x
) ) )  <->  1  =  ( 1  x.  (
( # `  B )  _C  0 ) ) ) )
2726imbi2d 308 . . 3  |-  ( x  =  (/)  ->  ( ( B  e.  Fin  ->  (
# `  { f  |  f : x
-1-1-> B } )  =  ( ( ! `  ( # `  x ) )  x.  ( (
# `  B )  _C  ( # `  x
) ) ) )  <-> 
( B  e.  Fin  ->  1  =  ( 1  x.  ( ( # `  B )  _C  0
) ) ) ) )
28 f1eq2 5594 . . . . . . 7  |-  ( x  =  y  ->  (
f : x -1-1-> B  <->  f : y -1-1-> B ) )
2928abbidv 2518 . . . . . 6  |-  ( x  =  y  ->  { f  |  f : x
-1-1-> B }  =  {
f  |  f : y -1-1-> B } )
3029fveq2d 5691 . . . . 5  |-  ( x  =  y  ->  ( # `
 { f  |  f : x -1-1-> B } )  =  (
# `  { f  |  f : y
-1-1-> B } ) )
31 fveq2 5687 . . . . . . 7  |-  ( x  =  y  ->  ( # `
 x )  =  ( # `  y
) )
3231fveq2d 5691 . . . . . 6  |-  ( x  =  y  ->  ( ! `  ( # `  x
) )  =  ( ! `  ( # `  y ) ) )
3331oveq2d 6056 . . . . . 6  |-  ( x  =  y  ->  (
( # `  B )  _C  ( # `  x
) )  =  ( ( # `  B
)  _C  ( # `  y ) ) )
3432, 33oveq12d 6058 . . . . 5  |-  ( x  =  y  ->  (
( ! `  ( # `
 x ) )  x.  ( ( # `  B )  _C  ( # `
 x ) ) )  =  ( ( ! `  ( # `  y ) )  x.  ( ( # `  B
)  _C  ( # `  y ) ) ) )
3530, 34eqeq12d 2418 . . . 4  |-  ( x  =  y  ->  (
( # `  { f  |  f : x
-1-1-> B } )  =  ( ( ! `  ( # `  x ) )  x.  ( (
# `  B )  _C  ( # `  x
) ) )  <->  ( # `  {
f  |  f : y -1-1-> B } )  =  ( ( ! `
 ( # `  y
) )  x.  (
( # `  B )  _C  ( # `  y
) ) ) ) )
3635imbi2d 308 . . 3  |-  ( x  =  y  ->  (
( B  e.  Fin  ->  ( # `  {
f  |  f : x -1-1-> B } )  =  ( ( ! `
 ( # `  x
) )  x.  (
( # `  B )  _C  ( # `  x
) ) ) )  <-> 
( B  e.  Fin  ->  ( # `  {
f  |  f : y -1-1-> B } )  =  ( ( ! `
 ( # `  y
) )  x.  (
( # `  B )  _C  ( # `  y
) ) ) ) ) )
37 f1eq2 5594 . . . . . . 7  |-  ( x  =  ( y  u. 
{ z } )  ->  ( f : x -1-1-> B  <->  f : ( y  u.  { z } ) -1-1-> B ) )
3837abbidv 2518 . . . . . 6  |-  ( x  =  ( y  u. 
{ z } )  ->  { f  |  f : x -1-1-> B }  =  { f  |  f : ( y  u.  { z } ) -1-1-> B }
)
3938fveq2d 5691 . . . . 5  |-  ( x  =  ( y  u. 
{ z } )  ->  ( # `  {
f  |  f : x -1-1-> B } )  =  ( # `  {
f  |  f : ( y  u.  {
z } ) -1-1-> B } ) )
40 fveq2 5687 . . . . . . 7  |-  ( x  =  ( y  u. 
{ z } )  ->  ( # `  x
)  =  ( # `  ( y  u.  {
z } ) ) )
4140fveq2d 5691 . . . . . 6  |-  ( x  =  ( y  u. 
{ z } )  ->  ( ! `  ( # `  x ) )  =  ( ! `
 ( # `  (
y  u.  { z } ) ) ) )
4240oveq2d 6056 . . . . . 6  |-  ( x  =  ( y  u. 
{ z } )  ->  ( ( # `  B )  _C  ( # `
 x ) )  =  ( ( # `  B )  _C  ( # `
 ( y  u. 
{ z } ) ) ) )
4341, 42oveq12d 6058 . . . . 5  |-  ( x  =  ( y  u. 
{ z } )  ->  ( ( ! `
 ( # `  x
) )  x.  (
( # `  B )  _C  ( # `  x
) ) )  =  ( ( ! `  ( # `  ( y  u.  { z } ) ) )  x.  ( ( # `  B
)  _C  ( # `  ( y  u.  {
z } ) ) ) ) )
4439, 43eqeq12d 2418 . . . 4  |-  ( x  =  ( y  u. 
{ z } )  ->  ( ( # `  { f  |  f : x -1-1-> B }
)  =  ( ( ! `  ( # `  x ) )  x.  ( ( # `  B
)  _C  ( # `  x ) ) )  <-> 
( # `  { f  |  f : ( y  u.  { z } ) -1-1-> B }
)  =  ( ( ! `  ( # `  ( y  u.  {
z } ) ) )  x.  ( (
# `  B )  _C  ( # `  (
y  u.  { z } ) ) ) ) ) )
4544imbi2d 308 . . 3  |-  ( x  =  ( y  u. 
{ z } )  ->  ( ( B  e.  Fin  ->  ( # `
 { f  |  f : x -1-1-> B } )  =  ( ( ! `  ( # `
 x ) )  x.  ( ( # `  B )  _C  ( # `
 x ) ) ) )  <->  ( B  e.  Fin  ->  ( # `  {
f  |  f : ( y  u.  {
z } ) -1-1-> B } )  =  ( ( ! `  ( # `
 ( y  u. 
{ z } ) ) )  x.  (
( # `  B )  _C  ( # `  (
y  u.  { z } ) ) ) ) ) ) )
46 f1eq2 5594 . . . . . . 7  |-  ( x  =  A  ->  (
f : x -1-1-> B  <->  f : A -1-1-> B ) )
4746abbidv 2518 . . . . . 6  |-  ( x  =  A  ->  { f  |  f : x
-1-1-> B }  =  {
f  |  f : A -1-1-> B } )
4847fveq2d 5691 . . . . 5  |-  ( x  =  A  ->  ( # `
 { f  |  f : x -1-1-> B } )  =  (
# `  { f  |  f : A -1-1-> B } ) )
49 fveq2 5687 . . . . . . 7  |-  ( x  =  A  ->  ( # `
 x )  =  ( # `  A
) )
5049fveq2d 5691 . . . . . 6  |-  ( x  =  A  ->  ( ! `  ( # `  x
) )  =  ( ! `  ( # `  A ) ) )
5149oveq2d 6056 . . . . . 6  |-  ( x  =  A  ->  (
( # `  B )  _C  ( # `  x
) )  =  ( ( # `  B
)  _C  ( # `  A ) ) )
5250, 51oveq12d 6058 . . . . 5  |-  ( x  =  A  ->  (
( ! `  ( # `
 x ) )  x.  ( ( # `  B )  _C  ( # `
 x ) ) )  =  ( ( ! `  ( # `  A ) )  x.  ( ( # `  B
)  _C  ( # `  A ) ) ) )
5348, 52eqeq12d 2418 . . . 4  |-  ( x  =  A  ->  (
( # `  { f  |  f : x
-1-1-> B } )  =  ( ( ! `  ( # `  x ) )  x.  ( (
# `  B )  _C  ( # `  x
) ) )  <->  ( # `  {
f  |  f : A -1-1-> B } )  =  ( ( ! `
 ( # `  A
) )  x.  (
( # `  B )  _C  ( # `  A
) ) ) ) )
5453imbi2d 308 . . 3  |-  ( x  =  A  ->  (
( B  e.  Fin  ->  ( # `  {
f  |  f : x -1-1-> B } )  =  ( ( ! `
 ( # `  x
) )  x.  (
( # `  B )  _C  ( # `  x
) ) ) )  <-> 
( B  e.  Fin  ->  ( # `  {
f  |  f : A -1-1-> B } )  =  ( ( ! `
 ( # `  A
) )  x.  (
( # `  B )  _C  ( # `  A
) ) ) ) ) )
55 hashcl 11594 . . . . . 6  |-  ( B  e.  Fin  ->  ( # `
 B )  e. 
NN0 )
56 bcn0 11556 . . . . . 6  |-  ( (
# `  B )  e.  NN0  ->  ( ( # `
 B )  _C  0 )  =  1 )
5755, 56syl 16 . . . . 5  |-  ( B  e.  Fin  ->  (
( # `  B )  _C  0 )  =  1 )
5857oveq2d 6056 . . . 4  |-  ( B  e.  Fin  ->  (
1  x.  ( (
# `  B )  _C  0 ) )  =  ( 1  x.  1 ) )
59 1t1e1 10082 . . . 4  |-  ( 1  x.  1 )  =  1
6058, 59syl6req 2453 . . 3  |-  ( B  e.  Fin  ->  1  =  ( 1  x.  ( ( # `  B
)  _C  0 ) ) )
61 abn0 3606 . . . . . . . . . . . . 13  |-  ( { f  |  f : ( y  u.  {
z } ) -1-1-> B }  =/=  (/)  <->  E. f  f : ( y  u.  {
z } ) -1-1-> B
)
62 f1domg 7086 . . . . . . . . . . . . . . . 16  |-  ( B  e.  Fin  ->  (
f : ( y  u.  { z } ) -1-1-> B  ->  ( y  u.  { z } )  ~<_  B ) )
6362adantr 452 . . . . . . . . . . . . . . 15  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  (
f : ( y  u.  { z } ) -1-1-> B  ->  ( y  u.  { z } )  ~<_  B ) )
64 vex 2919 . . . . . . . . . . . . . . . . . . 19  |-  z  e. 
_V
65 hashunsng 11620 . . . . . . . . . . . . . . . . . . 19  |-  ( z  e.  _V  ->  (
( y  e.  Fin  /\ 
-.  z  e.  y )  ->  ( # `  (
y  u.  { z } ) )  =  ( ( # `  y
)  +  1 ) ) )
6664, 65ax-mp 8 . . . . . . . . . . . . . . . . . 18  |-  ( ( y  e.  Fin  /\  -.  z  e.  y
)  ->  ( # `  (
y  u.  { z } ) )  =  ( ( # `  y
)  +  1 ) )
6766adantl 453 . . . . . . . . . . . . . . . . 17  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  ( # `
 ( y  u. 
{ z } ) )  =  ( (
# `  y )  +  1 ) )
6867breq1d 4182 . . . . . . . . . . . . . . . 16  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  (
( # `  ( y  u.  { z } ) )  <_  ( # `
 B )  <->  ( ( # `
 y )  +  1 )  <_  ( # `
 B ) ) )
69 simprl 733 . . . . . . . . . . . . . . . . . 18  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  y  e.  Fin )
70 snfi 7146 . . . . . . . . . . . . . . . . . 18  |-  { z }  e.  Fin
71 unfi 7333 . . . . . . . . . . . . . . . . . 18  |-  ( ( y  e.  Fin  /\  { z }  e.  Fin )  ->  ( y  u. 
{ z } )  e.  Fin )
7269, 70, 71sylancl 644 . . . . . . . . . . . . . . . . 17  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  (
y  u.  { z } )  e.  Fin )
73 simpl 444 . . . . . . . . . . . . . . . . 17  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  B  e.  Fin )
74 hashdom 11608 . . . . . . . . . . . . . . . . 17  |-  ( ( ( y  u.  {
z } )  e. 
Fin  /\  B  e.  Fin )  ->  ( (
# `  ( y  u.  { z } ) )  <_  ( # `  B
)  <->  ( y  u. 
{ z } )  ~<_  B ) )
7572, 73, 74syl2anc 643 . . . . . . . . . . . . . . . 16  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  (
( # `  ( y  u.  { z } ) )  <_  ( # `
 B )  <->  ( y  u.  { z } )  ~<_  B ) )
76 hashcl 11594 . . . . . . . . . . . . . . . . . . . 20  |-  ( y  e.  Fin  ->  ( # `
 y )  e. 
NN0 )
7776ad2antrl 709 . . . . . . . . . . . . . . . . . . 19  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  ( # `
 y )  e. 
NN0 )
78 nn0p1nn 10215 . . . . . . . . . . . . . . . . . . 19  |-  ( (
# `  y )  e.  NN0  ->  ( ( # `
 y )  +  1 )  e.  NN )
7977, 78syl 16 . . . . . . . . . . . . . . . . . 18  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  (
( # `  y )  +  1 )  e.  NN )
8079nnred 9971 . . . . . . . . . . . . . . . . 17  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  (
( # `  y )  +  1 )  e.  RR )
8155adantr 452 . . . . . . . . . . . . . . . . . 18  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  ( # `
 B )  e. 
NN0 )
8281nn0red 10231 . . . . . . . . . . . . . . . . 17  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  ( # `
 B )  e.  RR )
8380, 82lenltd 9175 . . . . . . . . . . . . . . . 16  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  (
( ( # `  y
)  +  1 )  <_  ( # `  B
)  <->  -.  ( # `  B
)  <  ( ( # `
 y )  +  1 ) ) )
8468, 75, 833bitr3d 275 . . . . . . . . . . . . . . 15  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  (
( y  u.  {
z } )  ~<_  B  <->  -.  ( # `  B
)  <  ( ( # `
 y )  +  1 ) ) )
8563, 84sylibd 206 . . . . . . . . . . . . . 14  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  (
f : ( y  u.  { z } ) -1-1-> B  ->  -.  ( # `
 B )  < 
( ( # `  y
)  +  1 ) ) )
8685exlimdv 1643 . . . . . . . . . . . . 13  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  ( E. f  f :
( y  u.  {
z } ) -1-1-> B  ->  -.  ( # `  B
)  <  ( ( # `
 y )  +  1 ) ) )
8761, 86syl5bi 209 . . . . . . . . . . . 12  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  ( { f  |  f : ( y  u. 
{ z } )
-1-1-> B }  =/=  (/)  ->  -.  ( # `  B )  <  ( ( # `  y )  +  1 ) ) )
8887necon4ad 2628 . . . . . . . . . . 11  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  (
( # `  B )  <  ( ( # `  y )  +  1 )  ->  { f  |  f : ( y  u.  { z } ) -1-1-> B }  =  (/) ) )
8988imp 419 . . . . . . . . . 10  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  ( # `
 B )  < 
( ( # `  y
)  +  1 ) )  ->  { f  |  f : ( y  u.  { z } ) -1-1-> B }  =  (/) )
9089fveq2d 5691 . . . . . . . . 9  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  ( # `
 B )  < 
( ( # `  y
)  +  1 ) )  ->  ( # `  {
f  |  f : ( y  u.  {
z } ) -1-1-> B } )  =  (
# `  (/) ) )
91 hashcl 11594 . . . . . . . . . . . . . 14  |-  ( ( y  u.  { z } )  e.  Fin  ->  ( # `  (
y  u.  { z } ) )  e. 
NN0 )
9272, 91syl 16 . . . . . . . . . . . . 13  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  ( # `
 ( y  u. 
{ z } ) )  e.  NN0 )
93 faccl 11531 . . . . . . . . . . . . 13  |-  ( (
# `  ( y  u.  { z } ) )  e.  NN0  ->  ( ! `  ( # `  ( y  u.  {
z } ) ) )  e.  NN )
9492, 93syl 16 . . . . . . . . . . . 12  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  ( ! `  ( # `  (
y  u.  { z } ) ) )  e.  NN )
9594nncnd 9972 . . . . . . . . . . 11  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  ( ! `  ( # `  (
y  u.  { z } ) ) )  e.  CC )
9695adantr 452 . . . . . . . . . 10  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  ( # `
 B )  < 
( ( # `  y
)  +  1 ) )  ->  ( ! `  ( # `  (
y  u.  { z } ) ) )  e.  CC )
9796mul01d 9221 . . . . . . . . 9  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  ( # `
 B )  < 
( ( # `  y
)  +  1 ) )  ->  ( ( ! `  ( # `  (
y  u.  { z } ) ) )  x.  0 )  =  0 )
9819, 90, 973eqtr4a 2462 . . . . . . . 8  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  ( # `
 B )  < 
( ( # `  y
)  +  1 ) )  ->  ( # `  {
f  |  f : ( y  u.  {
z } ) -1-1-> B } )  =  ( ( ! `  ( # `
 ( y  u. 
{ z } ) ) )  x.  0 ) )
9967adantr 452 . . . . . . . . . . 11  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  ( # `
 B )  < 
( ( # `  y
)  +  1 ) )  ->  ( # `  (
y  u.  { z } ) )  =  ( ( # `  y
)  +  1 ) )
10099oveq2d 6056 . . . . . . . . . 10  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  ( # `
 B )  < 
( ( # `  y
)  +  1 ) )  ->  ( ( # `
 B )  _C  ( # `  (
y  u.  { z } ) ) )  =  ( ( # `  B )  _C  (
( # `  y )  +  1 ) ) )
10181adantr 452 . . . . . . . . . . 11  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  ( # `
 B )  < 
( ( # `  y
)  +  1 ) )  ->  ( # `  B
)  e.  NN0 )
10279adantr 452 . . . . . . . . . . . 12  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  ( # `
 B )  < 
( ( # `  y
)  +  1 ) )  ->  ( ( # `
 y )  +  1 )  e.  NN )
103102nnzd 10330 . . . . . . . . . . 11  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  ( # `
 B )  < 
( ( # `  y
)  +  1 ) )  ->  ( ( # `
 y )  +  1 )  e.  ZZ )
104 simpr 448 . . . . . . . . . . . 12  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  ( # `
 B )  < 
( ( # `  y
)  +  1 ) )  ->  ( # `  B
)  <  ( ( # `
 y )  +  1 ) )
105104olcd 383 . . . . . . . . . . 11  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  ( # `
 B )  < 
( ( # `  y
)  +  1 ) )  ->  ( (
( # `  y )  +  1 )  <  0  \/  ( # `  B )  <  (
( # `  y )  +  1 ) ) )
106 bcval4 11553 . . . . . . . . . . 11  |-  ( ( ( # `  B
)  e.  NN0  /\  ( ( # `  y
)  +  1 )  e.  ZZ  /\  (
( ( # `  y
)  +  1 )  <  0  \/  ( # `
 B )  < 
( ( # `  y
)  +  1 ) ) )  ->  (
( # `  B )  _C  ( ( # `  y )  +  1 ) )  =  0 )
107101, 103, 105, 106syl3anc 1184 . . . . . . . . . 10  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  ( # `
 B )  < 
( ( # `  y
)  +  1 ) )  ->  ( ( # `
 B )  _C  ( ( # `  y
)  +  1 ) )  =  0 )
108100, 107eqtrd 2436 . . . . . . . . 9  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  ( # `
 B )  < 
( ( # `  y
)  +  1 ) )  ->  ( ( # `
 B )  _C  ( # `  (
y  u.  { z } ) ) )  =  0 )
109108oveq2d 6056 . . . . . . . 8  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  ( # `
 B )  < 
( ( # `  y
)  +  1 ) )  ->  ( ( ! `  ( # `  (
y  u.  { z } ) ) )  x.  ( ( # `  B )  _C  ( # `
 ( y  u. 
{ z } ) ) ) )  =  ( ( ! `  ( # `  ( y  u.  { z } ) ) )  x.  0 ) )
11098, 109eqtr4d 2439 . . . . . . 7  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  ( # `
 B )  < 
( ( # `  y
)  +  1 ) )  ->  ( # `  {
f  |  f : ( y  u.  {
z } ) -1-1-> B } )  =  ( ( ! `  ( # `
 ( y  u. 
{ z } ) ) )  x.  (
( # `  B )  _C  ( # `  (
y  u.  { z } ) ) ) ) )
111110a1d 23 . . . . . 6  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  ( # `
 B )  < 
( ( # `  y
)  +  1 ) )  ->  ( ( # `
 { f  |  f : y -1-1-> B } )  =  ( ( ! `  ( # `
 y ) )  x.  ( ( # `  B )  _C  ( # `
 y ) ) )  ->  ( # `  {
f  |  f : ( y  u.  {
z } ) -1-1-> B } )  =  ( ( ! `  ( # `
 ( y  u. 
{ z } ) ) )  x.  (
( # `  B )  _C  ( # `  (
y  u.  { z } ) ) ) ) ) )
112 oveq2 6048 . . . . . . 7  |-  ( (
# `  { f  |  f : y
-1-1-> B } )  =  ( ( ! `  ( # `  y ) )  x.  ( (
# `  B )  _C  ( # `  y
) ) )  -> 
( ( ( # `  B )  -  ( # `
 y ) )  x.  ( # `  {
f  |  f : y -1-1-> B } ) )  =  ( ( ( # `  B
)  -  ( # `  y ) )  x.  ( ( ! `  ( # `  y ) )  x.  ( (
# `  B )  _C  ( # `  y
) ) ) ) )
11369adantr 452 . . . . . . . . 9  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  y  e.  Fin )
11473adantr 452 . . . . . . . . 9  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  B  e.  Fin )
115 simplrr 738 . . . . . . . . 9  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  -.  z  e.  y )
116 simpr 448 . . . . . . . . 9  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( # `
 y )  +  1 )  <_  ( # `
 B ) )
117113, 114, 115, 116hashf1lem2 11660 . . . . . . . 8  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( # `  {
f  |  f : ( y  u.  {
z } ) -1-1-> B } )  =  ( ( ( # `  B
)  -  ( # `  y ) )  x.  ( # `  {
f  |  f : y -1-1-> B } ) ) )
11881adantr 452 . . . . . . . . . . . . . 14  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( # `  B
)  e.  NN0 )
119 faccl 11531 . . . . . . . . . . . . . 14  |-  ( (
# `  B )  e.  NN0  ->  ( ! `  ( # `  B
) )  e.  NN )
120118, 119syl 16 . . . . . . . . . . . . 13  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( # `  B
) )  e.  NN )
121120nncnd 9972 . . . . . . . . . . . 12  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( # `  B
) )  e.  CC )
12277adantr 452 . . . . . . . . . . . . . . . 16  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( # `  y
)  e.  NN0 )
123 peano2nn0 10216 . . . . . . . . . . . . . . . 16  |-  ( (
# `  y )  e.  NN0  ->  ( ( # `
 y )  +  1 )  e.  NN0 )
124122, 123syl 16 . . . . . . . . . . . . . . 15  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( # `
 y )  +  1 )  e.  NN0 )
125 nn0sub2 10291 . . . . . . . . . . . . . . 15  |-  ( ( ( ( # `  y
)  +  1 )  e.  NN0  /\  ( # `
 B )  e. 
NN0  /\  ( ( # `
 y )  +  1 )  <_  ( # `
 B ) )  ->  ( ( # `  B )  -  (
( # `  y )  +  1 ) )  e.  NN0 )
126124, 118, 116, 125syl3anc 1184 . . . . . . . . . . . . . 14  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( # `
 B )  -  ( ( # `  y
)  +  1 ) )  e.  NN0 )
127 faccl 11531 . . . . . . . . . . . . . 14  |-  ( ( ( # `  B
)  -  ( (
# `  y )  +  1 ) )  e.  NN0  ->  ( ! `
 ( ( # `  B )  -  (
( # `  y )  +  1 ) ) )  e.  NN )
128126, 127syl 16 . . . . . . . . . . . . 13  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( ( # `  B
)  -  ( (
# `  y )  +  1 ) ) )  e.  NN )
129128nncnd 9972 . . . . . . . . . . . 12  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( ( # `  B
)  -  ( (
# `  y )  +  1 ) ) )  e.  CC )
130128nnne0d 10000 . . . . . . . . . . . 12  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( ( # `  B
)  -  ( (
# `  y )  +  1 ) ) )  =/=  0 )
131121, 129, 130divcld 9746 . . . . . . . . . . 11  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( ! `  ( # `  B
) )  /  ( ! `  ( ( # `
 B )  -  ( ( # `  y
)  +  1 ) ) ) )  e.  CC )
132 faccl 11531 . . . . . . . . . . . . 13  |-  ( ( ( # `  y
)  +  1 )  e.  NN0  ->  ( ! `
 ( ( # `  y )  +  1 ) )  e.  NN )
133124, 132syl 16 . . . . . . . . . . . 12  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( ( # `  y
)  +  1 ) )  e.  NN )
134133nncnd 9972 . . . . . . . . . . 11  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( ( # `  y
)  +  1 ) )  e.  CC )
135133nnne0d 10000 . . . . . . . . . . 11  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( ( # `  y
)  +  1 ) )  =/=  0 )
136131, 134, 135divcan2d 9748 . . . . . . . . . 10  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( ! `  ( ( # `
 y )  +  1 ) )  x.  ( ( ( ! `
 ( # `  B
) )  /  ( ! `  ( ( # `
 B )  -  ( ( # `  y
)  +  1 ) ) ) )  / 
( ! `  (
( # `  y )  +  1 ) ) ) )  =  ( ( ! `  ( # `
 B ) )  /  ( ! `  ( ( # `  B
)  -  ( (
# `  y )  +  1 ) ) ) ) )
137118nn0cnd 10232 . . . . . . . . . . . 12  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( # `  B
)  e.  CC )
138122nn0cnd 10232 . . . . . . . . . . . 12  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( # `  y
)  e.  CC )
139137, 138subcld 9367 . . . . . . . . . . 11  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( # `
 B )  -  ( # `  y ) )  e.  CC )
140 ax-1cn 9004 . . . . . . . . . . . . . 14  |-  1  e.  CC
141 npcan 9270 . . . . . . . . . . . . . 14  |-  ( ( ( ( # `  B
)  -  ( # `  y ) )  e.  CC  /\  1  e.  CC )  ->  (
( ( ( # `  B )  -  ( # `
 y ) )  -  1 )  +  1 )  =  ( ( # `  B
)  -  ( # `  y ) ) )
142139, 140, 141sylancl 644 . . . . . . . . . . . . 13  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( (
( ( # `  B
)  -  ( # `  y ) )  - 
1 )  +  1 )  =  ( (
# `  B )  -  ( # `  y
) ) )
143140a1i 11 . . . . . . . . . . . . . . . 16  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  1  e.  CC )
144137, 138, 143subsub4d 9398 . . . . . . . . . . . . . . 15  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( (
( # `  B )  -  ( # `  y
) )  -  1 )  =  ( (
# `  B )  -  ( ( # `  y )  +  1 ) ) )
145144, 126eqeltrd 2478 . . . . . . . . . . . . . 14  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( (
( # `  B )  -  ( # `  y
) )  -  1 )  e.  NN0 )
146 nn0p1nn 10215 . . . . . . . . . . . . . 14  |-  ( ( ( ( # `  B
)  -  ( # `  y ) )  - 
1 )  e.  NN0  ->  ( ( ( (
# `  B )  -  ( # `  y
) )  -  1 )  +  1 )  e.  NN )
147145, 146syl 16 . . . . . . . . . . . . 13  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( (
( ( # `  B
)  -  ( # `  y ) )  - 
1 )  +  1 )  e.  NN )
148142, 147eqeltrrd 2479 . . . . . . . . . . . 12  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( # `
 B )  -  ( # `  y ) )  e.  NN )
149148nnne0d 10000 . . . . . . . . . . 11  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( # `
 B )  -  ( # `  y ) )  =/=  0 )
150131, 139, 149divcan2d 9748 . . . . . . . . . 10  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( (
( # `  B )  -  ( # `  y
) )  x.  (
( ( ! `  ( # `  B ) )  /  ( ! `
 ( ( # `  B )  -  (
( # `  y )  +  1 ) ) ) )  /  (
( # `  B )  -  ( # `  y
) ) ) )  =  ( ( ! `
 ( # `  B
) )  /  ( ! `  ( ( # `
 B )  -  ( ( # `  y
)  +  1 ) ) ) ) )
151136, 150eqtr4d 2439 . . . . . . . . 9  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( ! `  ( ( # `
 y )  +  1 ) )  x.  ( ( ( ! `
 ( # `  B
) )  /  ( ! `  ( ( # `
 B )  -  ( ( # `  y
)  +  1 ) ) ) )  / 
( ! `  (
( # `  y )  +  1 ) ) ) )  =  ( ( ( # `  B
)  -  ( # `  y ) )  x.  ( ( ( ! `
 ( # `  B
) )  /  ( ! `  ( ( # `
 B )  -  ( ( # `  y
)  +  1 ) ) ) )  / 
( ( # `  B
)  -  ( # `  y ) ) ) ) )
15267adantr 452 . . . . . . . . . . 11  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( # `  (
y  u.  { z } ) )  =  ( ( # `  y
)  +  1 ) )
153152fveq2d 5691 . . . . . . . . . 10  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( # `  (
y  u.  { z } ) ) )  =  ( ! `  ( ( # `  y
)  +  1 ) ) )
154 nn0uz 10476 . . . . . . . . . . . . . . 15  |-  NN0  =  ( ZZ>= `  0 )
155124, 154syl6eleq 2494 . . . . . . . . . . . . . 14  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( # `
 y )  +  1 )  e.  (
ZZ>= `  0 ) )
156118nn0zd 10329 . . . . . . . . . . . . . 14  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( # `  B
)  e.  ZZ )
157 elfz5 11007 . . . . . . . . . . . . . 14  |-  ( ( ( ( # `  y
)  +  1 )  e.  ( ZZ>= `  0
)  /\  ( # `  B
)  e.  ZZ )  ->  ( ( (
# `  y )  +  1 )  e.  ( 0 ... ( # `
 B ) )  <-> 
( ( # `  y
)  +  1 )  <_  ( # `  B
) ) )
158155, 156, 157syl2anc 643 . . . . . . . . . . . . 13  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( (
( # `  y )  +  1 )  e.  ( 0 ... ( # `
 B ) )  <-> 
( ( # `  y
)  +  1 )  <_  ( # `  B
) ) )
159116, 158mpbird 224 . . . . . . . . . . . 12  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( # `
 y )  +  1 )  e.  ( 0 ... ( # `  B ) ) )
160 bcval2 11551 . . . . . . . . . . . 12  |-  ( ( ( # `  y
)  +  1 )  e.  ( 0 ... ( # `  B
) )  ->  (
( # `  B )  _C  ( ( # `  y )  +  1 ) )  =  ( ( ! `  ( # `
 B ) )  /  ( ( ! `
 ( ( # `  B )  -  (
( # `  y )  +  1 ) ) )  x.  ( ! `
 ( ( # `  y )  +  1 ) ) ) ) )
161159, 160syl 16 . . . . . . . . . . 11  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( # `
 B )  _C  ( ( # `  y
)  +  1 ) )  =  ( ( ! `  ( # `  B ) )  / 
( ( ! `  ( ( # `  B
)  -  ( (
# `  y )  +  1 ) ) )  x.  ( ! `
 ( ( # `  y )  +  1 ) ) ) ) )
162152oveq2d 6056 . . . . . . . . . . 11  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( # `
 B )  _C  ( # `  (
y  u.  { z } ) ) )  =  ( ( # `  B )  _C  (
( # `  y )  +  1 ) ) )
163121, 129, 134, 130, 135divdiv1d 9777 . . . . . . . . . . 11  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( (
( ! `  ( # `
 B ) )  /  ( ! `  ( ( # `  B
)  -  ( (
# `  y )  +  1 ) ) ) )  /  ( ! `  ( ( # `
 y )  +  1 ) ) )  =  ( ( ! `
 ( # `  B
) )  /  (
( ! `  (
( # `  B )  -  ( ( # `  y )  +  1 ) ) )  x.  ( ! `  (
( # `  y )  +  1 ) ) ) ) )
164161, 162, 1633eqtr4d 2446 . . . . . . . . . 10  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( # `
 B )  _C  ( # `  (
y  u.  { z } ) ) )  =  ( ( ( ! `  ( # `  B ) )  / 
( ! `  (
( # `  B )  -  ( ( # `  y )  +  1 ) ) ) )  /  ( ! `  ( ( # `  y
)  +  1 ) ) ) )
165153, 164oveq12d 6058 . . . . . . . . 9  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( ! `  ( # `  (
y  u.  { z } ) ) )  x.  ( ( # `  B )  _C  ( # `
 ( y  u. 
{ z } ) ) ) )  =  ( ( ! `  ( ( # `  y
)  +  1 ) )  x.  ( ( ( ! `  ( # `
 B ) )  /  ( ! `  ( ( # `  B
)  -  ( (
# `  y )  +  1 ) ) ) )  /  ( ! `  ( ( # `
 y )  +  1 ) ) ) ) )
166122, 154syl6eleq 2494 . . . . . . . . . . . . . . 15  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( # `  y
)  e.  ( ZZ>= ` 
0 ) )
167 peano2fzr 11025 . . . . . . . . . . . . . . 15  |-  ( ( ( # `  y
)  e.  ( ZZ>= ` 
0 )  /\  (
( # `  y )  +  1 )  e.  ( 0 ... ( # `
 B ) ) )  ->  ( # `  y
)  e.  ( 0 ... ( # `  B
) ) )
168166, 159, 167syl2anc 643 . . . . . . . . . . . . . 14  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( # `  y
)  e.  ( 0 ... ( # `  B
) ) )
169 bcval2 11551 . . . . . . . . . . . . . 14  |-  ( (
# `  y )  e.  ( 0 ... ( # `
 B ) )  ->  ( ( # `  B )  _C  ( # `
 y ) )  =  ( ( ! `
 ( # `  B
) )  /  (
( ! `  (
( # `  B )  -  ( # `  y
) ) )  x.  ( ! `  ( # `
 y ) ) ) ) )
170168, 169syl 16 . . . . . . . . . . . . 13  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( # `
 B )  _C  ( # `  y
) )  =  ( ( ! `  ( # `
 B ) )  /  ( ( ! `
 ( ( # `  B )  -  ( # `
 y ) ) )  x.  ( ! `
 ( # `  y
) ) ) ) )
171 elfzle2 11017 . . . . . . . . . . . . . . . . . 18  |-  ( (
# `  y )  e.  ( 0 ... ( # `
 B ) )  ->  ( # `  y
)  <_  ( # `  B
) )
172168, 171syl 16 . . . . . . . . . . . . . . . . 17  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( # `  y
)  <_  ( # `  B
) )
173 nn0sub2 10291 . . . . . . . . . . . . . . . . 17  |-  ( ( ( # `  y
)  e.  NN0  /\  ( # `  B )  e.  NN0  /\  ( # `
 y )  <_ 
( # `  B ) )  ->  ( ( # `
 B )  -  ( # `  y ) )  e.  NN0 )
174122, 118, 172, 173syl3anc 1184 . . . . . . . . . . . . . . . 16  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( # `
 B )  -  ( # `  y ) )  e.  NN0 )
175 faccl 11531 . . . . . . . . . . . . . . . 16  |-  ( ( ( # `  B
)  -  ( # `  y ) )  e. 
NN0  ->  ( ! `  ( ( # `  B
)  -  ( # `  y ) ) )  e.  NN )
176174, 175syl 16 . . . . . . . . . . . . . . 15  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( ( # `  B
)  -  ( # `  y ) ) )  e.  NN )
177176nncnd 9972 . . . . . . . . . . . . . 14  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( ( # `  B
)  -  ( # `  y ) ) )  e.  CC )
178 faccl 11531 . . . . . . . . . . . . . . . 16  |-  ( (
# `  y )  e.  NN0  ->  ( ! `  ( # `  y
) )  e.  NN )
179122, 178syl 16 . . . . . . . . . . . . . . 15  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( # `  y
) )  e.  NN )
180179nncnd 9972 . . . . . . . . . . . . . 14  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( # `  y
) )  e.  CC )
181176nnne0d 10000 . . . . . . . . . . . . . 14  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( ( # `  B
)  -  ( # `  y ) ) )  =/=  0 )
182179nnne0d 10000 . . . . . . . . . . . . . 14  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( # `  y
) )  =/=  0
)
183121, 177, 180, 181, 182divdiv1d 9777 . . . . . . . . . . . . 13  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( (
( ! `  ( # `
 B ) )  /  ( ! `  ( ( # `  B
)  -  ( # `  y ) ) ) )  /  ( ! `
 ( # `  y
) ) )  =  ( ( ! `  ( # `  B ) )  /  ( ( ! `  ( (
# `  B )  -  ( # `  y
) ) )  x.  ( ! `  ( # `
 y ) ) ) ) )
184170, 183eqtr4d 2439 . . . . . . . . . . . 12  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( # `
 B )  _C  ( # `  y
) )  =  ( ( ( ! `  ( # `  B ) )  /  ( ! `
 ( ( # `  B )  -  ( # `
 y ) ) ) )  /  ( ! `  ( # `  y
) ) ) )
185184oveq2d 6056 . . . . . . . . . . 11  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( ! `  ( # `  y
) )  x.  (
( # `  B )  _C  ( # `  y
) ) )  =  ( ( ! `  ( # `  y ) )  x.  ( ( ( ! `  ( # `
 B ) )  /  ( ! `  ( ( # `  B
)  -  ( # `  y ) ) ) )  /  ( ! `
 ( # `  y
) ) ) ) )
186 facnn2 11530 . . . . . . . . . . . . . . 15  |-  ( ( ( # `  B
)  -  ( # `  y ) )  e.  NN  ->  ( ! `  ( ( # `  B
)  -  ( # `  y ) ) )  =  ( ( ! `
 ( ( (
# `  B )  -  ( # `  y
) )  -  1 ) )  x.  (
( # `  B )  -  ( # `  y
) ) ) )
187148, 186syl 16 . . . . . . . . . . . . . 14  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( ( # `  B
)  -  ( # `  y ) ) )  =  ( ( ! `
 ( ( (
# `  B )  -  ( # `  y
) )  -  1 ) )  x.  (
( # `  B )  -  ( # `  y
) ) ) )
188144fveq2d 5691 . . . . . . . . . . . . . . 15  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( ( ( # `  B )  -  ( # `
 y ) )  -  1 ) )  =  ( ! `  ( ( # `  B
)  -  ( (
# `  y )  +  1 ) ) ) )
189188oveq1d 6055 . . . . . . . . . . . . . 14  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( ! `  ( (
( # `  B )  -  ( # `  y
) )  -  1 ) )  x.  (
( # `  B )  -  ( # `  y
) ) )  =  ( ( ! `  ( ( # `  B
)  -  ( (
# `  y )  +  1 ) ) )  x.  ( (
# `  B )  -  ( # `  y
) ) ) )
190187, 189eqtrd 2436 . . . . . . . . . . . . 13  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( ( # `  B
)  -  ( # `  y ) ) )  =  ( ( ! `
 ( ( # `  B )  -  (
( # `  y )  +  1 ) ) )  x.  ( (
# `  B )  -  ( # `  y
) ) ) )
191190oveq2d 6056 . . . . . . . . . . . 12  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( ! `  ( # `  B
) )  /  ( ! `  ( ( # `
 B )  -  ( # `  y ) ) ) )  =  ( ( ! `  ( # `  B ) )  /  ( ( ! `  ( (
# `  B )  -  ( ( # `  y )  +  1 ) ) )  x.  ( ( # `  B
)  -  ( # `  y ) ) ) ) )
192121, 177, 181divcld 9746 . . . . . . . . . . . . 13  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( ! `  ( # `  B
) )  /  ( ! `  ( ( # `
 B )  -  ( # `  y ) ) ) )  e.  CC )
193192, 180, 182divcan2d 9748 . . . . . . . . . . . 12  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( ! `  ( # `  y
) )  x.  (
( ( ! `  ( # `  B ) )  /  ( ! `
 ( ( # `  B )  -  ( # `
 y ) ) ) )  /  ( ! `  ( # `  y
) ) ) )  =  ( ( ! `
 ( # `  B
) )  /  ( ! `  ( ( # `
 B )  -  ( # `  y ) ) ) ) )
194121, 129, 139, 130, 149divdiv1d 9777 . . . . . . . . . . . 12  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( (
( ! `  ( # `
 B ) )  /  ( ! `  ( ( # `  B
)  -  ( (
# `  y )  +  1 ) ) ) )  /  (
( # `  B )  -  ( # `  y
) ) )  =  ( ( ! `  ( # `  B ) )  /  ( ( ! `  ( (
# `  B )  -  ( ( # `  y )  +  1 ) ) )  x.  ( ( # `  B
)  -  ( # `  y ) ) ) ) )
195191, 193, 1943eqtr4d 2446 . . . . . . . . . . 11  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( ! `  ( # `  y
) )  x.  (
( ( ! `  ( # `  B ) )  /  ( ! `
 ( ( # `  B )  -  ( # `
 y ) ) ) )  /  ( ! `  ( # `  y
) ) ) )  =  ( ( ( ! `  ( # `  B ) )  / 
( ! `  (
( # `  B )  -  ( ( # `  y )  +  1 ) ) ) )  /  ( ( # `  B )  -  ( # `
 y ) ) ) )
196185, 195eqtrd 2436 . . . . . . . . . 10  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( ! `  ( # `  y
) )  x.  (
( # `  B )  _C  ( # `  y
) ) )  =  ( ( ( ! `
 ( # `  B
) )  /  ( ! `  ( ( # `
 B )  -  ( ( # `  y
)  +  1 ) ) ) )  / 
( ( # `  B
)  -  ( # `  y ) ) ) )
197196oveq2d 6056 . . . . . . . . 9  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( (
( # `  B )  -  ( # `  y
) )  x.  (
( ! `  ( # `
 y ) )  x.  ( ( # `  B )  _C  ( # `
 y ) ) ) )  =  ( ( ( # `  B
)  -  ( # `  y ) )  x.  ( ( ( ! `
 ( # `  B
) )  /  ( ! `  ( ( # `
 B )  -  ( ( # `  y
)  +  1 ) ) ) )  / 
( ( # `  B
)  -  ( # `  y ) ) ) ) )
198151, 165, 1973eqtr4d 2446 . . . . . . . 8  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( ! `  ( # `  (
y  u.  { z } ) ) )  x.  ( ( # `  B )  _C  ( # `
 ( y  u. 
{ z } ) ) ) )  =  ( ( ( # `  B )  -  ( # `
 y ) )  x.  ( ( ! `
 ( # `  y
) )  x.  (
( # `  B )  _C  ( # `  y
) ) ) ) )
199117, 198eqeq12d 2418 . . . . . . 7  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( # `
 { f  |  f : ( y  u.  { z } ) -1-1-> B } )  =  ( ( ! `
 ( # `  (
y  u.  { z } ) ) )  x.  ( ( # `  B )  _C  ( # `
 ( y  u. 
{ z } ) ) ) )  <->  ( (
( # `  B )  -  ( # `  y
) )  x.  ( # `
 { f  |  f : y -1-1-> B } ) )  =  ( ( ( # `  B )  -  ( # `
 y ) )  x.  ( ( ! `
 ( # `  y
) )  x.  (
( # `  B )  _C  ( # `  y
) ) ) ) ) )
200112, 199syl5ibr 213 . . . . . 6  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( # `
 { f  |  f : y -1-1-> B } )  =  ( ( ! `  ( # `
 y ) )  x.  ( ( # `  B )  _C  ( # `
 y ) ) )  ->  ( # `  {
f  |  f : ( y  u.  {
z } ) -1-1-> B } )  =  ( ( ! `  ( # `
 ( y  u. 
{ z } ) ) )  x.  (
( # `  B )  _C  ( # `  (
y  u.  { z } ) ) ) ) ) )
201111, 200, 82, 80ltlecasei 9137 . . . . 5  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  (
( # `  { f  |  f : y
-1-1-> B } )  =  ( ( ! `  ( # `  y ) )  x.  ( (
# `  B )  _C  ( # `  y
) ) )  -> 
( # `  { f  |  f : ( y  u.  { z } ) -1-1-> B }
)  =  ( ( ! `  ( # `  ( y  u.  {
z } ) ) )  x.  ( (
# `  B )  _C  ( # `  (
y  u.  { z } ) ) ) ) ) )
202201expcom 425 . . . 4  |-  ( ( y  e.  Fin  /\  -.  z  e.  y
)  ->  ( B  e.  Fin  ->  ( ( # `
 { f  |  f : y -1-1-> B } )  =  ( ( ! `  ( # `
 y ) )  x.  ( ( # `  B )  _C  ( # `
 y ) ) )  ->  ( # `  {
f  |  f : ( y  u.  {
z } ) -1-1-> B } )  =  ( ( ! `  ( # `
 ( y  u. 
{ z } ) ) )  x.  (
( # `  B )  _C  ( # `  (
y  u.  { z } ) ) ) ) ) ) )
203202a2d 24 . . 3  |-  ( ( y  e.  Fin  /\  -.  z  e.  y
)  ->  ( ( B  e.  Fin  ->  ( # `
 { f  |  f : y -1-1-> B } )  =  ( ( ! `  ( # `
 y ) )  x.  ( ( # `  B )  _C  ( # `
 y ) ) ) )  ->  ( B  e.  Fin  ->  ( # `
 { f  |  f : ( y  u.  { z } ) -1-1-> B } )  =  ( ( ! `
 ( # `  (
y  u.  { z } ) ) )  x.  ( ( # `  B )  _C  ( # `
 ( y  u. 
{ z } ) ) ) ) ) ) )
20427, 36, 45, 54, 60, 203findcard2s 7308 . 2  |-  ( A  e.  Fin  ->  ( B  e.  Fin  ->  ( # `
 { f  |  f : A -1-1-> B } )  =  ( ( ! `  ( # `
 A ) )  x.  ( ( # `  B )  _C  ( # `
 A ) ) ) ) )
205204imp 419 1  |-  ( ( A  e.  Fin  /\  B  e.  Fin )  ->  ( # `  {
f  |  f : A -1-1-> B } )  =  ( ( ! `
 ( # `  A
) )  x.  (
( # `  B )  _C  ( # `  A
) ) ) )
Colors of variables: wff set class
Syntax hints:   -. wn 3    -> wi 4    <-> wb 177    \/ wo 358    /\ wa 359   E.wex 1547    = wceq 1649    e. wcel 1721   {cab 2390    =/= wne 2567   _Vcvv 2916    u. cun 3278   (/)c0 3588   {csn 3774   class class class wbr 4172    Fn wfn 5408   -1-1->wf1 5410   ` cfv 5413  (class class class)co 6040    ~<_ cdom 7066   Fincfn 7068   CCcc 8944   0cc0 8946   1c1 8947    + caddc 8949    x. cmul 8951    < clt 9076    <_ cle 9077    - cmin 9247    / cdiv 9633   NNcn 9956   NN0cn0 10177   ZZcz 10238   ZZ>=cuz 10444   ...cfz 10999   !cfa 11521    _C cbc 11548   #chash 11573
This theorem is referenced by:  hashfac  11662  birthdaylem2  20744
This theorem was proved from axioms:  ax-1 5  ax-2 6  ax-3 7  ax-mp 8  ax-gen 1552  ax-5 1563  ax-17 1623  ax-9 1662  ax-8 1683  ax-13 1723  ax-14 1725  ax-6 1740  ax-7 1745  ax-11 1757  ax-12 1946  ax-ext 2385  ax-rep 4280  ax-sep 4290  ax-nul 4298  ax-pow 4337  ax-pr 4363  ax-un 4660  ax-cnex 9002  ax-resscn 9003  ax-1cn 9004  ax-icn 9005  ax-addcl 9006  ax-addrcl 9007  ax-mulcl 9008  ax-mulrcl 9009  ax-mulcom 9010  ax-addass 9011  ax-mulass 9012  ax-distr 9013  ax-i2m1 9014  ax-1ne0 9015  ax-1rid 9016  ax-rnegex 9017  ax-rrecex 9018  ax-cnre 9019  ax-pre-lttri 9020  ax-pre-lttrn 9021  ax-pre-ltadd 9022  ax-pre-mulgt0 9023
This theorem depends on definitions:  df-bi 178  df-or 360  df-an 361  df-3or 937  df-3an 938  df-tru 1325  df-ex 1548  df-nf 1551  df-sb 1656  df-eu 2258  df-mo 2259  df-clab 2391  df-cleq 2397  df-clel 2400  df-nfc 2529  df-ne 2569  df-nel 2570  df-ral 2671  df-rex 2672  df-reu 2673  df-rmo 2674  df-rab 2675  df-v 2918  df-sbc 3122  df-csb 3212  df-dif 3283  df-un 3285  df-in 3287  df-ss 3294  df-pss 3296  df-nul 3589  df-if 3700  df-pw 3761  df-sn 3780  df-pr 3781  df-tp 3782  df-op 3783  df-uni 3976  df-int 4011  df-iun 4055  df-br 4173  df-opab 4227  df-mpt 4228  df-tr 4263  df-eprel 4454  df-id 4458  df-po 4463  df-so 4464  df-fr 4501  df-we 4503  df-ord 4544  df-on 4545  df-lim 4546  df-suc 4547  df-om 4805  df-xp 4843  df-rel 4844  df-cnv 4845  df-co 4846  df-dm 4847  df-rn 4848  df-res 4849  df-ima 4850  df-iota 5377  df-fun 5415  df-fn 5416  df-f 5417  df-f1 5418  df-fo 5419  df-f1o 5420  df-fv 5421  df-ov 6043  df-oprab 6044  df-mpt2 6045  df-1st 6308  df-2nd 6309  df-riota 6508  df-recs 6592  df-rdg 6627  df-1o 6683  df-2o 6684  df-oadd 6687  df-er 6864  df-map 6979  df-pm 6980  df-en 7069  df-dom 7070  df-sdom 7071  df-fin 7072  df-card 7782  df-cda 8004  df-pnf 9078  df-mnf 9079  df-xr 9080  df-ltxr 9081  df-le 9082  df-sub 9249  df-neg 9250  df-div 9634  df-nn 9957  df-n0 10178  df-z 10239  df-uz 10445  df-fz 11000  df-seq 11279  df-fac 11522  df-bc 11549  df-hash 11574
  Copyright terms: Public domain W3C validator