Metamath Proof Explorer


Theorem termoeu1

Description: Terminal objects are essentially unique (strong form), i.e. there is a unique isomorphism between two terminal objects, see statement in Lang p. 58 ("... if P, P' are two universal objects [... then there exists a unique isomorphism between them.". (Proposed by BJ, 14-Apr-2020.) (Contributed by AV, 18-Apr-2020)

Ref Expression
Hypotheses termoeu1.c
|- ( ph -> C e. Cat )
termoeu1.a
|- ( ph -> A e. ( TermO ` C ) )
termoeu1.b
|- ( ph -> B e. ( TermO ` C ) )
Assertion termoeu1
|- ( ph -> E! f f e. ( A ( Iso ` C ) B ) )

Proof

Step Hyp Ref Expression
1 termoeu1.c
 |-  ( ph -> C e. Cat )
2 termoeu1.a
 |-  ( ph -> A e. ( TermO ` C ) )
3 termoeu1.b
 |-  ( ph -> B e. ( TermO ` C ) )
4 eqid
 |-  ( Base ` C ) = ( Base ` C )
5 eqid
 |-  ( Hom ` C ) = ( Hom ` C )
6 4 5 1 istermoi
 |-  ( ( ph /\ B e. ( TermO ` C ) ) -> ( B e. ( Base ` C ) /\ A. a e. ( Base ` C ) E! f f e. ( a ( Hom ` C ) B ) ) )
7 3 6 mpdan
 |-  ( ph -> ( B e. ( Base ` C ) /\ A. a e. ( Base ` C ) E! f f e. ( a ( Hom ` C ) B ) ) )
8 4 5 1 istermoi
 |-  ( ( ph /\ A e. ( TermO ` C ) ) -> ( A e. ( Base ` C ) /\ A. b e. ( Base ` C ) E! g g e. ( b ( Hom ` C ) A ) ) )
9 2 8 mpdan
 |-  ( ph -> ( A e. ( Base ` C ) /\ A. b e. ( Base ` C ) E! g g e. ( b ( Hom ` C ) A ) ) )
10 oveq1
 |-  ( a = A -> ( a ( Hom ` C ) B ) = ( A ( Hom ` C ) B ) )
11 10 eleq2d
 |-  ( a = A -> ( f e. ( a ( Hom ` C ) B ) <-> f e. ( A ( Hom ` C ) B ) ) )
12 11 eubidv
 |-  ( a = A -> ( E! f f e. ( a ( Hom ` C ) B ) <-> E! f f e. ( A ( Hom ` C ) B ) ) )
13 12 rspcv
 |-  ( A e. ( Base ` C ) -> ( A. a e. ( Base ` C ) E! f f e. ( a ( Hom ` C ) B ) -> E! f f e. ( A ( Hom ` C ) B ) ) )
14 eqid
 |-  ( Iso ` C ) = ( Iso ` C )
15 1 adantr
 |-  ( ( ph /\ ( A e. ( Base ` C ) /\ B e. ( Base ` C ) ) ) -> C e. Cat )
16 simprl
 |-  ( ( ph /\ ( A e. ( Base ` C ) /\ B e. ( Base ` C ) ) ) -> A e. ( Base ` C ) )
17 simprr
 |-  ( ( ph /\ ( A e. ( Base ` C ) /\ B e. ( Base ` C ) ) ) -> B e. ( Base ` C ) )
18 4 5 14 15 16 17 isohom
 |-  ( ( ph /\ ( A e. ( Base ` C ) /\ B e. ( Base ` C ) ) ) -> ( A ( Iso ` C ) B ) C_ ( A ( Hom ` C ) B ) )
19 18 adantr
 |-  ( ( ( ph /\ ( A e. ( Base ` C ) /\ B e. ( Base ` C ) ) ) /\ ( E! f f e. ( A ( Hom ` C ) B ) /\ A. b e. ( Base ` C ) E! g g e. ( b ( Hom ` C ) A ) ) ) -> ( A ( Iso ` C ) B ) C_ ( A ( Hom ` C ) B ) )
20 euex
 |-  ( E! f f e. ( A ( Hom ` C ) B ) -> E. f f e. ( A ( Hom ` C ) B ) )
21 20 a1i
 |-  ( ( ph /\ ( A e. ( Base ` C ) /\ B e. ( Base ` C ) ) ) -> ( E! f f e. ( A ( Hom ` C ) B ) -> E. f f e. ( A ( Hom ` C ) B ) ) )
22 oveq1
 |-  ( b = B -> ( b ( Hom ` C ) A ) = ( B ( Hom ` C ) A ) )
23 22 eleq2d
 |-  ( b = B -> ( g e. ( b ( Hom ` C ) A ) <-> g e. ( B ( Hom ` C ) A ) ) )
24 23 eubidv
 |-  ( b = B -> ( E! g g e. ( b ( Hom ` C ) A ) <-> E! g g e. ( B ( Hom ` C ) A ) ) )
