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

Theorem hashf1 11411
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 5449 . . . . . . . . 9  |-  ( x  =  (/)  ->  ( f : x -1-1-> B  <->  f : (/) -1-1->
B ) )
2 f1fn 5454 . . . . . . . . . . . 12  |-  ( f : (/) -1-1-> B  ->  f  Fn  (/) )
3 fn0 5379 . . . . . . . . . . . 12  |-  ( f  Fn  (/)  <->  f  =  (/) )
42, 3sylib 188 . . . . . . . . . . 11  |-  ( f : (/) -1-1-> B  ->  f  =  (/) )
5 f10 5523 . . . . . . . . . . . 12  |-  (/) : (/) -1-1-> B
6 f1eq1 5448 . . . . . . . . . . . 12  |-  ( f  =  (/)  ->  ( f : (/) -1-1-> B  <->  (/) : (/) -1-1-> B ) )
75, 6mpbiri 224 . . . . . . . . . . 11  |-  ( f  =  (/)  ->  f :
(/) -1-1-> B )
84, 7impbii 180 . . . . . . . . . 10  |-  ( f : (/) -1-1-> B  <->  f  =  (/) )
9 elsn 3668 . . . . . . . . . 10  |-  ( f  e.  { (/) }  <->  f  =  (/) )
108, 9bitr4i 243 . . . . . . . . 9  |-  ( f : (/) -1-1-> B  <->  f  e.  { (/)
} )
111, 10syl6bb 252 . . . . . . . 8  |-  ( x  =  (/)  ->  ( f : x -1-1-> B  <->  f  e.  {
(/) } ) )
1211abbi1dv 2412 . . . . . . 7  |-  ( x  =  (/)  ->  { f  |  f : x
-1-1-> B }  =  { (/)
} )
1312fveq2d 5545 . . . . . 6  |-  ( x  =  (/)  ->  ( # `  { f  |  f : x -1-1-> B }
)  =  ( # `  { (/) } ) )
14 0ex 4166 . . . . . . 7  |-  (/)  e.  _V
15 hashsng 11372 . . . . . . 7  |-  ( (/)  e.  _V  ->  ( # `  { (/)
} )  =  1 )
1614, 15ax-mp 8 . . . . . 6  |-  ( # `  { (/) } )  =  1
1713, 16syl6eq 2344 . . . . 5  |-  ( x  =  (/)  ->  ( # `  { f  |  f : x -1-1-> B }
)  =  1 )
18 fveq2 5541 . . . . . . . . 9  |-  ( x  =  (/)  ->  ( # `  x )  =  (
# `  (/) ) )
19 hash0 11371 . . . . . . . . 9  |-  ( # `  (/) )  =  0
2018, 19syl6eq 2344 . . . . . . . 8  |-  ( x  =  (/)  ->  ( # `  x )  =  0 )
2120fveq2d 5545 . . . . . . 7  |-  ( x  =  (/)  ->  ( ! `
 ( # `  x
) )  =  ( ! `  0 ) )
22 fac0 11307 . . . . . . 7  |-  ( ! `
 0 )  =  1
2321, 22syl6eq 2344 . . . . . 6  |-  ( x  =  (/)  ->  ( ! `
 ( # `  x
) )  =  1 )
2420oveq2d 5890 . . . . . 6  |-  ( x  =  (/)  ->  ( (
# `  B )  _C  ( # `  x
) )  =  ( ( # `  B
)  _C  0 ) )
2523, 24oveq12d 5892 . . . . 5  |-  ( x  =  (/)  ->  ( ( ! `  ( # `  x ) )  x.  ( ( # `  B
)  _C  ( # `  x ) ) )  =  ( 1  x.  ( ( # `  B
)  _C  0 ) ) )
2617, 25eqeq12d 2310 . . . 4  |-  ( x  =  (/)  ->  ( (
# `  { f  |  f : x
-1-1-> B } )  =  ( ( ! `  ( # `  x ) )  x.  ( (
# `  B )  _C  ( # `  x
) ) )  <->  1  =  ( 1  x.  (
( # `  B )  _C  0 ) ) ) )
2726imbi2d 307 . . 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 5449 . . . . . . 7  |-  ( x  =  y  ->  (
f : x -1-1-> B  <->  f : y -1-1-> B ) )
2928abbidv 2410 . . . . . 6  |-  ( x  =  y  ->  { f  |  f : x
-1-1-> B }  =  {
f  |  f : y -1-1-> B } )
3029fveq2d 5545 . . . . 5  |-  ( x  =  y  ->  ( # `
 { f  |  f : x -1-1-> B } )  =  (
# `  { f  |  f : y
-1-1-> B } ) )
31 fveq2 5541 . . . . . . 7  |-  ( x  =  y  ->  ( # `
 x )  =  ( # `  y
) )
3231fveq2d 5545 . . . . . 6  |-  ( x  =  y  ->  ( ! `  ( # `  x
) )  =  ( ! `  ( # `  y ) ) )
3331oveq2d 5890 . . . . . 6  |-  ( x  =  y  ->  (
( # `  B )  _C  ( # `  x
) )  =  ( ( # `  B
)  _C  ( # `  y ) ) )
3432, 33oveq12d 5892 . . . . 5  |-  ( x  =  y  ->  (
( ! `  ( # `
 x ) )  x.  ( ( # `  B )  _C  ( # `
 x ) ) )  =  ( ( ! `  ( # `  y ) )  x.  ( ( # `  B
)  _C  ( # `  y ) ) ) )
3530, 34eqeq12d 2310 . . . 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 307 . . 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 5449 . . . . . . 7  |-  ( x  =  ( y  u. 
{ z } )  ->  ( f : x -1-1-> B  <->  f : ( y  u.  { z } ) -1-1-> B ) )
3837abbidv 2410 . . . . . 6  |-  ( x  =  ( y  u. 
{ z } )  ->  { f  |  f : x -1-1-> B }  =  { f  |  f : ( y  u.  { z } ) -1-1-> B }
)
3938fveq2d 5545 . . . . 5  |-  ( x  =  ( y  u. 
{ z } )  ->  ( # `  {
f  |  f : x -1-1-> B } )  =  ( # `  {
f  |  f : ( y  u.  {
z } ) -1-1-> B } ) )
40 fveq2 5541 . . . . . . 7  |-  ( x  =  ( y  u. 
{ z } )  ->  ( # `  x
)  =  ( # `  ( y  u.  {
z } ) ) )
4140fveq2d 5545 . . . . . 6  |-  ( x  =  ( y  u. 
{ z } )  ->  ( ! `  ( # `  x ) )  =  ( ! `
 ( # `  (
y  u.  { z } ) ) ) )
4240oveq2d 5890 . . . . . 6  |-  ( x  =  ( y  u. 
{ z } )  ->  ( ( # `  B )  _C  ( # `
 x ) )  =  ( ( # `  B )  _C  ( # `
 ( y  u. 
{ z } ) ) ) )
4341, 42oveq12d 5892 . . . . 5  |-  ( x  =  ( y  u. 
{ z } )  ->  ( ( ! `
 ( # `  x
) )  x.  (
( # `  B )  _C  ( # `  x
) ) )  =  ( ( ! `  ( # `  ( y  u.  { z } ) ) )  x.  ( ( # `  B
)  _C  ( # `  ( y  u.  {
z } ) ) ) ) )
4439, 43eqeq12d 2310 . . . 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 307 . . 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 5449 . . . . . . 7  |-  ( x  =  A  ->  (
f : x -1-1-> B  <->  f : A -1-1-> B ) )
4746abbidv 2410 . . . . . 6  |-  ( x  =  A  ->  { f  |  f : x
-1-1-> B }  =  {
f  |  f : A -1-1-> B } )
4847fveq2d 5545 . . . . 5  |-  ( x  =  A  ->  ( # `
 { f  |  f : x -1-1-> B } )  =  (
# `  { f  |  f : A -1-1-> B } ) )
49 fveq2 5541 . . . . . . 7  |-  ( x  =  A  ->  ( # `
 x )  =  ( # `  A
) )
5049fveq2d 5545 . . . . . 6  |-  ( x  =  A  ->  ( ! `  ( # `  x
) )  =  ( ! `  ( # `  A ) ) )
5149oveq2d 5890 . . . . . 6  |-  ( x  =  A  ->  (
( # `  B )  _C  ( # `  x
) )  =  ( ( # `  B
)  _C  ( # `  A ) ) )
5250, 51oveq12d 5892 . . . . 5  |-  ( x  =  A  ->  (
( ! `  ( # `
 x ) )  x.  ( ( # `  B )  _C  ( # `
 x ) ) )  =  ( ( ! `  ( # `  A ) )  x.  ( ( # `  B
)  _C  ( # `  A ) ) ) )
5348, 52eqeq12d 2310 . . . 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 307 . . 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 11366 . . . . . 6  |-  ( B  e.  Fin  ->  ( # `
 B )  e. 
NN0 )
56 bcn0 11339 . . . . . 6  |-  ( (
# `  B )  e.  NN0  ->  ( ( # `
 B )  _C  0 )  =  1 )
5755, 56syl 15 . . . . 5  |-  ( B  e.  Fin  ->  (
( # `  B )  _C  0 )  =  1 )
5857oveq2d 5890 . . . 4  |-  ( B  e.  Fin  ->  (
1  x.  ( (
# `  B )  _C  0 ) )  =  ( 1  x.  1 ) )
59 1t1e1 9886 . . . 4  |-  ( 1  x.  1 )  =  1
6058, 59syl6req 2345 . . 3  |-  ( B  e.  Fin  ->  1  =  ( 1  x.  ( ( # `  B
)  _C  0 ) ) )
61 abn0 3486 . . . . . . . . . . . . 13  |-  ( { f  |  f : ( y  u.  {
z } ) -1-1-> B }  =/=  (/)  <->  E. f  f : ( y  u.  {
z } ) -1-1-> B
)
62 f1domg 6897 . . . . . . . . . . . . . . . 16  |-  ( B  e.  Fin  ->  (
f : ( y  u.  { z } ) -1-1-> B  ->  ( y  u.  { z } )  ~<_  B ) )
6362adantr 451 . . . . . . . . . . . . . . 15  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  (
f : ( y  u.  { z } ) -1-1-> B  ->  ( y  u.  { z } )  ~<_  B ) )
64 vex 2804 . . . . . . . . . . . . . . . . . . 19  |-  z  e. 
_V
65 hashunsng 11383 . . . . . . . . . . . . . . . . . . 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 452 . . . . . . . . . . . . . . . . 17  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  ( # `
 ( y  u. 
{ z } ) )  =  ( (
# `  y )  +  1 ) )
6867breq1d 4049 . . . . . . . . . . . . . . . 16  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  (
( # `  ( y  u.  { z } ) )  <_  ( # `
 B )  <->  ( ( # `
 y )  +  1 )  <_  ( # `
 B ) ) )
69 simprl 732 . . . . . . . . . . . . . . . . . 18  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  y  e.  Fin )
70 snfi 6957 . . . . . . . . . . . . . . . . . 18  |-  { z }  e.  Fin
71 unfi 7140 . . . . . . . . . . . . . . . . . 18  |-  ( ( y  e.  Fin  /\  { z }  e.  Fin )  ->  ( y  u. 
{ z } )  e.  Fin )
7269, 70, 71sylancl 643 . . . . . . . . . . . . . . . . 17  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  (
y  u.  { z } )  e.  Fin )
73 simpl 443 . . . . . . . . . . . . . . . . 17  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  B  e.  Fin )
74 hashdom 11377 . . . . . . . . . . . . . . . . 17  |-  ( ( ( y  u.  {
z } )  e. 
Fin  /\  B  e.  Fin )  ->  ( (
# `  ( y  u.  { z } ) )  <_  ( # `  B
)  <->  ( y  u. 
{ z } )  ~<_  B ) )
7572, 73, 74syl2anc 642 . . . . . . . . . . . . . . . 16  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  (
( # `  ( y  u.  { z } ) )  <_  ( # `
 B )  <->  ( y  u.  { z } )  ~<_  B ) )
76 hashcl 11366 . . . . . . . . . . . . . . . . . . . 20  |-  ( y  e.  Fin  ->  ( # `
 y )  e. 
NN0 )
7776ad2antrl 708 . . . . . . . . . . . . . . . . . . 19  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  ( # `
 y )  e. 
NN0 )
78 nn0p1nn 10019 . . . . . . . . . . . . . . . . . . 19  |-  ( (
# `  y )  e.  NN0  ->  ( ( # `
 y )  +  1 )  e.  NN )
7977, 78syl 15 . . . . . . . . . . . . . . . . . 18  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  (
( # `  y )  +  1 )  e.  NN )
8079nnred 9777 . . . . . . . . . . . . . . . . 17  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  (
( # `  y )  +  1 )  e.  RR )
8155adantr 451 . . . . . . . . . . . . . . . . . 18  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  ( # `
 B )  e. 
NN0 )
8281nn0red 10035 . . . . . . . . . . . . . . . . 17  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  ( # `
 B )  e.  RR )
8380, 82lenltd 8981 . . . . . . . . . . . . . . . 16  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  (
( ( # `  y
)  +  1 )  <_  ( # `  B
)  <->  -.  ( # `  B
)  <  ( ( # `
 y )  +  1 ) ) )
8468, 75, 833bitr3d 274 . . . . . . . . . . . . . . 15  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  (
( y  u.  {
z } )  ~<_  B  <->  -.  ( # `  B
)  <  ( ( # `
 y )  +  1 ) ) )
8563, 84sylibd 205 . . . . . . . . . . . . . 14  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  (
f : ( y  u.  { z } ) -1-1-> B  ->  -.  ( # `
 B )  < 
( ( # `  y
)  +  1 ) ) )
8685exlimdv 1626 . . . . . . . . . . . . 13  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  ( E. f  f :
( y  u.  {
z } ) -1-1-> B  ->  -.  ( # `  B
)  <  ( ( # `
 y )  +  1 ) ) )
8761, 86syl5bi 208 . . . . . . . . . . . 12  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  ( { f  |  f : ( y  u. 
{ z } )
-1-1-> B }  =/=  (/)  ->  -.  ( # `  B )  <  ( ( # `  y )  +  1 ) ) )
8887necon4ad 2520 . . . . . . . . . . 11  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  (
( # `  B )  <  ( ( # `  y )  +  1 )  ->  { f  |  f : ( y  u.  { z } ) -1-1-> B }  =  (/) ) )
8988imp 418 . . . . . . . . . 10  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  ( # `
 B )  < 
( ( # `  y
)  +  1 ) )  ->  { f  |  f : ( y  u.  { z } ) -1-1-> B }  =  (/) )
9089fveq2d 5545 . . . . . . . . 9  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  ( # `
 B )  < 
( ( # `  y
)  +  1 ) )  ->  ( # `  {
f  |  f : ( y  u.  {
z } ) -1-1-> B } )  =  (
# `  (/) ) )
91 hashcl 11366 . . . . . . . . . . . . . 14  |-  ( ( y  u.  { z } )  e.  Fin  ->  ( # `  (
y  u.  { z } ) )  e. 
NN0 )
9272, 91syl 15 . . . . . . . . . . . . 13  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  ( # `
 ( y  u. 
{ z } ) )  e.  NN0 )
93 faccl 11314 . . . . . . . . . . . . 13  |-  ( (
# `  ( y  u.  { z } ) )  e.  NN0  ->  ( ! `  ( # `  ( y  u.  {
z } ) ) )  e.  NN )
9492, 93syl 15 . . . . . . . . . . . 12  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  ( ! `  ( # `  (
y  u.  { z } ) ) )  e.  NN )
9594nncnd 9778 . . . . . . . . . . 11  |-  ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  ->  ( ! `  ( # `  (
y  u.  { z } ) ) )  e.  CC )
9695adantr 451 . . . . . . . . . 10  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  ( # `
 B )  < 
