| Step |
Hyp |
Ref |
Expression |
| 1 |
|
derang.d |
|- D = ( x e. Fin |-> ( # ` { f | ( f : x -1-1-onto-> x /\ A. y e. x ( f ` y ) =/= y ) } ) ) |
| 2 |
|
subfac.n |
|- S = ( n e. NN0 |-> ( D ` ( 1 ... n ) ) ) |
| 3 |
|
anidm |
|- ( ( f : ( 1 ... N ) -1-1-onto-> ( 1 ... N ) /\ f : ( 1 ... N ) -1-1-onto-> ( 1 ... N ) ) <-> f : ( 1 ... N ) -1-1-onto-> ( 1 ... N ) ) |
| 4 |
3
|
abbii |
|- { f | ( f : ( 1 ... N ) -1-1-onto-> ( 1 ... N ) /\ f : ( 1 ... N ) -1-1-onto-> ( 1 ... N ) ) } = { f | f : ( 1 ... N ) -1-1-onto-> ( 1 ... N ) } |
| 5 |
|
fzfid |
|- ( N e. NN0 -> ( 1 ... N ) e. Fin ) |
| 6 |
|
deranglem |
|- ( ( 1 ... N ) e. Fin -> { f | ( f : ( 1 ... N ) -1-1-onto-> ( 1 ... N ) /\ f : ( 1 ... N ) -1-1-onto-> ( 1 ... N ) ) } e. Fin ) |
| 7 |
5 6
|
syl |
|- ( N e. NN0 -> { f | ( f : ( 1 ... N ) -1-1-onto-> ( 1 ... N ) /\ f : ( 1 ... N ) -1-1-onto-> ( 1 ... N ) ) } e. Fin ) |
| 8 |
4 7
|
eqeltrrid |
|- ( N e. NN0 -> { f | f : ( 1 ... N ) -1-1-onto-> ( 1 ... N ) } e. Fin ) |
| 9 |
|
simpl |
|- ( ( f : ( 1 ... N ) -1-1-onto-> ( 1 ... N ) /\ A. y e. ( 1 ... N ) ( f ` y ) =/= y ) -> f : ( 1 ... N ) -1-1-onto-> ( 1 ... N ) ) |
| 10 |
9
|
ss2abi |
|- { f | ( f : ( 1 ... N ) -1-1-onto-> ( 1 ... N ) /\ A. y e. ( 1 ... N ) ( f ` y ) =/= y ) } C_ { f | f : ( 1 ... N ) -1-1-onto-> ( 1 ... N ) } |
| 11 |
|
ssdomg |
|- ( { f | f : ( 1 ... N ) -1-1-onto-> ( 1 ... N ) } e. Fin -> ( { f | ( f : ( 1 ... N ) -1-1-onto-> ( 1 ... N ) /\ A. y e. ( 1 ... N ) ( f ` y ) =/= y ) } C_ { f | f : ( 1 ... N ) -1-1-onto-> ( 1 ... N ) } -> { f | ( f : ( 1 ... N ) -1-1-onto-> ( 1 ... N ) /\ A. y e. ( 1 ... N ) ( f ` y ) =/= y ) } ~<_ { f | f : ( 1 ... N ) -1-1-onto-> ( 1 ... N ) } ) ) |
| 12 |
8 10 11
|
mpisyl |
|- ( N e. NN0 -> { f | ( f : ( 1 ... N ) -1-1-onto-> ( 1 ... N ) /\ A. y e. ( 1 ... N ) ( f ` y ) =/= y ) } ~<_ { f | f : ( 1 ... N ) -1-1-onto-> ( 1 ... N ) } ) |
| 13 |
|
deranglem |
|- ( ( 1 ... N ) e. Fin -> { f | ( f : ( 1 ... N ) -1-1-onto-> ( 1 ... N ) /\ A. y e. ( 1 ... N ) ( f ` y ) =/= y ) } e. Fin ) |
| 14 |
5 13
|
syl |
|- ( N e. NN0 -> { f | ( f : ( 1 ... N ) -1-1-onto-> ( 1 ... N ) /\ A. y e. ( 1 ... N ) ( f ` y ) =/= y ) } e. Fin ) |
| 15 |
|
hashdom |
|- ( ( { f | ( f : ( 1 ... N ) -1-1-onto-> ( 1 ... N ) /\ A. y e. ( 1 ... N ) ( f ` y ) =/= y ) } e. Fin /\ { f | f : ( 1 ... N ) -1-1-onto-> ( 1 ... N ) } e. Fin ) -> ( ( # ` { f | ( f : ( 1 ... N ) -1-1-onto-> ( 1 ... N ) /\ A. y e. ( 1 ... N ) ( f ` y ) =/= y ) } ) <_ ( # ` { f | f : ( 1 ... N ) -1-1-onto-> ( 1 ... N ) } ) <-> { f | ( f : ( 1 ... N ) -1-1-onto-> ( 1 ... N ) /\ A. y e. ( 1 ... N ) ( f ` y ) =/= y ) } ~<_ { f | f : ( 1 ... N ) -1-1-onto-> ( 1 ... N ) } ) ) |
| 16 |
14 8 15
|
syl2anc |
|- ( N e. NN0 -> ( ( # ` { f | ( f : ( 1 ... N ) -1-1-onto-> ( 1 ... N ) /\ A. y e. ( 1 ... N ) ( f ` y ) =/= y ) } ) <_ ( # ` { f | f : ( 1 ... N ) -1-1-onto-> ( 1 ... N ) } ) <-> { f | ( f : ( 1 ... N ) -1-1-onto-> ( 1 ... N ) /\ A. y e. ( 1 ... N ) ( f ` y ) =/= y ) } ~<_ { f | f : ( 1 ... N ) -1-1-onto-> ( 1 ... N ) } ) ) |
| 17 |
12 16
|
mpbird |
|- ( N e. NN0 -> ( # ` { f | ( f : ( 1 ... N ) -1-1-onto-> ( 1 ... N ) /\ A. y e. ( 1 ... N ) ( f ` y ) =/= y ) } ) <_ ( # ` { f | f : ( 1 ... N ) -1-1-onto-> ( 1 ... N ) } ) ) |
| 18 |
1 2
|
subfacval |
|- ( N e. NN0 -> ( S ` N ) = ( D ` ( 1 ... N ) ) ) |
| 19 |
1
|
derangval |
|- ( ( 1 ... N ) e. Fin -> ( D ` ( 1 ... N ) ) = ( # ` { f | ( f : ( 1 ... N ) -1-1-onto-> ( 1 ... N ) /\ A. y e. ( 1 ... N ) ( f ` y ) =/= y ) } ) ) |
| 20 |
5 19
|
syl |
|- ( N e. NN0 -> ( D ` ( 1 ... N ) ) = ( # ` { f | ( f : ( 1 ... N ) -1-1-onto-> ( 1 ... N ) /\ A. y e. ( 1 ... N ) ( f ` y ) =/= y ) } ) ) |
| 21 |
18 20
|
eqtrd |
|- ( N e. NN0 -> ( S ` N ) = ( # ` { f | ( f : ( 1 ... N ) -1-1-onto-> ( 1 ... N ) /\ A. y e. ( 1 ... N ) ( f ` y ) =/= y ) } ) ) |
| 22 |
|
hashfac |
|- ( ( 1 ... N ) e. Fin -> ( # ` { f | f : ( 1 ... N ) -1-1-onto-> ( 1 ... N ) } ) = ( ! ` ( # ` ( 1 ... N ) ) ) ) |
| 23 |
5 22
|
syl |
|- ( N e. NN0 -> ( # ` { f | f : ( 1 ... N ) -1-1-onto-> ( 1 ... N ) } ) = ( ! ` ( # ` ( 1 ... N ) ) ) ) |
| 24 |
|
hashfz1 |
|- ( N e. NN0 -> ( # ` ( 1 ... N ) ) = N ) |
| 25 |
24
|
fveq2d |
|- ( N e. NN0 -> ( ! ` ( # ` ( 1 ... N ) ) ) = ( ! ` N ) ) |
| 26 |
23 25
|
eqtr2d |
|- ( N e. NN0 -> ( ! ` N ) = ( # ` { f | f : ( 1 ... N ) -1-1-onto-> ( 1 ... N ) } ) ) |
| 27 |
17 21 26
|
3brtr4d |
|- ( N e. NN0 -> ( S ` N ) <_ ( ! ` N ) ) |