Step |
Hyp |
Ref |
Expression |
1 |
|
ffn |
|- ( F : ( A X. B ) --> C -> F Fn ( A X. B ) ) |
2 |
1
|
anim1i |
|- ( ( F : ( A X. B ) --> C /\ B e. ( V \ { (/) } ) ) -> ( F Fn ( A X. B ) /\ B e. ( V \ { (/) } ) ) ) |
3 |
2
|
3adant3 |
|- ( ( F : ( A X. B ) --> C /\ B e. ( V \ { (/) } ) /\ C e. W ) -> ( F Fn ( A X. B ) /\ B e. ( V \ { (/) } ) ) ) |
4 |
|
3anass |
|- ( ( F Fn ( A X. B ) /\ x e. A /\ y e. B ) <-> ( F Fn ( A X. B ) /\ ( x e. A /\ y e. B ) ) ) |
5 |
|
curfv |
|- ( ( ( F Fn ( A X. B ) /\ x e. A /\ y e. B ) /\ B e. ( V \ { (/) } ) ) -> ( ( curry F ` x ) ` y ) = ( x F y ) ) |
6 |
4 5
|
sylanbr |
|- ( ( ( F Fn ( A X. B ) /\ ( x e. A /\ y e. B ) ) /\ B e. ( V \ { (/) } ) ) -> ( ( curry F ` x ) ` y ) = ( x F y ) ) |
7 |
6
|
an32s |
|- ( ( ( F Fn ( A X. B ) /\ B e. ( V \ { (/) } ) ) /\ ( x e. A /\ y e. B ) ) -> ( ( curry F ` x ) ` y ) = ( x F y ) ) |
8 |
7
|
eqeq1d |
|- ( ( ( F Fn ( A X. B ) /\ B e. ( V \ { (/) } ) ) /\ ( x e. A /\ y e. B ) ) -> ( ( ( curry F ` x ) ` y ) = z <-> ( x F y ) = z ) ) |
9 |
|
eqcom |
|- ( ( x F y ) = z <-> z = ( x F y ) ) |
10 |
8 9
|
bitrdi |
|- ( ( ( F Fn ( A X. B ) /\ B e. ( V \ { (/) } ) ) /\ ( x e. A /\ y e. B ) ) -> ( ( ( curry F ` x ) ` y ) = z <-> z = ( x F y ) ) ) |
11 |
3 10
|
sylan |
|- ( ( ( F : ( A X. B ) --> C /\ B e. ( V \ { (/) } ) /\ C e. W ) /\ ( x e. A /\ y e. B ) ) -> ( ( ( curry F ` x ) ` y ) = z <-> z = ( x F y ) ) ) |
12 |
|
curf |
|- ( ( F : ( A X. B ) --> C /\ B e. ( V \ { (/) } ) /\ C e. W ) -> curry F : A --> ( C ^m B ) ) |
13 |
12
|
ffvelrnda |
|- ( ( ( F : ( A X. B ) --> C /\ B e. ( V \ { (/) } ) /\ C e. W ) /\ x e. A ) -> ( curry F ` x ) e. ( C ^m B ) ) |
14 |
|
elmapfn |
|- ( ( curry F ` x ) e. ( C ^m B ) -> ( curry F ` x ) Fn B ) |
15 |
13 14
|
syl |
|- ( ( ( F : ( A X. B ) --> C /\ B e. ( V \ { (/) } ) /\ C e. W ) /\ x e. A ) -> ( curry F ` x ) Fn B ) |
16 |
|
fnbrfvb |
|- ( ( ( curry F ` x ) Fn B /\ y e. B ) -> ( ( ( curry F ` x ) ` y ) = z <-> y ( curry F ` x ) z ) ) |
17 |
15 16
|
sylan |
|- ( ( ( ( F : ( A X. B ) --> C /\ B e. ( V \ { (/) } ) /\ C e. W ) /\ x e. A ) /\ y e. B ) -> ( ( ( curry F ` x ) ` y ) = z <-> y ( curry F ` x ) z ) ) |
18 |
17
|
anasss |
|- ( ( ( F : ( A X. B ) --> C /\ B e. ( V \ { (/) } ) /\ C e. W ) /\ ( x e. A /\ y e. B ) ) -> ( ( ( curry F ` x ) ` y ) = z <-> y ( curry F ` x ) z ) ) |
19 |
|
ibar |
|- ( ( x e. A /\ y e. B ) -> ( z = ( x F y ) <-> ( ( x e. A /\ y e. B ) /\ z = ( x F y ) ) ) ) |
20 |
19
|
adantl |
|- ( ( ( F : ( A X. B ) --> C /\ B e. ( V \ { (/) } ) /\ C e. W ) /\ ( x e. A /\ y e. B ) ) -> ( z = ( x F y ) <-> ( ( x e. A /\ y e. B ) /\ z = ( x F y ) ) ) ) |
21 |
11 18 20
|
3bitr3d |
|- ( ( ( F : ( A X. B ) --> C /\ B e. ( V \ { (/) } ) /\ C e. W ) /\ ( x e. A /\ y e. B ) ) -> ( y ( curry F ` x ) z <-> ( ( x e. A /\ y e. B ) /\ z = ( x F y ) ) ) ) |
22 |
|
df-br |
|- ( y ( curry F ` x ) z <-> <. y , z >. e. ( curry F ` x ) ) |
23 |
|
elfvdm |
|- ( <. y , z >. e. ( curry F ` x ) -> x e. dom curry F ) |
24 |
22 23
|
sylbi |
|- ( y ( curry F ` x ) z -> x e. dom curry F ) |
25 |
|
fdm |
|- ( curry F : A --> ( C ^m B ) -> dom curry F = A ) |
26 |
25
|
eleq2d |
|- ( curry F : A --> ( C ^m B ) -> ( x e. dom curry F <-> x e. A ) ) |
27 |
26
|
biimpa |
|- ( ( curry F : A --> ( C ^m B ) /\ x e. dom curry F ) -> x e. A ) |
28 |
24 27
|
sylan2 |
|- ( ( curry F : A --> ( C ^m B ) /\ y ( curry F ` x ) z ) -> x e. A ) |
29 |
|
ffvelrn |
|- ( ( curry F : A --> ( C ^m B ) /\ x e. A ) -> ( curry F ` x ) e. ( C ^m B ) ) |
30 |
|
elmapi |
|- ( ( curry F ` x ) e. ( C ^m B ) -> ( curry F ` x ) : B --> C ) |
31 |
|
fdm |
|- ( ( curry F ` x ) : B --> C -> dom ( curry F ` x ) = B ) |
32 |
29 30 31
|
3syl |
|- ( ( curry F : A --> ( C ^m B ) /\ x e. A ) -> dom ( curry F ` x ) = B ) |
33 |
|
vex |
|- y e. _V |
34 |
|
vex |
|- z e. _V |
35 |
33 34
|
breldm |
|- ( y ( curry F ` x ) z -> y e. dom ( curry F ` x ) ) |
36 |
|
eleq2 |
|- ( dom ( curry F ` x ) = B -> ( y e. dom ( curry F ` x ) <-> y e. B ) ) |
37 |
36
|
biimpa |
|- ( ( dom ( curry F ` x ) = B /\ y e. dom ( curry F ` x ) ) -> y e. B ) |
38 |
32 35 37
|
syl2an |
|- ( ( ( curry F : A --> ( C ^m B ) /\ x e. A ) /\ y ( curry F ` x ) z ) -> y e. B ) |
39 |
38
|
an32s |
|- ( ( ( curry F : A --> ( C ^m B ) /\ y ( curry F ` x ) z ) /\ x e. A ) -> y e. B ) |
40 |
28 39
|
mpdan |
|- ( ( curry F : A --> ( C ^m B ) /\ y ( curry F ` x ) z ) -> y e. B ) |
41 |
28 40
|
jca |
|- ( ( curry F : A --> ( C ^m B ) /\ y ( curry F ` x ) z ) -> ( x e. A /\ y e. B ) ) |
42 |
12 41
|
sylan |
|- ( ( ( F : ( A X. B ) --> C /\ B e. ( V \ { (/) } ) /\ C e. W ) /\ y ( curry F ` x ) z ) -> ( x e. A /\ y e. B ) ) |
43 |
42
|
stoic1a |
|- ( ( ( F : ( A X. B ) --> C /\ B e. ( V \ { (/) } ) /\ C e. W ) /\ -. ( x e. A /\ y e. B ) ) -> -. y ( curry F ` x ) z ) |
44 |
|
simpl |
|- ( ( ( x e. A /\ y e. B ) /\ z = ( x F y ) ) -> ( x e. A /\ y e. B ) ) |
45 |
44
|
con3i |
|- ( -. ( x e. A /\ y e. B ) -> -. ( ( x e. A /\ y e. B ) /\ z = ( x F y ) ) ) |
46 |
45
|
adantl |
|- ( ( ( F : ( A X. B ) --> C /\ B e. ( V \ { (/) } ) /\ C e. W ) /\ -. ( x e. A /\ y e. B ) ) -> -. ( ( x e. A /\ y e. B ) /\ z = ( x F y ) ) ) |
47 |
43 46
|
2falsed |
|- ( ( ( F : ( A X. B ) --> C /\ B e. ( V \ { (/) } ) /\ C e. W ) /\ -. ( x e. A /\ y e. B ) ) -> ( y ( curry F ` x ) z <-> ( ( x e. A /\ y e. B ) /\ z = ( x F y ) ) ) ) |
48 |
21 47
|
pm2.61dan |
|- ( ( F : ( A X. B ) --> C /\ B e. ( V \ { (/) } ) /\ C e. W ) -> ( y ( curry F ` x ) z <-> ( ( x e. A /\ y e. B ) /\ z = ( x F y ) ) ) ) |
49 |
48
|
oprabbidv |
|- ( ( F : ( A X. B ) --> C /\ B e. ( V \ { (/) } ) /\ C e. W ) -> { <. <. x , y >. , z >. | y ( curry F ` x ) z } = { <. <. x , y >. , z >. | ( ( x e. A /\ y e. B ) /\ z = ( x F y ) ) } ) |
50 |
|
df-unc |
|- uncurry curry F = { <. <. x , y >. , z >. | y ( curry F ` x ) z } |
51 |
|
df-mpo |
|- ( x e. A , y e. B |-> ( x F y ) ) = { <. <. x , y >. , z >. | ( ( x e. A /\ y e. B ) /\ z = ( x F y ) ) } |
52 |
49 50 51
|
3eqtr4g |
|- ( ( F : ( A X. B ) --> C /\ B e. ( V \ { (/) } ) /\ C e. W ) -> uncurry curry F = ( x e. A , y e. B |-> ( x F y ) ) ) |
53 |
|
fnov |
|- ( F Fn ( A X. B ) <-> F = ( x e. A , y e. B |-> ( x F y ) ) ) |
54 |
1 53
|
sylib |
|- ( F : ( A X. B ) --> C -> F = ( x e. A , y e. B |-> ( x F y ) ) ) |
55 |
54
|
3ad2ant1 |
|- ( ( F : ( A X. B ) --> C /\ B e. ( V \ { (/) } ) /\ C e. W ) -> F = ( x e. A , y e. B |-> ( x F y ) ) ) |
56 |
52 55
|
eqtr4d |
|- ( ( F : ( A X. B ) --> C /\ B e. ( V \ { (/) } ) /\ C e. W ) -> uncurry curry F = F ) |