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

Theorem hashf1 11634
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 5576 . . . . . . . . 9  |-  ( x  =  (/)  ->  ( f : x -1-1-> B  <->  f : (/) -1-1->
B ) )
2 f1fn 5581 . . . . . . . . . . . 12  |-  ( f : (/) -1-1-> B  ->  f  Fn  (/) )
3 fn0 5505 . . . . . . . . . . . 12  |-  ( f  Fn  (/)  <->  f  =  (/) )
42, 3sylib 189 . . . . . . . . . . 11  |-  ( f : (/) -1-1-> B  ->  f  =  (/) )
5 f10 5650 . . . . . . . . . . . 12  |-  (/) : (/) -1-1-> B
6 f1eq1 5575 . . . . . . . . . . . 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 3773 . . . . . . . . . 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 2504 . . . . . . 7  |-  ( x  =  (/)  ->  { f  |  f : x
-1-1-> B }  =  { (/)
} )
1312fveq2d 5673 . . . . . 6  |-  ( x  =  (/)  ->  ( # `  { f  |  f : x -1-1-> B }
)  =  ( # `  { (/) } ) )
14 0ex 4281 . . . . . . 7  |-  (/)  e.  _V
15 hashsng 11575 . . . . . . 7  |-  ( (/)  e.  _V  ->  ( # `  { (/)
} )  =  1 )
1614, 15ax-mp 8 . . . . . 6  |-  ( # `  { (/) } )  =  1
1713, 16syl6eq 2436 . . . . 5  |-  ( x  =  (/)  ->  ( # `  { f  |  f : x -1-1-> B }
)  =  1 )
18 fveq2 5669 . . . . . . . . 9  |-  ( x  =  (/)  ->  ( # `  x )  =  (
# `  (/) ) )
19 hash0 11574 . . . . . . . . 9  |-  ( # `  (/) )  =  0
2018, 19syl6eq 2436 . . . . . . . 8  |-  ( x  =  (/)  ->  ( # `  x )  =  0 )
2120fveq2d 5673 . . . . . . 7  |-  ( x  =  (/)  ->  ( ! `
 ( # `  x
) )  =  ( ! `  0 ) )
22 fac0 11497 . . . . . . 7  |-  ( ! `
 0 )  =  1
2321, 22syl6eq 2436 . . . . . 6  |-  ( x  =  (/)  ->  ( ! `
 ( # `  x
) )  =  1 )
2420oveq2d 6037 . . . . . 6  |-  ( x  =  (/)  ->  ( (
# `  B )  _C  ( # `  x
) )  =  ( ( # `  B
)  _C  0 ) )
2523, 24oveq12d 6039 . . . . 5  |-  ( x  =  (/)  ->  ( ( ! `  ( # `  x ) )  x.  ( ( # `  B
)  _C  ( # `  x ) ) )  =  ( 1  x.  ( ( # `  B
)  _C  0 ) ) )
2617, 25eqeq12d 2402 . . . 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 5576 . . . . . . 7  |-  ( x  =  y  ->  (
f : x -1-1-> B  <->  f : y -1-1-> B ) )
2928abbidv 2502 . . . . . 6  |-  ( x  =  y  ->  { f  |  f : x
-1-1-> B }  =  {
f  |  f : y -1-1-> B } )
3029fveq2d 5673 . . . . 5  |-  ( x  =  y  ->  ( # `
 { f  |  f : x -1-1-> B } )  =  (
# `  { f  |  f : y
-1-1-> B } ) )
31 fveq2 5669 . . . . . . 7  |-  ( x  =  y  ->  ( # `
 x )  =  ( # `  y
) )
3231fveq2d 5673 . . . . . 6  |-  ( x  =  y  ->  ( ! `  ( # `  x
) )  =  ( ! `  ( # `  y ) ) )
3331oveq2d 6037 . . . . . 6  |-  ( x  =  y  ->  (
( # `  B )  _C  ( # `  x
) )  =  ( ( # `  B
)  _C  ( # `  y ) ) )
3432, 33oveq12d 6039 . . . . 5  |-  ( x  =  y  ->  (
( ! `  ( # `
 x ) )  x.  ( ( # `  B )  _C  ( # `
 x ) ) )  =  ( ( ! `  ( # `  y ) )  x.  ( ( # `  B
)  _C  ( # `  y ) ) ) )
3530, 34eqeq12d 2402 . . . 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 5576 . . . . . . 7  |-  ( x  =  ( y  u. 
{ z } )  ->  ( f : x -1-1-> B  <->  f : ( y  u.  { z } ) -1-1-> B ) )
3837abbidv 2502 . . . . . 6  |-  ( x  =  ( y  u. 
{ z } )  ->  { f  |  f : x -1-1-> B }  =  { f  |  f : ( y  u.  { z } ) -1-1-> B }
)
3938fveq2d 5673 . . . . 5  |-  ( x  =  ( y  u. 
{ z } )  ->  ( # `  {
f  |  f : x -1-1-> B } )  =  ( # `  {
f  |  f : ( y  u.  {
z } ) -1-1-> B } ) )
40 fveq2 5669 . . . . . . 7  |-  ( x  =  ( y  u. 
{ z } )  ->  ( # `  x
)  =  ( # `  ( y  u.  {
z } ) ) )
4140fveq2d 5673 . . . . . 6  |-  ( x  =  ( y  u. 
{ z } )  ->  ( ! `  ( # `  x ) )  =  ( ! `
 ( # `  (
y  u.  { z } ) ) ) )
4240oveq2d 6037 . . . . . 6  |-  ( x  =  ( y  u. 
{ z } )  ->  ( ( # `  B )  _C  ( # `
 x ) )  =  ( ( # `  B )  _C  ( # `
 ( y  u. 
{ z } ) ) ) )
4341, 42oveq12d 6039 . . . . 5  |-  ( x  =  ( y  u. 
{ z } )  ->  ( ( ! `
 ( # `  x
) )  x.  (
( # `  B )  _C  ( # `  x
) ) )  =  ( ( ! `  ( # `  ( y  u.  { z } ) ) )  x.  ( ( # `  B
)  _C  ( # `  ( y  u.  {
z } ) ) ) ) )
4439, 43eqeq12d 2402 . . . 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 5576 . . . . . . 7  |-  ( x  =  A  ->  (
f : x -1-1-> B  <->  f : A -1-1-> B ) )
4746abbidv 2502 . . . . . 6  |-  ( x  =  A  ->  { f  |  f : x
-1-1-> B }  =  {
f  |  f : A -1-1-> B } )
4847fveq2d 5673 . . . . 5  |-  ( x  =  A  ->  ( # `
 { f  |  f : x -1-1-> B } )  =  (
# `  { f  |  f : A -1-1-> B } ) )
49 fveq2 5669 . . . . . . 7  |-  ( x  =  A  ->  ( # `
 x )  =  ( # `  A
) )
5049fveq2d 5673 . . . . . 6  |-  ( x  =  A  ->  ( ! `  ( # `  x
) )  =  ( ! `  ( # `  A ) ) )
5149oveq2d 6037 . . . . . 6  |-  ( x  =  A  ->  (
( # `  B )  _C  ( # `  x
) )  =  ( ( # `  B
)  _C  ( # `  A ) ) )
5250, 51oveq12d 6039 . . . . 5  |-  ( x  =  A  ->  (
( ! `  ( # `
 x ) )  x.  ( ( # `  B )  _C  ( # `
 x ) ) )  =  ( ( ! `  ( # `  A ) )  x.  ( ( # `  B
)  _C  ( # `  A ) ) ) )
5348, 52eqeq12d 2402 . . . 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 11567 . . . . . 6  |-  ( B  e.  Fin  ->  ( # `
 B )  e. 
NN0 )
56 bcn0 11529 . . . . . 6  |-  ( (
# `  B )  e.  NN0  ->  ( ( # `
 B )  _C  0 )  =  1 )
5755, 56syl 16 . . . . 5  |-  ( B  e.  Fin  ->  (
( # `  B )  _C  0 )  =  1 )
5857oveq2d 6037 . . . 4  |-  ( B  e.  Fin  ->  (
1  x.  ( (
# `  B )  _C  0 ) )  =  ( 1  x.  1 ) )
59 1t1e1 10059 . . . 4  |-  ( 1  x.  1 )  =  1
6058, 59syl6req 2437 . . 3  |-  ( B  e.  Fin  ->  1  =  ( 1  x.  ( ( # `  B
)  _C  0 ) ) )
61 abn0 3590 . . . . . . . . . . . . 13  |-  ( { f  |  f : ( y  u.  {
z } ) -1-1-> B }  =/=  (/)  <->  E. f  f : ( y  u.  {
z } ) -1-1-> B
)
62 f1domg 7064 . . . . . . . . . . . . . . . 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 2903 . . . . . . . . . . . . . . . . . . 19  |-  z  e. 
_V
65 hashunsng 11593 . . . . . . . . . . . . . . . . . . 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 4164 . . . . . . . . . . . . . . . 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 7124 . . . . . . . . . . . . . . . . . 18  |-  { z }  e.  Fin
71 unfi 7311 . . . . . . . . . . . . . . . . . 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 11581 . . . . . . . . . . . . . . . . 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 11567 . . . . . . . . . . . . . . . . . . . 20  |-  ( y  e.  Fin  ->  ( # `
 y )  e. 
NN0 )
7776ad2antrl 709 . . . . . . . . . . . . . . . . . . 19  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  ( # `
 y )  e. 
NN0 )
78 nn0p1nn 10192 . . . . . . . . . . . . . . . . . . 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 9948 . . . . . . . . . . . . . . . . 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 10208 . . . . . . . . . . . . . . . . 17  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  ( # `
 B )  e.  RR )
8380, 82lenltd 9152 . . . . . . . . . . . . . . . 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 2612 . . . . . . . . . . 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 5673 . . . . . . . . 9  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  ( # `
 B )  < 
( ( # `  y
)  +  1 ) )  ->  ( # `  {
f  |  f : ( y  u.  {
z } ) -1-1-> B } )  =  (
# `  (/) ) )
91 hashcl 11567 . . . . . . . . . . . . . 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 11504 . . . . . . . . . . . . 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 9949 . . . . . . . . . . 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 9198 . . . . . . . . 9  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  ( # `
 B )  < 
( ( # `  y
)  +  1 ) )  ->  ( ( ! `  ( # `  (
y  u.  { z } ) ) )  x.  0 )  =  0 )
9819, 90, 973eqtr4a 2446 . . . . . . . 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 6037 . . . . . . . . . 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 10307 . . . . . . . . . . 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 11526 . . . . . . . . . . 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 2420 . . . . . . . . 9  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  ( # `
 B )  < 
( ( # `  y
)  +  1 ) )  ->  ( ( # `
 B )  _C  ( # `  (
y  u.  { z } ) ) )  =  0 )
109108oveq2d 6037 . . . . . . . 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 2423 . . . . . . 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 6029 . . . . . . 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 11633 . . . . . . . 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 11504 . . . . . . . . . . . . . 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 9949 . . . . . . . . . . . 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 10193 . . . . . . . . . . . . . . . 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 10268 . . . . . . . . . . . . . . 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 11504 . . . . . . . . . . . . . 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 9949 . . . . . . . . . . . 12  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( ( # `  B
)  -  ( (
# `  y )  +  1 ) ) )  e.  CC )
130128nnne0d 9977 . . . . . . . . . . . 12  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( ( # `  B
)  -  ( (
# `  y )  +  1 ) ) )  =/=  0 )
131121, 129, 130divcld 9723 . . . . . . . . . . 11  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( ! `  ( # `  B
) )  /  ( ! `  ( ( # `
 B )  -  ( ( # `  y
)  +  1 ) ) ) )  e.  CC )
132 faccl 11504 . . . . . . . . . . . . 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 9949 . . . . . . . . . . 11  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( ( # `  y
)  +  1 ) )  e.  CC )
135133nnne0d 9977 . . . . . . . . . . 11  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( ( # `  y
)  +  1 ) )  =/=  0 )
136131, 134, 135divcan2d 9725 . . . . . . . . . 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 10209 . . . . . . . . . . . 12  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( # `  B
)  e.  CC )
138122nn0cnd 10209 . . . . . . . . . . . 12  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( # `  y
)  e.  CC )
139137, 138subcld 9344 . . . . . . . . . . 11  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( # `
 B )  -  ( # `  y ) )  e.  CC )
140 ax-1cn 8982 . . . . . . . . . . . . . 14  |-  1  e.  CC
141 npcan 9247 . . . . . . . . . . . . . 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 9375 . . . . . . . . . . . . . . 15  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( (
( # `  B )  -  ( # `  y
) )  -  1 )  =  ( (
# `  B )  -  ( ( # `  y )  +  1 ) ) )
145144, 126eqeltrd 2462 . . . . . . . . . . . . . 14  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( (
( # `  B )  -  ( # `  y
) )  -  1 )  e.  NN0 )
146 nn0p1nn 10192 . . . . . . . . . . . . . 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 2463 . . . . . . . . . . . 12  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( # `
 B )  -  ( # `  y ) )  e.  NN )
149148nnne0d 9977 . . . . . . . . . . 11  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( # `
 B )  -  ( # `  y ) )  =/=  0 )
150131, 139, 149divcan2d 9725 . . . . . . . . . 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 2423 . . . . . . . . 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 5673 . . . . . . . . . 10  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( # `  (
y  u.  { z } ) ) )  =  ( ! `  ( ( # `  y
)  +  1 ) ) )
154 nn0uz 10453 . . . . . . . . . . . . . . 15  |-  NN0  =  ( ZZ>= `  0 )
155124, 154syl6eleq 2478 . . . . . . . . . . . . . 14  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( # `
 y )  +  1 )  e.  (
ZZ>= `  0 ) )
156118nn0zd 10306 . . . . . . . . . . . . . 14  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( # `  B
)  e.  ZZ )
157 elfz5 10984 . . . . . . . . . . . . . 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 11524 . . . . . . . . . . . 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 6037 . . . . . . . . . . 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 9754 . . . . . . . . . . 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 2430 . . . . . . . . . 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 6039 . . . . . . . . 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 2478 . . . . . . . . . . . . . . 15  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( # `  y
)  e.  ( ZZ>= ` 
0 ) )
167 peano2fzr 11002 . . . . . . . . . . . . . . 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 11524 . . . . . . . . . . . . . 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 10994 . . . . . . . . . . . . . . . . . 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 10268 . . . . . . . . . . . . . . . . 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 11504 . . . . . . . . . . . . . . . 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 9949 . . . . . . . . . . . . . 14  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( ( # `  B
)  -  ( # `  y ) ) )  e.  CC )
178 faccl 11504 . . . . . . . . . . . . . . . 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 9949 . . . . . . . . . . . . . 14  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( # `  y
) )  e.  CC )
181176nnne0d 9977 . . . . . . . . . . . . . 14  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( ( # `  B
)  -  ( # `  y ) ) )  =/=  0 )
182179nnne0d 9977 . . . . . . . . . . . . . 14  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( # `  y
) )  =/=  0
)
183121, 177, 180, 181, 182divdiv1d 9754 . . . . . . . . . . . . 13  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( (
( ! `  ( # `
 B ) )  /  ( ! `  ( ( # `  B
)  -  ( # `  y ) ) ) )  /  ( ! `
 ( # `  y
) ) )  =  ( ( ! `  ( # `  B ) )  /  ( ( ! `  ( (
# `  B )  -  ( # `  y
) ) )  x.  ( ! `  ( # `
 y ) ) ) ) )
