# Metamath Proof Explorer

## Theorem xpnz

Description: The Cartesian product of nonempty classes is nonempty. (Variation of a theorem contributed by Raph Levien, 30-Jun-2006.) (Contributed by NM, 30-Jun-2006)

Ref Expression
Assertion xpnz
`|- ( ( A =/= (/) /\ B =/= (/) ) <-> ( A X. B ) =/= (/) )`

### Proof

Step Hyp Ref Expression
1 n0
` |-  ( A =/= (/) <-> E. x x e. A )`
2 n0
` |-  ( B =/= (/) <-> E. y y e. B )`
3 1 2 anbi12i
` |-  ( ( A =/= (/) /\ B =/= (/) ) <-> ( E. x x e. A /\ E. y y e. B ) )`
4 exdistrv
` |-  ( E. x E. y ( x e. A /\ y e. B ) <-> ( E. x x e. A /\ E. y y e. B ) )`
5 3 4 bitr4i
` |-  ( ( A =/= (/) /\ B =/= (/) ) <-> E. x E. y ( x e. A /\ y e. B ) )`
6 opex
` |-  <. x , y >. e. _V`
7 eleq1
` |-  ( z = <. x , y >. -> ( z e. ( A X. B ) <-> <. x , y >. e. ( A X. B ) ) )`
8 opelxp
` |-  ( <. x , y >. e. ( A X. B ) <-> ( x e. A /\ y e. B ) )`
9 7 8 syl6bb
` |-  ( z = <. x , y >. -> ( z e. ( A X. B ) <-> ( x e. A /\ y e. B ) ) )`
10 6 9 spcev
` |-  ( ( x e. A /\ y e. B ) -> E. z z e. ( A X. B ) )`
11 n0
` |-  ( ( A X. B ) =/= (/) <-> E. z z e. ( A X. B ) )`
12 10 11 sylibr
` |-  ( ( x e. A /\ y e. B ) -> ( A X. B ) =/= (/) )`
13 12 exlimivv
` |-  ( E. x E. y ( x e. A /\ y e. B ) -> ( A X. B ) =/= (/) )`
14 5 13 sylbi
` |-  ( ( A =/= (/) /\ B =/= (/) ) -> ( A X. B ) =/= (/) )`
15 xpeq1
` |-  ( A = (/) -> ( A X. B ) = ( (/) X. B ) )`
16 0xp
` |-  ( (/) X. B ) = (/)`
17 15 16 syl6eq
` |-  ( A = (/) -> ( A X. B ) = (/) )`
18 17 necon3i
` |-  ( ( A X. B ) =/= (/) -> A =/= (/) )`
19 xpeq2
` |-  ( B = (/) -> ( A X. B ) = ( A X. (/) ) )`
20 xp0
` |-  ( A X. (/) ) = (/)`
21 19 20 syl6eq
` |-  ( B = (/) -> ( A X. B ) = (/) )`
22 21 necon3i
` |-  ( ( A X. B ) =/= (/) -> B =/= (/) )`
23 18 22 jca
` |-  ( ( A X. B ) =/= (/) -> ( A =/= (/) /\ B =/= (/) ) )`
24 14 23 impbii
` |-  ( ( A =/= (/) /\ B =/= (/) ) <-> ( A X. B ) =/= (/) )`