Metamath Proof Explorer


Theorem setcepi

Description: An epimorphism of sets is a surjection. (Contributed by Mario Carneiro, 3-Jan-2017)

Ref Expression
Hypotheses setcmon.c
|- C = ( SetCat ` U )
setcmon.u
|- ( ph -> U e. V )
setcmon.x
|- ( ph -> X e. U )
setcmon.y
|- ( ph -> Y e. U )
setcepi.h
|- E = ( Epi ` C )
setcepi.2
|- ( ph -> 2o e. U )
Assertion setcepi
|- ( ph -> ( F e. ( X E Y ) <-> F : X -onto-> Y ) )

Proof

Step Hyp Ref Expression
1 setcmon.c
 |-  C = ( SetCat ` U )
2 setcmon.u
 |-  ( ph -> U e. V )
3 setcmon.x
 |-  ( ph -> X e. U )
4 setcmon.y
 |-  ( ph -> Y e. U )
5 setcepi.h
 |-  E = ( Epi ` C )
6 setcepi.2
 |-  ( ph -> 2o e. U )
7 eqid
 |-  ( Base ` C ) = ( Base ` C )
8 eqid
 |-  ( Hom ` C ) = ( Hom ` C )
9 eqid
 |-  ( comp ` C ) = ( comp ` C )
10 1 setccat
 |-  ( U e. V -> C e. Cat )
11 2 10 syl
 |-  ( ph -> C e. Cat )
12 1 2 setcbas
 |-  ( ph -> U = ( Base ` C ) )
13 3 12 eleqtrd
 |-  ( ph -> X e. ( Base ` C ) )
14 4 12 eleqtrd
 |-  ( ph -> Y e. ( Base ` C ) )
15 7 8 9 5 11 13 14 epihom
 |-  ( ph -> ( X E Y ) C_ ( X ( Hom ` C ) Y ) )
16 15 sselda
 |-  ( ( ph /\ F e. ( X E Y ) ) -> F e. ( X ( Hom ` C ) Y ) )
17 1 2 8 3 4 elsetchom
 |-  ( ph -> ( F e. ( X ( Hom ` C ) Y ) <-> F : X --> Y ) )
