Metamath Proof Explorer


Theorem bj-imdirco

Description: Functorial property of the direct image: the direct image by a composition is the composition of the direct images. (Contributed by BJ, 23-May-2024)

Ref Expression
Hypotheses bj-imdirco.exa φAU
bj-imdirco.exb φBV
bj-imdirco.exc φCW
bj-imdirco.arg1 φRA×B
bj-imdirco.arg2 φSB×C
Assertion bj-imdirco Could not format assertion : No typesetting found for |- ( ph -> ( ( A ~P_* C ) ` ( S o. R ) ) = ( ( ( B ~P_* C ) ` S ) o. ( ( A ~P_* B ) ` R ) ) ) with typecode |-

Proof

Step Hyp Ref Expression
1 bj-imdirco.exa φAU
2 bj-imdirco.exb φBV
3 bj-imdirco.exc φCW
4 bj-imdirco.arg1 φRA×B
5 bj-imdirco.arg2 φSB×C
6 imaco SRx=SRx
7 6 eqeq1i SRx=zSRx=z
8 7 anbi2i xAzCSRx=zxAzCSRx=z
9 8 a1i φxAzCSRx=zxAzCSRx=z
10 1 2 xpexd φA×BV
11 10 4 ssexd φRV
12 imaexg RVRxV
13 11 12 syl φRxV
14 imass1 RA×BRxA×Bx
15 xpima A×Bx=ifAx=B
16 simpr Ax=uu
17 simpr ¬Ax=uBuB
18 16 17 orim12i Ax=u¬Ax=uBuuB
19 elif uifAx=BAx=u¬Ax=uB
20 elun uBuuB
21 18 19 20 3imtr4i uifAx=BuB
22 21 ssriv ifAx=BB
23 0ss B
24 ssid BB
25 23 24 unssi BB
26 22 25 sstri ifAx=BB
27 15 26 eqsstri A×BxB
28 14 27 sstrdi RA×BRxB
29 4 28 syl φRxB
30 eqidd φRx=Rx
31 29 30 jca φRxBRx=Rx
32 sseq1 y=RxyBRxB
33 eqeq2 y=RxRx=yRx=Rx
34 32 33 anbi12d y=RxyBRx=yRxBRx=Rx
35 13 31 34 spcedv φyyBRx=y
36 35 biantrurd φSRx=zyyBRx=ySRx=z
37 19.41v yyBRx=ySRx=zyyBRx=ySRx=z
38 anass yBRx=ySRx=zyBRx=ySRx=z
39 38 exbii yyBRx=ySRx=zyyBRx=ySRx=z
40 37 39 bitr3i yyBRx=ySRx=zyyBRx=ySRx=z
41 36 40 bitrdi φSRx=zyyBRx=ySRx=z
42 imaeq2 Rx=ySRx=Sy
43 42 eqeq1d Rx=ySRx=zSy=z
44 43 pm5.32i Rx=ySRx=zRx=ySy=z
45 44 bianass yBRx=ySRx=zyBRx=ySy=z
46 45 biancomi yBRx=ySRx=zSy=zyBRx=y
47 46 exbii yyBRx=ySRx=zySy=zyBRx=y
48 47 a1i φyyBRx=ySRx=zySy=zyBRx=y
49 pm4.24 yByByB
50 49 anbi1i yBRx=yyByBRx=y
51 anass yByBRx=yyByBRx=y
52 50 51 bitri yBRx=yyByBRx=y
53 52 anbi2i Sy=zyBRx=ySy=zyByBRx=y
54 an12 Sy=zyByBRx=yyBSy=zyBRx=y
55 53 54 bitri Sy=zyBRx=yyBSy=zyBRx=y
56 55 exbii ySy=zyBRx=yyyBSy=zyBRx=y
57 56 a1i φySy=zyBRx=yyyBSy=zyBRx=y
58 41 48 57 3bitrd φSRx=zyyBSy=zyBRx=y
59 58 anbi2d φxAzCSRx=zxAzCyyBSy=zyBRx=y
60 19.42v yxAzCyBSy=zyBRx=yxAzCyyBSy=zyBRx=y
61 anass xAzCyBSy=zyBRx=yxAzCyBSy=zyBRx=y
62 ancom Rx=yyBzCSy=zyByBRx=yyBzCSy=z
63 62 bianass xARx=yyBzCSy=zyBxAyBRx=yyBzCSy=z
64 ancom yBzCSy=zyBRx=yRx=yyBzCSy=zyB
65 ancom zCyByBzC
66 65 anbi1i zCyBSy=zyBzCSy=z
67 66 anbi1i zCyBSy=zyBRx=yyBzCSy=zyBRx=y
68 biid yBSy=zyBRx=yyBSy=zyBRx=y
69 68 bianass zCyBSy=zyBRx=yzCyBSy=zyBRx=y
70 anass zCyBSy=zyBRx=yzCyBSy=zyBRx=y
71 69 70 bitr4i zCyBSy=zyBRx=yzCyBSy=zyBRx=y
72 anass yBzCSy=zyBRx=yyBzCSy=zyBRx=y
73 67 71 72 3bitr4i zCyBSy=zyBRx=yyBzCSy=zyBRx=y
74 anass Rx=yyBzCSy=zyBRx=yyBzCSy=zyB
75 64 73 74 3bitr4i zCyBSy=zyBRx=yRx=yyBzCSy=zyB
76 75 anbi2i xAzCyBSy=zyBRx=yxARx=yyBzCSy=zyB
77 anass xAyBRx=yyBzCSy=zxAyBRx=yyBzCSy=z
78 63 76 77 3bitr4i xAzCyBSy=zyBRx=yxAyBRx=yyBzCSy=z
79 61 78 bitri xAzCyBSy=zyBRx=yxAyBRx=yyBzCSy=z
80 79 exbii yxAzCyBSy=zyBRx=yyxAyBRx=yyBzCSy=z
81 60 80 bitr3i xAzCyyBSy=zyBRx=yyxAyBRx=yyBzCSy=z
82 81 a1i φxAzCyyBSy=zyBRx=yyxAyBRx=yyBzCSy=z
83 9 59 82 3bitrd φxAzCSRx=zyxAyBRx=yyBzCSy=z
84 83 opabbidv φxz|xAzCSRx=z=xz|yxAyBRx=yyBzCSy=z
85 bj-opabco yz|yBzCSy=zxy|xAyBRx=y=xz|yxAyBRx=yyBzCSy=z
86 84 85 eqtr4di φxz|xAzCSRx=z=yz|yBzCSy=zxy|xAyBRx=y
87 5 4 coss12d φSRB×CA×B
88 bj-xpcossxp B×CA×BA×C
89 87 88 sstrdi φSRA×C
90 1 3 89 bj-imdirval2 Could not format ( ph -> ( ( A ~P_* C ) ` ( S o. R ) ) = { <. x , z >. | ( ( x C_ A /\ z C_ C ) /\ ( ( S o. R ) " x ) = z ) } ) : No typesetting found for |- ( ph -> ( ( A ~P_* C ) ` ( S o. R ) ) = { <. x , z >. | ( ( x C_ A /\ z C_ C ) /\ ( ( S o. R ) " x ) = z ) } ) with typecode |-
91 2 3 5 bj-imdirval2 Could not format ( ph -> ( ( B ~P_* C ) ` S ) = { <. y , z >. | ( ( y C_ B /\ z C_ C ) /\ ( S " y ) = z ) } ) : No typesetting found for |- ( ph -> ( ( B ~P_* C ) ` S ) = { <. y , z >. | ( ( y C_ B /\ z C_ C ) /\ ( S " y ) = z ) } ) with typecode |-
92 1 2 4 bj-imdirval2 Could not format ( ph -> ( ( A ~P_* B ) ` R ) = { <. x , y >. | ( ( x C_ A /\ y C_ B ) /\ ( R " x ) = y ) } ) : No typesetting found for |- ( ph -> ( ( A ~P_* B ) ` R ) = { <. x , y >. | ( ( x C_ A /\ y C_ B ) /\ ( R " x ) = y ) } ) with typecode |-
93 91 92 coeq12d Could not format ( ph -> ( ( ( B ~P_* C ) ` S ) o. ( ( A ~P_* B ) ` R ) ) = ( { <. y , z >. | ( ( y C_ B /\ z C_ C ) /\ ( S " y ) = z ) } o. { <. x , y >. | ( ( x C_ A /\ y C_ B ) /\ ( R " x ) = y ) } ) ) : No typesetting found for |- ( ph -> ( ( ( B ~P_* C ) ` S ) o. ( ( A ~P_* B ) ` R ) ) = ( { <. y , z >. | ( ( y C_ B /\ z C_ C ) /\ ( S " y ) = z ) } o. { <. x , y >. | ( ( x C_ A /\ y C_ B ) /\ ( R " x ) = y ) } ) ) with typecode |-
94 86 90 93 3eqtr4d Could not format ( ph -> ( ( A ~P_* C ) ` ( S o. R ) ) = ( ( ( B ~P_* C ) ` S ) o. ( ( A ~P_* B ) ` R ) ) ) : No typesetting found for |- ( ph -> ( ( A ~P_* C ) ` ( S o. R ) ) = ( ( ( B ~P_* C ) ` S ) o. ( ( A ~P_* B ) ` R ) ) ) with typecode |-