( ( # `  y
)  +  1 ) )  ->  ( ! `  ( # `  (
y  u.  { z } ) ) )  e.  CC )
9796mul01d 9027 . . . . . . . . 9  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  ( # `
 B )  < 
( ( # `  y
)  +  1 ) )  ->  ( ( ! `  ( # `  (
y  u.  { z } ) ) )  x.  0 )  =  0 )
9819, 90, 973eqtr4a 2354 . . . . . . . 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 451 . . . . . . . . . . 11  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  ( # `
 B )  < 
( ( # `  y
)  +  1 ) )  ->  ( # `  (
y  u.  { z } ) )  =  ( ( # `  y
)  +  1 ) )
10099oveq2d 5890 . . . . . . . . . 10  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  ( # `
 B )  < 
( ( # `  y
)  +  1 ) )  ->  ( ( # `
 B )  _C  ( # `  (
y  u.  { z } ) ) )  =  ( ( # `  B )  _C  (
( # `  y )  +  1 ) ) )
10181adantr 451 . . . . . . . . . . 11  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  ( # `
 B )  < 
( ( # `  y
)  +  1 ) )  ->  ( # `  B
)  e.  NN0 )
10279adantr 451 . . . . . . . . . . . 12  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  ( # `
 B )  < 
( ( # `  y
)  +  1 ) )  ->  ( ( # `
 y )  +  1 )  e.  NN )
