Step |
Hyp |
Ref |
Expression |
1 |
|
znf1o.y |
|- Y = ( Z/nZ ` N ) |
2 |
|
znf1o.b |
|- B = ( Base ` Y ) |
3 |
|
znf1o.f |
|- F = ( ( ZRHom ` Y ) |` W ) |
4 |
|
znf1o.w |
|- W = if ( N = 0 , ZZ , ( 0 ..^ N ) ) |
5 |
1
|
zncrng |
|- ( N e. NN0 -> Y e. CRing ) |
6 |
|
crngring |
|- ( Y e. CRing -> Y e. Ring ) |
7 |
|
eqid |
|- ( ZRHom ` Y ) = ( ZRHom ` Y ) |
8 |
7
|
zrhrhm |
|- ( Y e. Ring -> ( ZRHom ` Y ) e. ( ZZring RingHom Y ) ) |
9 |
|
zringbas |
|- ZZ = ( Base ` ZZring ) |
10 |
9 2
|
rhmf |
|- ( ( ZRHom ` Y ) e. ( ZZring RingHom Y ) -> ( ZRHom ` Y ) : ZZ --> B ) |
11 |
5 6 8 10
|
4syl |
|- ( N e. NN0 -> ( ZRHom ` Y ) : ZZ --> B ) |
12 |
|
sseq1 |
|- ( ZZ = if ( N = 0 , ZZ , ( 0 ..^ N ) ) -> ( ZZ C_ ZZ <-> if ( N = 0 , ZZ , ( 0 ..^ N ) ) C_ ZZ ) ) |
13 |
|
sseq1 |
|- ( ( 0 ..^ N ) = if ( N = 0 , ZZ , ( 0 ..^ N ) ) -> ( ( 0 ..^ N ) C_ ZZ <-> if ( N = 0 , ZZ , ( 0 ..^ N ) ) C_ ZZ ) ) |
14 |
|
ssid |
|- ZZ C_ ZZ |
15 |
|
elfzoelz |
|- ( x e. ( 0 ..^ N ) -> x e. ZZ ) |
16 |
15
|
ssriv |
|- ( 0 ..^ N ) C_ ZZ |
17 |
12 13 14 16
|
keephyp |
|- if ( N = 0 , ZZ , ( 0 ..^ N ) ) C_ ZZ |
18 |
4 17
|
eqsstri |
|- W C_ ZZ |
19 |
|
fssres |
|- ( ( ( ZRHom ` Y ) : ZZ --> B /\ W C_ ZZ ) -> ( ( ZRHom ` Y ) |` W ) : W --> B ) |
20 |
11 18 19
|
sylancl |
|- ( N e. NN0 -> ( ( ZRHom ` Y ) |` W ) : W --> B ) |
21 |
3
|
feq1i |
|- ( F : W --> B <-> ( ( ZRHom ` Y ) |` W ) : W --> B ) |
22 |
20 21
|
sylibr |
|- ( N e. NN0 -> F : W --> B ) |
23 |
3
|
fveq1i |
|- ( F ` x ) = ( ( ( ZRHom ` Y ) |` W ) ` x ) |
24 |
|
fvres |
|- ( x e. W -> ( ( ( ZRHom ` Y ) |` W ) ` x ) = ( ( ZRHom ` Y ) ` x ) ) |
25 |
24
|
ad2antrl |
|- ( ( N e. NN0 /\ ( x e. W /\ y e. W ) ) -> ( ( ( ZRHom ` Y ) |` W ) ` x ) = ( ( ZRHom ` Y ) ` x ) ) |
26 |
23 25
|
eqtrid |
|- ( ( N e. NN0 /\ ( x e. W /\ y e. W ) ) -> ( F ` x ) = ( ( ZRHom ` Y ) ` x ) ) |
27 |
3
|
fveq1i |
|- ( F ` y ) = ( ( ( ZRHom ` Y ) |` W ) ` y ) |
28 |
|
fvres |
|- ( y e. W -> ( ( ( ZRHom ` Y ) |` W ) ` y ) = ( ( ZRHom ` Y ) ` y ) ) |
29 |
28
|
ad2antll |
|- ( ( N e. NN0 /\ ( x e. W /\ y e. W ) ) -> ( ( ( ZRHom ` Y ) |` W ) ` y ) = ( ( ZRHom ` Y ) ` y ) ) |
30 |
27 29
|
eqtrid |
|- ( ( N e. NN0 /\ ( x e. W /\ y e. W ) ) -> ( F ` y ) = ( ( ZRHom ` Y ) ` y ) ) |
31 |
26 30
|
eqeq12d |
|- ( ( N e. NN0 /\ ( x e. W /\ y e. W ) ) -> ( ( F ` x ) = ( F ` y ) <-> ( ( ZRHom ` Y ) ` x ) = ( ( ZRHom ` Y ) ` y ) ) ) |
32 |
|
simpl |
|- ( ( N e. NN0 /\ ( x e. W /\ y e. W ) ) -> N e. NN0 ) |
33 |
|
simprl |
|- ( ( N e. NN0 /\ ( x e. W /\ y e. W ) ) -> x e. W ) |
34 |
18 33
|
sselid |
|- ( ( N e. NN0 /\ ( x e. W /\ y e. W ) ) -> x e. ZZ ) |
35 |
|
simprr |
|- ( ( N e. NN0 /\ ( x e. W /\ y e. W ) ) -> y e. W ) |
36 |
18 35
|
sselid |
|- ( ( N e. NN0 /\ ( x e. W /\ y e. W ) ) -> y e. ZZ ) |
37 |
1 7
|
zndvds |
|- ( ( N e. NN0 /\ x e. ZZ /\ y e. ZZ ) -> ( ( ( ZRHom ` Y ) ` x ) = ( ( ZRHom ` Y ) ` y ) <-> N || ( x - y ) ) ) |
38 |
32 34 36 37
|
syl3anc |
|- ( ( N e. NN0 /\ ( x e. W /\ y e. W ) ) -> ( ( ( ZRHom ` Y ) ` x ) = ( ( ZRHom ` Y ) ` y ) <-> N || ( x - y ) ) ) |
39 |
|
elnn0 |
|- ( N e. NN0 <-> ( N e. NN \/ N = 0 ) ) |
40 |
|
simpl |
|- ( ( N e. NN /\ ( x e. W /\ y e. W ) ) -> N e. NN ) |
41 |
|
simprl |
|- ( ( N e. NN /\ ( x e. W /\ y e. W ) ) -> x e. W ) |
42 |
18 41
|
sselid |
|- ( ( N e. NN /\ ( x e. W /\ y e. W ) ) -> x e. ZZ ) |
43 |
|
simprr |
|- ( ( N e. NN /\ ( x e. W /\ y e. W ) ) -> y e. W ) |
44 |
18 43
|
sselid |
|- ( ( N e. NN /\ ( x e. W /\ y e. W ) ) -> y e. ZZ ) |
45 |
|
moddvds |
|- ( ( N e. NN /\ x e. ZZ /\ y e. ZZ ) -> ( ( x mod N ) = ( y mod N ) <-> N || ( x - y ) ) ) |
46 |
40 42 44 45
|
syl3anc |
|- ( ( N e. NN /\ ( x e. W /\ y e. W ) ) -> ( ( x mod N ) = ( y mod N ) <-> N || ( x - y ) ) ) |
47 |
42
|
zred |
|- ( ( N e. NN /\ ( x e. W /\ y e. W ) ) -> x e. RR ) |
48 |
|
nnrp |
|- ( N e. NN -> N e. RR+ ) |
49 |
48
|
adantr |
|- ( ( N e. NN /\ ( x e. W /\ y e. W ) ) -> N e. RR+ ) |
50 |
|
nnne0 |
|- ( N e. NN -> N =/= 0 ) |
51 |
|
ifnefalse |
|- ( N =/= 0 -> if ( N = 0 , ZZ , ( 0 ..^ N ) ) = ( 0 ..^ N ) ) |
52 |
50 51
|
syl |
|- ( N e. NN -> if ( N = 0 , ZZ , ( 0 ..^ N ) ) = ( 0 ..^ N ) ) |
53 |
4 52
|
eqtrid |
|- ( N e. NN -> W = ( 0 ..^ N ) ) |
54 |
53
|
adantr |
|- ( ( N e. NN /\ ( x e. W /\ y e. W ) ) -> W = ( 0 ..^ N ) ) |
55 |
41 54
|
eleqtrd |
|- ( ( N e. NN /\ ( x e. W /\ y e. W ) ) -> x e. ( 0 ..^ N ) ) |
56 |
|
elfzole1 |
|- ( x e. ( 0 ..^ N ) -> 0 <_ x ) |
57 |
55 56
|
syl |
|- ( ( N e. NN /\ ( x e. W /\ y e. W ) ) -> 0 <_ x ) |
58 |
|
elfzolt2 |
|- ( x e. ( 0 ..^ N ) -> x < N ) |
59 |
55 58
|
syl |
|- ( ( N e. NN /\ ( x e. W /\ y e. W ) ) -> x < N ) |
60 |
|
modid |
|- ( ( ( x e. RR /\ N e. RR+ ) /\ ( 0 <_ x /\ x < N ) ) -> ( x mod N ) = x ) |
61 |
47 49 57 59 60
|
syl22anc |
|- ( ( N e. NN /\ ( x e. W /\ y e. W ) ) -> ( x mod N ) = x ) |
62 |
44
|
zred |
|- ( ( N e. NN /\ ( x e. W /\ y e. W ) ) -> y e. RR ) |
63 |
43 54
|
eleqtrd |
|- ( ( N e. NN /\ ( x e. W /\ y e. W ) ) -> y e. ( 0 ..^ N ) ) |
64 |
|
elfzole1 |
|- ( y e. ( 0 ..^ N ) -> 0 <_ y ) |
65 |
63 64
|
syl |
|- ( ( N e. NN /\ ( x e. W /\ y e. W ) ) -> 0 <_ y ) |
66 |
|
elfzolt2 |
|- ( y e. ( 0 ..^ N ) -> y < N ) |
67 |
63 66
|
syl |
|- ( ( N e. NN /\ ( x e. W /\ y e. W ) ) -> y < N ) |
68 |
|
modid |
|- ( ( ( y e. RR /\ N e. RR+ ) /\ ( 0 <_ y /\ y < N ) ) -> ( y mod N ) = y ) |
69 |
62 49 65 67 68
|
syl22anc |
|- ( ( N e. NN /\ ( x e. W /\ y e. W ) ) -> ( y mod N ) = y ) |
70 |
61 69
|
eqeq12d |
|- ( ( N e. NN /\ ( x e. W /\ y e. W ) ) -> ( ( x mod N ) = ( y mod N ) <-> x = y ) ) |
71 |
46 70
|
bitr3d |
|- ( ( N e. NN /\ ( x e. W /\ y e. W ) ) -> ( N || ( x - y ) <-> x = y ) ) |
72 |
|
simpl |
|- ( ( N = 0 /\ ( x e. W /\ y e. W ) ) -> N = 0 ) |
73 |
72
|
breq1d |
|- ( ( N = 0 /\ ( x e. W /\ y e. W ) ) -> ( N || ( x - y ) <-> 0 || ( x - y ) ) ) |
74 |
|
id |
|- ( N = 0 -> N = 0 ) |
75 |
|
0nn0 |
|- 0 e. NN0 |
76 |
74 75
|
eqeltrdi |
|- ( N = 0 -> N e. NN0 ) |
77 |
76 34
|
sylan |
|- ( ( N = 0 /\ ( x e. W /\ y e. W ) ) -> x e. ZZ ) |
78 |
76 36
|
sylan |
|- ( ( N = 0 /\ ( x e. W /\ y e. W ) ) -> y e. ZZ ) |
79 |
77 78
|
zsubcld |
|- ( ( N = 0 /\ ( x e. W /\ y e. W ) ) -> ( x - y ) e. ZZ ) |
80 |
|
0dvds |
|- ( ( x - y ) e. ZZ -> ( 0 || ( x - y ) <-> ( x - y ) = 0 ) ) |
81 |
79 80
|
syl |
|- ( ( N = 0 /\ ( x e. W /\ y e. W ) ) -> ( 0 || ( x - y ) <-> ( x - y ) = 0 ) ) |
82 |
77
|
zcnd |
|- ( ( N = 0 /\ ( x e. W /\ y e. W ) ) -> x e. CC ) |
83 |
78
|
zcnd |
|- ( ( N = 0 /\ ( x e. W /\ y e. W ) ) -> y e. CC ) |
84 |
82 83
|
subeq0ad |
|- ( ( N = 0 /\ ( x e. W /\ y e. W ) ) -> ( ( x - y ) = 0 <-> x = y ) ) |
85 |
73 81 84
|
3bitrd |
|- ( ( N = 0 /\ ( x e. W /\ y e. W ) ) -> ( N || ( x - y ) <-> x = y ) ) |
86 |
71 85
|
jaoian |
|- ( ( ( N e. NN \/ N = 0 ) /\ ( x e. W /\ y e. W ) ) -> ( N || ( x - y ) <-> x = y ) ) |
87 |
39 86
|
sylanb |
|- ( ( N e. NN0 /\ ( x e. W /\ y e. W ) ) -> ( N || ( x - y ) <-> x = y ) ) |
88 |
31 38 87
|
3bitrd |
|- ( ( N e. NN0 /\ ( x e. W /\ y e. W ) ) -> ( ( F ` x ) = ( F ` y ) <-> x = y ) ) |
89 |
88
|
biimpd |
|- ( ( N e. NN0 /\ ( x e. W /\ y e. W ) ) -> ( ( F ` x ) = ( F ` y ) -> x = y ) ) |
90 |
89
|
ralrimivva |
|- ( N e. NN0 -> A. x e. W A. y e. W ( ( F ` x ) = ( F ` y ) -> x = y ) ) |
91 |
|
dff13 |
|- ( F : W -1-1-> B <-> ( F : W --> B /\ A. x e. W A. y e. W ( ( F ` x ) = ( F ` y ) -> x = y ) ) ) |
92 |
22 90 91
|
sylanbrc |
|- ( N e. NN0 -> F : W -1-1-> B ) |
93 |
|
zmodfzo |
|- ( ( z e. ZZ /\ N e. NN ) -> ( z mod N ) e. ( 0 ..^ N ) ) |
94 |
93
|
ancoms |
|- ( ( N e. NN /\ z e. ZZ ) -> ( z mod N ) e. ( 0 ..^ N ) ) |
95 |
53
|
adantr |
|- ( ( N e. NN /\ z e. ZZ ) -> W = ( 0 ..^ N ) ) |
96 |
94 95
|
eleqtrrd |
|- ( ( N e. NN /\ z e. ZZ ) -> ( z mod N ) e. W ) |
97 |
|
zre |
|- ( z e. ZZ -> z e. RR ) |
98 |
|
modabs2 |
|- ( ( z e. RR /\ N e. RR+ ) -> ( ( z mod N ) mod N ) = ( z mod N ) ) |
99 |
97 48 98
|
syl2anr |
|- ( ( N e. NN /\ z e. ZZ ) -> ( ( z mod N ) mod N ) = ( z mod N ) ) |
100 |
|
simpl |
|- ( ( N e. NN /\ z e. ZZ ) -> N e. NN ) |
101 |
16 94
|
sselid |
|- ( ( N e. NN /\ z e. ZZ ) -> ( z mod N ) e. ZZ ) |
102 |
|
simpr |
|- ( ( N e. NN /\ z e. ZZ ) -> z e. ZZ ) |
103 |
|
moddvds |
|- ( ( N e. NN /\ ( z mod N ) e. ZZ /\ z e. ZZ ) -> ( ( ( z mod N ) mod N ) = ( z mod N ) <-> N || ( ( z mod N ) - z ) ) ) |
104 |
100 101 102 103
|
syl3anc |
|- ( ( N e. NN /\ z e. ZZ ) -> ( ( ( z mod N ) mod N ) = ( z mod N ) <-> N || ( ( z mod N ) - z ) ) ) |
105 |
99 104
|
mpbid |
|- ( ( N e. NN /\ z e. ZZ ) -> N || ( ( z mod N ) - z ) ) |
106 |
|
nnnn0 |
|- ( N e. NN -> N e. NN0 ) |
107 |
106
|
adantr |
|- ( ( N e. NN /\ z e. ZZ ) -> N e. NN0 ) |
108 |
1 7
|
zndvds |
|- ( ( N e. NN0 /\ ( z mod N ) e. ZZ /\ z e. ZZ ) -> ( ( ( ZRHom ` Y ) ` ( z mod N ) ) = ( ( ZRHom ` Y ) ` z ) <-> N || ( ( z mod N ) - z ) ) ) |
109 |
107 101 102 108
|
syl3anc |
|- ( ( N e. NN /\ z e. ZZ ) -> ( ( ( ZRHom ` Y ) ` ( z mod N ) ) = ( ( ZRHom ` Y ) ` z ) <-> N || ( ( z mod N ) - z ) ) ) |
110 |
105 109
|
mpbird |
|- ( ( N e. NN /\ z e. ZZ ) -> ( ( ZRHom ` Y ) ` ( z mod N ) ) = ( ( ZRHom ` Y ) ` z ) ) |
111 |
110
|
eqcomd |
|- ( ( N e. NN /\ z e. ZZ ) -> ( ( ZRHom ` Y ) ` z ) = ( ( ZRHom ` Y ) ` ( z mod N ) ) ) |
112 |
|
fveq2 |
|- ( y = ( z mod N ) -> ( ( ZRHom ` Y ) ` y ) = ( ( ZRHom ` Y ) ` ( z mod N ) ) ) |
113 |
112
|
rspceeqv |
|- ( ( ( z mod N ) e. W /\ ( ( ZRHom ` Y ) ` z ) = ( ( ZRHom ` Y ) ` ( z mod N ) ) ) -> E. y e. W ( ( ZRHom ` Y ) ` z ) = ( ( ZRHom ` Y ) ` y ) ) |
114 |
96 111 113
|
syl2anc |
|- ( ( N e. NN /\ z e. ZZ ) -> E. y e. W ( ( ZRHom ` Y ) ` z ) = ( ( ZRHom ` Y ) ` y ) ) |
115 |
|
iftrue |
|- ( N = 0 -> if ( N = 0 , ZZ , ( 0 ..^ N ) ) = ZZ ) |
116 |
115
|
eleq2d |
|- ( N = 0 -> ( z e. if ( N = 0 , ZZ , ( 0 ..^ N ) ) <-> z e. ZZ ) ) |
117 |
116
|
biimpar |
|- ( ( N = 0 /\ z e. ZZ ) -> z e. if ( N = 0 , ZZ , ( 0 ..^ N ) ) ) |
118 |
117 4
|
eleqtrrdi |
|- ( ( N = 0 /\ z e. ZZ ) -> z e. W ) |
119 |
|
eqidd |
|- ( ( N = 0 /\ z e. ZZ ) -> ( ( ZRHom ` Y ) ` z ) = ( ( ZRHom ` Y ) ` z ) ) |
120 |
|
fveq2 |
|- ( y = z -> ( ( ZRHom ` Y ) ` y ) = ( ( ZRHom ` Y ) ` z ) ) |
121 |
120
|
rspceeqv |
|- ( ( z e. W /\ ( ( ZRHom ` Y ) ` z ) = ( ( ZRHom ` Y ) ` z ) ) -> E. y e. W ( ( ZRHom ` Y ) ` z ) = ( ( ZRHom ` Y ) ` y ) ) |
122 |
118 119 121
|
syl2anc |
|- ( ( N = 0 /\ z e. ZZ ) -> E. y e. W ( ( ZRHom ` Y ) ` z ) = ( ( ZRHom ` Y ) ` y ) ) |
123 |
114 122
|
jaoian |
|- ( ( ( N e. NN \/ N = 0 ) /\ z e. ZZ ) -> E. y e. W ( ( ZRHom ` Y ) ` z ) = ( ( ZRHom ` Y ) ` y ) ) |
124 |
39 123
|
sylanb |
|- ( ( N e. NN0 /\ z e. ZZ ) -> E. y e. W ( ( ZRHom ` Y ) ` z ) = ( ( ZRHom ` Y ) ` y ) ) |
125 |
27 28
|
eqtrid |
|- ( y e. W -> ( F ` y ) = ( ( ZRHom ` Y ) ` y ) ) |
126 |
125
|
eqeq2d |
|- ( y e. W -> ( ( ( ZRHom ` Y ) ` z ) = ( F ` y ) <-> ( ( ZRHom ` Y ) ` z ) = ( ( ZRHom ` Y ) ` y ) ) ) |
127 |
126
|
rexbiia |
|- ( E. y e. W ( ( ZRHom ` Y ) ` z ) = ( F ` y ) <-> E. y e. W ( ( ZRHom ` Y ) ` z ) = ( ( ZRHom ` Y ) ` y ) ) |
128 |
124 127
|
sylibr |
|- ( ( N e. NN0 /\ z e. ZZ ) -> E. y e. W ( ( ZRHom ` Y ) ` z ) = ( F ` y ) ) |
129 |
128
|
ralrimiva |
|- ( N e. NN0 -> A. z e. ZZ E. y e. W ( ( ZRHom ` Y ) ` z ) = ( F ` y ) ) |
130 |
1 2 7
|
znzrhfo |
|- ( N e. NN0 -> ( ZRHom ` Y ) : ZZ -onto-> B ) |
131 |
|
fofn |
|- ( ( ZRHom ` Y ) : ZZ -onto-> B -> ( ZRHom ` Y ) Fn ZZ ) |
132 |
|
eqeq1 |
|- ( x = ( ( ZRHom ` Y ) ` z ) -> ( x = ( F ` y ) <-> ( ( ZRHom ` Y ) ` z ) = ( F ` y ) ) ) |
133 |
132
|
rexbidv |
|- ( x = ( ( ZRHom ` Y ) ` z ) -> ( E. y e. W x = ( F ` y ) <-> E. y e. W ( ( ZRHom ` Y ) ` z ) = ( F ` y ) ) ) |
134 |
133
|
ralrn |
|- ( ( ZRHom ` Y ) Fn ZZ -> ( A. x e. ran ( ZRHom ` Y ) E. y e. W x = ( F ` y ) <-> A. z e. ZZ E. y e. W ( ( ZRHom ` Y ) ` z ) = ( F ` y ) ) ) |
135 |
130 131 134
|
3syl |
|- ( N e. NN0 -> ( A. x e. ran ( ZRHom ` Y ) E. y e. W x = ( F ` y ) <-> A. z e. ZZ E. y e. W ( ( ZRHom ` Y ) ` z ) = ( F ` y ) ) ) |
136 |
129 135
|
mpbird |
|- ( N e. NN0 -> A. x e. ran ( ZRHom ` Y ) E. y e. W x = ( F ` y ) ) |
137 |
|
forn |
|- ( ( ZRHom ` Y ) : ZZ -onto-> B -> ran ( ZRHom ` Y ) = B ) |
138 |
130 137
|
syl |
|- ( N e. NN0 -> ran ( ZRHom ` Y ) = B ) |
139 |
138
|
raleqdv |
|- ( N e. NN0 -> ( A. x e. ran ( ZRHom ` Y ) E. y e. W x = ( F ` y ) <-> A. x e. B E. y e. W x = ( F ` y ) ) ) |
140 |
136 139
|
mpbid |
|- ( N e. NN0 -> A. x e. B E. y e. W x = ( F ` y ) ) |
141 |
|
dffo3 |
|- ( F : W -onto-> B <-> ( F : W --> B /\ A. x e. B E. y e. W x = ( F ` y ) ) ) |
142 |
22 140 141
|
sylanbrc |
|- ( N e. NN0 -> F : W -onto-> B ) |
143 |
|
df-f1o |
|- ( F : W -1-1-onto-> B <-> ( F : W -1-1-> B /\ F : W -onto-> B ) ) |
144 |
92 142 143
|
sylanbrc |
|- ( N e. NN0 -> F : W -1-1-onto-> B ) |