Metamath Proof Explorer


Theorem dchrfi

Description: The group of Dirichlet characters is a finite group. (Contributed by Mario Carneiro, 19-Apr-2016)

Ref Expression
Hypotheses dchrabl.g G=DChrN
dchrfi.b D=BaseG
Assertion dchrfi NDFin

Proof

Step Hyp Ref Expression
1 dchrabl.g G=DChrN
2 dchrfi.b D=BaseG
3 snfi 0Fin
4 cnex V
5 4 a1i NV
6 ovexd NzzϕNV
7 1cnd Nz1
8 eqidd NzzϕN=zzϕN
9 fconstmpt ×1=z1
10 9 a1i N×1=z1
11 5 6 7 8 10 offval2 NzzϕNf×1=zzϕN1
12 ssid
13 12 a1i N
14 1cnd N1
15 phicl NϕN
16 15 nnnn0d NϕN0
17 plypow 1ϕN0zzϕNPoly
18 13 14 16 17 syl3anc NzzϕNPoly
19 ax-1cn 1
20 plyconst 1×1Poly
21 12 19 20 mp2an ×1Poly
22 plysubcl zzϕNPoly×1PolyzzϕNf×1Poly
23 18 21 22 sylancl NzzϕNf×1Poly
24 11 23 eqeltrrd NzzϕN1Poly
25 0cn 0
26 neg1ne0 10
27 15 0expd N0ϕN=0
28 27 oveq1d N0ϕN1=01
29 oveq1 z=0zϕN=0ϕN
30 29 oveq1d z=0zϕN1=0ϕN1
31 eqid zzϕN1=zzϕN1
32 ovex 0ϕN1V
33 30 31 32 fvmpt 0zzϕN10=0ϕN1
34 25 33 ax-mp zzϕN10=0ϕN1
35 df-neg 1=01
36 28 34 35 3eqtr4g NzzϕN10=1
37 36 neeq1d NzzϕN10010
38 26 37 mpbiri NzzϕN100
39 ne0p 0zzϕN100zzϕN10𝑝
40 25 38 39 sylancr NzzϕN10𝑝
41 31 mptiniseg 0zzϕN1-10=z|zϕN1=0
42 25 41 ax-mp zzϕN1-10=z|zϕN1=0
43 42 eqcomi z|zϕN1=0=zzϕN1-10
44 43 fta1 zzϕN1PolyzzϕN10𝑝z|zϕN1=0Finz|zϕN1=0degzzϕN1
45 24 40 44 syl2anc Nz|zϕN1=0Finz|zϕN1=0degzzϕN1
46 45 simpld Nz|zϕN1=0Fin
47 unfi 0Finz|zϕN1=0Fin0z|zϕN1=0Fin
48 3 46 47 sylancr N0z|zϕN1=0Fin
49 eqid /N=/N
50 eqid Base/N=Base/N
51 49 50 znfi NBase/NFin
52 mapfi 0z|zϕN1=0FinBase/NFin0z|zϕN1=0Base/NFin
53 48 51 52 syl2anc N0z|zϕN1=0Base/NFin
54 simpr NfDfD
55 1 49 2 50 54 dchrf NfDf:Base/N
56 55 ffnd NfDfFnBase/N
57 df-ne fx0¬fx=0
58 fvex fxV
59 58 elsn fx0fx=0
60 57 59 xchbinxr fx0¬fx0
61 oveq1 z=fxzϕN=fxϕN
62 61 oveq1d z=fxzϕN1=fxϕN1
63 62 eqeq1d z=fxzϕN1=0fxϕN1=0
64 simpl xBase/Nfx0xBase/N
65 ffvelcdm f:Base/NxBase/Nfx
66 55 64 65 syl2an NfDxBase/Nfx0fx
67 1 49 2 dchrmhm DmulGrp/NMndHommulGrpfld
68 simplr NfDxBase/Nfx0fD
69 67 68 sselid NfDxBase/Nfx0fmulGrp/NMndHommulGrpfld
70 16 ad2antrr NfDxBase/Nfx0ϕN0
71 simprl NfDxBase/Nfx0xBase/N
72 eqid mulGrp/N=mulGrp/N
73 72 50 mgpbas Base/N=BasemulGrp/N
74 eqid mulGrp/N=mulGrp/N
75 eqid mulGrpfld=mulGrpfld
76 73 74 75 mhmmulg fmulGrp/NMndHommulGrpfldϕN0xBase/NfϕNmulGrp/Nx=ϕNmulGrpfldfx
77 69 70 71 76 syl3anc NfDxBase/Nfx0fϕNmulGrp/Nx=ϕNmulGrpfldfx
78 nnnn0 NN0
79 49 zncrng N0/NCRing
80 78 79 syl N/NCRing
81 crngring /NCRing/NRing
82 80 81 syl N/NRing
83 82 ad2antrr NfDxBase/Nfx0/NRing
84 eqid Unit/N=Unit/N
85 eqid mulGrp/N𝑠Unit/N=mulGrp/N𝑠Unit/N
86 84 85 unitgrp /NRingmulGrp/N𝑠Unit/NGrp
87 83 86 syl NfDxBase/Nfx0mulGrp/N𝑠Unit/NGrp
88 49 84 znunithash NUnit/N=ϕN
89 88 16 eqeltrd NUnit/N0
90 fvex Unit/NV
91 hashclb Unit/NVUnit/NFinUnit/N0
92 90 91 ax-mp Unit/NFinUnit/N0
93 89 92 sylibr NUnit/NFin
94 93 ad2antrr NfDxBase/Nfx0Unit/NFin
95 simprr NfDxBase/Nfx0fx0
96 1 49 2 50 84 68 71 dchrn0 NfDxBase/Nfx0fx0xUnit/N
97 95 96 mpbid NfDxBase/Nfx0xUnit/N
98 84 85 unitgrpbas Unit/N=BasemulGrp/N𝑠Unit/N
99 eqid odmulGrp/N𝑠Unit/N=odmulGrp/N𝑠Unit/N
100 98 99 oddvds2 mulGrp/N𝑠Unit/NGrpUnit/NFinxUnit/NodmulGrp/N𝑠Unit/NxUnit/N
101 87 94 97 100 syl3anc NfDxBase/Nfx0odmulGrp/N𝑠Unit/NxUnit/N
102 88 ad2antrr NfDxBase/Nfx0Unit/N=ϕN
103 101 102 breqtrd NfDxBase/Nfx0odmulGrp/N𝑠Unit/NxϕN
104 15 ad2antrr NfDxBase/Nfx0ϕN
105 104 nnzd NfDxBase/Nfx0ϕN
106 eqid mulGrp/N𝑠Unit/N=mulGrp/N𝑠Unit/N
107 eqid 0mulGrp/N𝑠Unit/N=0mulGrp/N𝑠Unit/N
108 98 99 106 107 oddvds mulGrp/N𝑠Unit/NGrpxUnit/NϕNodmulGrp/N𝑠Unit/NxϕNϕNmulGrp/N𝑠Unit/Nx=0mulGrp/N𝑠Unit/N
109 87 97 105 108 syl3anc NfDxBase/Nfx0odmulGrp/N𝑠Unit/NxϕNϕNmulGrp/N𝑠Unit/Nx=0mulGrp/N𝑠Unit/N
110 103 109 mpbid NfDxBase/Nfx0ϕNmulGrp/N𝑠Unit/Nx=0mulGrp/N𝑠Unit/N
111 84 72 unitsubm /NRingUnit/NSubMndmulGrp/N
112 83 111 syl NfDxBase/Nfx0Unit/NSubMndmulGrp/N
113 74 85 106 submmulg Unit/NSubMndmulGrp/NϕN0xUnit/NϕNmulGrp/Nx=ϕNmulGrp/N𝑠Unit/Nx
114 112 70 97 113 syl3anc NfDxBase/Nfx0ϕNmulGrp/Nx=ϕNmulGrp/N𝑠Unit/Nx
115 eqid 1/N=1/N
116 72 115 ringidval 1/N=0mulGrp/N
117 85 116 subm0 Unit/NSubMndmulGrp/N1/N=0mulGrp/N𝑠Unit/N
118 112 117 syl NfDxBase/Nfx01/N=0mulGrp/N𝑠Unit/N
119 110 114 118 3eqtr4d NfDxBase/Nfx0ϕNmulGrp/Nx=1/N
120 119 fveq2d NfDxBase/Nfx0fϕNmulGrp/Nx=f1/N
121 77 120 eqtr3d NfDxBase/Nfx0ϕNmulGrpfldfx=f1/N
122 cnfldexp fxϕN0ϕNmulGrpfldfx=fxϕN
123 66 70 122 syl2anc NfDxBase/Nfx0ϕNmulGrpfldfx=fxϕN
124 eqid mulGrpfld=mulGrpfld
125 cnfld1 1=1fld
126 124 125 ringidval 1=0mulGrpfld
127 116 126 mhm0 fmulGrp/NMndHommulGrpfldf1/N=1
128 69 127 syl NfDxBase/Nfx0f1/N=1
129 121 123 128 3eqtr3d NfDxBase/Nfx0fxϕN=1
130 129 oveq1d NfDxBase/Nfx0fxϕN1=11
131 1m1e0 11=0
132 130 131 eqtrdi NfDxBase/Nfx0fxϕN1=0
133 63 66 132 elrabd NfDxBase/Nfx0fxz|zϕN1=0
134 133 expr NfDxBase/Nfx0fxz|zϕN1=0
135 60 134 biimtrrid NfDxBase/N¬fx0fxz|zϕN1=0
136 135 orrd NfDxBase/Nfx0fxz|zϕN1=0
137 elun fx0z|zϕN1=0fx0fxz|zϕN1=0
138 136 137 sylibr NfDxBase/Nfx0z|zϕN1=0
139 138 ralrimiva NfDxBase/Nfx0z|zϕN1=0
140 ffnfv f:Base/N0z|zϕN1=0fFnBase/NxBase/Nfx0z|zϕN1=0
141 56 139 140 sylanbrc NfDf:Base/N0z|zϕN1=0
142 141 ex NfDf:Base/N0z|zϕN1=0
143 48 51 elmapd Nf0z|zϕN1=0Base/Nf:Base/N0z|zϕN1=0
144 142 143 sylibrd NfDf0z|zϕN1=0Base/N
145 144 ssrdv ND0z|zϕN1=0Base/N
146 53 145 ssfid NDFin