Metamath Proof Explorer


Theorem rp-isfinite5

Description: A set is said to be finite if it can be put in one-to-one correspondence with all the natural numbers between 1 and some n e. NN0 . (Contributed by RP, 3-Mar-2020)

Ref Expression
Assertion rp-isfinite5
|- ( A e. Fin <-> E. n e. NN0 ( 1 ... n ) ~~ A )

Proof

Step Hyp Ref Expression
1 hashcl
 |-  ( A e. Fin -> ( # ` A ) e. NN0 )
2 isfinite4
 |-  ( A e. Fin <-> ( 1 ... ( # ` A ) ) ~~ A )
3 2 biimpi
 |-  ( A e. Fin -> ( 1 ... ( # ` A ) ) ~~ A )
4 1 3 jca
 |-  ( A e. Fin -> ( ( # ` A ) e. NN0 /\ ( 1 ... ( # ` A ) ) ~~ A ) )
5 eleq1
 |-  ( n = ( # ` A ) -> ( n e. NN0 <-> ( # ` A ) e. NN0 ) )
6 oveq2
 |-  ( n = ( # ` A ) -> ( 1 ... n ) = ( 1 ... ( # ` A ) ) )
7 6 breq1d
 |-  ( n = ( # ` A ) -> ( ( 1 ... n ) ~~ A <-> ( 1 ... ( # ` A ) ) ~~ A ) )
8 5 7 anbi12d
 |-  ( n = ( # ` A ) -> ( ( n e. NN0 /\ ( 1 ... n ) ~~ A ) <-> ( ( # ` A ) e. NN0 /\ ( 1 ... ( # ` A ) ) ~~ A ) ) )
9 1 4 8 spcedv
 |-  ( A e. Fin -> E. n ( n e. NN0 /\ ( 1 ... n ) ~~ A ) )
10 df-rex
 |-  ( E. n e. NN0 ( 1 ... n ) ~~ A <-> E. n ( n e. NN0 /\ ( 1 ... n ) ~~ A ) )
11 9 10 sylibr
 |-  ( A e. Fin -> E. n e. NN0 ( 1 ... n ) ~~ A )
12 hasheni
 |-  ( ( 1 ... n ) ~~ A -> ( # ` ( 1 ... n ) ) = ( # ` A ) )
13 12 eqcomd
 |-  ( ( 1 ... n ) ~~ A -> ( # ` A ) = ( # ` ( 1 ... n ) ) )
14 hashfz1
 |-  ( n e. NN0 -> ( # ` ( 1 ... n ) ) = n )
15 ovex
 |-  ( 1 ... ( # ` A ) ) e. _V
16 eqtr
 |-  ( ( ( # ` A ) = ( # ` ( 1 ... n ) ) /\ ( # ` ( 1 ... n ) ) = n ) -> ( # ` A ) = n )
17 oveq2
 |-  ( ( # ` A ) = n -> ( 1 ... ( # ` A ) ) = ( 1 ... n ) )
18 eqeng
 |-  ( ( 1 ... ( # ` A ) ) e. _V -> ( ( 1 ... ( # ` A ) ) = ( 1 ... n ) -> ( 1 ... ( # ` A ) ) ~~ ( 1 ... n ) ) )
19 17 18 syl5
 |-  ( ( 1 ... ( # ` A ) ) e. _V -> ( ( # ` A ) = n -> ( 1 ... ( # ` A ) ) ~~ ( 1 ... n ) ) )
20 15 16 19 mpsyl
 |-  ( ( ( # ` A ) = ( # ` ( 1 ... n ) ) /\ ( # ` ( 1 ... n ) ) = n ) -> ( 1 ... ( # ` A ) ) ~~ ( 1 ... n ) )
21 13 14 20 syl2anr
 |-  ( ( n e. NN0 /\ ( 1 ... n ) ~~ A ) -> ( 1 ... ( # ` A ) ) ~~ ( 1 ... n ) )
22 entr
 |-  ( ( ( 1 ... ( # ` A ) ) ~~ ( 1 ... n ) /\ ( 1 ... n ) ~~ A ) -> ( 1 ... ( # ` A ) ) ~~ A )
23 21 22 sylancom
 |-  ( ( n e. NN0 /\ ( 1 ... n ) ~~ A ) -> ( 1 ... ( # ` A ) ) ~~ A )
24 23 2 sylibr
 |-  ( ( n e. NN0 /\ ( 1 ... n ) ~~ A ) -> A e. Fin )
25 24 rexlimiva
 |-  ( E. n e. NN0 ( 1 ... n ) ~~ A -> A e. Fin )
26 11 25 impbii
 |-  ( A e. Fin <-> E. n e. NN0 ( 1 ... n ) ~~ A )