Metamath Proof Explorer


Theorem fucofunc

Description: The functor composition bifunctor is a functor.

However, it is unlikely the unique functor compatible with the functor composition. As a counterexample, let C and D be categories of one object and one morphism, for example, ( SetCat1o ) , and E be a category with two objects equipped with only two non-identity morphisms f and g , pointing in the same direction. It is possible to map the ordered pair of natural transformations <. a , i >. , where a sends to f and i is the identity natural transformation, to the other natural transformation b sending to g , i.e., define the morphism part P such that ( a ( U P V ) i ) = b such that ( bX ) = g given hypotheses of fuco23 . Such construction should be provable as a functor.

Given any P , it is a morphism part of a functor compatible with the object part, i.e., the functor composition, i.e., the restriction of o.func , iff both of the following hold.

1. It has the same form as df-fuco up to fuco23 , but ( ( B ( U P V ) A )X ) might be mapped to a different morphism in category E . See fucofulem2 for some insights.

2. fuco22nat , fucoid , and fucoco are satisfied.

(Contributed by Zhi Wang, 3-Oct-2025)

Ref Expression
Hypotheses fucoco2.t 𝑇 = ( ( 𝐷 FuncCat 𝐸 ) ×c ( 𝐶 FuncCat 𝐷 ) )
fucoco2.q 𝑄 = ( 𝐶 FuncCat 𝐸 )
fucoco2.o ( 𝜑 → ( ⟨ 𝐶 , 𝐷 ⟩ ∘F 𝐸 ) = ⟨ 𝑂 , 𝑃 ⟩ )
fucofunc.c ( 𝜑𝐶 ∈ Cat )
fucofunc.d ( 𝜑𝐷 ∈ Cat )
fucofunc.e ( 𝜑𝐸 ∈ Cat )
Assertion fucofunc ( 𝜑𝑂 ( 𝑇 Func 𝑄 ) 𝑃 )

Proof

