Metamath Proof Explorer


Theorem dchrabl

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

Ref Expression
Hypothesis dchrabl.g G=DChrN
Assertion dchrabl NGAbel

Proof

Step Hyp Ref Expression
1 dchrabl.g G=DChrN
2 eqidd NBaseG=BaseG
3 eqidd N+G=+G
4 eqid /N=/N
5 eqid BaseG=BaseG
6 eqid +G=+G
7 simp2 NxBaseGyBaseGxBaseG
8 simp3 NxBaseGyBaseGyBaseG
9 1 4 5 6 7 8 dchrmulcl NxBaseGyBaseGx+GyBaseG
10 fvexd NxBaseGyBaseGzBaseGBase/NV
11 eqid Base/N=Base/N
12 1 4 5 11 7 dchrf NxBaseGyBaseGx:Base/N
13 12 3adant3r3 NxBaseGyBaseGzBaseGx:Base/N
14 1 4 5 11 8 dchrf NxBaseGyBaseGy:Base/N
15 14 3adant3r3 NxBaseGyBaseGzBaseGy:Base/N
16 simpr3 NxBaseGyBaseGzBaseGzBaseG
17 1 4 5 11 16 dchrf NxBaseGyBaseGzBaseGz:Base/N
18 mulass abcabc=abc
19 18 adantl NxBaseGyBaseGzBaseGabcabc=abc
20 10 13 15 17 19 caofass NxBaseGyBaseGzBaseGx×fy×fz=x×fy×fz
21 simpr1 NxBaseGyBaseGzBaseGxBaseG
22 simpr2 NxBaseGyBaseGzBaseGyBaseG
23 1 4 5 6 21 22 dchrmul NxBaseGyBaseGzBaseGx+Gy=x×fy
24 23 oveq1d NxBaseGyBaseGzBaseGx+Gy×fz=x×fy×fz
25 1 4 5 6 22 16 dchrmul NxBaseGyBaseGzBaseGy+Gz=y×fz
26 25 oveq2d NxBaseGyBaseGzBaseGx×fy+Gz=x×fy×fz
27 20 24 26 3eqtr4d NxBaseGyBaseGzBaseGx+Gy×fz=x×fy+Gz
28 9 3adant3r3 NxBaseGyBaseGzBaseGx+GyBaseG
29 1 4 5 6 28 16 dchrmul NxBaseGyBaseGzBaseGx+Gy+Gz=x+Gy×fz
30 1 4 5 6 22 16 dchrmulcl NxBaseGyBaseGzBaseGy+GzBaseG
31 1 4 5 6 21 30 dchrmul NxBaseGyBaseGzBaseGx+Gy+Gz=x×fy+Gz
32 27 29 31 3eqtr4d NxBaseGyBaseGzBaseGx+Gy+Gz=x+Gy+Gz
33 eqid Unit/N=Unit/N
34 eqid kBase/NifkUnit/N10=kBase/NifkUnit/N10
35 id NN
36 1 4 5 11 33 34 35 dchr1cl NkBase/NifkUnit/N10BaseG
37 simpr NxBaseGxBaseG
38 1 4 5 11 33 34 6 37 dchrmullid NxBaseGkBase/NifkUnit/N10+Gx=x
39 eqid kBase/NifkUnit/N1xk0=kBase/NifkUnit/N1xk0
40 1 4 5 11 33 34 6 37 39 dchrinvcl NxBaseGkBase/NifkUnit/N1xk0BaseGkBase/NifkUnit/N1xk0+Gx=kBase/NifkUnit/N10
41 40 simpld NxBaseGkBase/NifkUnit/N1xk0BaseG
42 40 simprd NxBaseGkBase/NifkUnit/N1xk0+Gx=kBase/NifkUnit/N10
43 2 3 9 32 36 38 41 42 isgrpd NGGrp
44 fvexd NxBaseGyBaseGBase/NV
45 mulcom abab=ba
46 45 adantl NxBaseGyBaseGabab=ba
47 44 12 14 46 caofcom NxBaseGyBaseGx×fy=y×fx
48 1 4 5 6 7 8 dchrmul NxBaseGyBaseGx+Gy=x×fy
49 1 4 5 6 8 7 dchrmul NxBaseGyBaseGy+Gx=y×fx
50 47 48 49 3eqtr4d NxBaseGyBaseGx+Gy=y+Gx
51 2 3 43 50 isabld NGAbel