103102nnzd 10132 . . . . . . . . . . 11  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  ( # `
 B )  < 
( ( # `  y
)  +  1 ) )  ->  ( ( # `
 y )  +  1 )  e.  ZZ )
104 simpr 447 . . . . . . . . . . . 12  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  ( # `
 B )  < 
( ( # `  y
)  +  1 ) )  ->  ( # `  B
)  <  ( ( # `
 y )  +  1 ) )
105104olcd 382 . . . . . . . . . . 11  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  ( # `
 B )  < 
( ( # `  y
)  +  1 ) )  ->  ( (
( # `  y )  +  1 )  <  0  \/  ( # `  B )  <  (
( # `  y )  +  1 ) ) )
106 bcval4 11336 . . . . . . . . . . 11  |-  ( ( ( # `  B
)  e.  NN0  /\  ( ( # `  y
)  +  1 )  e.  ZZ  /\  (
( ( # `  y
)  +  1 )  <  0  \/  ( # `
 B )  < 
( ( # `  y
)  +  1 ) ) )  ->  (
( # `  B )  _C  ( ( # `  y )  +  1 ) )  =  0 )
107101, 103, 105, 106syl3anc 1182 . . . . . . . . . 10  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  ( # `
 B )  < 
( ( # `  y
)  +  1 ) )  ->  ( ( # `
 B )  _C  ( ( # `  y
)  +  1 ) )  =  0 )
108100, 107eqtrd 2328 . . . . . . . . 9  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  ( # `
 B )  < 
( ( # `  y
)  +  1 ) )  ->  ( ( # `
 B )  _C  ( # `  (
y  u.  { z } ) ) )  =  0 )
109108oveq2d 5890 . . . . . . . 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 2331 . . . . . . 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 22 . . . . . 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 5882 . . . . . . 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 451 . . . . . . . . 9  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  y  e.  Fin )
11473adantr 451 . . . . . . . . 9  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  B  e.  Fin )
115 simplrr 737 . . . . . . . . 9  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  -.  z  e.  y )
116 simpr 447 . . . . . . . . 9  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( # `
 y )  +  1 )  <_  ( # `
 B ) )
