Metamath Proof Explorer


Theorem cofucl

Description: The composition of two functors is a functor. Proposition 3.23 of Adamek p. 33. (Contributed by Mario Carneiro, 3-Jan-2017)

Ref Expression
Hypotheses cofucl.f φFCFuncD
cofucl.g φGDFuncE
Assertion cofucl φGfuncFCFuncE

Proof

Step Hyp Ref Expression
1 cofucl.f φFCFuncD
2 cofucl.g φGDFuncE
3 eqid BaseC=BaseC
4 3 1 2 cofuval φGfuncF=1stG1stFxBaseC,yBaseC1stFx2ndG1stFyx2ndFy
5 3 1 2 cofu1st φ1stGfuncF=1stG1stF
6 4 fveq2d φ2ndGfuncF=2nd1stG1stFxBaseC,yBaseC1stFx2ndG1stFyx2ndFy
7 fvex 1stGV
8 fvex 1stFV
9 7 8 coex 1stG1stFV
10 fvex BaseCV
11 10 10 mpoex xBaseC,yBaseC1stFx2ndG1stFyx2ndFyV
12 9 11 op2nd 2nd1stG1stFxBaseC,yBaseC1stFx2ndG1stFyx2ndFy=xBaseC,yBaseC1stFx2ndG1stFyx2ndFy
13 6 12 eqtrdi φ2ndGfuncF=xBaseC,yBaseC1stFx2ndG1stFyx2ndFy
14 5 13 opeq12d φ1stGfuncF2ndGfuncF=1stG1stFxBaseC,yBaseC1stFx2ndG1stFyx2ndFy
15 4 14 eqtr4d φGfuncF=1stGfuncF2ndGfuncF
16 eqid BaseD=BaseD
17 eqid BaseE=BaseE
18 relfunc RelDFuncE
19 1st2ndbr RelDFuncEGDFuncE1stGDFuncE2ndG
20 18 2 19 sylancr φ1stGDFuncE2ndG
21 16 17 20 funcf1 φ1stG:BaseDBaseE
22 relfunc RelCFuncD
23 1st2ndbr RelCFuncDFCFuncD1stFCFuncD2ndF
24 22 1 23 sylancr φ1stFCFuncD2ndF
25 3 16 24 funcf1 φ1stF:BaseCBaseD
26 fco 1stG:BaseDBaseE1stF:BaseCBaseD1stG1stF:BaseCBaseE
27 21 25 26 syl2anc φ1stG1stF:BaseCBaseE
28 5 feq1d φ1stGfuncF:BaseCBaseE1stG1stF:BaseCBaseE
29 27 28 mpbird φ1stGfuncF:BaseCBaseE
30 eqid xBaseC,yBaseC1stFx2ndG1stFyx2ndFy=xBaseC,yBaseC1stFx2ndG1stFyx2ndFy
31 ovex 1stFx2ndG1stFyV
32 ovex x2ndFyV
33 31 32 coex 1stFx2ndG1stFyx2ndFyV
34 30 33 fnmpoi xBaseC,yBaseC1stFx2ndG1stFyx2ndFyFnBaseC×BaseC
35 13 fneq1d φ2ndGfuncFFnBaseC×BaseCxBaseC,yBaseC1stFx2ndG1stFyx2ndFyFnBaseC×BaseC
36 34 35 mpbiri φ2ndGfuncFFnBaseC×BaseC
37 eqid HomD=HomD
38 eqid HomE=HomE
39 20 adantr φxBaseCyBaseC1stGDFuncE2ndG
40 25 adantr φxBaseCyBaseC1stF:BaseCBaseD
41 simprl φxBaseCyBaseCxBaseC
42 40 41 ffvelcdmd φxBaseCyBaseC1stFxBaseD
43 simprr φxBaseCyBaseCyBaseC
44 40 43 ffvelcdmd φxBaseCyBaseC1stFyBaseD
45 16 37 38 39 42 44 funcf2 φxBaseCyBaseC1stFx2ndG1stFy:1stFxHomD1stFy1stG1stFxHomE1stG1stFy
46 eqid HomC=HomC
47 24 adantr φxBaseCyBaseC1stFCFuncD2ndF
48 3 46 37 47 41 43 funcf2 φxBaseCyBaseCx2ndFy:xHomCy1stFxHomD1stFy
49 fco 1stFx2ndG1stFy:1stFxHomD1stFy1stG1stFxHomE1stG1stFyx2ndFy:xHomCy1stFxHomD1stFy1stFx2ndG1stFyx2ndFy:xHomCy1stG1stFxHomE1stG1stFy
50 45 48 49 syl2anc φxBaseCyBaseC1stFx2ndG1stFyx2ndFy:xHomCy1stG1stFxHomE1stG1stFy
51 ovex 1stG1stFxHomE1stG1stFyV
52 ovex xHomCyV
53 51 52 elmap 1stFx2ndG1stFyx2ndFy1stG1stFxHomE1stG1stFyxHomCy1stFx2ndG1stFyx2ndFy:xHomCy1stG1stFxHomE1stG1stFy
54 50 53 sylibr φxBaseCyBaseC1stFx2ndG1stFyx2ndFy1stG1stFxHomE1stG1stFyxHomCy
55 1 adantr φxBaseCyBaseCFCFuncD
56 2 adantr φxBaseCyBaseCGDFuncE
57 3 55 56 41 43 cofu2nd φxBaseCyBaseCx2ndGfuncFy=1stFx2ndG1stFyx2ndFy
58 3 55 56 41 cofu1 φxBaseCyBaseC1stGfuncFx=1stG1stFx
59 3 55 56 43 cofu1 φxBaseCyBaseC1stGfuncFy=1stG1stFy
60 58 59 oveq12d φxBaseCyBaseC1stGfuncFxHomE1stGfuncFy=1stG1stFxHomE1stG1stFy
61 60 oveq1d φxBaseCyBaseC1stGfuncFxHomE1stGfuncFyxHomCy=1stG1stFxHomE1stG1stFyxHomCy
62 54 57 61 3eltr4d φxBaseCyBaseCx2ndGfuncFy1stGfuncFxHomE1stGfuncFyxHomCy
63 62 ralrimivva φxBaseCyBaseCx2ndGfuncFy1stGfuncFxHomE1stGfuncFyxHomCy
64 fveq2 z=xy2ndGfuncFz=2ndGfuncFxy
65 df-ov x2ndGfuncFy=2ndGfuncFxy
66 64 65 eqtr4di z=xy2ndGfuncFz=x2ndGfuncFy
67 vex xV
68 vex yV
69 67 68 op1std z=xy1stz=x
70 69 fveq2d z=xy1stGfuncF1stz=1stGfuncFx
71 67 68 op2ndd z=xy2ndz=y
72 71 fveq2d z=xy1stGfuncF2ndz=1stGfuncFy
73 70 72 oveq12d z=xy1stGfuncF1stzHomE1stGfuncF2ndz=1stGfuncFxHomE1stGfuncFy
74 fveq2 z=xyHomCz=HomCxy
75 df-ov xHomCy=HomCxy
76 74 75 eqtr4di z=xyHomCz=xHomCy
77 73 76 oveq12d z=xy1stGfuncF1stzHomE1stGfuncF2ndzHomCz=1stGfuncFxHomE1stGfuncFyxHomCy
78 66 77 eleq12d z=xy2ndGfuncFz1stGfuncF1stzHomE1stGfuncF2ndzHomCzx2ndGfuncFy1stGfuncFxHomE1stGfuncFyxHomCy
79 78 ralxp zBaseC×BaseC2ndGfuncFz1stGfuncF1stzHomE1stGfuncF2ndzHomCzxBaseCyBaseCx2ndGfuncFy1stGfuncFxHomE1stGfuncFyxHomCy
80 63 79 sylibr φzBaseC×BaseC2ndGfuncFz1stGfuncF1stzHomE1stGfuncF2ndzHomCz
81 fvex 2ndGfuncFV
82 81 elixp 2ndGfuncFzBaseC×BaseC1stGfuncF1stzHomE1stGfuncF2ndzHomCz2ndGfuncFFnBaseC×BaseCzBaseC×BaseC2ndGfuncFz1stGfuncF1stzHomE1stGfuncF2ndzHomCz
83 36 80 82 sylanbrc φ2ndGfuncFzBaseC×BaseC1stGfuncF1stzHomE1stGfuncF2ndzHomCz
84 eqid IdC=IdC
85 eqid IdD=IdD
86 24 adantr φxBaseC1stFCFuncD2ndF
87 simpr φxBaseCxBaseC
88 3 84 85 86 87 funcid φxBaseCx2ndFxIdCx=IdD1stFx
89 88 fveq2d φxBaseC1stFx2ndG1stFxx2ndFxIdCx=1stFx2ndG1stFxIdD1stFx
90 eqid IdE=IdE
91 20 adantr φxBaseC1stGDFuncE2ndG
92 25 ffvelcdmda φxBaseC1stFxBaseD
93 16 85 90 91 92 funcid φxBaseC1stFx2ndG1stFxIdD1stFx=IdE1stG1stFx
94 89 93 eqtrd φxBaseC1stFx2ndG1stFxx2ndFxIdCx=IdE1stG1stFx
95 1 adantr φxBaseCFCFuncD
96 2 adantr φxBaseCGDFuncE
97 funcrcl FCFuncDCCatDCat
98 1 97 syl φCCatDCat
99 98 simpld φCCat
100 99 adantr φxBaseCCCat
101 3 46 84 100 87 catidcl φxBaseCIdCxxHomCx
102 3 95 96 87 87 46 101 cofu2 φxBaseCx2ndGfuncFxIdCx=1stFx2ndG1stFxx2ndFxIdCx
103 3 95 96 87 cofu1 φxBaseC1stGfuncFx=1stG1stFx
104 103 fveq2d φxBaseCIdE1stGfuncFx=IdE1stG1stFx
105 94 102 104 3eqtr4d φxBaseCx2ndGfuncFxIdCx=IdE1stGfuncFx
106 86 adantr φxBaseCyBaseCzBaseCfxHomCygyHomCz1stFCFuncD2ndF
107 simplr φxBaseCyBaseCzBaseCfxHomCygyHomCzxBaseC
108 simprlr φxBaseCyBaseCzBaseCfxHomCygyHomCzzBaseC
109 3 46 37 106 107 108 funcf2 φxBaseCyBaseCzBaseCfxHomCygyHomCzx2ndFz:xHomCz1stFxHomD1stFz
110 eqid compC=compC
111 100 adantr φxBaseCyBaseCzBaseCfxHomCygyHomCzCCat
112 simprll φxBaseCyBaseCzBaseCfxHomCygyHomCzyBaseC
113 simprrl φxBaseCyBaseCzBaseCfxHomCygyHomCzfxHomCy
114 simprrr φxBaseCyBaseCzBaseCfxHomCygyHomCzgyHomCz
115 3 46 110 111 107 112 108 113 114 catcocl φxBaseCyBaseCzBaseCfxHomCygyHomCzgxycompCzfxHomCz
116 fvco3 x2ndFz:xHomCz1stFxHomD1stFzgxycompCzfxHomCz1stFx2ndG1stFzx2ndFzgxycompCzf=1stFx2ndG1stFzx2ndFzgxycompCzf
117 109 115 116 syl2anc φxBaseCyBaseCzBaseCfxHomCygyHomCz1stFx2ndG1stFzx2ndFzgxycompCzf=1stFx2ndG1stFzx2ndFzgxycompCzf
118 eqid compD=compD
119 3 46 110 118 106 107 112 108 113 114 funcco φxBaseCyBaseCzBaseCfxHomCygyHomCzx2ndFzgxycompCzf=y2ndFzg1stFx1stFycompD1stFzx2ndFyf
120 119 fveq2d φxBaseCyBaseCzBaseCfxHomCygyHomCz1stFx2ndG1stFzx2ndFzgxycompCzf=1stFx2ndG1stFzy2ndFzg1stFx1stFycompD1stFzx2ndFyf
121 eqid compE=compE
122 91 adantr φxBaseCyBaseCzBaseCfxHomCygyHomCz1stGDFuncE2ndG
123 92 adantr φxBaseCyBaseCzBaseCfxHomCygyHomCz1stFxBaseD
124 25 adantr φxBaseC1stF:BaseCBaseD
125 124 adantr φxBaseCyBaseCzBaseCfxHomCygyHomCz1stF:BaseCBaseD
126 125 112 ffvelcdmd φxBaseCyBaseCzBaseCfxHomCygyHomCz1stFyBaseD
127 125 108 ffvelcdmd φxBaseCyBaseCzBaseCfxHomCygyHomCz1stFzBaseD
128 3 46 37 106 107 112 funcf2 φxBaseCyBaseCzBaseCfxHomCygyHomCzx2ndFy:xHomCy1stFxHomD1stFy
129 128 113 ffvelcdmd φxBaseCyBaseCzBaseCfxHomCygyHomCzx2ndFyf1stFxHomD1stFy
130 3 46 37 106 112 108 funcf2 φxBaseCyBaseCzBaseCfxHomCygyHomCzy2ndFz:yHomCz1stFyHomD1stFz
131 130 114 ffvelcdmd φxBaseCyBaseCzBaseCfxHomCygyHomCzy2ndFzg1stFyHomD1stFz
132 16 37 118 121 122 123 126 127 129 131 funcco φxBaseCyBaseCzBaseCfxHomCygyHomCz1stFx2ndG1stFzy2ndFzg1stFx1stFycompD1stFzx2ndFyf=1stFy2ndG1stFzy2ndFzg1stG1stFx1stG1stFycompE1stG1stFz1stFx2ndG1stFyx2ndFyf
133 117 120 132 3eqtrd φxBaseCyBaseCzBaseCfxHomCygyHomCz1stFx2ndG1stFzx2ndFzgxycompCzf=1stFy2ndG1stFzy2ndFzg1stG1stFx1stG1stFycompE1stG1stFz1stFx2ndG1stFyx2ndFyf
134 95 adantr φxBaseCyBaseCzBaseCfxHomCygyHomCzFCFuncD
135 96 adantr φxBaseCyBaseCzBaseCfxHomCygyHomCzGDFuncE
136 3 134 135 107 108 cofu2nd φxBaseCyBaseCzBaseCfxHomCygyHomCzx2ndGfuncFz=1stFx2ndG1stFzx2ndFz
137 136 fveq1d φxBaseCyBaseCzBaseCfxHomCygyHomCzx2ndGfuncFzgxycompCzf=1stFx2ndG1stFzx2ndFzgxycompCzf
138 103 adantr φxBaseCyBaseCzBaseCfxHomCygyHomCz1stGfuncFx=1stG1stFx
139 3 134 135 112 cofu1 φxBaseCyBaseCzBaseCfxHomCygyHomCz1stGfuncFy=1stG1stFy
140 138 139 opeq12d φxBaseCyBaseCzBaseCfxHomCygyHomCz1stGfuncFx1stGfuncFy=1stG1stFx1stG1stFy
141 3 134 135 108 cofu1 φxBaseCyBaseCzBaseCfxHomCygyHomCz1stGfuncFz=1stG1stFz
142 140 141 oveq12d φxBaseCyBaseCzBaseCfxHomCygyHomCz1stGfuncFx1stGfuncFycompE1stGfuncFz=1stG1stFx1stG1stFycompE1stG1stFz
143 3 134 135 112 108 46 114 cofu2 φxBaseCyBaseCzBaseCfxHomCygyHomCzy2ndGfuncFzg=1stFy2ndG1stFzy2ndFzg
144 3 134 135 107 112 46 113 cofu2 φxBaseCyBaseCzBaseCfxHomCygyHomCzx2ndGfuncFyf=1stFx2ndG1stFyx2ndFyf
145 142 143 144 oveq123d φxBaseCyBaseCzBaseCfxHomCygyHomCzy2ndGfuncFzg1stGfuncFx1stGfuncFycompE1stGfuncFzx2ndGfuncFyf=1stFy2ndG1stFzy2ndFzg1stG1stFx1stG1stFycompE1stG1stFz1stFx2ndG1stFyx2ndFyf
146 133 137 145 3eqtr4d φxBaseCyBaseCzBaseCfxHomCygyHomCzx2ndGfuncFzgxycompCzf=y2ndGfuncFzg1stGfuncFx1stGfuncFycompE1stGfuncFzx2ndGfuncFyf
147 146 anassrs φxBaseCyBaseCzBaseCfxHomCygyHomCzx2ndGfuncFzgxycompCzf=y2ndGfuncFzg1stGfuncFx1stGfuncFycompE1stGfuncFzx2ndGfuncFyf
148 147 ralrimivva φxBaseCyBaseCzBaseCfxHomCygyHomCzx2ndGfuncFzgxycompCzf=y2ndGfuncFzg1stGfuncFx1stGfuncFycompE1stGfuncFzx2ndGfuncFyf
149 148 ralrimivva φxBaseCyBaseCzBaseCfxHomCygyHomCzx2ndGfuncFzgxycompCzf=y2ndGfuncFzg1stGfuncFx1stGfuncFycompE1stGfuncFzx2ndGfuncFyf
150 105 149 jca φxBaseCx2ndGfuncFxIdCx=IdE1stGfuncFxyBaseCzBaseCfxHomCygyHomCzx2ndGfuncFzgxycompCzf=y2ndGfuncFzg1stGfuncFx1stGfuncFycompE1stGfuncFzx2ndGfuncFyf
151 150 ralrimiva φxBaseCx2ndGfuncFxIdCx=IdE1stGfuncFxyBaseCzBaseCfxHomCygyHomCzx2ndGfuncFzgxycompCzf=y2ndGfuncFzg1stGfuncFx1stGfuncFycompE1stGfuncFzx2ndGfuncFyf
152 funcrcl GDFuncEDCatECat
153 2 152 syl φDCatECat
154 153 simprd φECat
155 3 17 46 38 84 90 110 121 99 154 isfunc φ1stGfuncFCFuncE2ndGfuncF1stGfuncF:BaseCBaseE2ndGfuncFzBaseC×BaseC1stGfuncF1stzHomE1stGfuncF2ndzHomCzxBaseCx2ndGfuncFxIdCx=IdE1stGfuncFxyBaseCzBaseCfxHomCygyHomCzx2ndGfuncFzgxycompCzf=y2ndGfuncFzg1stGfuncFx1stGfuncFycompE1stGfuncFzx2ndGfuncFyf
156 29 83 151 155 mpbir3and φ1stGfuncFCFuncE2ndGfuncF
157 df-br 1stGfuncFCFuncE2ndGfuncF1stGfuncF2ndGfuncFCFuncE
158 156 157 sylib φ1stGfuncF2ndGfuncFCFuncE
159 15 158 eqeltrd φGfuncFCFuncE