184170, 183eqtr4d 2423 . . . . . . . . . . . 12  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( # `
 B )  _C  ( # `  y
) )  =  ( ( ( ! `  ( # `  B ) )  /  ( ! `
 ( ( # `  B )  -  ( # `
 y ) ) ) )  /  ( ! `  ( # `  y
) ) ) )
185184oveq2d 6037 . . . . . . . . . . 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 11503 . . . . . . . . . . . . . . 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 5673 . . . . . . . . . . . . . . 15  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( ( ( # `  B )  -  ( # `
 y ) )  -  1 ) )  =  ( ! `  ( ( # `  B
)  -  ( (
# `  y )  +  1 ) ) ) )
189188oveq1d 6036 . . . . . . . . . . . . . 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 2420 . . . . . . . . . . . . 13  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( ( # `  B
)  -  ( # `  y ) ) )  =  ( ( ! `
 ( ( # `  B )  -  (
( # `  y )  +  1 ) ) )  x.  ( (
# `  B )  -  ( # `  y
) ) ) )
191190oveq2d 6037 . . . . . . . . . . . 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 9723 . . . . . . . . . . . . 13  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( ! `  ( # `  B
) )  /  ( ! `  ( ( # `
 B )  -  ( # `  y ) ) ) )  e.  CC )
193192, 180, 182divcan2d 9725 . . . . . . . . . . . 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 9754 . . . . . . . . . . . 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 2430 . . . . . . . . . . 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 2420 . . . . . . . . . 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 6037 . . . . . . . . 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 2430 . . . . . . . 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 2402 . . . . . . 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 9115 . . . . 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 7286 . 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 1717   {cab 2374    =/= wne 2551   _Vcvv 2900    u. cun 3262   (/)c0 3572   {csn 3758   class class class wbr 4154    Fn wfn 5390   -1-1->wf1 5392   ` cfv 5395  (class class class)co 6021    ~<_ cdom 7044   Fincfn 7046   CCcc 8922   0cc0 8924   1c1 8925    + caddc 8927    x. cmul 8929    < clt 9054    <_ cle 9055    - cmin 9224    / cdiv 9610   NNcn 9933   NN0cn0 10154   ZZcz 10215   ZZ>=cuz 10421   ...cfz 10976   !cfa 11494    _C cbc 11521   #chash 11546
This theorem is referenced by:  hashfac  11635  birthdaylem2  20659
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 1661  ax-8 1682  ax-13 1719  ax-14 1721  ax-6 1736  ax-7 1741  ax-11 1753  ax-12 1939  ax-ext 2369  ax-rep 4262  ax-sep 4272  ax-nul 4280  ax-pow 4319  ax-pr 4345  ax-un 4642  ax-cnex 8980  ax-resscn 8981  ax-1cn 8982  ax-icn 8983  ax-addcl 8984  ax-addrcl 8985  ax-mulcl 8986  ax-mulrcl 8987  ax-mulcom 8988  ax-addass 8989  ax-mulass 8990  ax-distr 8991  ax-i2m1 8992  ax-1ne0 8993  ax-1rid 8994  ax-rnegex 8995  ax-rrecex 8996  ax-cnre 8997  ax-pre-lttri 8998  ax-pre-lttrn 8999  ax-pre-ltadd 9000  ax-pre-mulgt0 9001
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 2243  df-mo 2244  df-clab 2375  df-cleq 2381  df-clel 2384  df-nfc 2513  df-ne 2553  df-nel 2554  df-ral 2655  df-rex 2656  df-reu 2657  df-rmo 2658  df-rab 2659  df-v 2902  df-sbc 3106  df-csb 3196  df-dif 3267  df-un 3269  df-in 3271  df-ss 3278  df-pss 3280  df-nul 3573  df-if 3684  df-pw 3745  df-sn 3764  df-pr 3765  df-tp 3766  df-op 3767  df-uni 3959  df-int 3994  df-iun 4038  df-br 4155  df-opab 4209  df-mpt 4210  df-tr 4245  df-eprel 4436  df-id 4440  df-po 4445  df-so 4446  df-fr 4483  df-we 4485  df-ord 4526  df-on 4527  df-lim 4528  df-suc 4529  df-om 4787  df-xp 4825  df-rel 4826  df-cnv 4827  df-co 4828  df-dm 4829  df-rn 4830  df-res 4831  df-ima 4832  df-iota 5359  df-fun 5397  df-fn 5398  df-f 5399  df-f1 5400  df-fo 5401  df-f1o 5402  df-fv 5403  df-ov 6024  df-oprab 6025  df-mpt2 6026  df-1st 6289  df-2nd 6290  df-riota 6486  df-recs 6570  df-rdg 6605  df-1o 6661  df-2o 6662  df-oadd 6665  df-er 6842  df-map 6957  df-pm 6958  df-en 7047  df-dom 7048  df-sdom 7049  df-fin 7050  df-card 7760  df-cda 7982  df-pnf 9056  df-mnf 9057  df-xr 9058  df-ltxr 9059  df-le 9060  df-sub 9226  df-neg 9227  df-div 9611  df-nn 9934  df-n0 10155  df-z 10216  df-uz 10422  df-fz 10977  df-seq 11252  df-fac 11495  df-bc 11522  df-hash 11547
  Copyright terms: Public domain W3C validator