Metamath Proof Explorer


Theorem arweutermc

Description: If a structure has a unique disjointified arrow, then the structure is a terminal category. (Contributed by Zhi Wang, 20-Oct-2025)

Ref Expression
Assertion arweutermc Could not format assertion : No typesetting found for |- ( E! a a e. ( Arrow ` C ) -> C e. TermCat ) with typecode |-

Proof

Step Hyp Ref Expression
1 arweuthinc ⊢ ∃! a a ∈ Arrow ⁡ C → C ∈ ThinCat
2 euex ⊢ ∃! a a ∈ Arrow ⁡ C → ∃ a a ∈ Arrow ⁡ C
3 eqid ⊢ Arrow ⁡ C = Arrow ⁡ C
4 eqid ⊢ Base C = Base C
5 3 4 arwdm ⊢ a ∈ Arrow ⁡ C → dom a ⁡ a ∈ Base C
6 eleq1 ⊢ x = dom a ⁡ a → x ∈ Base C ↔ dom a ⁡ a ∈ Base C
7 5 5 6 spcedv ⊢ a ∈ Arrow ⁡ C → ∃ x x ∈ Base C
8 7 exlimiv ⊢ ∃ a a ∈ Arrow ⁡ C → ∃ x x ∈ Base C
9 2 8 syl ⊢ ∃! a a ∈ Arrow ⁡ C → ∃ x x ∈ Base C
10 eqeq1 ⊢ a = x x Id ⁡ C ⁡ x → a = b ↔ x x Id ⁡ C ⁡ x = b
11 eqeq2 ⊢ b = y y Id ⁡ C ⁡ y → x x Id ⁡ C ⁡ x = b ↔ x x Id ⁡ C ⁡ x = y y Id ⁡ C ⁡ y
12 eumo ⊢ ∃! a a ∈ Arrow ⁡ C → ∃* a a ∈ Arrow ⁡ C
13 12 adantr ⊢ ∃! a a ∈ Arrow ⁡ C ∧ x ∈ Base C ∧ y ∈ Base C → ∃* a a ∈ Arrow ⁡ C
14 moel ⊢ ∃* a a ∈ Arrow ⁡ C ↔ ∀ a ∈ Arrow ⁡ C ∀ b ∈ Arrow ⁡ C a = b
15 13 14 sylib ⊢ ∃! a a ∈ Arrow ⁡ C ∧ x ∈ Base C ∧ y ∈ Base C → ∀ a ∈ Arrow ⁡ C ∀ b ∈ Arrow ⁡ C a = b
16 eqid ⊢ Hom a ⁡ C = Hom a ⁡ C
17 3 16 homarw ⊢ x Hom a ⁡ C x ⊆ Arrow ⁡ C
18 1 adantr ⊢ ∃! a a ∈ Arrow ⁡ C ∧ x ∈ Base C ∧ y ∈ Base C → C ∈ ThinCat
19 18 thinccatd ⊢ ∃! a a ∈ Arrow ⁡ C ∧ x ∈ Base C ∧ y ∈ Base C → C ∈ Cat
20 eqid ⊢ Hom ⁡ C = Hom ⁡ C
21 simprl ⊢ ∃! a a ∈ Arrow ⁡ C ∧ x ∈ Base C ∧ y ∈ Base C → x ∈ Base C
22 eqid ⊢ Id ⁡ C = Id ⁡ C
23 4 20 22 19 21 catidcl ⊢ ∃! a a ∈ Arrow ⁡ C ∧ x ∈ Base C ∧ y ∈ Base C → Id ⁡ C ⁡ x ∈ x Hom ⁡ C x
24 16 4 19 20 21 21 23 elhomai2 ⊢ ∃! a a ∈ Arrow ⁡ C ∧ x ∈ Base C ∧ y ∈ Base C → x x Id ⁡ C ⁡ x ∈ x Hom a ⁡ C x
25 17 24 sselid ⊢ ∃! a a ∈ Arrow ⁡ C ∧ x ∈ Base C ∧ y ∈ Base C → x x Id ⁡ C ⁡ x ∈ Arrow ⁡ C
26 3 16 homarw ⊢ y Hom a ⁡ C y ⊆ Arrow ⁡ C
27 simprr ⊢ ∃! a a ∈ Arrow ⁡ C ∧ x ∈ Base C ∧ y ∈ Base C → y ∈ Base C
28 4 20 22 19 27 catidcl ⊢ ∃! a a ∈ Arrow ⁡ C ∧ x ∈ Base C ∧ y ∈ Base C → Id ⁡ C ⁡ y ∈ y Hom ⁡ C y
29 16 4 19 20 27 27 28 elhomai2 ⊢ ∃! a a ∈ Arrow ⁡ C ∧ x ∈ Base C ∧ y ∈ Base C → y y Id ⁡ C ⁡ y ∈ y Hom a ⁡ C y
30 26 29 sselid ⊢ ∃! a a ∈ Arrow ⁡ C ∧ x ∈ Base C ∧ y ∈ Base C → y y Id ⁡ C ⁡ y ∈ Arrow ⁡ C
31 10 11 15 25 30 rspc2dv ⊢ ∃! a a ∈ Arrow ⁡ C ∧ x ∈ Base C ∧ y ∈ Base C → x x Id ⁡ C ⁡ x = y y Id ⁡ C ⁡ y
32 vex ⊢ x ∈ V
33 fvex ⊢ Id ⁡ C ⁡ x ∈ V
34 32 32 33 otth ⊢ x x Id ⁡ C ⁡ x = y y Id ⁡ C ⁡ y ↔ x = y ∧ x = y ∧ Id ⁡ C ⁡ x = Id ⁡ C ⁡ y
35 34 simp1bi ⊢ x x Id ⁡ C ⁡ x = y y Id ⁡ C ⁡ y → x = y
36 31 35 syl ⊢ ∃! a a ∈ Arrow ⁡ C ∧ x ∈ Base C ∧ y ∈ Base C → x = y
37 36 ralrimivva ⊢ ∃! a a ∈ Arrow ⁡ C → ∀ x ∈ Base C ∀ y ∈ Base C x = y
38 moel ⊢ ∃* x x ∈ Base C ↔ ∀ x ∈ Base C ∀ y ∈ Base C x = y
39 37 38 sylibr ⊢ ∃! a a ∈ Arrow ⁡ C → ∃* x x ∈ Base C
40 df-eu ⊢ ∃! x x ∈ Base C ↔ ∃ x x ∈ Base C ∧ ∃* x x ∈ Base C
41 9 39 40 sylanbrc ⊢ ∃! a a ∈ Arrow ⁡ C → ∃! x x ∈ Base C
42 4 istermc2 Could not format ( C e. TermCat <-> ( C e. ThinCat /\ E! x x e. ( Base ` C ) ) ) : No typesetting found for |- ( C e. TermCat <-> ( C e. ThinCat /\ E! x x e. ( Base ` C ) ) ) with typecode |-
43 1 41 42 sylanbrc Could not format ( E! a a e. ( Arrow ` C ) -> C e. TermCat ) : No typesetting found for |- ( E! a a e. ( Arrow ` C ) -> C e. TermCat ) with typecode |-