Step Hyp Ref Expression
1 fucoco2.t 𝑇 = ( ( 𝐷 FuncCat 𝐸 ) ×c ( 𝐶 FuncCat 𝐷 ) )
2 fucoco2.q 𝑄 = ( 𝐶 FuncCat 𝐸 )
3 fucoco2.o ( 𝜑 → ( ⟨ 𝐶 , 𝐷 ⟩ ∘F 𝐸 ) = ⟨ 𝑂 , 𝑃 ⟩ )
4 fucofunc.c ( 𝜑𝐶 ∈ Cat )
5 fucofunc.d ( 𝜑𝐷 ∈ Cat )
6 fucofunc.e ( 𝜑𝐸 ∈ Cat )
7 1 xpcfucbas ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) = ( Base ‘ 𝑇 )
8 2 fucbas ( 𝐶 Func 𝐸 ) = ( Base ‘ 𝑄 )
9 eqid ( Hom ‘ 𝑇 ) = ( Hom ‘ 𝑇 )
10 eqid ( 𝐶 Nat 𝐸 ) = ( 𝐶 Nat 𝐸 )
11 2 10 fuchom ( 𝐶 Nat 𝐸 ) = ( Hom ‘ 𝑄 )
12 eqid ( Id ‘ 𝑇 ) = ( Id ‘ 𝑇 )
13 eqid ( Id ‘ 𝑄 ) = ( Id ‘ 𝑄 )
14 eqid ( comp ‘ 𝑇 ) = ( comp ‘ 𝑇 )
15 eqid ( comp ‘ 𝑄 ) = ( comp ‘ 𝑄 )
16 eqid ( 𝐷 FuncCat 𝐸 ) = ( 𝐷 FuncCat 𝐸 )
17 16 5 6 fuccat ( 𝜑 → ( 𝐷 FuncCat 𝐸 ) ∈ Cat )
18 eqid ( 𝐶 FuncCat 𝐷 ) = ( 𝐶 FuncCat 𝐷 )
19 18 4 5 fuccat ( 𝜑 → ( 𝐶 FuncCat 𝐷 ) ∈ Cat )
20 1 17 19 xpccat ( 𝜑𝑇 ∈ Cat )
21 2 4 6 fuccat ( 𝜑𝑄 ∈ Cat )
22 eqidd ( 𝜑 → ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) = ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) )
23 4 5 6 3 22 fucof1 ( 𝜑𝑂 : ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) ⟶ ( 𝐶 Func 𝐸 ) )
24 4 5 6 3 22 fucofn2 ( 𝜑𝑃 Fn ( ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) × ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) ) )
25 3 adantr ( ( 𝜑 ∧ ( 𝑥 ∈ ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) ∧ 𝑦 ∈ ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) ) ) → ( ⟨ 𝐶 , 𝐷 ⟩ ∘F 𝐸 ) = ⟨ 𝑂 , 𝑃 ⟩ )
26 eqidd ( ( 𝜑 ∧ ( 𝑥 ∈ ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) ∧ 𝑦 ∈ ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) ) ) → ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) = ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) )
27 simprl ( ( 𝜑 ∧ ( 𝑥 ∈ ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) ∧ 𝑦 ∈ ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) ) ) → 𝑥 ∈ ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) )
28 simprr ( ( 𝜑 ∧ ( 𝑥 ∈ ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) ∧ 𝑦 ∈ ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) ) ) → 𝑦 ∈ ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) )
29 25 1 9 26 27 28 fucof21 ( ( 𝜑 ∧ ( 𝑥 ∈ ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) ∧ 𝑦 ∈ ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) ) ) → ( 𝑥 𝑃 𝑦 ) : ( 𝑥 ( Hom ‘ 𝑇 ) 𝑦 ) ⟶ ( ( 𝑂𝑥 ) ( 𝐶 Nat 𝐸 ) ( 𝑂𝑦 ) ) )
30 3 adantr ( ( 𝜑𝑥 ∈ ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) ) → ( ⟨ 𝐶 , 𝐷 ⟩ ∘F 𝐸 ) = ⟨ 𝑂 , 𝑃 ⟩ )
31 eqidd ( ( 𝜑𝑥 ∈ ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) ) → ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) = ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) )
32 simpr ( ( 𝜑𝑥 ∈ ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) ) → 𝑥 ∈ ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) )
33 30 1 12 2 13 31 32 fucoid2 ( ( 𝜑𝑥 ∈ ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) ) → ( ( 𝑥 𝑃 𝑥 ) ‘ ( ( Id ‘ 𝑇 ) ‘ 𝑥 ) ) = ( ( Id ‘ 𝑄 ) ‘ ( 𝑂𝑥 ) ) )
34 3 3ad2ant1 ( ( 𝜑 ∧ ( 𝑥 ∈ ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) ∧ 𝑦 ∈ ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) ∧ 𝑧 ∈ ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) ) ∧ ( 𝑚 ∈ ( 𝑥 ( Hom ‘ 𝑇 ) 𝑦 ) ∧ 𝑛 ∈ ( 𝑦 ( Hom ‘ 𝑇 ) 𝑧 ) ) ) → ( ⟨ 𝐶 , 𝐷 ⟩ ∘F 𝐸 ) = ⟨ 𝑂 , 𝑃 ⟩ )
35 eqidd ( ( 𝜑 ∧ ( 𝑥 ∈ ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) ∧ 𝑦 ∈ ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) ∧ 𝑧 ∈ ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) ) ∧ ( 𝑚 ∈ ( 𝑥 ( Hom ‘ 𝑇 ) 𝑦 ) ∧ 𝑛 ∈ ( 𝑦 ( Hom ‘ 𝑇 ) 𝑧 ) ) ) → ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) = ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) )
36 simp21 ( ( 𝜑 ∧ ( 𝑥 ∈ ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) ∧ 𝑦 ∈ ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) ∧ 𝑧 ∈ ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) ) ∧ ( 𝑚 ∈ ( 𝑥 ( Hom ‘ 𝑇 ) 𝑦 ) ∧ 𝑛 ∈ ( 𝑦 ( Hom ‘ 𝑇 ) 𝑧 ) ) ) → 𝑥 ∈ ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) )
37 simp22 ( ( 𝜑 ∧ ( 𝑥 ∈ ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) ∧ 𝑦 ∈ ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) ∧ 𝑧 ∈ ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) ) ∧ ( 𝑚 ∈ ( 𝑥 ( Hom ‘ 𝑇 ) 𝑦 ) ∧ 𝑛 ∈ ( 𝑦 ( Hom ‘ 𝑇 ) 𝑧 ) ) ) → 𝑦 ∈ ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) )
38 simp23 ( ( 𝜑 ∧ ( 𝑥 ∈ ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) ∧ 𝑦 ∈ ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) ∧ 𝑧 ∈ ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) ) ∧ ( 𝑚 ∈ ( 𝑥 ( Hom ‘ 𝑇 ) 𝑦 ) ∧ 𝑛 ∈ ( 𝑦 ( Hom ‘ 𝑇 ) 𝑧 ) ) ) → 𝑧 ∈ ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) )
39 simp3l ( ( 𝜑 ∧ ( 𝑥 ∈ ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) ∧ 𝑦 ∈ ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) ∧ 𝑧 ∈ ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) ) ∧ ( 𝑚 ∈ ( 𝑥 ( Hom ‘ 𝑇 ) 𝑦 ) ∧ 𝑛 ∈ ( 𝑦 ( Hom ‘ 𝑇 ) 𝑧 ) ) ) → 𝑚 ∈ ( 𝑥 ( Hom ‘ 𝑇 ) 𝑦 ) )
40 simp3r ( ( 𝜑 ∧ ( 𝑥 ∈ ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) ∧ 𝑦 ∈ ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) ∧ 𝑧 ∈ ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) ) ∧ ( 𝑚 ∈ ( 𝑥 ( Hom ‘ 𝑇 ) 𝑦 ) ∧ 𝑛 ∈ ( 𝑦 ( Hom ‘ 𝑇 ) 𝑧 ) ) ) → 𝑛 ∈ ( 𝑦 ( Hom ‘ 𝑇 ) 𝑧 ) )
41 1 2 34 14 15 35 36 37 38 9 39 40 fucoco2 ( ( 𝜑 ∧ ( 𝑥 ∈ ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) ∧ 𝑦 ∈ ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) ∧ 𝑧 ∈ ( ( 𝐷 Func 𝐸 ) × ( 𝐶 Func 𝐷 ) ) ) ∧ ( 𝑚 ∈ ( 𝑥 ( Hom ‘ 𝑇 ) 𝑦 ) ∧ 𝑛 ∈ ( 𝑦 ( Hom ‘ 𝑇 ) 𝑧 ) ) ) → ( ( 𝑥 𝑃 𝑧 ) ‘ ( 𝑛 ( ⟨ 𝑥 , 𝑦 ⟩ ( comp ‘ 𝑇 ) 𝑧 ) 𝑚 ) ) = ( ( ( 𝑦 𝑃 𝑧 ) ‘ 𝑛 ) ( ⟨ ( 𝑂𝑥 ) , ( 𝑂𝑦 ) ⟩ ( comp ‘ 𝑄 ) ( 𝑂𝑧 ) ) ( ( 𝑥 𝑃 𝑦 ) ‘ 𝑚 ) ) )
42 7 8 9 11 12 13 14 15 20 21 23 24 29 33 41 isfuncd ( 𝜑𝑂 ( 𝑇 Func 𝑄 ) 𝑃 )