Metamath Proof Explorer


Theorem isinito2lem

Description: The predicate "is an initial object" of a category, using universal property. (Contributed by Zhi Wang, 23-Oct-2025)

Ref Expression
Hypotheses isinito2.1 ⊢ 1 ˙ = SetCat ⁡ 1 𝑜
isinito2.f ⊢ F = 1 st ⁡ 1 ˙ Δ func C ⁡ ∅
isinito2lem.c ⊢ φ → C ∈ Cat
isinito2lem.i ⊢ φ → I ∈ Base C
Assertion isinito2lem Could not format assertion : No typesetting found for |- ( ph -> ( I e. ( InitO ` C ) <-> I ( F ( C UP .1. ) (/) ) (/) ) ) with typecode |-

Proof

Step Hyp Ref Expression
1 isinito2.1 ⊢ 1 ˙ = SetCat ⁡ 1 𝑜
2 isinito2.f ⊢ F = 1 st ⁡ 1 ˙ Δ func C ⁡ ∅
3 isinito2lem.c ⊢ φ → C ∈ Cat
4 isinito2lem.i ⊢ φ → I ∈ Base C
5 reutru ⊢ ∃! f f ∈ I Hom ⁡ C x ↔ ∃! f ∈ I Hom ⁡ C x ⊤
6 0ex ⊢ ∅ ∈ V
7 eqeq1 ⊢ y = ∅ → y = I 2 nd ⁡ F x ⁡ f ∅ 1 st ⁡ F ⁡ I ∅ ∅ ∅ ∅ ∅ ∅ 1 st ⁡ F ⁡ x ∅ ↔ ∅ = I 2 nd ⁡ F x ⁡ f ∅ 1 st ⁡ F ⁡ I ∅ ∅ ∅ ∅ ∅ ∅ 1 st ⁡ F ⁡ x ∅
8 7 reubidv ⊢ y = ∅ → ∃! f ∈ I Hom ⁡ C x y = I 2 nd ⁡ F x ⁡ f ∅ 1 st ⁡ F ⁡ I ∅ ∅ ∅ ∅ ∅ ∅ 1 st ⁡ F ⁡ x ∅ ↔ ∃! f ∈ I Hom ⁡ C x ∅ = I 2 nd ⁡ F x ⁡ f ∅ 1 st ⁡ F ⁡ I ∅ ∅ ∅ ∅ ∅ ∅ 1 st ⁡ F ⁡ x ∅
9 6 8 ralsn ⊢ ∀ y ∈ ∅ ∃! f ∈ I Hom ⁡ C x y = I 2 nd ⁡ F x ⁡ f ∅ 1 st ⁡ F ⁡ I ∅ ∅ ∅ ∅ ∅ ∅ 1 st ⁡ F ⁡ x ∅ ↔ ∃! f ∈ I Hom ⁡ C x ∅ = I 2 nd ⁡ F x ⁡ f ∅ 1 st ⁡ F ⁡ I ∅ ∅ ∅ ∅ ∅ ∅ 1 st ⁡ F ⁡ x ∅
10 eqid ⊢ 1 ˙ Δ func C = 1 ˙ Δ func C
11 setc1oterm Could not format ( SetCat ` 1o ) e. TermCat : No typesetting found for |- ( SetCat ` 1o ) e. TermCat with typecode |-
12 1 11 eqeltri Could not format .1. e. TermCat : No typesetting found for |- .1. e. TermCat with typecode |-
13 12 a1i Could not format ( ph -> .1. e. TermCat ) : No typesetting found for |- ( ph -> .1. e. TermCat ) with typecode |-
14 13 termccatd ⊢ φ → 1 ˙ ∈ Cat
15 1 setc1obas ⊢ 1 𝑜 = Base 1 ˙
16 0lt1o ⊢ ∅ ∈ 1 𝑜
17 16 a1i ⊢ φ → ∅ ∈ 1 𝑜
18 eqid ⊢ Base C = Base C
19 10 14 3 15 17 2 18 4 diag11 ⊢ φ → 1 st ⁡ F ⁡ I = ∅
20 19 adantr ⊢ φ ∧ x ∈ Base C → 1 st ⁡ F ⁡ I = ∅
21 20 opeq2d ⊢ φ ∧ x ∈ Base C → ∅ 1 st ⁡ F ⁡ I = ∅ ∅
22 14 adantr ⊢ φ ∧ x ∈ Base C → 1 ˙ ∈ Cat
23 3 adantr ⊢ φ ∧ x ∈ Base C → C ∈ Cat
24 16 a1i ⊢ φ ∧ x ∈ Base C → ∅ ∈ 1 𝑜
25 simpr ⊢ φ ∧ x ∈ Base C → x ∈ Base C
26 10 22 23 15 24 2 18 25 diag11 ⊢ φ ∧ x ∈ Base C → 1 st ⁡ F ⁡ x = ∅
27 21 26 oveq12d ⊢ φ ∧ x ∈ Base C → ∅ 1 st ⁡ F ⁡ I ∅ ∅ ∅ ∅ ∅ ∅ 1 st ⁡ F ⁡ x = ∅ ∅ ∅ ∅ ∅ ∅ ∅ ∅ ∅
28 snex ⊢ ∅ ∅ ∅ ∈ V
29 28 ovsn2 ⊢ ∅ ∅ ∅ ∅ ∅ ∅ ∅ ∅ ∅ = ∅ ∅ ∅
30 27 29 eqtrdi ⊢ φ ∧ x ∈ Base C → ∅ 1 st ⁡ F ⁡ I ∅ ∅ ∅ ∅ ∅ ∅ 1 st ⁡ F ⁡ x = ∅ ∅ ∅
31 30 adantr ⊢ φ ∧ x ∈ Base C ∧ f ∈ I Hom ⁡ C x → ∅ 1 st ⁡ F ⁡ I ∅ ∅ ∅ ∅ ∅ ∅ 1 st ⁡ F ⁡ x = ∅ ∅ ∅
32 12 a1i Could not format ( ( ( ph /\ x e. ( Base ` C ) ) /\ f e. ( I ( Hom ` C ) x ) ) -> .1. e. TermCat ) : No typesetting found for |- ( ( ( ph /\ x e. ( Base ` C ) ) /\ f e. ( I ( Hom ` C ) x ) ) -> .1. e. TermCat ) with typecode |-
33 32 termccatd ⊢ φ ∧ x ∈ Base C ∧ f ∈ I Hom ⁡ C x → 1 ˙ ∈ Cat
34 3 ad2antrr ⊢ φ ∧ x ∈ Base C ∧ f ∈ I Hom ⁡ C x → C ∈ Cat
35 16 a1i ⊢ φ ∧ x ∈ Base C ∧ f ∈ I Hom ⁡ C x → ∅ ∈ 1 𝑜
36 4 ad2antrr ⊢ φ ∧ x ∈ Base C ∧ f ∈ I Hom ⁡ C x → I ∈ Base C
37 eqid ⊢ Hom ⁡ C = Hom ⁡ C
38 eqid ⊢ Id ⁡ 1 ˙ = Id ⁡ 1 ˙
39 simplr ⊢ φ ∧ x ∈ Base C ∧ f ∈ I Hom ⁡ C x → x ∈ Base C
40 simpr ⊢ φ ∧ x ∈ Base C ∧ f ∈ I Hom ⁡ C x → f ∈ I Hom ⁡ C x
41 10 33 34 15 35 2 18 36 37 38 39 40 diag12 ⊢ φ ∧ x ∈ Base C ∧ f ∈ I Hom ⁡ C x → I 2 nd ⁡ F x ⁡ f = Id ⁡ 1 ˙ ⁡ ∅
42 1 38 setc1oid ⊢ Id ⁡ 1 ˙ ⁡ ∅ = ∅
43 41 42 eqtrdi ⊢ φ ∧ x ∈ Base C ∧ f ∈ I Hom ⁡ C x → I 2 nd ⁡ F x ⁡ f = ∅
44 eqidd ⊢ φ ∧ x ∈ Base C ∧ f ∈ I Hom ⁡ C x → ∅ = ∅
45 31 43 44 oveq123d ⊢ φ ∧ x ∈ Base C ∧ f ∈ I Hom ⁡ C x → I 2 nd ⁡ F x ⁡ f ∅ 1 st ⁡ F ⁡ I ∅ ∅ ∅ ∅ ∅ ∅ 1 st ⁡ F ⁡ x ∅ = ∅ ∅ ∅ ∅ ∅
46 6 ovsn2 ⊢ ∅ ∅ ∅ ∅ ∅ = ∅
47 45 46 eqtr2di ⊢ φ ∧ x ∈ Base C ∧ f ∈ I Hom ⁡ C x → ∅ = I 2 nd ⁡ F x ⁡ f ∅ 1 st ⁡ F ⁡ I ∅ ∅ ∅ ∅ ∅ ∅ 1 st ⁡ F ⁡ x ∅
48 tbtru ⊢ ∅ = I 2 nd ⁡ F x ⁡ f ∅ 1 st ⁡ F ⁡ I ∅ ∅ ∅ ∅ ∅ ∅ 1 st ⁡ F ⁡ x ∅ ↔ ∅ = I 2 nd ⁡ F x ⁡ f ∅ 1 st ⁡ F ⁡ I ∅ ∅ ∅ ∅ ∅ ∅ 1 st ⁡ F ⁡ x ∅ ↔ ⊤
49 47 48 sylib ⊢ φ ∧ x ∈ Base C ∧ f ∈ I Hom ⁡ C x → ∅ = I 2 nd ⁡ F x ⁡ f ∅ 1 st ⁡ F ⁡ I ∅ ∅ ∅ ∅ ∅ ∅ 1 st ⁡ F ⁡ x ∅ ↔ ⊤
50 49 reubidva ⊢ φ ∧ x ∈ Base C → ∃! f ∈ I Hom ⁡ C x ∅ = I 2 nd ⁡ F x ⁡ f ∅ 1 st ⁡ F ⁡ I ∅ ∅ ∅ ∅ ∅ ∅ 1 st ⁡ F ⁡ x ∅ ↔ ∃! f ∈ I Hom ⁡ C x ⊤
51 9 50 bitr2id ⊢ φ ∧ x ∈ Base C → ∃! f ∈ I Hom ⁡ C x ⊤ ↔ ∀ y ∈ ∅ ∃! f ∈ I Hom ⁡ C x y = I 2 nd ⁡ F x ⁡ f ∅ 1 st ⁡ F ⁡ I ∅ ∅ ∅ ∅ ∅ ∅ 1 st ⁡ F ⁡ x ∅
52 26 oveq2d ⊢ φ ∧ x ∈ Base C → ∅ ∅ ∅ 1 𝑜 1 st ⁡ F ⁡ x = ∅ ∅ ∅ 1 𝑜 ∅
53 1oex ⊢ 1 𝑜 ∈ V
54 53 ovsn2 ⊢ ∅ ∅ ∅ 1 𝑜 ∅ = 1 𝑜
55 df1o2 ⊢ 1 𝑜 = ∅
56 54 55 eqtri ⊢ ∅ ∅ ∅ 1 𝑜 ∅ = ∅
57 52 56 eqtrdi ⊢ φ ∧ x ∈ Base C → ∅ ∅ ∅ 1 𝑜 1 st ⁡ F ⁡ x = ∅
58 57 raleqdv ⊢ φ ∧ x ∈ Base C → ∀ y ∈ ∅ ∅ ∅ 1 𝑜 1 st ⁡ F ⁡ x ∃! f ∈ I Hom ⁡ C x y = I 2 nd ⁡ F x ⁡ f ∅ 1 st ⁡ F ⁡ I ∅ ∅ ∅ ∅ ∅ ∅ 1 st ⁡ F ⁡ x ∅ ↔ ∀ y ∈ ∅ ∃! f ∈ I Hom ⁡ C x y = I 2 nd ⁡ F x ⁡ f ∅ 1 st ⁡ F ⁡ I ∅ ∅ ∅ ∅ ∅ ∅ 1 st ⁡ F ⁡ x ∅
59 51 58 bitr4d ⊢ φ ∧ x ∈ Base C → ∃! f ∈ I Hom ⁡ C x ⊤ ↔ ∀ y ∈ ∅ ∅ ∅ 1 𝑜 1 st ⁡ F ⁡ x ∃! f ∈ I Hom ⁡ C x y = I 2 nd ⁡ F x ⁡ f ∅ 1 st ⁡ F ⁡ I ∅ ∅ ∅ ∅ ∅ ∅ 1 st ⁡ F ⁡ x ∅
60 5 59 bitrid ⊢ φ ∧ x ∈ Base C → ∃! f f ∈ I Hom ⁡ C x ↔ ∀ y ∈ ∅ ∅ ∅ 1 𝑜 1 st ⁡ F ⁡ x ∃! f ∈ I Hom ⁡ C x y = I 2 nd ⁡ F x ⁡ f ∅ 1 st ⁡ F ⁡ I ∅ ∅ ∅ ∅ ∅ ∅ 1 st ⁡ F ⁡ x ∅
61 60 ralbidva ⊢ φ → ∀ x ∈ Base C ∃! f f ∈ I Hom ⁡ C x ↔ ∀ x ∈ Base C ∀ y ∈ ∅ ∅ ∅ 1 𝑜 1 st ⁡ F ⁡ x ∃! f ∈ I Hom ⁡ C x y = I 2 nd ⁡ F x ⁡ f ∅ 1 st ⁡ F ⁡ I ∅ ∅ ∅ ∅ ∅ ∅ 1 st ⁡ F ⁡ x ∅
62 18 37 3 4 isinito ⊢ φ → I ∈ InitO ⁡ C ↔ ∀ x ∈ Base C ∃! f f ∈ I Hom ⁡ C x
63 1 setc1ohomfval ⊢ ∅ ∅ 1 𝑜 = Hom ⁡ 1 ˙
64 1 setc1ocofval ⊢ ∅ ∅ ∅ ∅ ∅ ∅ = comp ⁡ 1 ˙
65 1 2 3 funcsetc1ocl ⊢ φ → F ∈ C Func 1 ˙
66 65 func1st2nd ⊢ φ → 1 st ⁡ F C Func 1 ˙ 2 nd ⁡ F
67 19 oveq2d ⊢ φ → ∅ ∅ ∅ 1 𝑜 1 st ⁡ F ⁡ I = ∅ ∅ ∅ 1 𝑜 ∅
68 67 54 eqtrdi ⊢ φ → ∅ ∅ ∅ 1 𝑜 1 st ⁡ F ⁡ I = 1 𝑜
69 16 68 eleqtrrid ⊢ φ → ∅ ∈ ∅ ∅ ∅ 1 𝑜 1 st ⁡ F ⁡ I
70 18 15 37 63 64 17 66 4 69 isup Could not format ( ph -> ( I ( <. ( 1st ` F ) , ( 2nd ` F ) >. ( C UP .1. ) (/) ) (/) <-> A. x e. ( Base ` C ) A. y e. ( (/) { <. (/) , (/) , 1o >. } ( ( 1st ` F ) ` x ) ) E! f e. ( I ( Hom ` C ) x ) y = ( ( ( I ( 2nd ` F ) x ) ` f ) ( <. (/) , ( ( 1st ` F ) ` I ) >. { <. <. (/) , (/) >. , (/) , { <. (/) , (/) , (/) >. } >. } ( ( 1st ` F ) ` x ) ) (/) ) ) ) : No typesetting found for |- ( ph -> ( I ( <. ( 1st ` F ) , ( 2nd ` F ) >. ( C UP .1. ) (/) ) (/) <-> A. x e. ( Base ` C ) A. y e. ( (/) { <. (/) , (/) , 1o >. } ( ( 1st ` F ) ` x ) ) E! f e. ( I ( Hom ` C ) x ) y = ( ( ( I ( 2nd ` F ) x ) ` f ) ( <. (/) , ( ( 1st ` F ) ` I ) >. { <. <. (/) , (/) >. , (/) , { <. (/) , (/) , (/) >. } >. } ( ( 1st ` F ) ` x ) ) (/) ) ) ) with typecode |-
71 61 62 70 3bitr4d Could not format ( ph -> ( I e. ( InitO ` C ) <-> I ( <. ( 1st ` F ) , ( 2nd ` F ) >. ( C UP .1. ) (/) ) (/) ) ) : No typesetting found for |- ( ph -> ( I e. ( InitO ` C ) <-> I ( <. ( 1st ` F ) , ( 2nd ` F ) >. ( C UP .1. ) (/) ) (/) ) ) with typecode |-
72 65 up1st2ndb Could not format ( ph -> ( I ( F ( C UP .1. ) (/) ) (/) <-> I ( <. ( 1st ` F ) , ( 2nd ` F ) >. ( C UP .1. ) (/) ) (/) ) ) : No typesetting found for |- ( ph -> ( I ( F ( C UP .1. ) (/) ) (/) <-> I ( <. ( 1st ` F ) , ( 2nd ` F ) >. ( C UP .1. ) (/) ) (/) ) ) with typecode |-
73 71 72 bitr4d Could not format ( ph -> ( I e. ( InitO ` C ) <-> I ( F ( C UP .1. ) (/) ) (/) ) ) : No typesetting found for |- ( ph -> ( I e. ( InitO ` C ) <-> I ( F ( C UP .1. ) (/) ) (/) ) ) with typecode |-