Metamath Proof Explorer


Theorem fuco22a

Description: The morphism part of the functor composition bifunctor. See also fuco22 . (Contributed by Zhi Wang, 1-Oct-2025)

Ref Expression
Hypotheses fuco22a.o ( 𝜑 → ( ⟨ 𝐶 , 𝐷 ⟩ ∘F 𝐸 ) = ⟨ 𝑂 , 𝑃 ⟩ )
fuco22a.u ( 𝜑𝑈 = ⟨ 𝐾 , 𝐹 ⟩ )
fuco22a.v ( 𝜑𝑉 = ⟨ 𝑅 , 𝑀 ⟩ )
fuco22a.a ( 𝜑𝐴 ∈ ( 𝐹 ( 𝐶 Nat 𝐷 ) 𝑀 ) )
fuco22a.b ( 𝜑𝐵 ∈ ( 𝐾 ( 𝐷 Nat 𝐸 ) 𝑅 ) )
Assertion fuco22a ( 𝜑 → ( 𝐵 ( 𝑈 𝑃 𝑉 ) 𝐴 ) = ( 𝑥 ∈ ( Base ‘ 𝐶 ) ↦ ( ( 𝐵 ‘ ( ( 1st𝑀 ) ‘ 𝑥 ) ) ( ⟨ ( ( 1st𝐾 ) ‘ ( ( 1st𝐹 ) ‘ 𝑥 ) ) , ( ( 1st𝐾 ) ‘ ( ( 1st𝑀 ) ‘ 𝑥 ) ) ⟩ ( comp ‘ 𝐸 ) ( ( 1st𝑅 ) ‘ ( ( 1st𝑀 ) ‘ 𝑥 ) ) ) ( ( ( ( 1st𝐹 ) ‘ 𝑥 ) ( 2nd𝐾 ) ( ( 1st𝑀 ) ‘ 𝑥 ) ) ‘ ( 𝐴𝑥 ) ) ) ) )

Proof