25 24 rspcva
 |-  ( ( B e. ( Base ` C ) /\ A. b e. ( Base ` C ) E! g g e. ( b ( Hom ` C ) A ) ) -> E! g g e. ( B ( Hom ` C ) A ) )
26 euex
 |-  ( E! g g e. ( B ( Hom ` C ) A ) -> E. g g e. ( B ( Hom ` C ) A ) )
27 25 26 syl
 |-  ( ( B e. ( Base ` C ) /\ A. b e. ( Base ` C ) E! g g e. ( b ( Hom ` C ) A ) ) -> E. g g e. ( B ( Hom ` C ) A ) )
28 27 ex
 |-  ( B e. ( Base ` C ) -> ( A. b e. ( Base ` C ) E! g g e. ( b ( Hom ` C ) A ) -> E. g g e. ( B ( Hom ` C ) A ) ) )
29 28 ad2antll
 |-  ( ( ph /\ ( A e. ( Base ` C ) /\ B e. ( Base ` C ) ) ) -> ( A. b e. ( Base ` C ) E! g g e. ( b ( Hom ` C ) A ) -> E. g g e. ( B ( Hom ` C ) A ) ) )
30 eqid
 |-  ( Inv ` C ) = ( Inv ` C )
31 15 ad2antrr
 |-  ( ( ( ( ph /\ ( A e. ( Base ` C ) /\ B e. ( Base ` C ) ) ) /\ g e. ( B ( Hom ` C ) A ) ) /\ f e. ( A ( Hom ` C ) B ) ) -> C e. Cat )
32 16 ad2antrr
 |-  ( ( ( ( ph /\ ( A e. ( Base ` C ) /\ B e. ( Base ` C ) ) ) /\ g e. ( B ( Hom ` C ) A ) ) /\ f e. ( A ( Hom ` C ) B ) ) -> A e. ( Base ` C ) )
33 17 ad2antrr
 |-  ( ( ( ( ph /\ ( A e. ( Base ` C ) /\ B e. ( Base ` C ) ) ) /\ g e. ( B ( Hom ` C ) A ) ) /\ f e. ( A ( Hom ` C ) B ) ) -> B e. ( Base ` C ) )
34 1 2 3 2termoinv
 |-  ( ( ph /\ g e. ( B ( Hom ` C ) A ) /\ f e. ( A ( Hom ` C ) B ) ) -> f ( A ( Inv ` C ) B ) g )
35 34 ad4ant134
 |-  ( ( ( ( ph /\ ( A e. ( Base ` C ) /\ B e. ( Base ` C ) ) ) /\ g e. ( B ( Hom ` C ) A ) ) /\ f e. ( A ( Hom ` C ) B ) ) -> f ( A ( Inv ` C ) B ) g )
36 4 30 31 32 33 14 35 inviso1
 |-  ( ( ( ( ph /\ ( A e. ( Base ` C ) /\ B e. ( Base ` C ) ) ) /\ g e. ( B ( Hom ` C ) A ) ) /\ f e. ( A ( Hom ` C ) B ) ) -> f e. ( A ( Iso ` C ) B ) )
37 36 ex
 |-  ( ( ( ph /\ ( A e. ( Base ` C ) /\ B e. ( Base ` C ) ) ) /\ g e. ( B ( Hom ` C ) A ) ) -> ( f e. ( A ( Hom ` C ) B ) -> f e. ( A ( Iso ` C ) B ) ) )
38 37 eximdv
 |-  ( ( ( ph /\ ( A e. ( Base ` C ) /\ B e. ( Base ` C ) ) ) /\ g e. ( B ( Hom ` C ) A ) ) -> ( E. f f e. ( A ( Hom ` C ) B ) -> E. f f e. ( A ( Iso ` C ) B ) ) )
39 38 expcom
 |-  ( g e. ( B ( Hom ` C ) A ) -> ( ( ph /\ ( A e. ( Base ` C ) /\ B e. ( Base ` C ) ) ) -> ( E. f f e. ( A ( Hom ` C ) B ) -> E. f f e. ( A ( Iso ` C ) B ) ) ) )
40 39 exlimiv
 |-  ( E. g g e. ( B ( Hom ` C ) A ) -> ( ( ph /\ ( A e. ( Base ` C ) /\ B e. ( Base ` C ) ) ) -> ( E. f f e. ( A ( Hom ` C ) B ) -> E. f f e. ( A ( Iso ` C ) B ) ) ) )
41 40 com3l
 |-  ( ( ph /\ ( A e. ( Base ` C ) /\ B e. ( Base ` C ) ) ) -> ( E. f f e. ( A ( Hom ` C ) B ) -> ( E. g g e. ( B ( Hom ` C ) A ) -> E. f f e. ( A ( Iso ` C ) B ) ) ) )
42 41 impd
 |-  ( ( ph /\ ( A e. ( Base ` C ) /\ B e. ( Base ` C ) ) ) -> ( ( E. f f e. ( A ( Hom ` C ) B ) /\ E. g g e. ( B ( Hom ` C ) A ) ) -> E. f f e. ( A ( Iso ` C ) B ) ) )
