Metamath Proof Explorer


Theorem uncfcurf

Description: Cancellation of uncurry with curry. (Contributed by Mario Carneiro, 13-Jan-2017)

Ref Expression
Hypotheses uncfcurf.g G=CDcurryFF
uncfcurf.c φCCat
uncfcurf.d φDCat
uncfcurf.f φFC×cDFuncE
Assertion uncfcurf φ⟨“CDE”⟩uncurryFG=F

Proof

Step Hyp Ref Expression
1 uncfcurf.g G=CDcurryFF
2 uncfcurf.c φCCat
3 uncfcurf.d φDCat
4 uncfcurf.f φFC×cDFuncE
5 eqid ⟨“CDE”⟩uncurryFG=⟨“CDE”⟩uncurryFG
6 3 adantr φxBaseCyBaseDDCat
7 funcrcl FC×cDFuncEC×cDCatECat
8 4 7 syl φC×cDCatECat
9 8 simprd φECat
10 9 adantr φxBaseCyBaseDECat
11 eqid DFuncCatE=DFuncCatE
12 1 11 2 3 4 curfcl φGCFuncDFuncCatE
13 12 adantr φxBaseCyBaseDGCFuncDFuncCatE
14 eqid BaseC=BaseC
15 eqid BaseD=BaseD
16 simprl φxBaseCyBaseDxBaseC
17 simprr φxBaseCyBaseDyBaseD
18 5 6 10 13 14 15 16 17 uncf1 φxBaseCyBaseDx1st⟨“CDE”⟩uncurryFGy=1st1stGxy
19 2 adantr φxBaseCyBaseDCCat
20 4 adantr φxBaseCyBaseDFC×cDFuncE
21 eqid 1stGx=1stGx
22 1 14 19 6 20 15 16 21 17 curf11 φxBaseCyBaseD1st1stGxy=x1stFy
23 18 22 eqtrd φxBaseCyBaseDx1st⟨“CDE”⟩uncurryFGy=x1stFy
24 23 ralrimivva φxBaseCyBaseDx1st⟨“CDE”⟩uncurryFGy=x1stFy
25 eqid C×cD=C×cD
26 25 14 15 xpcbas BaseC×BaseD=BaseC×cD
27 eqid BaseE=BaseE
28 relfunc RelC×cDFuncE
29 5 3 9 12 uncfcl φ⟨“CDE”⟩uncurryFGC×cDFuncE
30 1st2ndbr RelC×cDFuncE⟨“CDE”⟩uncurryFGC×cDFuncE1st⟨“CDE”⟩uncurryFGC×cDFuncE2nd⟨“CDE”⟩uncurryFG
31 28 29 30 sylancr φ1st⟨“CDE”⟩uncurryFGC×cDFuncE2nd⟨“CDE”⟩uncurryFG
32 26 27 31 funcf1 φ1st⟨“CDE”⟩uncurryFG:BaseC×BaseDBaseE
33 32 ffnd φ1st⟨“CDE”⟩uncurryFGFnBaseC×BaseD
34 1st2ndbr RelC×cDFuncEFC×cDFuncE1stFC×cDFuncE2ndF
35 28 4 34 sylancr φ1stFC×cDFuncE2ndF
36 26 27 35 funcf1 φ1stF:BaseC×BaseDBaseE
37 36 ffnd φ1stFFnBaseC×BaseD
38 eqfnov2 1st⟨“CDE”⟩uncurryFGFnBaseC×BaseD1stFFnBaseC×BaseD1st⟨“CDE”⟩uncurryFG=1stFxBaseCyBaseDx1st⟨“CDE”⟩uncurryFGy=x1stFy
39 33 37 38 syl2anc φ1st⟨“CDE”⟩uncurryFG=1stFxBaseCyBaseDx1st⟨“CDE”⟩uncurryFGy=x1stFy
40 24 39 mpbird φ1st⟨“CDE”⟩uncurryFG=1stF
41 3 ad3antrrr φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDwDCat
42 9 ad3antrrr φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDwECat
43 12 ad3antrrr φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDwGCFuncDFuncCatE
44 16 adantr φxBaseCyBaseDzBaseCwBaseDxBaseC
45 44 adantr φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDwxBaseC
46 17 adantr φxBaseCyBaseDzBaseCwBaseDyBaseD
47 46 adantr φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDwyBaseD
48 eqid HomC=HomC
49 eqid HomD=HomD
50 simprl φxBaseCyBaseDzBaseCwBaseDzBaseC
51 50 adantr φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDwzBaseC
52 simprr φxBaseCyBaseDzBaseCwBaseDwBaseD
53 52 adantr φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDwwBaseD
54 simprl φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDwfxHomCz
55 simprr φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDwgyHomDw
56 5 41 42 43 14 15 45 47 48 49 51 53 54 55 uncf2 φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDwfxy2nd⟨“CDE”⟩uncurryFGzwg=x2ndGzfw1st1stGxy1st1stGxwcompE1st1stGzwy2nd1stGxwg
57 2 ad3antrrr φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDwCCat
58 4 ad3antrrr φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDwFC×cDFuncE
59 1 14 57 41 58 15 45 21 47 curf11 φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDw1st1stGxy=x1stFy
60 df-ov x1stFy=1stFxy
61 59 60 eqtrdi φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDw1st1stGxy=1stFxy
62 1 14 57 41 58 15 45 21 53 curf11 φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDw1st1stGxw=x1stFw
63 df-ov x1stFw=1stFxw
64 62 63 eqtrdi φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDw1st1stGxw=1stFxw
65 61 64 opeq12d φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDw1st1stGxy1st1stGxw=1stFxy1stFxw
66 eqid 1stGz=1stGz
67 1 14 57 41 58 15 51 66 53 curf11 φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDw1st1stGzw=z1stFw
68 df-ov z1stFw=1stFzw
69 67 68 eqtrdi φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDw1st1stGzw=1stFzw
70 65 69 oveq12d φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDw1st1stGxy1st1stGxwcompE1st1stGzw=1stFxy1stFxwcompE1stFzw
71 eqid IdD=IdD
72 eqid x2ndGzf=x2ndGzf
73 1 14 57 41 58 15 48 71 45 51 54 72 53 curf2val φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDwx2ndGzfw=fxw2ndFzwIdDw
74 df-ov fxw2ndFzwIdDw=xw2ndFzwfIdDw
75 73 74 eqtrdi φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDwx2ndGzfw=xw2ndFzwfIdDw
76 eqid IdC=IdC
77 1 14 57 41 58 15 45 21 47 49 76 53 55 curf12 φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDwy2nd1stGxwg=IdCxxy2ndFxwg
78 df-ov IdCxxy2ndFxwg=xy2ndFxwIdCxg
79 77 78 eqtrdi φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDwy2nd1stGxwg=xy2ndFxwIdCxg
80 70 75 79 oveq123d φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDwx2ndGzfw1st1stGxy1st1stGxwcompE1st1stGzwy2nd1stGxwg=xw2ndFzwfIdDw1stFxy1stFxwcompE1stFzwxy2ndFxwIdCxg
81 eqid HomC×cD=HomC×cD
82 eqid compC×cD=compC×cD
83 eqid compE=compE
84 35 ad2antrr φxBaseCyBaseDzBaseCwBaseD1stFC×cDFuncE2ndF
85 84 adantr φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDw1stFC×cDFuncE2ndF
86 opelxpi xBaseCyBaseDxyBaseC×BaseD
87 86 ad2antlr φxBaseCyBaseDzBaseCwBaseDxyBaseC×BaseD
88 87 adantr φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDwxyBaseC×BaseD
89 45 53 opelxpd φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDwxwBaseC×BaseD
90 opelxpi zBaseCwBaseDzwBaseC×BaseD
91 90 adantl φxBaseCyBaseDzBaseCwBaseDzwBaseC×BaseD
92 91 adantr φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDwzwBaseC×BaseD
93 14 48 76 57 45 catidcl φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDwIdCxxHomCx
94 93 55 opelxpd φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDwIdCxgxHomCx×yHomDw
95 25 14 15 48 49 45 47 45 53 81 xpchom2 φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDwxyHomC×cDxw=xHomCx×yHomDw
96 94 95 eleqtrrd φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDwIdCxgxyHomC×cDxw
97 15 49 71 41 53 catidcl φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDwIdDwwHomDw
98 54 97 opelxpd φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDwfIdDwxHomCz×wHomDw
99 25 14 15 48 49 45 53 51 53 81 xpchom2 φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDwxwHomC×cDzw=xHomCz×wHomDw
100 98 99 eleqtrrd φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDwfIdDwxwHomC×cDzw
101 26 81 82 83 85 88 89 92 96 100 funcco φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDwxy2ndFzwfIdDwxyxwcompC×cDzwIdCxg=xw2ndFzwfIdDw1stFxy1stFxwcompE1stFzwxy2ndFxwIdCxg
102 eqid compC=compC
103 eqid compD=compD
104 25 14 15 48 49 45 47 45 53 102 103 82 51 53 93 55 54 97 xpcco2 φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDwfIdDwxyxwcompC×cDzwIdCxg=fxxcompCzIdCxIdDwywcompDwg
105 104 fveq2d φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDwxy2ndFzwfIdDwxyxwcompC×cDzwIdCxg=xy2ndFzwfxxcompCzIdCxIdDwywcompDwg
106 df-ov fxxcompCzIdCxxy2ndFzwIdDwywcompDwg=xy2ndFzwfxxcompCzIdCxIdDwywcompDwg
107 105 106 eqtr4di φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDwxy2ndFzwfIdDwxyxwcompC×cDzwIdCxg=fxxcompCzIdCxxy2ndFzwIdDwywcompDwg
108 14 48 76 57 45 102 51 54 catrid φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDwfxxcompCzIdCx=f
109 15 49 71 41 47 103 53 55 catlid φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDwIdDwywcompDwg=g
110 108 109 oveq12d φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDwfxxcompCzIdCxxy2ndFzwIdDwywcompDwg=fxy2ndFzwg
111 107 110 eqtrd φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDwxy2ndFzwfIdDwxyxwcompC×cDzwIdCxg=fxy2ndFzwg
112 80 101 111 3eqtr2d φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDwx2ndGzfw1st1stGxy1st1stGxwcompE1st1stGzwy2nd1stGxwg=fxy2ndFzwg
113 56 112 eqtrd φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDwfxy2nd⟨“CDE”⟩uncurryFGzwg=fxy2ndFzwg
114 113 ralrimivva φxBaseCyBaseDzBaseCwBaseDfxHomCzgyHomDwfxy2nd⟨“CDE”⟩uncurryFGzwg=fxy2ndFzwg
115 eqid HomE=HomE
116 31 ad2antrr φxBaseCyBaseDzBaseCwBaseD1st⟨“CDE”⟩uncurryFGC×cDFuncE2nd⟨“CDE”⟩uncurryFG
117 26 81 115 116 87 91 funcf2 φxBaseCyBaseDzBaseCwBaseDxy2nd⟨“CDE”⟩uncurryFGzw:xyHomC×cDzw1st⟨“CDE”⟩uncurryFGxyHomE1st⟨“CDE”⟩uncurryFGzw
118 25 14 15 48 49 44 46 50 52 81 xpchom2 φxBaseCyBaseDzBaseCwBaseDxyHomC×cDzw=xHomCz×yHomDw
119 118 feq2d φxBaseCyBaseDzBaseCwBaseDxy2nd⟨“CDE”⟩uncurryFGzw:xyHomC×cDzw1st⟨“CDE”⟩uncurryFGxyHomE1st⟨“CDE”⟩uncurryFGzwxy2nd⟨“CDE”⟩uncurryFGzw:xHomCz×yHomDw1st⟨“CDE”⟩uncurryFGxyHomE1st⟨“CDE”⟩uncurryFGzw
120 117 119 mpbid φxBaseCyBaseDzBaseCwBaseDxy2nd⟨“CDE”⟩uncurryFGzw:xHomCz×yHomDw1st⟨“CDE”⟩uncurryFGxyHomE1st⟨“CDE”⟩uncurryFGzw
121 120 ffnd φxBaseCyBaseDzBaseCwBaseDxy2nd⟨“CDE”⟩uncurryFGzwFnxHomCz×yHomDw
122 26 81 115 84 87 91 funcf2 φxBaseCyBaseDzBaseCwBaseDxy2ndFzw:xyHomC×cDzw1stFxyHomE1stFzw
123 118 feq2d φxBaseCyBaseDzBaseCwBaseDxy2ndFzw:xyHomC×cDzw1stFxyHomE1stFzwxy2ndFzw:xHomCz×yHomDw1stFxyHomE1stFzw
124 122 123 mpbid φxBaseCyBaseDzBaseCwBaseDxy2ndFzw:xHomCz×yHomDw1stFxyHomE1stFzw
125 124 ffnd φxBaseCyBaseDzBaseCwBaseDxy2ndFzwFnxHomCz×yHomDw
126 eqfnov2 xy2nd⟨“CDE”⟩uncurryFGzwFnxHomCz×yHomDwxy2ndFzwFnxHomCz×yHomDwxy2nd⟨“CDE”⟩uncurryFGzw=xy2ndFzwfxHomCzgyHomDwfxy2nd⟨“CDE”⟩uncurryFGzwg=fxy2ndFzwg
127 121 125 126 syl2anc φxBaseCyBaseDzBaseCwBaseDxy2nd⟨“CDE”⟩uncurryFGzw=xy2ndFzwfxHomCzgyHomDwfxy2nd⟨“CDE”⟩uncurryFGzwg=fxy2ndFzwg
128 114 127 mpbird φxBaseCyBaseDzBaseCwBaseDxy2nd⟨“CDE”⟩uncurryFGzw=xy2ndFzw
129 128 ralrimivva φxBaseCyBaseDzBaseCwBaseDxy2nd⟨“CDE”⟩uncurryFGzw=xy2ndFzw
130 129 ralrimivva φxBaseCyBaseDzBaseCwBaseDxy2nd⟨“CDE”⟩uncurryFGzw=xy2ndFzw
131 oveq2 v=zwu2nd⟨“CDE”⟩uncurryFGv=u2nd⟨“CDE”⟩uncurryFGzw
132 oveq2 v=zwu2ndFv=u2ndFzw
133 131 132 eqeq12d v=zwu2nd⟨“CDE”⟩uncurryFGv=u2ndFvu2nd⟨“CDE”⟩uncurryFGzw=u2ndFzw
134 133 ralxp vBaseC×BaseDu2nd⟨“CDE”⟩uncurryFGv=u2ndFvzBaseCwBaseDu2nd⟨“CDE”⟩uncurryFGzw=u2ndFzw
135 oveq1 u=xyu2nd⟨“CDE”⟩uncurryFGzw=xy2nd⟨“CDE”⟩uncurryFGzw
136 oveq1 u=xyu2ndFzw=xy2ndFzw
137 135 136 eqeq12d u=xyu2nd⟨“CDE”⟩uncurryFGzw=u2ndFzwxy2nd⟨“CDE”⟩uncurryFGzw=xy2ndFzw
138 137 2ralbidv u=xyzBaseCwBaseDu2nd⟨“CDE”⟩uncurryFGzw=u2ndFzwzBaseCwBaseDxy2nd⟨“CDE”⟩uncurryFGzw=xy2ndFzw
139 134 138 bitrid u=xyvBaseC×BaseDu2nd⟨“CDE”⟩uncurryFGv=u2ndFvzBaseCwBaseDxy2nd⟨“CDE”⟩uncurryFGzw=xy2ndFzw
140 139 ralxp uBaseC×BaseDvBaseC×BaseDu2nd⟨“CDE”⟩uncurryFGv=u2ndFvxBaseCyBaseDzBaseCwBaseDxy2nd⟨“CDE”⟩uncurryFGzw=xy2ndFzw
141 130 140 sylibr φuBaseC×BaseDvBaseC×BaseDu2nd⟨“CDE”⟩uncurryFGv=u2ndFv
142 26 31 funcfn2 φ2nd⟨“CDE”⟩uncurryFGFnBaseC×BaseD×BaseC×BaseD
143 26 35 funcfn2 φ2ndFFnBaseC×BaseD×BaseC×BaseD
144 eqfnov2 2nd⟨“CDE”⟩uncurryFGFnBaseC×BaseD×BaseC×BaseD2ndFFnBaseC×BaseD×BaseC×BaseD2nd⟨“CDE”⟩uncurryFG=2ndFuBaseC×BaseDvBaseC×BaseDu2nd⟨“CDE”⟩uncurryFGv=u2ndFv
145 142 143 144 syl2anc φ2nd⟨“CDE”⟩uncurryFG=2ndFuBaseC×BaseDvBaseC×BaseDu2nd⟨“CDE”⟩uncurryFGv=u2ndFv
146 141 145 mpbird φ2nd⟨“CDE”⟩uncurryFG=2ndF
147 40 146 opeq12d φ1st⟨“CDE”⟩uncurryFG2nd⟨“CDE”⟩uncurryFG=1stF2ndF
148 1st2nd RelC×cDFuncE⟨“CDE”⟩uncurryFGC×cDFuncE⟨“CDE”⟩uncurryFG=1st⟨“CDE”⟩uncurryFG2nd⟨“CDE”⟩uncurryFG
149 28 29 148 sylancr φ⟨“CDE”⟩uncurryFG=1st⟨“CDE”⟩uncurryFG2nd⟨“CDE”⟩uncurryFG
150 1st2nd RelC×cDFuncEFC×cDFuncEF=1stF2ndF
151 28 4 150 sylancr φF=1stF2ndF
152 147 149 151 3eqtr4d φ⟨“CDE”⟩uncurryFG=F