Metamath Proof Explorer


Theorem hash3tpexb

Description: A set of size three is an unordered triple if and only if it contains three different elements. (Contributed by AV, 21-Jul-2025)

Ref Expression
Assertion hash3tpexb
|- ( V e. W -> ( ( # ` V ) = 3 <-> E. a E. b E. c ( ( a =/= b /\ a =/= c /\ b =/= c ) /\ V = { a , b , c } ) ) )

Proof

Step Hyp Ref Expression
1 hash3tpde
 |-  ( ( V e. W /\ ( # ` V ) = 3 ) -> E. a E. b E. c ( ( a =/= b /\ a =/= c /\ b =/= c ) /\ V = { a , b , c } ) )
2 1 ex
 |-  ( V e. W -> ( ( # ` V ) = 3 -> E. a E. b E. c ( ( a =/= b /\ a =/= c /\ b =/= c ) /\ V = { a , b , c } ) ) )
3 fveq2
 |-  ( V = { a , b , c } -> ( # ` V ) = ( # ` { a , b , c } ) )
4 df-tp
 |-  { a , b , c } = ( { a , b } u. { c } )
5 4 a1i
 |-  ( ( a =/= b /\ a =/= c /\ b =/= c ) -> { a , b , c } = ( { a , b } u. { c } ) )
6 5 fveq2d
 |-  ( ( a =/= b /\ a =/= c /\ b =/= c ) -> ( # ` { a , b , c } ) = ( # ` ( { a , b } u. { c } ) ) )
7 prfi
 |-  { a , b } e. Fin
8 snfi
 |-  { c } e. Fin
9 disjprsn
 |-  ( ( a =/= c /\ b =/= c ) -> ( { a , b } i^i { c } ) = (/) )
10 9 3adant1
 |-  ( ( a =/= b /\ a =/= c /\ b =/= c ) -> ( { a , b } i^i { c } ) = (/) )
11 hashun
 |-  ( ( { a , b } e. Fin /\ { c } e. Fin /\ ( { a , b } i^i { c } ) = (/) ) -> ( # ` ( { a , b } u. { c } ) ) = ( ( # ` { a , b } ) + ( # ` { c } ) ) )
12 7 8 10 11 mp3an12i
 |-  ( ( a =/= b /\ a =/= c /\ b =/= c ) -> ( # ` ( { a , b } u. { c } ) ) = ( ( # ` { a , b } ) + ( # ` { c } ) ) )
13 hashprg
 |-  ( ( a e. _V /\ b e. _V ) -> ( a =/= b <-> ( # ` { a , b } ) = 2 ) )
14 13 el2v
 |-  ( a =/= b <-> ( # ` { a , b } ) = 2 )
15 14 biimpi
 |-  ( a =/= b -> ( # ` { a , b } ) = 2 )
16 15 3ad2ant1
 |-  ( ( a =/= b /\ a =/= c /\ b =/= c ) -> ( # ` { a , b } ) = 2 )
17 hashsng
 |-  ( c e. _V -> ( # ` { c } ) = 1 )
18 17 elv
 |-  ( # ` { c } ) = 1
19 18 a1i
 |-  ( ( a =/= b /\ a =/= c /\ b =/= c ) -> ( # ` { c } ) = 1 )
20 16 19 oveq12d
 |-  ( ( a =/= b /\ a =/= c /\ b =/= c ) -> ( ( # ` { a , b } ) + ( # ` { c } ) ) = ( 2 + 1 ) )
21 2p1e3
 |-  ( 2 + 1 ) = 3
22 20 21 eqtrdi
 |-  ( ( a =/= b /\ a =/= c /\ b =/= c ) -> ( ( # ` { a , b } ) + ( # ` { c } ) ) = 3 )
23 6 12 22 3eqtrd
 |-  ( ( a =/= b /\ a =/= c /\ b =/= c ) -> ( # ` { a , b , c } ) = 3 )
24 3 23 sylan9eqr
 |-  ( ( ( a =/= b /\ a =/= c /\ b =/= c ) /\ V = { a , b , c } ) -> ( # ` V ) = 3 )
25 24 a1i
 |-  ( V e. W -> ( ( ( a =/= b /\ a =/= c /\ b =/= c ) /\ V = { a , b , c } ) -> ( # ` V ) = 3 ) )
26 25 exlimdv
 |-  ( V e. W -> ( E. c ( ( a =/= b /\ a =/= c /\ b =/= c ) /\ V = { a , b , c } ) -> ( # ` V ) = 3 ) )
27 26 exlimdvv
 |-  ( V e. W -> ( E. a E. b E. c ( ( a =/= b /\ a =/= c /\ b =/= c ) /\ V = { a , b , c } ) -> ( # ` V ) = 3 ) )
28 2 27 impbid
 |-  ( V e. W -> ( ( # ` V ) = 3 <-> E. a E. b E. c ( ( a =/= b /\ a =/= c /\ b =/= c ) /\ V = { a , b , c } ) ) )