Metamath Proof Explorer


Theorem termc2

Description: If there exists a unique functor from both the category itself and the trivial category, then the category is terminal. Note that the converse also holds, so that it is a biconditional. See the proof of termc for hints. See also eufunc and euendfunc2 for some insights on why two categories are sufficient. (Contributed by Zhi Wang, 18-Oct-2025) (Proof shortened by Zhi Wang, 20-Oct-2025)

Ref Expression
Assertion termc2 Could not format assertion : No typesetting found for |- ( A. d e. ( { C , ( SetCat ` 1o ) } i^i Cat ) E! f f e. ( d Func C ) -> C e. TermCat ) with typecode |-

Proof

Step Hyp Ref Expression
1 eqid ⊢ CatCat ⁡ C SetCat ⁡ 1 𝑜 = CatCat ⁡ C SetCat ⁡ 1 𝑜
2 fvex ⊢ SetCat ⁡ 1 𝑜 ∈ V
3 2 prid2 ⊢ SetCat ⁡ 1 𝑜 ∈ C SetCat ⁡ 1 𝑜
4 setc1oterm Could not format ( SetCat ` 1o ) e. TermCat : No typesetting found for |- ( SetCat ` 1o ) e. TermCat with typecode |-
5 3 4 elini Could not format ( SetCat ` 1o ) e. ( { C , ( SetCat ` 1o ) } i^i TermCat ) : No typesetting found for |- ( SetCat ` 1o ) e. ( { C , ( SetCat ` 1o ) } i^i TermCat ) with typecode |-
6 5 ne0ii Could not format ( { C , ( SetCat ` 1o ) } i^i TermCat ) =/= (/) : No typesetting found for |- ( { C , ( SetCat ` 1o ) } i^i TermCat ) =/= (/) with typecode |-
7 6 a1i Could not format ( A. d e. ( { C , ( SetCat ` 1o ) } i^i Cat ) E! f f e. ( d Func C ) -> ( { C , ( SetCat ` 1o ) } i^i TermCat ) =/= (/) ) : No typesetting found for |- ( A. d e. ( { C , ( SetCat ` 1o ) } i^i Cat ) E! f f e. ( d Func C ) -> ( { C , ( SetCat ` 1o ) } i^i TermCat ) =/= (/) ) with typecode |-
8 4 a1i Could not format ( T. -> ( SetCat ` 1o ) e. TermCat ) : No typesetting found for |- ( T. -> ( SetCat ` 1o ) e. TermCat ) with typecode |-
9 8 termccatd ⊢ ⊤ → SetCat ⁡ 1 𝑜 ∈ Cat
10 9 mptru ⊢ SetCat ⁡ 1 𝑜 ∈ Cat
11 3 10 elini ⊢ SetCat ⁡ 1 𝑜 ∈ C SetCat ⁡ 1 𝑜 ∩ Cat
12 oveq1 ⊢ d = SetCat ⁡ 1 𝑜 → d Func C = SetCat ⁡ 1 𝑜 Func C
13 12 eleq2d ⊢ d = SetCat ⁡ 1 𝑜 → f ∈ d Func C ↔ f ∈ SetCat ⁡ 1 𝑜 Func C
14 13 eubidv ⊢ d = SetCat ⁡ 1 𝑜 → ∃! f f ∈ d Func C ↔ ∃! f f ∈ SetCat ⁡ 1 𝑜 Func C
15 14 rspcv ⊢ SetCat ⁡ 1 𝑜 ∈ C SetCat ⁡ 1 𝑜 ∩ Cat → ∀ d ∈ C SetCat ⁡ 1 𝑜 ∩ Cat ∃! f f ∈ d Func C → ∃! f f ∈ SetCat ⁡ 1 𝑜 Func C
16 11 15 ax-mp ⊢ ∀ d ∈ C SetCat ⁡ 1 𝑜 ∩ Cat ∃! f f ∈ d Func C → ∃! f f ∈ SetCat ⁡ 1 𝑜 Func C
17 euen1b ⊢ SetCat ⁡ 1 𝑜 Func C ≈ 1 𝑜 ↔ ∃! f f ∈ SetCat ⁡ 1 𝑜 Func C
18 16 17 sylibr ⊢ ∀ d ∈ C SetCat ⁡ 1 𝑜 ∩ Cat ∃! f f ∈ d Func C → SetCat ⁡ 1 𝑜 Func C ≈ 1 𝑜
19 eqid ⊢ Base CatCat ⁡ C SetCat ⁡ 1 𝑜 = Base CatCat ⁡ C SetCat ⁡ 1 𝑜
20 prex ⊢ C SetCat ⁡ 1 𝑜 ∈ V
21 20 a1i ⊢ ⊤ → C SetCat ⁡ 1 𝑜 ∈ V
22 1 19 21 catcbas ⊢ ⊤ → Base CatCat ⁡ C SetCat ⁡ 1 𝑜 = C SetCat ⁡ 1 𝑜 ∩ Cat
23 22 mptru ⊢ Base CatCat ⁡ C SetCat ⁡ 1 𝑜 = C SetCat ⁡ 1 𝑜 ∩ Cat
24 23 eqcomi ⊢ C SetCat ⁡ 1 𝑜 ∩ Cat = Base CatCat ⁡ C SetCat ⁡ 1 𝑜
25 eqid ⊢ Hom ⁡ CatCat ⁡ C SetCat ⁡ 1 𝑜 = Hom ⁡ CatCat ⁡ C SetCat ⁡ 1 𝑜
26 1 catccat ⊢ C SetCat ⁡ 1 𝑜 ∈ V → CatCat ⁡ C SetCat ⁡ 1 𝑜 ∈ Cat
27 20 26 ax-mp ⊢ CatCat ⁡ C SetCat ⁡ 1 𝑜 ∈ Cat
28 27 a1i ⊢ SetCat ⁡ 1 𝑜 Func C ≈ 1 𝑜 → CatCat ⁡ C SetCat ⁡ 1 𝑜 ∈ Cat
29 euex ⊢ ∃! f f ∈ SetCat ⁡ 1 𝑜 Func C → ∃ f f ∈ SetCat ⁡ 1 𝑜 Func C
30 funcrcl ⊢ f ∈ SetCat ⁡ 1 𝑜 Func C → SetCat ⁡ 1 𝑜 ∈ Cat ∧ C ∈ Cat
31 30 simprd ⊢ f ∈ SetCat ⁡ 1 𝑜 Func C → C ∈ Cat
32 31 exlimiv ⊢ ∃ f f ∈ SetCat ⁡ 1 𝑜 Func C → C ∈ Cat
33 29 32 syl ⊢ ∃! f f ∈ SetCat ⁡ 1 𝑜 Func C → C ∈ Cat
34 17 33 sylbi ⊢ SetCat ⁡ 1 𝑜 Func C ≈ 1 𝑜 → C ∈ Cat
35 prid1g ⊢ C ∈ Cat → C ∈ C SetCat ⁡ 1 𝑜
36 34 35 syl ⊢ SetCat ⁡ 1 𝑜 Func C ≈ 1 𝑜 → C ∈ C SetCat ⁡ 1 𝑜
37 36 34 elind ⊢ SetCat ⁡ 1 𝑜 Func C ≈ 1 𝑜 → C ∈ C SetCat ⁡ 1 𝑜 ∩ Cat
38 24 25 28 37 istermo ⊢ SetCat ⁡ 1 𝑜 Func C ≈ 1 𝑜 → C ∈ TermO ⁡ CatCat ⁡ C SetCat ⁡ 1 𝑜 ↔ ∀ d ∈ C SetCat ⁡ 1 𝑜 ∩ Cat ∃! f f ∈ d Hom ⁡ CatCat ⁡ C SetCat ⁡ 1 𝑜 C
39 20 a1i ⊢ SetCat ⁡ 1 𝑜 Func C ≈ 1 𝑜 ∧ d ∈ C SetCat ⁡ 1 𝑜 ∩ Cat → C SetCat ⁡ 1 𝑜 ∈ V
40 simpr ⊢ SetCat ⁡ 1 𝑜 Func C ≈ 1 𝑜 ∧ d ∈ C SetCat ⁡ 1 𝑜 ∩ Cat → d ∈ C SetCat ⁡ 1 𝑜 ∩ Cat
41 37 adantr ⊢ SetCat ⁡ 1 𝑜 Func C ≈ 1 𝑜 ∧ d ∈ C SetCat ⁡ 1 𝑜 ∩ Cat → C ∈ C SetCat ⁡ 1 𝑜 ∩ Cat
42 1 24 39 25 40 41 catchom ⊢ SetCat ⁡ 1 𝑜 Func C ≈ 1 𝑜 ∧ d ∈ C SetCat ⁡ 1 𝑜 ∩ Cat → d Hom ⁡ CatCat ⁡ C SetCat ⁡ 1 𝑜 C = d Func C
43 42 eleq2d ⊢ SetCat ⁡ 1 𝑜 Func C ≈ 1 𝑜 ∧ d ∈ C SetCat ⁡ 1 𝑜 ∩ Cat → f ∈ d Hom ⁡ CatCat ⁡ C SetCat ⁡ 1 𝑜 C ↔ f ∈ d Func C
44 43 eubidv ⊢ SetCat ⁡ 1 𝑜 Func C ≈ 1 𝑜 ∧ d ∈ C SetCat ⁡ 1 𝑜 ∩ Cat → ∃! f f ∈ d Hom ⁡ CatCat ⁡ C SetCat ⁡ 1 𝑜 C ↔ ∃! f f ∈ d Func C
45 44 ralbidva ⊢ SetCat ⁡ 1 𝑜 Func C ≈ 1 𝑜 → ∀ d ∈ C SetCat ⁡ 1 𝑜 ∩ Cat ∃! f f ∈ d Hom ⁡ CatCat ⁡ C SetCat ⁡ 1 𝑜 C ↔ ∀ d ∈ C SetCat ⁡ 1 𝑜 ∩ Cat ∃! f f ∈ d Func C
46 38 45 bitrd ⊢ SetCat ⁡ 1 𝑜 Func C ≈ 1 𝑜 → C ∈ TermO ⁡ CatCat ⁡ C SetCat ⁡ 1 𝑜 ↔ ∀ d ∈ C SetCat ⁡ 1 𝑜 ∩ Cat ∃! f f ∈ d Func C
47 18 46 syl ⊢ ∀ d ∈ C SetCat ⁡ 1 𝑜 ∩ Cat ∃! f f ∈ d Func C → C ∈ TermO ⁡ CatCat ⁡ C SetCat ⁡ 1 𝑜 ↔ ∀ d ∈ C SetCat ⁡ 1 𝑜 ∩ Cat ∃! f f ∈ d Func C
48 47 ibir ⊢ ∀ d ∈ C SetCat ⁡ 1 𝑜 ∩ Cat ∃! f f ∈ d Func C → C ∈ TermO ⁡ CatCat ⁡ C SetCat ⁡ 1 𝑜
49 1 7 48 termcterm2 Could not format ( A. d e. ( { C , ( SetCat ` 1o ) } i^i Cat ) E! f f e. ( d Func C ) -> C e. TermCat ) : No typesetting found for |- ( A. d e. ( { C , ( SetCat ` 1o ) } i^i Cat ) E! f f e. ( d Func C ) -> C e. TermCat ) with typecode |-