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 ) ) |