Metamath Proof Explorer


Theorem mpo2eqb

Description: Bidirectional equality theorem for a mapping abstraction. Equivalent to eqfnov2 . (Contributed by Mario Carneiro, 4-Jan-2017)

Ref Expression
Assertion mpo2eqb
|- ( A. x e. A A. y e. B C e. V -> ( ( x e. A , y e. B |-> C ) = ( x e. A , y e. B |-> D ) <-> A. x e. A A. y e. B C = D ) )

Proof

Step Hyp Ref Expression
1 df-mpo
 |-  ( x e. A , y e. B |-> C ) = { <. <. x , y >. , z >. | ( ( x e. A /\ y e. B ) /\ z = C ) }
2 df-mpo
 |-  ( x e. A , y e. B |-> D ) = { <. <. x , y >. , z >. | ( ( x e. A /\ y e. B ) /\ z = D ) }
3 1 2 eqeq12i
 |-  ( ( x e. A , y e. B |-> C ) = ( x e. A , y e. B |-> D ) <-> { <. <. x , y >. , z >. | ( ( x e. A /\ y e. B ) /\ z = C ) } = { <. <. x , y >. , z >. | ( ( x e. A /\ y e. B ) /\ z = D ) } )
4 eqoprab2bw
 |-  ( { <. <. x , y >. , z >. | ( ( x e. A /\ y e. B ) /\ z = C ) } = { <. <. x , y >. , z >. | ( ( x e. A /\ y e. B ) /\ z = D ) } <-> A. x A. y A. z ( ( ( x e. A /\ y e. B ) /\ z = C ) <-> ( ( x e. A /\ y e. B ) /\ z = D ) ) )
5 pm5.32
 |-  ( ( ( x e. A /\ y e. B ) -> ( z = C <-> z = D ) ) <-> ( ( ( x e. A /\ y e. B ) /\ z = C ) <-> ( ( x e. A /\ y e. B ) /\ z = D ) ) )
6 5 albii
 |-  ( A. z ( ( x e. A /\ y e. B ) -> ( z = C <-> z = D ) ) <-> A. z ( ( ( x e. A /\ y e. B ) /\ z = C ) <-> ( ( x e. A /\ y e. B ) /\ z = D ) ) )
7 19.21v
 |-  ( A. z ( ( x e. A /\ y e. B ) -> ( z = C <-> z = D ) ) <-> ( ( x e. A /\ y e. B ) -> A. z ( z = C <-> z = D ) ) )
8 6 7 bitr3i
 |-  ( A. z ( ( ( x e. A /\ y e. B ) /\ z = C ) <-> ( ( x e. A /\ y e. B ) /\ z = D ) ) <-> ( ( x e. A /\ y e. B ) -> A. z ( z = C <-> z = D ) ) )
9 8 2albii
 |-  ( A. x A. y A. z ( ( ( x e. A /\ y e. B ) /\ z = C ) <-> ( ( x e. A /\ y e. B ) /\ z = D ) ) <-> A. x A. y ( ( x e. A /\ y e. B ) -> A. z ( z = C <-> z = D ) ) )
10 r2al
 |-  ( A. x e. A A. y e. B A. z ( z = C <-> z = D ) <-> A. x A. y ( ( x e. A /\ y e. B ) -> A. z ( z = C <-> z = D ) ) )
11 9 10 bitr4i
 |-  ( A. x A. y A. z ( ( ( x e. A /\ y e. B ) /\ z = C ) <-> ( ( x e. A /\ y e. B ) /\ z = D ) ) <-> A. x e. A A. y e. B A. z ( z = C <-> z = D ) )
12 3 4 11 3bitri
 |-  ( ( x e. A , y e. B |-> C ) = ( x e. A , y e. B |-> D ) <-> A. x e. A A. y e. B A. z ( z = C <-> z = D ) )
13 pm13.183
 |-  ( C e. V -> ( C = D <-> A. z ( z = C <-> z = D ) ) )
14 13 ralimi
 |-  ( A. y e. B C e. V -> A. y e. B ( C = D <-> A. z ( z = C <-> z = D ) ) )
15 ralbi
 |-  ( A. y e. B ( C = D <-> A. z ( z = C <-> z = D ) ) -> ( A. y e. B C = D <-> A. y e. B A. z ( z = C <-> z = D ) ) )
16 14 15 syl
 |-  ( A. y e. B C e. V -> ( A. y e. B C = D <-> A. y e. B A. z ( z = C <-> z = D ) ) )
17 16 ralimi
 |-  ( A. x e. A A. y e. B C e. V -> A. x e. A ( A. y e. B C = D <-> A. y e. B A. z ( z = C <-> z = D ) ) )
18 ralbi
 |-  ( A. x e. A ( A. y e. B C = D <-> A. y e. B A. z ( z = C <-> z = D ) ) -> ( A. x e. A A. y e. B C = D <-> A. x e. A A. y e. B A. z ( z = C <-> z = D ) ) )
19 17 18 syl
 |-  ( A. x e. A A. y e. B C e. V -> ( A. x e. A A. y e. B C = D <-> A. x e. A A. y e. B A. z ( z = C <-> z = D ) ) )
20 12 19 bitr4id
 |-  ( A. x e. A A. y e. B C e. V -> ( ( x e. A , y e. B |-> C ) = ( x e. A , y e. B |-> D ) <-> A. x e. A A. y e. B C = D ) )