Step Hyp Ref Expression
1 fuco22a.o ( 𝜑 → ( ⟨ 𝐶 , 𝐷 ⟩ ∘F 𝐸 ) = ⟨ 𝑂 , 𝑃 ⟩ )
2 fuco22a.u ( 𝜑𝑈 = ⟨ 𝐾 , 𝐹 ⟩ )
3 fuco22a.v ( 𝜑𝑉 = ⟨ 𝑅 , 𝑀 ⟩ )
4 fuco22a.a ( 𝜑𝐴 ∈ ( 𝐹 ( 𝐶 Nat 𝐷 ) 𝑀 ) )
5 fuco22a.b ( 𝜑𝐵 ∈ ( 𝐾 ( 𝐷 Nat 𝐸 ) 𝑅 ) )
6 relfunc Rel ( 𝐷 Func 𝐸 )
7 df-rel ( Rel ( 𝐷 Func 𝐸 ) ↔ ( 𝐷 Func 𝐸 ) ⊆ ( V × V ) )
8 6 7 mpbi ( 𝐷 Func 𝐸 ) ⊆ ( V × V )
9 eqid ( 𝐷 Nat 𝐸 ) = ( 𝐷 Nat 𝐸 )
10 9 natrcl ( 𝐵 ∈ ( 𝐾 ( 𝐷 Nat 𝐸 ) 𝑅 ) → ( 𝐾 ∈ ( 𝐷 Func 𝐸 ) ∧ 𝑅 ∈ ( 𝐷 Func 𝐸 ) ) )
11 5 10 syl ( 𝜑 → ( 𝐾 ∈ ( 𝐷 Func 𝐸 ) ∧ 𝑅 ∈ ( 𝐷 Func 𝐸 ) ) )
12 11 simpld ( 𝜑𝐾 ∈ ( 𝐷 Func 𝐸 ) )
13 8 12 sselid ( 𝜑𝐾 ∈ ( V × V ) )
14 1st2ndb ( 𝐾 ∈ ( V × V ) ↔ 𝐾 = ⟨ ( 1st𝐾 ) , ( 2nd𝐾 ) ⟩ )
15 13 14 sylib ( 𝜑𝐾 = ⟨ ( 1st𝐾 ) , ( 2nd𝐾 ) ⟩ )
16 relfunc Rel ( 𝐶 Func 𝐷 )
17 df-rel ( Rel ( 𝐶 Func 𝐷 ) ↔ ( 𝐶 Func 𝐷 ) ⊆ ( V × V ) )
18 16 17 mpbi ( 𝐶 Func 𝐷 ) ⊆ ( V × V )
19 eqid ( 𝐶 Nat 𝐷 ) = ( 𝐶 Nat 𝐷 )
20 19 natrcl ( 𝐴 ∈ ( 𝐹 ( 𝐶 Nat 𝐷 ) 𝑀 ) → ( 𝐹 ∈ ( 𝐶 Func 𝐷 ) ∧ 𝑀 ∈ ( 𝐶 Func 𝐷 ) ) )
21 4 20 syl ( 𝜑 → ( 𝐹 ∈ ( 𝐶 Func 𝐷 ) ∧ 𝑀 ∈ ( 𝐶 Func 𝐷 ) ) )
22 21 simpld ( 𝜑𝐹 ∈ ( 𝐶 Func 𝐷 ) )
23 18 22 sselid ( 𝜑𝐹 ∈ ( V × V ) )
24 1st2ndb ( 𝐹 ∈ ( V × V ) ↔ 𝐹 = ⟨ ( 1st𝐹 ) , ( 2nd𝐹 ) ⟩ )
25 23 24 sylib ( 𝜑𝐹 = ⟨ ( 1st𝐹 ) , ( 2nd𝐹 ) ⟩ )
26 15 25 opeq12d ( 𝜑 → ⟨ 𝐾 , 𝐹 ⟩ = ⟨ ⟨ ( 1st𝐾 ) , ( 2nd𝐾 ) ⟩ , ⟨ ( 1st𝐹 ) , ( 2nd𝐹 ) ⟩ ⟩ )
27 2 26 eqtrd ( 𝜑𝑈 = ⟨ ⟨ ( 1st𝐾 ) , ( 2nd𝐾 ) ⟩ , ⟨ ( 1st𝐹 ) , ( 2nd𝐹 ) ⟩ ⟩ )
28 11 simprd ( 𝜑𝑅 ∈ ( 𝐷 Func 𝐸 ) )
29 8 28 sselid ( 𝜑𝑅 ∈ ( V × V ) )
30 1st2ndb ( 𝑅 ∈ ( V × V ) ↔ 𝑅 = ⟨ ( 1st𝑅 ) , ( 2nd𝑅 ) ⟩ )
31 29 30 sylib ( 𝜑𝑅 = ⟨ ( 1st𝑅 ) , ( 2nd𝑅 ) ⟩ )
32 21 simprd ( 𝜑𝑀 ∈ ( 𝐶 Func 𝐷 ) )
33 18 32 sselid ( 𝜑𝑀 ∈ ( V × V ) )
34 1st2ndb ( 𝑀 ∈ ( V × V ) ↔ 𝑀 = ⟨ ( 1st𝑀 ) , ( 2nd𝑀 ) ⟩ )
35 33 34 sylib ( 𝜑𝑀 = ⟨ ( 1st𝑀 ) , ( 2nd𝑀 ) ⟩ )
36 31 35 opeq12d ( 𝜑 → ⟨ 𝑅 , 𝑀 ⟩ = ⟨ ⟨ ( 1st𝑅 ) , ( 2nd𝑅 ) ⟩ , ⟨ ( 1st𝑀 ) , ( 2nd𝑀 ) ⟩ ⟩ )
37 3 36 eqtrd ( 𝜑𝑉 = ⟨ ⟨ ( 1st𝑅 ) , ( 2nd𝑅 ) ⟩ , ⟨ ( 1st𝑀 ) , ( 2nd𝑀 ) ⟩ ⟩ )
38 19 4 nat1st2nd ( 𝜑𝐴 ∈ ( ⟨ ( 1st𝐹 ) , ( 2nd𝐹 ) ⟩ ( 𝐶 Nat 𝐷 ) ⟨ ( 1st𝑀 ) , ( 2nd𝑀 ) ⟩ ) )
39 9 5 nat1st2nd ( 𝜑𝐵 ∈ ( ⟨ ( 1st𝐾 ) , ( 2nd𝐾 ) ⟩ ( 𝐷 Nat 𝐸 ) ⟨ ( 1st𝑅 ) , ( 2nd𝑅 ) ⟩ ) )
40 1 27 37 38 39 fuco22 ( 𝜑 → ( 𝐵 ( 𝑈 𝑃 𝑉 ) 𝐴 ) = ( 𝑥 ∈ ( Base ‘ 𝐶 ) ↦ ( ( 𝐵 ‘ ( ( 1st𝑀 ) ‘ 𝑥 ) ) ( ⟨ ( ( 1st𝐾 ) ‘ ( ( 1st𝐹 ) ‘ 𝑥 ) ) , ( ( 1st𝐾 ) ‘ ( ( 1st𝑀 ) ‘ 𝑥 ) ) ⟩ ( comp ‘ 𝐸 ) ( ( 1st𝑅 ) ‘ ( ( 1st𝑀 ) ‘ 𝑥 ) ) ) ( ( ( ( 1st𝐹 ) ‘ 𝑥 ) ( 2nd𝐾 ) ( ( 1st𝑀 ) ‘ 𝑥 ) ) ‘ ( 𝐴𝑥 ) ) ) ) )