This is an inofficial mirror of http://metamath.tirix.org for personal testing of a visualizer extension only.
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 ) ) |
| 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 ) ) |