Description: SchroederBernstein Theorem. Theorem 18 of Suppes p. 95. This theorem states that if set A is smaller (has lower cardinality) than B and viceversa, then A and B are equinumerous (have the same cardinality). The interesting thing is that this can be proved without invoking the Axiom of Choice, as we do here. The theorem can also be proved from the axiom of choice and the linear order of the cardinal numbers, but our development does not provide the linear order of cardinal numbers until much later and in ways that depend on SchroederBernstein.
The main proof consists of lemmas sbthlem1 through sbthlem10 ; this final piece mainly changes bound variables to eliminate the hypotheses of sbthlem10 . We follow closely the proof in Suppes, which you should consult to understand our proof at a higher level. Note that Suppes' proof, which is credited to J. M. Whitaker, does not require the Axiom of Infinity. In the Intuitionistic Logic Explorer (ILE) the SchroederBernstein Theorem has been proven equivalent to the law of the excluded middle (LEM), and in ILE the LEM is not accepted as necessarily true; see https://us.metamath.org/ileuni/exmidsbth.html . This is Metamath 100 proof #25. (Contributed by NM, 8Jun1998)
Ref  Expression  

Assertion  sbth   ( ( A ~<_ B /\ B ~<_ A ) > A ~~ B ) 
Step  Hyp  Ref  Expression 

1  reldom   Rel ~<_ 

2  1  brrelex1i   ( A ~<_ B > A e. _V ) 
3  1  brrelex1i   ( B ~<_ A > B e. _V ) 
4  breq1   ( z = A > ( z ~<_ w <> A ~<_ w ) ) 

5  breq2   ( z = A > ( w ~<_ z <> w ~<_ A ) ) 

6  4 5  anbi12d   ( z = A > ( ( z ~<_ w /\ w ~<_ z ) <> ( A ~<_ w /\ w ~<_ A ) ) ) 
7  breq1   ( z = A > ( z ~~ w <> A ~~ w ) ) 

8  6 7  imbi12d   ( z = A > ( ( ( z ~<_ w /\ w ~<_ z ) > z ~~ w ) <> ( ( A ~<_ w /\ w ~<_ A ) > A ~~ w ) ) ) 
9  breq2   ( w = B > ( A ~<_ w <> A ~<_ B ) ) 

10  breq1   ( w = B > ( w ~<_ A <> B ~<_ A ) ) 

11  9 10  anbi12d   ( w = B > ( ( A ~<_ w /\ w ~<_ A ) <> ( A ~<_ B /\ B ~<_ A ) ) ) 
12  breq2   ( w = B > ( A ~~ w <> A ~~ B ) ) 

13  11 12  imbi12d   ( w = B > ( ( ( A ~<_ w /\ w ~<_ A ) > A ~~ w ) <> ( ( A ~<_ B /\ B ~<_ A ) > A ~~ B ) ) ) 
14  vex   z e. _V 

15  sseq1   ( y = x > ( y C_ z <> x C_ z ) ) 

16  imaeq2   ( y = x > ( f " y ) = ( f " x ) ) 

17  16  difeq2d   ( y = x > ( w \ ( f " y ) ) = ( w \ ( f " x ) ) ) 
18  17  imaeq2d   ( y = x > ( g " ( w \ ( f " y ) ) ) = ( g " ( w \ ( f " x ) ) ) ) 
19  difeq2   ( y = x > ( z \ y ) = ( z \ x ) ) 

20  18 19  sseq12d   ( y = x > ( ( g " ( w \ ( f " y ) ) ) C_ ( z \ y ) <> ( g " ( w \ ( f " x ) ) ) C_ ( z \ x ) ) ) 
21  15 20  anbi12d   ( y = x > ( ( y C_ z /\ ( g " ( w \ ( f " y ) ) ) C_ ( z \ y ) ) <> ( x C_ z /\ ( g " ( w \ ( f " x ) ) ) C_ ( z \ x ) ) ) ) 
22  21  cbvabv   { y  ( y C_ z /\ ( g " ( w \ ( f " y ) ) ) C_ ( z \ y ) ) } = { x  ( x C_ z /\ ( g " ( w \ ( f " x ) ) ) C_ ( z \ x ) ) } 
23  eqid   ( ( f ` U. { y  ( y C_ z /\ ( g " ( w \ ( f " y ) ) ) C_ ( z \ y ) ) } ) u. ( `' g ` ( z \ U. { y  ( y C_ z /\ ( g " ( w \ ( f " y ) ) ) C_ ( z \ y ) ) } ) ) ) = ( ( f ` U. { y  ( y C_ z /\ ( g " ( w \ ( f " y ) ) ) C_ ( z \ y ) ) } ) u. ( `' g ` ( z \ U. { y  ( y C_ z /\ ( g " ( w \ ( f " y ) ) ) C_ ( z \ y ) ) } ) ) ) 

24  vex   w e. _V 

25  14 22 23 24  sbthlem10   ( ( z ~<_ w /\ w ~<_ z ) > z ~~ w ) 
26  8 13 25  vtocl2g   ( ( A e. _V /\ B e. _V ) > ( ( A ~<_ B /\ B ~<_ A ) > A ~~ B ) ) 
27  2 3 26  syl2an   ( ( A ~<_ B /\ B ~<_ A ) > ( ( A ~<_ B /\ B ~<_ A ) > A ~~ B ) ) 
28  27  pm2.43i   ( ( A ~<_ B /\ B ~<_ A ) > A ~~ B ) 