18 17 biimpa
 |-  ( ( ph /\ F e. ( X ( Hom ` C ) Y ) ) -> F : X --> Y )
19 16 18 syldan
 |-  ( ( ph /\ F e. ( X E Y ) ) -> F : X --> Y )
20 19 frnd
 |-  ( ( ph /\ F e. ( X E Y ) ) -> ran F C_ Y )
21 19 ffnd
 |-  ( ( ph /\ F e. ( X E Y ) ) -> F Fn X )
22 fnfvelrn
 |-  ( ( F Fn X /\ x e. X ) -> ( F ` x ) e. ran F )
23 21 22 sylan
 |-  ( ( ( ph /\ F e. ( X E Y ) ) /\ x e. X ) -> ( F ` x ) e. ran F )
24 23 iftrued
 |-  ( ( ( ph /\ F e. ( X E Y ) ) /\ x e. X ) -> if ( ( F ` x ) e. ran F , 1o , (/) ) = 1o )
25 24 mpteq2dva
 |-  ( ( ph /\ F e. ( X E Y ) ) -> ( x e. X |-> if ( ( F ` x ) e. ran F , 1o , (/) ) ) = ( x e. X |-> 1o ) )
26 19 ffvelcdmda
 |-  ( ( ( ph /\ F e. ( X E Y ) ) /\ x e. X ) -> ( F ` x ) e. Y )
27 19 feqmptd
 |-  ( ( ph /\ F e. ( X E Y ) ) -> F = ( x e. X |-> ( F ` x ) ) )
28 eqidd
 |-  ( ( ph /\ F e. ( X E Y ) ) -> ( a e. Y |-> if ( a e. ran F , 1o , (/) ) ) = ( a e. Y |-> if ( a e. ran F , 1o , (/) ) ) )
29 eleq1
 |-  ( a = ( F ` x ) -> ( a e. ran F <-> ( F ` x ) e. ran F ) )
30 29 ifbid
 |-  ( a = ( F ` x ) -> if ( a e. ran F , 1o , (/) ) = if ( ( F ` x ) e. ran F , 1o , (/) ) )
31 26 27 28 30 fmptco
 |-  ( ( ph /\ F e. ( X E Y ) ) -> ( ( a e. Y |-> if ( a e. ran F , 1o , (/) ) ) o. F ) = ( x e. X |-> if ( ( F ` x ) e. ran F , 1o , (/) ) ) )
32 fconstmpt
 |-  ( Y X. { 1o } ) = ( a e. Y |-> 1o )
33 32 a1i
 |-  ( ( ph /\ F e. ( X E Y ) ) -> ( Y X. { 1o } ) = ( a e. Y |-> 1o ) )
34 eqidd
 |-  ( a = ( F ` x ) -> 1o = 1o )
35 26 27 33 34 fmptco
 |-  ( ( ph /\ F e. ( X E Y ) ) -> ( ( Y X. { 1o } ) o. F ) = ( x e. X |-> 1o ) )
36 25 31 35 3eqtr4d
 |-  ( ( ph /\ F e. ( X E Y ) ) -> ( ( a e. Y |-> if ( a e. ran F , 1o , (/) ) ) o. F ) = ( ( Y X. { 1o } ) o. F ) )
37 2 adantr
 |-  ( ( ph /\ F e. ( X E Y ) ) -> U e. V )
38 3 adantr
 |-  ( ( ph /\ F e. ( X E Y ) ) -> X e. U )
39 4 adantr
 |-  ( ( ph /\ F e. ( X E Y ) ) -> Y e. U )
40 6 adantr
 |-  ( ( ph /\ F e. ( X E Y ) ) -> 2o e. U )
41 eqid
 |-  ( a e. Y |-> if ( a e. ran F , 1o , (/) ) ) = ( a e. Y |-> if ( a e. ran F , 1o , (/) ) )
42 1oelpr
 |-  1o e. { (/) , 1o }
43 df2o3
 |-  2o = { (/) , 1o }
44 42 43 eleqtrri
 |-  1o e. 2o
45 0ex
 |-  (/) e. _V
46 45 prid1
 |-  (/) e. { (/) , 1o }
47 46 43 eleqtrri
 |-  (/) e. 2o
48 44 47 ifcli
 |-  if ( a e. ran F , 1o , (/) ) e. 2o
49 48 a1i
 |-  ( a e. Y -> if ( a e. ran F , 1o , (/) ) e. 2o )
50 41 49 fmpti
 |-  ( a e. Y |-> if ( a e. ran F , 1o , (/) ) ) : Y --> 2o
51 50 a1i
 |-  ( ( ph /\ F e. ( X E Y ) ) -> ( a e. Y |-> if ( a e. ran F , 1o , (/) ) ) : Y --> 2o )
52 1 37 9 38 39 40 19 51 setcco
 |-  ( ( ph /\ F e. ( X E Y ) ) -> ( ( a e. Y |-> if ( a e. ran F , 1o , (/) ) ) ( <. X , Y >. ( comp ` C ) 2o ) F ) = ( ( a e. Y |-> if ( a e. ran F , 1o , (/) ) ) o. F ) )
53 fconst6g
 |-  ( 1o e. 2o -> ( Y X. { 1o } ) : Y --> 2o )
54 44 53 mp1i
 |-  ( ( ph /\ F e. ( X E Y ) ) -> ( Y X. { 1o } ) : Y --> 2o )
55 1 37 9 38 39 40 19 54 setcco
 |-  ( ( ph /\ F e. ( X E Y ) ) -> ( ( Y X. { 1o } ) ( <. X , Y >. ( comp ` C ) 2o ) F ) = ( ( Y X. { 1o } ) o. F ) )
56 36 52 55 3eqtr4d
 |-  ( ( ph /\ F e. ( X E Y ) ) -> ( ( a e. Y |-> if ( a e. ran F , 1o , (/) ) ) ( <. X , Y >. ( comp ` C ) 2o ) F ) = ( ( Y X. { 1o } ) ( <. X , Y >. ( comp ` C ) 2o ) F ) )
57 11 adantr
 |-  ( ( ph /\ F e. ( X E Y ) ) -> C e. Cat )
58 13 adantr
 |-  ( ( ph /\ F e. ( X E Y ) ) -> X e. ( Base ` C ) )
59 14 adantr
 |-  ( ( ph /\ F e. ( X E Y ) ) -> Y e. ( Base ` C ) )
60 6 12 eleqtrd
 |-  ( ph -> 2o e. ( Base ` C ) )
61 60 adantr
 |-  ( ( ph /\ F e. ( X E Y ) ) -> 2o e. ( Base ` C ) )
62 simpr
 |-  ( ( ph /\ F e. ( X E Y ) ) -> F e. ( X E Y ) )
63 1 37 8 39 40 elsetchom
 |-  ( ( ph /\ F e. ( X E Y ) ) -> ( ( a e. Y |-> if ( a e. ran F , 1o , (/) ) ) e. ( Y ( Hom ` C ) 2o ) <-> ( a e. Y |-> if ( a e. ran F , 1o , (/) ) ) : Y --> 2o ) )
64 51 63 mpbird
 |-  ( ( ph /\ F e. ( X E Y ) ) -> ( a e. Y |-> if ( a e. ran F , 1o , (/) ) ) e. ( Y ( Hom ` C ) 2o ) )
65 1 37 8 39 40 elsetchom
 |-  ( ( ph /\ F e. ( X E Y ) ) -> ( ( Y X. { 1o } ) e. ( Y ( Hom ` C ) 2o ) <-> ( Y X. { 1o } ) : Y --> 2o ) )
66 54 65 mpbird
 |-  ( ( ph /\ F e. ( X E Y ) ) -> ( Y X. { 1o } ) e. ( Y ( Hom ` C ) 2o ) )
67 7 8 9 5 57 58 59 61 62 64 66 epii
 |-  ( ( ph /\ F e. ( X E Y ) ) -> ( ( ( a e. Y |-> if ( a e. ran F , 1o , (/) ) ) ( <. X , Y >. ( comp ` C ) 2o ) F ) = ( ( Y X. { 1o } ) ( <. X , Y >. ( comp ` C ) 2o ) F ) <-> ( a e. Y |-> if ( a e. ran F , 1o , (/) ) ) = ( Y X. { 1o } ) ) )
68 56 67 mpbid
 |-  ( ( ph /\ F e. ( X E Y ) ) -> ( a e. Y |-> if ( a e. ran F , 1o , (/) ) ) = ( Y X. { 1o } ) )
69 68 32 eqtrdi
 |-  ( ( ph /\ F e. ( X E Y ) ) -> ( a e. Y |-> if ( a e. ran F , 1o , (/) ) ) = ( a e. Y |-> 1o ) )
70 48 rgenw
 |-  A. a e. Y if ( a e. ran F , 1o , (/) ) e. 2o
71 mpteqb
 |-  ( A. a e. Y if ( a e. ran F , 1o , (/) ) e. 2o -> ( ( a e. Y |-> if ( a e. ran F , 1o , (/) ) ) = ( a e. Y |-> 1o ) <-> A. a e. Y if ( a e. ran F , 1o , (/) ) = 1o ) )
72 70 71 ax-mp
 |-  ( ( a e. Y |-> if ( a e. ran F , 1o , (/) ) ) = ( a e. Y |-> 1o ) <-> A. a e. Y if ( a e. ran F , 1o , (/) ) = 1o )
73 69 72 sylib
 |-  ( ( ph /\ F e. ( X E Y ) ) -> A. a e. Y if ( a e. ran F , 1o , (/) ) = 1o )
74 1n0
 |-  1o =/= (/)
75 74 nesymi
 |-  -. (/) = 1o
76 iffalse
 |-  ( -. a e. ran F -> if ( a e. ran F , 1o , (/) ) = (/) )
77 76 eqeq1d
 |-  ( -. a e. ran F -> ( if ( a e. ran F , 1o , (/) ) = 1o <-> (/) = 1o ) )
78 75 77 mtbiri
 |-  ( -. a e. ran F -> -. if ( a e. ran F , 1o , (/) ) = 1o )
79 78 con4i
 |-  ( if ( a e. ran F , 1o , (/) ) = 1o -> a e. ran F )
80 79 ralimi
 |-  ( A. a e. Y if ( a e. ran F , 1o , (/) ) = 1o -> A. a e. Y a e. ran F )
81 73 80 syl
 |-  ( ( ph /\ F e. ( X E Y ) ) -> A. a e. Y a e. ran F )
82 dfss3
 |-  ( Y C_ ran F <-> A. a e. Y a e. ran F )
83 81 82 sylibr
 |-  ( ( ph /\ F e. ( X E Y ) ) -> Y C_ ran F )
84 20 83 eqssd
 |-  ( ( ph /\ F e. ( X E Y ) ) -> ran F = Y )
85 dffo2
 |-  ( F : X -onto-> Y <-> ( F : X --> Y /\ ran F = Y ) )
86 19 84 85 sylanbrc
 |-  ( ( ph /\ F e. ( X E Y ) ) -> F : X -onto-> Y )
87 fof
 |-  ( F : X -onto-> Y -> F : X --> Y )
88 87 adantl
 |-  ( ( ph /\ F : X -onto-> Y ) -> F : X --> Y )
89 17 biimpar
 |-  ( ( ph /\ F : X --> Y ) -> F e. ( X ( Hom ` C ) Y ) )
90 88 89 syldan
 |-  ( ( ph /\ F : X -onto-> Y ) -> F e. ( X ( Hom ` C ) Y ) )
91 12 adantr
 |-  ( ( ph /\ F : X -onto-> Y ) -> U = ( Base ` C ) )
92 91 eleq2d
 |-  ( ( ph /\ F : X -onto-> Y ) -> ( z e. U <-> z e. ( Base ` C ) ) )
93 2 ad2antrr
 |-  ( ( ( ph /\ F : X -onto-> Y ) /\ ( z e. U /\ ( g e. ( Y ( Hom ` C ) z ) /\ h e. ( Y ( Hom ` C ) z ) ) ) ) -> U e. V )
94 3 ad2antrr
 |-  ( ( ( ph /\ F : X -onto-> Y ) /\ ( z e. U /\ ( g e. ( Y ( Hom ` C ) z ) /\ h e. ( Y ( Hom ` C ) z ) ) ) ) -> X e. U )
95 4 ad2antrr
 |-  ( ( ( ph /\ F : X -onto-> Y ) /\ ( z e. U /\ ( g e. ( Y ( Hom ` C ) z ) /\ h e. ( Y ( Hom ` C ) z ) ) ) ) -> Y e. U )
96 simprl
 |-  ( ( ( ph /\ F : X -onto-> Y ) /\ ( z e. U /\ ( g e. ( Y ( Hom ` C ) z ) /\ h e. ( Y ( Hom ` C ) z ) ) ) ) -> z e. U )
97 88 adantr
 |-  ( ( ( ph /\ F : X -onto-> Y ) /\ ( z e. U /\ ( g e. ( Y ( Hom ` C ) z ) /\ h e. ( Y ( Hom ` C ) z ) ) ) ) -> F : X --> Y )
98 simprrl
 |-  ( ( ( ph /\ F : X -onto-> Y ) /\ ( z e. U /\ ( g e. ( Y ( Hom ` C ) z ) /\ h e. ( Y ( Hom ` C ) z ) ) ) ) -> g e. ( Y ( Hom ` C ) z ) )
99 1 93 8 95 96 elsetchom
 |-  ( ( ( ph /\ F : X -onto-> Y ) /\ ( z e. U /\ ( g e. ( Y ( Hom ` C ) z ) /\ h e. ( Y ( Hom ` C ) z ) ) ) ) -> ( g e. ( Y ( Hom ` C ) z ) <-> g : Y --> z ) )
100 98 99 mpbid
 |-  ( ( ( ph /\ F : X -onto-> Y ) /\ ( z e. U /\ ( g e. ( Y ( Hom ` C ) z ) /\ h e. ( Y ( Hom ` C ) z ) ) ) ) -> g : Y --> z )
101 1 93 9 94 95 96 97 100 setcco
 |-  ( ( ( ph /\ F : X -onto-> Y ) /\ ( z e. U /\ ( g e. ( Y ( Hom ` C ) z ) /\ h e. ( Y ( Hom ` C ) z ) ) ) ) -> ( g ( <. X , Y >. ( comp ` C ) z ) F ) = ( g o. F ) )
102 simprrr
 |-  ( ( ( ph /\ F : X -onto-> Y ) /\ ( z e. U /\ ( g e. ( Y ( Hom ` C ) z ) /\ h e. ( Y ( Hom ` C ) z ) ) ) ) -> h e. ( Y ( Hom ` C ) z ) )
103 1 93 8 95 96 elsetchom
 |-  ( ( ( ph /\ F : X -onto-> Y ) /\ ( z e. U /\ ( g e. ( Y ( Hom ` C ) z ) /\ h e. ( Y ( Hom ` C ) z ) ) ) ) -> ( h e. ( Y ( Hom ` C ) z ) <-> h : Y --> z ) )
104 102 103 mpbid
 |-  ( ( ( ph /\ F : X -onto-> Y ) /\ ( z e. U /\ ( g e. ( Y ( Hom ` C ) z ) /\ h e. ( Y ( Hom ` C ) z ) ) ) ) -> h : Y --> z )
105 1 93 9 94 95 96 97 104 setcco
 |-  ( ( ( ph /\ F : X -onto-> Y ) /\ ( z e. U /\ ( g e. ( Y ( Hom ` C ) z ) /\ h e. ( Y ( Hom ` C ) z ) ) ) ) -> ( h ( <. X , Y >. ( comp ` C ) z ) F ) = ( h o. F ) )
106 101 105 eqeq12d
 |-  ( ( ( ph /\ F : X -onto-> Y ) /\ ( z e. U /\ ( g e. ( Y ( Hom ` C ) z ) /\ h e. ( Y ( Hom ` C ) z ) ) ) ) -> ( ( g ( <. X , Y >. ( comp ` C ) z ) F ) = ( h ( <. X , Y >. ( comp ` C ) z ) F ) <-> ( g o. F ) = ( h o. F ) ) )
107 simplr
 |-  ( ( ( ph /\ F : X -onto-> Y ) /\ ( z e. U /\ ( g e. ( Y ( Hom ` C ) z ) /\ h e. ( Y ( Hom ` C ) z ) ) ) ) -> F : X -onto-> Y )
108 100 ffnd
 |-  ( ( ( ph /\ F : X -onto-> Y ) /\ ( z e. U /\ ( g e. ( Y ( Hom ` C ) z ) /\ h e. ( Y ( Hom ` C ) z ) ) ) ) -> g Fn Y )
109 104 ffnd
 |-  ( ( ( ph /\ F : X -onto-> Y ) /\ ( z e. U /\ ( g e. ( Y ( Hom ` C ) z ) /\ h e. ( Y ( Hom ` C ) z ) ) ) ) -> h Fn Y )
110 cocan2
 |-  ( ( F : X -onto-> Y /\ g Fn Y /\ h Fn Y ) -> ( ( g o. F ) = ( h o. F ) <-> g = h ) )
111 107 108 109 110 syl3anc
 |-  ( ( ( ph /\ F : X -onto-> Y ) /\ ( z e. U /\ ( g e. ( Y ( Hom ` C ) z ) /\ h e. ( Y ( Hom ` C ) z ) ) ) ) -> ( ( g o. F ) = ( h o. F ) <-> g = h ) )
112 111 biimpd
 |-  ( ( ( ph /\ F : X -onto-> Y ) /\ ( z e. U /\ ( g e. ( Y ( Hom ` C ) z ) /\ h e. ( Y ( Hom ` C ) z ) ) ) ) -> ( ( g o. F ) = ( h o. F ) -> g = h ) )
113 106 112 sylbid
 |-  ( ( ( ph /\ F : X -onto-> Y ) /\ ( z e. U /\ ( g e. ( Y ( Hom ` C ) z ) /\ h e. ( Y ( Hom ` C ) z ) ) ) ) -> ( ( g ( <. X , Y >. ( comp ` C ) z ) F ) = ( h ( <. X , Y >. ( comp ` C ) z ) F ) -> g = h ) )
114 113 anassrs
 |-  ( ( ( ( ph /\ F : X -onto-> Y ) /\ z e. U ) /\ ( g e. ( Y ( Hom ` C ) z ) /\ h e. ( Y ( Hom ` C ) z ) ) ) -> ( ( g ( <. X , Y >. ( comp ` C ) z ) F ) = ( h ( <. X , Y >. ( comp ` C ) z ) F ) -> g = h ) )
115 114 ralrimivva
 |-  ( ( ( ph /\ F : X -onto-> Y ) /\ z e. U ) -> A. g e. ( Y ( Hom ` C ) z ) A. h e. ( Y ( Hom ` C ) z ) ( ( g ( <. X , Y >. ( comp ` C ) z ) F ) = ( h ( <. X , Y >. ( comp ` C ) z ) F ) -> g = h ) )
116 115 ex
 |-  ( ( ph /\ F : X -onto-> Y ) -> ( z e. U -> A. g e. ( Y ( Hom ` C ) z ) A. h e. ( Y ( Hom ` C ) z ) ( ( g ( <. X , Y >. ( comp ` C ) z ) F ) = ( h ( <. X , Y >. ( comp ` C ) z ) F ) -> g = h ) ) )
117 92 116 sylbird
 |-  ( ( ph /\ F : X -onto-> Y ) -> ( z e. ( Base ` C ) -> A. g e. ( Y ( Hom ` C ) z ) A. h e. ( Y ( Hom ` C ) z ) ( ( g ( <. X , Y >. ( comp ` C ) z ) F ) = ( h ( <. X , Y >. ( comp ` C ) z ) F ) -> g = h ) ) )
118 117 ralrimiv
 |-  ( ( ph /\ F : X -onto-> Y ) -> A. z e. ( Base ` C ) A. g e. ( Y ( Hom ` C ) z ) A. h e. ( Y ( Hom ` C ) z ) ( ( g ( <. X , Y >. ( comp ` C ) z ) F ) = ( h ( <. X , Y >. ( comp ` C ) z ) F ) -> g = h ) )
119 7 8 9 5 11 13 14 isepi2
 |-  ( ph -> ( F e. ( X E Y ) <-> ( F e. ( X ( Hom ` C ) Y ) /\ A. z e. ( Base ` C ) A. g e. ( Y ( Hom ` C ) z ) A. h e. ( Y ( Hom ` C ) z ) ( ( g ( <. X , Y >. ( comp ` C ) z ) F ) = ( h ( <. X , Y >. ( comp ` C ) z ) F ) -> g = h ) ) ) )
120 119 adantr
 |-  ( ( ph /\ F : X -onto-> Y ) -> ( F e. ( X E Y ) <-> ( F e. ( X ( Hom ` C ) Y ) /\ A. z e. ( Base ` C ) A. g e. ( Y ( Hom ` C ) z ) A. h e. ( Y ( Hom ` C ) z ) ( ( g ( <. X , Y >. ( comp ` C ) z ) F ) = ( h ( <. X , Y >. ( comp ` C ) z ) F ) -> g = h ) ) ) )
121 90 118 120 mpbir2and
 |-  ( ( ph /\ F : X -onto-> Y ) -> F e. ( X E Y ) )
122 86 121 impbida
 |-  ( ph -> ( F e. ( X E Y ) <-> F : X -onto-> Y ) )