Metamath Proof Explorer


Theorem diag1f1o

Description: The object part of the diagonal functor is a bijection if D is terminal. So any functor from a terminal category is one-to-one correspondent to an object of the target base. (Contributed by Zhi Wang, 21-Oct-2025)

Ref Expression
Hypotheses diag1f1o.a 𝐴 = ( Base ‘ 𝐶 )
diag1f1o.d ( 𝜑𝐷 ∈ TermCat )
diag1f1o.c ( 𝜑𝐶 ∈ Cat )
diag1f1o.l 𝐿 = ( 𝐶 Δfunc 𝐷 )
Assertion diag1f1o ( 𝜑 → ( 1st𝐿 ) : 𝐴1-1-onto→ ( 𝐷 Func 𝐶 ) )

Proof

Step Hyp Ref Expression
1 diag1f1o.a 𝐴 = ( Base ‘ 𝐶 )
2 diag1f1o.d ( 𝜑𝐷 ∈ TermCat )
3 diag1f1o.c ( 𝜑𝐶 ∈ Cat )
4 diag1f1o.l 𝐿 = ( 𝐶 Δfunc 𝐷 )
5 2 termccd ( 𝜑𝐷 ∈ Cat )
6 eqid ( Base ‘ 𝐷 ) = ( Base ‘ 𝐷 )
7 6 istermc2 ( 𝐷 ∈ TermCat ↔ ( 𝐷 ∈ ThinCat ∧ ∃! 𝑦 𝑦 ∈ ( Base ‘ 𝐷 ) ) )
8 2 7 sylib ( 𝜑 → ( 𝐷 ∈ ThinCat ∧ ∃! 𝑦 𝑦 ∈ ( Base ‘ 𝐷 ) ) )
9 8 simprd ( 𝜑 → ∃! 𝑦 𝑦 ∈ ( Base ‘ 𝐷 ) )
10 euex ( ∃! 𝑦 𝑦 ∈ ( Base ‘ 𝐷 ) → ∃ 𝑦 𝑦 ∈ ( Base ‘ 𝐷 ) )
11 9 10 syl ( 𝜑 → ∃ 𝑦 𝑦 ∈ ( Base ‘ 𝐷 ) )
12 n0 ( ( Base ‘ 𝐷 ) ≠ ∅ ↔ ∃ 𝑦 𝑦 ∈ ( Base ‘ 𝐷 ) )
13 11 12 sylibr ( 𝜑 → ( Base ‘ 𝐷 ) ≠ ∅ )
14 4 3 5 1 6 13 diag1f1 ( 𝜑 → ( 1st𝐿 ) : 𝐴1-1→ ( 𝐷 Func 𝐶 ) )
15 f1f ( ( 1st𝐿 ) : 𝐴1-1→ ( 𝐷 Func 𝐶 ) → ( 1st𝐿 ) : 𝐴 ⟶ ( 𝐷 Func 𝐶 ) )
16 14 15 syl ( 𝜑 → ( 1st𝐿 ) : 𝐴 ⟶ ( 𝐷 Func 𝐶 ) )
17 2 6 termcbas ( 𝜑 → ∃ 𝑦 ( Base ‘ 𝐷 ) = { 𝑦 } )
18 17 adantr ( ( 𝜑𝑘 ∈ ( 𝐷 Func 𝐶 ) ) → ∃ 𝑦 ( Base ‘ 𝐷 ) = { 𝑦 } )
19 fveq2 ( 𝑥 = ( ( 1st𝑘 ) ‘ 𝑦 ) → ( ( 1st𝐿 ) ‘ 𝑥 ) = ( ( 1st𝐿 ) ‘ ( ( 1st𝑘 ) ‘ 𝑦 ) ) )
20 19 eqeq2d ( 𝑥 = ( ( 1st𝑘 ) ‘ 𝑦 ) → ( 𝑘 = ( ( 1st𝐿 ) ‘ 𝑥 ) ↔ 𝑘 = ( ( 1st𝐿 ) ‘ ( ( 1st𝑘 ) ‘ 𝑦 ) ) ) )
21 2 ad2antrr ( ( ( 𝜑𝑘 ∈ ( 𝐷 Func 𝐶 ) ) ∧ ( Base ‘ 𝐷 ) = { 𝑦 } ) → 𝐷 ∈ TermCat )
22 simplr ( ( ( 𝜑𝑘 ∈ ( 𝐷 Func 𝐶 ) ) ∧ ( Base ‘ 𝐷 ) = { 𝑦 } ) → 𝑘 ∈ ( 𝐷 Func 𝐶 ) )
23 vsnid 𝑦 ∈ { 𝑦 }
24 simpr ( ( ( 𝜑𝑘 ∈ ( 𝐷 Func 𝐶 ) ) ∧ ( Base ‘ 𝐷 ) = { 𝑦 } ) → ( Base ‘ 𝐷 ) = { 𝑦 } )
25 23 24 eleqtrrid ( ( ( 𝜑𝑘 ∈ ( 𝐷 Func 𝐶 ) ) ∧ ( Base ‘ 𝐷 ) = { 𝑦 } ) → 𝑦 ∈ ( Base ‘ 𝐷 ) )
26 eqid ( ( 1st𝑘 ) ‘ 𝑦 ) = ( ( 1st𝑘 ) ‘ 𝑦 )
27 1 21 22 6 25 26 4 diag1f1olem ( ( ( 𝜑𝑘 ∈ ( 𝐷 Func 𝐶 ) ) ∧ ( Base ‘ 𝐷 ) = { 𝑦 } ) → ( ( ( 1st𝑘 ) ‘ 𝑦 ) ∈ 𝐴𝑘 = ( ( 1st𝐿 ) ‘ ( ( 1st𝑘 ) ‘ 𝑦 ) ) ) )
28 27 simpld ( ( ( 𝜑𝑘 ∈ ( 𝐷 Func 𝐶 ) ) ∧ ( Base ‘ 𝐷 ) = { 𝑦 } ) → ( ( 1st𝑘 ) ‘ 𝑦 ) ∈ 𝐴 )
29 27 simprd ( ( ( 𝜑𝑘 ∈ ( 𝐷 Func 𝐶 ) ) ∧ ( Base ‘ 𝐷 ) = { 𝑦 } ) → 𝑘 = ( ( 1st𝐿 ) ‘ ( ( 1st𝑘 ) ‘ 𝑦 ) ) )
30 20 28 29 rspcedvdw ( ( ( 𝜑𝑘 ∈ ( 𝐷 Func 𝐶 ) ) ∧ ( Base ‘ 𝐷 ) = { 𝑦 } ) → ∃ 𝑥𝐴 𝑘 = ( ( 1st𝐿 ) ‘ 𝑥 ) )
31 18 30 exlimddv ( ( 𝜑𝑘 ∈ ( 𝐷 Func 𝐶 ) ) → ∃ 𝑥𝐴 𝑘 = ( ( 1st𝐿 ) ‘ 𝑥 ) )
32 31 ralrimiva ( 𝜑 → ∀ 𝑘 ∈ ( 𝐷 Func 𝐶 ) ∃ 𝑥𝐴 𝑘 = ( ( 1st𝐿 ) ‘ 𝑥 ) )
33 dffo3 ( ( 1st𝐿 ) : 𝐴onto→ ( 𝐷 Func 𝐶 ) ↔ ( ( 1st𝐿 ) : 𝐴 ⟶ ( 𝐷 Func 𝐶 ) ∧ ∀ 𝑘 ∈ ( 𝐷 Func 𝐶 ) ∃ 𝑥𝐴 𝑘 = ( ( 1st𝐿 ) ‘ 𝑥 ) ) )
34 16 32 33 sylanbrc ( 𝜑 → ( 1st𝐿 ) : 𝐴onto→ ( 𝐷 Func 𝐶 ) )
35 df-f1o ( ( 1st𝐿 ) : 𝐴1-1-onto→ ( 𝐷 Func 𝐶 ) ↔ ( ( 1st𝐿 ) : 𝐴1-1→ ( 𝐷 Func 𝐶 ) ∧ ( 1st𝐿 ) : 𝐴onto→ ( 𝐷 Func 𝐶 ) ) )
36 14 34 35 sylanbrc ( 𝜑 → ( 1st𝐿 ) : 𝐴1-1-onto→ ( 𝐷 Func 𝐶 ) )