117113, 114, 115, 116hashf1lem2 11410 . . . . . . . 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 451 . . . . . . . . . . . . . 14  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( # `  B
)  e.  NN0 )
119 faccl 11314 . . . . . . . . . . . . . 14  |-  ( (
# `  B )  e.  NN0  ->  ( ! `  ( # `  B
) )  e.  NN )
120118, 119syl 15 . . . . . . . . . . . . 13  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( # `  B
) )  e.  NN )
121120nncnd 9778 . . . . . . . . . . . 12  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( # `  B
) )  e.  CC )
12277adantr 451 . . . . . . . . . . . . . . . 16  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( # `  y
)  e.  NN0 )
123 peano2nn0 10020 . . . . . . . . . . . . . . . 16  |-  ( (
# `  y )  e.  NN0  ->  ( ( # `
 y )  +  1 )  e.  NN0 )
124122, 123syl 15 . . . . . . . . . . . . . . 15  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( # `
 y )  +  1 )  e.  NN0 )
125 nn0sub2 10093 . . . . . . . . . . . . . . 15  |-  ( ( ( ( # `  y
)  +  1 )  e.  NN0  /\  ( # `
 B )  e. 
NN0  /\  ( ( # `
 y )  +  1 )  <_  ( # `
 B ) )  ->  ( ( # `  B )  -  (
( # `  y )  +  1 ) )  e.  NN0 )
126124, 118, 116, 125syl3anc 1182 . . . . . . . . . . . . . 14  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( # `
 B )  -  ( ( # `  y
)  +  1 ) )  e.  NN0 )
127 faccl 11314 . . . . . . . . . . . . . 14  |-  ( ( ( # `  B
)  -  ( (
# `  y )  +  1 ) )  e.  NN0  ->  ( ! `
 ( ( # `  B )  -  (
( # `  y )  +  1 ) ) )  e.  NN )
128126, 127syl 15 . . . . . . . . . . . . 13  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( ( # `  B
)  -  ( (
# `  y )  +  1 ) ) )  e.  NN )
129128nncnd 9778 . . . . . . . . . . . 12  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( ( # `  B
)  -  ( (
# `  y )  +  1 ) ) )  e.  CC )
130128nnne0d 9806 . . . . . . . . . . . 12  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( ( # `  B
)  -  ( (
# `  y )  +  1 ) ) )  =/=  0 )
131121, 129, 130divcld 9552 . . . . . . . . . . 11  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( ! `  ( # `  B
) )  /  ( ! `  ( ( # `
 B )  -  ( ( # `  y
)  +  1 ) ) ) )  e.  CC )
132 faccl 11314 . . . . . . . . . . . . 13  |-  ( ( ( # `  y
)  +  1 )  e.  NN0  ->  ( ! `
 ( ( # `  y )  +  1 ) )  e.  NN )
133124, 132syl 15 . . . . . . . . . . . 12  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( ( # `  y
)  +  1 ) )  e.  NN )
134133nncnd 9778 . . . . . . . . . . 11  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( ( # `  y
)  +  1 ) )  e.  CC )
135133nnne0d 9806 . . . . . . . . . . 11  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( ( # `  y
)  +  1 ) )  =/=  0 )
136131, 134, 135divcan2d 9554 . . . . . . . . . 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 10036 . . . . . . . . . . . 12  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( # `  B
)  e.  CC )
138122nn0cnd 10036 . . . . . . . . . . . 12  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( # `  y
)  e.  CC )
139137, 138subcld 9173 . . . . . . . . . . 11  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( # `
 B )  -  ( # `  y ) )  e.  CC )
140 ax-1cn 8811 . . . . . . . . . . . . . 14  |-  1  e.  CC
141 npcan 9076 . . . . . . . . . . . . . 14  |-  ( ( ( ( # `  B
)  -  ( # `  y ) )  e.  CC  /\  1  e.  CC )  ->  (
( ( ( # `  B )  -  ( # `
 y ) )  -  1 )  +  1 )  =  ( ( # `  B
)  -  ( # `  y ) ) )
142139, 140, 141sylancl 643 . . . . . . . . . . . . 13  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( (
( ( # `  B
)  -  ( # `  y ) )  - 
1 )  +  1 )  =  ( (
# `  B )  -  ( # `  y
) ) )
143140a1i 10 . . . . . . . . . . . . . . . 16  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  1  e.  CC )
144137, 138, 143subsub4d 9204 . . . . . . . . . . . . . . 15  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( (
( # `  B )  -  ( # `  y
) )  -  1 )  =  ( (
# `  B )  -  ( ( # `  y )  +  1 ) ) )
145144, 126eqeltrd 2370 . . . . . . . . . . . . . 14  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( (
( # `  B )  -  ( # `  y
) )  -  1 )  e.  NN0 )
146 nn0p1nn 10019 . . . . . . . . . . . . . 14  |-  ( ( ( ( # `  B
)  -  ( # `  y ) )  - 
1 )  e.  NN0  ->  ( ( ( (
# `  B )  -  ( # `  y
) )  -  1 )  +  1 )  e.  NN )
147145, 146syl 15 . . . . . . . . . . . . 13  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( (
( ( # `  B
)  -  ( # `  y ) )  - 
1 )  +  1 )  e.  NN )
148142, 147eqeltrrd 2371 . . . . . . . . . . . 12  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( # `
 B )  -  ( # `  y ) )  e.  NN )
149148nnne0d 9806 . . . . . . . . . . 11  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( # `
 B )  -  ( # `  y ) )  =/=  0 )
150131, 139, 149divcan2d 9554 . . . . . . . . . 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 2331 . . . . . . . . 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 451 . . . . . . . . . . 11  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( # `  (
y  u.  { z } ) )  =  ( ( # `  y
)  +  1 ) )
153152fveq2d 5545 . . . . . . . . . 10  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( # `  (
y  u.  { z } ) ) )  =  ( ! `  ( ( # `  y
)  +  1 ) ) )
154 nn0uz 10278 . . . . . . . . . . . . . . 15  |-  NN0  =  ( ZZ>= `  0 )
155124, 154syl6eleq 2386 . . . . . . . . . . . . . 14  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( # `
 y )  +  1 )  e.  (
ZZ>= `  0 ) )
156118nn0zd 10131 . . . . . . . . . . . . . 14  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( # `  B
)  e.  ZZ )
157 elfz5 10806 . . . . . . . . . . . . . 14  |-  ( ( ( ( # `  y
)  +  1 )  e.  ( ZZ>= `  0
)  /\  ( # `  B
)  e.  ZZ )  ->  ( ( (
# `  y )  +  1 )  e.  ( 0 ... ( # `
 B ) )  <-> 
( ( # `  y
)  +  1 )  <_  ( # `  B
) ) )
158155, 156, 157syl2anc 642 . . . . . . . . . . . . 13  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( (
( # `  y )  +  1 )  e.  ( 0 ... ( # `
 B ) )  <-> 
( ( # `  y
)  +  1 )  <_  ( # `  B
) ) )
159116, 158mpbird 223 . . . . . . . . . . . 12  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( # `
 y )  +  1 )  e.  ( 0 ... ( # `  B ) ) )
160 bcval2 11334 . . . . . . . . . . . 12  |-  ( ( ( # `  y
)  +  1 )  e.  ( 0 ... ( # `  B
) )  ->  (
( # `  B )  _C  ( ( # `  y )  +  1 ) )  =  ( ( ! `  ( # `
 B ) )  /  ( ( ! `
 ( ( # `  B )  -  (
( # `  y )  +  1 ) ) )  x.  ( ! `
 ( ( # `  y )  +  1 ) ) ) ) )
161159, 160syl 15 . . . . . . . . . . 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 5890 . . . . . . . . . . 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 9583 . . . . . . . . . . 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 2338 . . . . . . . . . 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 5892 . . . . . . . . 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 2386 . . . . . . . . . . . . . . 15  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( # `  y
)  e.  ( ZZ>= ` 
0 ) )
167 peano2fzr 10824 . . . . . . . . . . . . . . 15  |-  ( ( ( # `  y
)  e.  ( ZZ>= ` 
0 )  /\  (
( # `  y )  +  1 )  e.  ( 0 ... ( # `
 B ) ) )  ->  ( # `  y
)  e.  ( 0 ... ( # `  B
) ) )
168166, 159, 167syl2anc 642 . . . . . . . . . . . . . 14  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( # `  y
)  e.  ( 0 ... ( # `  B
) ) )
169 bcval2 11334 . . . . . . . . . . . . . 14  |-  ( (
# `  y )  e.  ( 0 ... ( # `
 B ) )  ->  ( ( # `  B )  _C  ( # `
 y ) )  =  ( ( ! `
 ( # `  B
) )  /  (
( ! `  (
( # `  B )  -  ( # `  y
) ) )  x.  ( ! `  ( # `
 y ) ) ) ) )
170168, 169syl 15 . . . . . . . . . . . . 13  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( # `
 B )  _C  ( # `  y
) )  =  ( ( ! `  ( # `
 B ) )  /  ( ( ! `
 ( ( # `  B )  -  ( # `
 y ) ) )  x.  ( ! `
 ( # `  y
) ) ) ) )
171 elfzle2 10816 . . . . . . . . . . . . . . . . . 18  |-  ( (
# `  y )  e.  ( 0 ... ( # `
 B ) )  ->  ( # `  y
)  <_  ( # `  B
) )
172168, 171syl 15 . . . . . . . . . . . . . . . . 17  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( # `  y
)  <_  ( # `  B
) )
173 nn0sub2 10093 . . . . . . . . . . . . . . . . 17  |-  ( ( ( # `  y
)  e.  NN0  /\  ( # `  B )  e.  NN0  /\  ( # `
 y )  <_ 
( # `  B ) )  ->  ( ( # `
 B )  -  ( # `  y ) )  e.  NN0 )
174122, 118, 172, 173syl3anc 1182 . . . . . . . . . . . . . . . 16  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( # `
 B )  -  ( # `  y ) )  e.  NN0 )
175 faccl 11314 . . . . . . . . . . . . . . . 16  |-  ( ( ( # `  B
)  -  ( # `  y ) )  e. 
NN0  ->  ( ! `  ( ( # `  B
)  -  ( # `  y ) ) )  e.  NN )
176174, 175syl 15 . . . . . . . . . . . . . . 15  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( ( # `  B
)  -  ( # `  y ) ) )  e.  NN )
177176nncnd 9778 . . . . . . . . . . . . . 14  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( ( # `  B
)  -  ( # `  y ) ) )  e.  CC )
178 faccl 11314 . . . . . . . . . . . . . . . 16  |-  ( (
# `  y )  e.  NN0  ->  ( ! `  ( # `  y
) )  e.  NN )
179122, 178syl 15 . . . . . . . . . . . . . . 15  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( # `  y
) )  e.  NN )
180179nncnd 9778 . . . . . . . . . . . . . 14  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( # `  y
) )  e.  CC )
181176nnne0d 9806 . . . . . . . . . . . . . 14  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( ( # `  B
)  -  ( # `  y ) ) )  =/=  0 )
182179nnne0d 9806 . . . . . . . . . . . . . 14  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( # `  y
) )  =/=  0
)
183121, 177, 180, 181, 182divdiv1d 9583 . . . . . . . . . . . . 13  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( (
( ! `  ( # `
 B ) )  /  ( ! `  ( ( # `  B
)  -  ( # `  y ) ) ) )  /  ( ! `
 ( # `  y
) ) )  =  ( ( ! `  ( # `  B ) )  /  ( ( ! `  ( (
# `  B )  -  ( # `  y
) ) )  x.  ( ! `  ( # `
 y ) ) ) ) )
184170, 183eqtr4d 2331 . . . . . . . . . . . 12  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( # `
 B )  _C  ( # `  y
) )  =  ( ( ( ! `  ( # `  B ) )  /  ( ! `
 ( ( # `  B )  -  ( # `
 y ) ) ) )  /  ( ! `  ( # `  y
) ) ) )
185184oveq2d 5890 . . . . . . . . . . 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 11313 . . . . . . . . . . . . . . 15  |-  ( ( ( # `  B
)  -  ( # `  y ) )  e.  NN  ->  ( ! `  ( ( # `  B
)  -  ( # `  y ) ) )  =  ( ( ! `
 ( ( (
# `  B )  -  ( # `  y
) )  -  1 ) )  x.  (
( # `  B )  -  ( # `  y
) ) ) )
187148, 186syl 15 . . . . . . . . . . . . . 14  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( ( # `  B
)  -  ( # `  y ) ) )  =  ( ( ! `
 ( ( (
# `  B )  -  ( # `  y
) )  -  1 ) )  x.  (
( # `  B )  -  ( # `  y
) ) ) )
188144fveq2d 5545 . . . . . . . . . . . . . . 15  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( ( ( # `  B )  -  ( # `
 y ) )  -  1 ) )  =  ( ! `  ( ( # `  B
)  -  ( (
# `  y )  +  1 ) ) ) )
189188oveq1d 5889 . . . . . . . . . . . . . 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 2328 . . . . . . . . . . . . 13  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ! `  ( ( # `  B
)  -  ( # `  y ) ) )  =  ( ( ! `
 ( ( # `  B )  -  (
( # `  y )  +  1 ) ) )  x.  ( (
# `  B )  -  ( # `  y
) ) ) )
191190oveq2d 5890 . . . . . . . . . . . 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 9552 . . . . . . . . . . . . 13  |-  ( ( ( B  e.  Fin  /\  ( y  e.  Fin  /\ 
-.  z  e.  y ) )  /\  (
( # `  y )  +  1 )  <_ 
( # `  B ) )  ->  ( ( ! `  ( # `  B
) )  /  ( ! `  ( ( # `
 B )  -  ( # `  y ) ) ) )  e.  CC )
193192, 180, 182divcan2d 9554 . . . . . . . . . . . 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 9583 . . . . . . . . . . . 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 2338 . . . . . . . . . . 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 2328 . . . . . . . . . 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 5890 . . . . . . . . 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 2338 . . . . . . . 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 2310 . . . . . . 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 212 . . . . . 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 8944 . . . . 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 424 . . . 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 23 . . 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 7115 . 2  |-  ( A  e.  Fin  ->  ( B  e.  Fin  ->  ( # `
 { f  |  f : A -1-1-> B } )  =  ( ( ! `  ( # `
 A ) )  x.  ( ( # `  B )  _C  ( # `
 A ) ) ) ) )
205204imp 418 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 176    \/ wo 357    /\ wa 358   E.wex 1531    = wceq 1632    e. wcel 1696   {cab 2282    =/= wne 2459   _Vcvv 2801    u. cun 3163   (/)c0 3468   {csn 3653   class class class wbr 4039    Fn wfn 5266   -1-1->wf1 5268   ` cfv 5271  (class class class)co 5874    ~<_ cdom 6877   Fincfn 6879   CCcc 8751   0cc0 8753   1c1 8754    + caddc 8756    x. cmul 8758    < clt 8883    <_ cle 8884    - cmin 9053    / cdiv 9439   NNcn 9762   NN0cn0 9981   ZZcz 10040   ZZ>=cuz 10246   ...cfz 10798   !cfa 11304    _C cbc 11331   #chash 11353
This theorem is referenced by:  hashfac  11412  birthdaylem2  20263
This theorem was proved from axioms:  ax-1 5  ax-2 6  ax-3 7  ax-mp 8  ax-gen 1536  ax-5 1547  ax-17 1606  ax-9 1644  ax-8 1661  ax-13 1698  ax-14 1700  ax-6 1715  ax-7 1720  ax-11 1727  ax-12 1878  ax-ext 2277  ax-rep 4147  ax-sep 4157  ax-nul 4165  ax-pow 4204  ax-pr 4230  ax-un 4528  ax-cnex 8809  ax-resscn 8810  ax-1cn 8811  ax-icn 8812  ax-addcl 8813  ax-addrcl 8814  ax-mulcl 8815  ax-mulrcl 8816  ax-mulcom 8817  ax-addass 8818  ax-mulass 8819  ax-distr 8820  ax-i2m1 8821  ax-1ne0 8822  ax-1rid 8823  ax-rnegex 8824  ax-rrecex 8825  ax-cnre 8826  ax-pre-lttri 8827  ax-pre-lttrn 8828  ax-pre-ltadd 8829  ax-pre-mulgt0 8830
This theorem depends on definitions:  df-bi 177  df-or 359  df-an 360  df-3or 935  df-3an 936  df-tru 1310  df-ex 1532  df-nf 1535  df-sb 1639  df-eu 2160  df-mo 2161  df-clab 2283  df-cleq 2289  df-clel 2292  df-nfc 2421  df-ne 2461  df-nel 2462  df-ral 2561  df-rex 2562  df-reu 2563  df-rmo 2564  df-rab 2565  df-v 2803  df-sbc 3005  df-csb 3095  df-dif 3168  df-un 3170  df-in 3172  df-ss 3179  df-pss 3181  df-nul 3469  df-if 3579  df-pw 3640  df-sn 3659  df-pr 3660  df-tp 3661  df-op 3662  df-uni 3844  df-int 3879  df-iun 3923  df-br 4040  df-opab 4094  df-mpt 4095  df-tr 4130  df-eprel 4321  df-id 4325  df-po 4330  df-so 4331  df-fr 4368  df-we 4370  df-ord 4411  df-on 4412  df-lim 4413  df-suc 4414  df-om 4673  df-xp 4711  df-rel 4712  df-cnv 4713  df-co 4714  df-dm 4715  df-rn 4716  df-res 4717  df-ima 4718  df-iota 5235  df-fun 5273  df-fn 5274  df-f 5275  df-f1 5276  df-fo 5277  df-f1o 5278  df-fv 5279  df-ov 5877  df-oprab 5878  df-mpt2 5879  df-1st 6138  df-2nd 6139  df-riota 6320  df-recs 6404  df-rdg 6439  df-1o 6495  df-2o 6496  df-oadd 6499  df-er 6676  df-map 6790  df-pm 6791  df-en 6880  df-dom 6881  df-sdom 6882  df-fin 6883  df-card 7588  df-cda 7810  df-pnf 8885  df-mnf 8886  df-xr 8887  df-ltxr 8888  df-le 8889  df-sub 9055  df-neg 9056  df-div 9440  df-nn 9763  df-n0 9982  df-z 10041  df-uz 10247  df-fz 10799  df-seq 11063  df-fac 11305  df-bc 11332  df-hash 11354
  Copyright terms: Public domain W3C validator