43 21 29 42 syl2and
 |-  ( ( ph /\ ( A e. ( Base ` C ) /\ B e. ( Base ` C ) ) ) -> ( ( E! f f e. ( A ( Hom ` C ) B ) /\ A. b e. ( Base ` C ) E! g g e. ( b ( Hom ` C ) A ) ) -> E. f f e. ( A ( Iso ` C ) B ) ) )
44 43 imp
 |-  ( ( ( ph /\ ( A e. ( Base ` C ) /\ B e. ( Base ` C ) ) ) /\ ( E! f f e. ( A ( Hom ` C ) B ) /\ A. b e. ( Base ` C ) E! g g e. ( b ( Hom ` C ) A ) ) ) -> E. f f e. ( A ( Iso ` C ) B ) )
45 simprl
 |-  ( ( ( ph /\ ( A e. ( Base ` C ) /\ B e. ( Base ` C ) ) ) /\ ( E! f f e. ( A ( Hom ` C ) B ) /\ A. b e. ( Base ` C ) E! g g e. ( b ( Hom ` C ) A ) ) ) -> E! f f e. ( A ( Hom ` C ) B ) )
46 euelss
 |-  ( ( ( A ( Iso ` C ) B ) C_ ( A ( Hom ` C ) B ) /\ E. f f e. ( A ( Iso ` C ) B ) /\ E! f f e. ( A ( Hom ` C ) B ) ) -> E! f f e. ( A ( Iso ` C ) B ) )
47 19 44 45 46 syl3anc
 |-  ( ( ( ph /\ ( A e. ( Base ` C ) /\ B e. ( Base ` C ) ) ) /\ ( E! f f e. ( A ( Hom ` C ) B ) /\ A. b e. ( Base ` C ) E! g g e. ( b ( Hom ` C ) A ) ) ) -> E! f f e. ( A ( Iso ` C ) B ) )
48 47 exp42
 |-  ( ph -> ( A e. ( Base ` C ) -> ( B e. ( Base ` C ) -> ( ( E! f f e. ( A ( Hom ` C ) B ) /\ A. b e. ( Base ` C ) E! g g e. ( b ( Hom ` C ) A ) ) -> E! f f e. ( A ( Iso ` C ) B ) ) ) ) )
49 48 com24
 |-  ( ph -> ( ( E! f f e. ( A ( Hom ` C ) B ) /\ A. b e. ( Base ` C ) E! g g e. ( b ( Hom ` C ) A ) ) -> ( B e. ( Base ` C ) -> ( A e. ( Base ` C ) -> E! f f e. ( A ( Iso ` C ) B ) ) ) ) )
50 49 com14
 |-  ( A e. ( Base ` C ) -> ( ( E! f f e. ( A ( Hom ` C ) B ) /\ A. b e. ( Base ` C ) E! g g e. ( b ( Hom ` C ) A ) ) -> ( B e. ( Base ` C ) -> ( ph -> E! f f e. ( A ( Iso ` C ) B ) ) ) ) )
51 50 expd
 |-  ( A e. ( Base ` C ) -> ( E! f f e. ( A ( Hom ` C ) B ) -> ( A. b e. ( Base ` C ) E! g g e. ( b ( Hom ` C ) A ) -> ( B e. ( Base ` C ) -> ( ph -> E! f f e. ( A ( Iso ` C ) B ) ) ) ) ) )
52 13 51 syldc
 |-  ( A. a e. ( Base ` C ) E! f f e. ( a ( Hom ` C ) B ) -> ( A e. ( Base ` C ) -> ( A. b e. ( Base ` C ) E! g g e. ( b ( Hom ` C ) A ) -> ( B e. ( Base ` C ) -> ( ph -> E! f f e. ( A ( Iso ` C ) B ) ) ) ) ) )
53 52 com15
 |-  ( ph -> ( A e. ( Base ` C ) -> ( A. b e. ( Base ` C ) E! g g e. ( b ( Hom ` C ) A ) -> ( B e. ( Base ` C ) -> ( A. a e. ( Base ` C ) E! f f e. ( a ( Hom ` C ) B ) -> E! f f e. ( A ( Iso ` C ) B ) ) ) ) ) )
54 53 impd
 |-  ( ph -> ( ( A e. ( Base ` C ) /\ A. b e. ( Base ` C ) E! g g e. ( b ( Hom ` C ) A ) ) -> ( B e. ( Base ` C ) -> ( A. a e. ( Base ` C ) E! f f e. ( a ( Hom ` C ) B ) -> E! f f e. ( A ( Iso ` C ) B ) ) ) ) )
55 9 54 mpd
 |-  ( ph -> ( B e. ( Base ` C ) -> ( A. a e. ( Base ` C ) E! f f e. ( a ( Hom ` C ) B ) -> E! f f e. ( A ( Iso ` C ) B ) ) ) )
56 55 impd
 |-  ( ph -> ( ( B e. ( Base ` C ) /\ A. a e. ( Base ` C ) E! f f e. ( a ( Hom ` C ) B ) ) -> E! f f e. ( A ( Iso ` C ) B ) ) )
57 7 56 mpd
 |-  ( ph -> E! f f e. ( A ( Iso ` C ) B ) )