Metamath Proof Explorer


Theorem mulgnn0dir

Description: Sum of group multiples, generalized to NN0 . (Contributed by Mario Carneiro, 11-Dec-2014)

Ref Expression
Hypotheses mulgnndir.b 𝐵 = ( Base ‘ 𝐺 )
mulgnndir.t · = ( .g𝐺 )
mulgnndir.p + = ( +g𝐺 )
Assertion mulgnn0dir ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) → ( ( 𝑀 + 𝑁 ) · 𝑋 ) = ( ( 𝑀 · 𝑋 ) + ( 𝑁 · 𝑋 ) ) )

Proof

Step Hyp Ref Expression
1 mulgnndir.b 𝐵 = ( Base ‘ 𝐺 )
2 mulgnndir.t · = ( .g𝐺 )
3 mulgnndir.p + = ( +g𝐺 )
4 mndsgrp ( 𝐺 ∈ Mnd → 𝐺 ∈ Smgrp )
5 4 adantr ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) → 𝐺 ∈ Smgrp )
6 5 ad2antrr ( ( ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) ∧ 𝑀 ∈ ℕ ) ∧ 𝑁 ∈ ℕ ) → 𝐺 ∈ Smgrp )
7 simplr ( ( ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) ∧ 𝑀 ∈ ℕ ) ∧ 𝑁 ∈ ℕ ) → 𝑀 ∈ ℕ )
8 simpr ( ( ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) ∧ 𝑀 ∈ ℕ ) ∧ 𝑁 ∈ ℕ ) → 𝑁 ∈ ℕ )
9 simpr3 ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) → 𝑋𝐵 )
10 9 ad2antrr ( ( ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) ∧ 𝑀 ∈ ℕ ) ∧ 𝑁 ∈ ℕ ) → 𝑋𝐵 )
11 1 2 3 mulgnndir ( ( 𝐺 ∈ Smgrp ∧ ( 𝑀 ∈ ℕ ∧ 𝑁 ∈ ℕ ∧ 𝑋𝐵 ) ) → ( ( 𝑀 + 𝑁 ) · 𝑋 ) = ( ( 𝑀 · 𝑋 ) + ( 𝑁 · 𝑋 ) ) )
12 6 7 8 10 11 syl13anc ( ( ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) ∧ 𝑀 ∈ ℕ ) ∧ 𝑁 ∈ ℕ ) → ( ( 𝑀 + 𝑁 ) · 𝑋 ) = ( ( 𝑀 · 𝑋 ) + ( 𝑁 · 𝑋 ) ) )
13 simpll ( ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) ∧ 𝑁 = 0 ) → 𝐺 ∈ Mnd )
14 simpr1 ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) → 𝑀 ∈ ℕ0 )
15 14 adantr ( ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) ∧ 𝑁 = 0 ) → 𝑀 ∈ ℕ0 )
16 simplr3 ( ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) ∧ 𝑁 = 0 ) → 𝑋𝐵 )
17 1 2 mulgnn0cl ( ( 𝐺 ∈ Mnd ∧ 𝑀 ∈ ℕ0𝑋𝐵 ) → ( 𝑀 · 𝑋 ) ∈ 𝐵 )
18 13 15 16 17 syl3anc ( ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) ∧ 𝑁 = 0 ) → ( 𝑀 · 𝑋 ) ∈ 𝐵 )
19 eqid ( 0g𝐺 ) = ( 0g𝐺 )
20 1 3 19 mndrid ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 · 𝑋 ) ∈ 𝐵 ) → ( ( 𝑀 · 𝑋 ) + ( 0g𝐺 ) ) = ( 𝑀 · 𝑋 ) )
21 13 18 20 syl2anc ( ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) ∧ 𝑁 = 0 ) → ( ( 𝑀 · 𝑋 ) + ( 0g𝐺 ) ) = ( 𝑀 · 𝑋 ) )
22 simpr ( ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) ∧ 𝑁 = 0 ) → 𝑁 = 0 )
23 22 oveq1d ( ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) ∧ 𝑁 = 0 ) → ( 𝑁 · 𝑋 ) = ( 0 · 𝑋 ) )
24 1 19 2 mulg0 ( 𝑋𝐵 → ( 0 · 𝑋 ) = ( 0g𝐺 ) )
25 16 24 syl ( ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) ∧ 𝑁 = 0 ) → ( 0 · 𝑋 ) = ( 0g𝐺 ) )
26 23 25 eqtrd ( ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) ∧ 𝑁 = 0 ) → ( 𝑁 · 𝑋 ) = ( 0g𝐺 ) )
27 26 oveq2d ( ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) ∧ 𝑁 = 0 ) → ( ( 𝑀 · 𝑋 ) + ( 𝑁 · 𝑋 ) ) = ( ( 𝑀 · 𝑋 ) + ( 0g𝐺 ) ) )
28 22 oveq2d ( ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) ∧ 𝑁 = 0 ) → ( 𝑀 + 𝑁 ) = ( 𝑀 + 0 ) )
29 15 nn0cnd ( ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) ∧ 𝑁 = 0 ) → 𝑀 ∈ ℂ )
30 29 addid1d ( ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) ∧ 𝑁 = 0 ) → ( 𝑀 + 0 ) = 𝑀 )
31 28 30 eqtrd ( ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) ∧ 𝑁 = 0 ) → ( 𝑀 + 𝑁 ) = 𝑀 )
32 31 oveq1d ( ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) ∧ 𝑁 = 0 ) → ( ( 𝑀 + 𝑁 ) · 𝑋 ) = ( 𝑀 · 𝑋 ) )
33 21 27 32 3eqtr4rd ( ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) ∧ 𝑁 = 0 ) → ( ( 𝑀 + 𝑁 ) · 𝑋 ) = ( ( 𝑀 · 𝑋 ) + ( 𝑁 · 𝑋 ) ) )
34 33 adantlr ( ( ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) ∧ 𝑀 ∈ ℕ ) ∧ 𝑁 = 0 ) → ( ( 𝑀 + 𝑁 ) · 𝑋 ) = ( ( 𝑀 · 𝑋 ) + ( 𝑁 · 𝑋 ) ) )
35 simpr2 ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) → 𝑁 ∈ ℕ0 )
36 elnn0 ( 𝑁 ∈ ℕ0 ↔ ( 𝑁 ∈ ℕ ∨ 𝑁 = 0 ) )
37 35 36 sylib ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) → ( 𝑁 ∈ ℕ ∨ 𝑁 = 0 ) )
38 37 adantr ( ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) ∧ 𝑀 ∈ ℕ ) → ( 𝑁 ∈ ℕ ∨ 𝑁 = 0 ) )
39 12 34 38 mpjaodan ( ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) ∧ 𝑀 ∈ ℕ ) → ( ( 𝑀 + 𝑁 ) · 𝑋 ) = ( ( 𝑀 · 𝑋 ) + ( 𝑁 · 𝑋 ) ) )
40 simpll ( ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) ∧ 𝑀 = 0 ) → 𝐺 ∈ Mnd )
41 simplr2 ( ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) ∧ 𝑀 = 0 ) → 𝑁 ∈ ℕ0 )
42 simplr3 ( ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) ∧ 𝑀 = 0 ) → 𝑋𝐵 )
43 1 2 mulgnn0cl ( ( 𝐺 ∈ Mnd ∧ 𝑁 ∈ ℕ0𝑋𝐵 ) → ( 𝑁 · 𝑋 ) ∈ 𝐵 )
44 40 41 42 43 syl3anc ( ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) ∧ 𝑀 = 0 ) → ( 𝑁 · 𝑋 ) ∈ 𝐵 )
45 1 3 19 mndlid ( ( 𝐺 ∈ Mnd ∧ ( 𝑁 · 𝑋 ) ∈ 𝐵 ) → ( ( 0g𝐺 ) + ( 𝑁 · 𝑋 ) ) = ( 𝑁 · 𝑋 ) )
46 40 44 45 syl2anc ( ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) ∧ 𝑀 = 0 ) → ( ( 0g𝐺 ) + ( 𝑁 · 𝑋 ) ) = ( 𝑁 · 𝑋 ) )
47 simpr ( ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) ∧ 𝑀 = 0 ) → 𝑀 = 0 )
48 47 oveq1d ( ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) ∧ 𝑀 = 0 ) → ( 𝑀 · 𝑋 ) = ( 0 · 𝑋 ) )
49 42 24 syl ( ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) ∧ 𝑀 = 0 ) → ( 0 · 𝑋 ) = ( 0g𝐺 ) )
50 48 49 eqtrd ( ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) ∧ 𝑀 = 0 ) → ( 𝑀 · 𝑋 ) = ( 0g𝐺 ) )
51 50 oveq1d ( ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) ∧ 𝑀 = 0 ) → ( ( 𝑀 · 𝑋 ) + ( 𝑁 · 𝑋 ) ) = ( ( 0g𝐺 ) + ( 𝑁 · 𝑋 ) ) )
52 47 oveq1d ( ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) ∧ 𝑀 = 0 ) → ( 𝑀 + 𝑁 ) = ( 0 + 𝑁 ) )
53 41 nn0cnd ( ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) ∧ 𝑀 = 0 ) → 𝑁 ∈ ℂ )
54 53 addid2d ( ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) ∧ 𝑀 = 0 ) → ( 0 + 𝑁 ) = 𝑁 )
55 52 54 eqtrd ( ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) ∧ 𝑀 = 0 ) → ( 𝑀 + 𝑁 ) = 𝑁 )
56 55 oveq1d ( ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) ∧ 𝑀 = 0 ) → ( ( 𝑀 + 𝑁 ) · 𝑋 ) = ( 𝑁 · 𝑋 ) )
57 46 51 56 3eqtr4rd ( ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) ∧ 𝑀 = 0 ) → ( ( 𝑀 + 𝑁 ) · 𝑋 ) = ( ( 𝑀 · 𝑋 ) + ( 𝑁 · 𝑋 ) ) )
58 elnn0 ( 𝑀 ∈ ℕ0 ↔ ( 𝑀 ∈ ℕ ∨ 𝑀 = 0 ) )
59 14 58 sylib ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) → ( 𝑀 ∈ ℕ ∨ 𝑀 = 0 ) )
60 39 57 59 mpjaodan ( ( 𝐺 ∈ Mnd ∧ ( 𝑀 ∈ ℕ0𝑁 ∈ ℕ0𝑋𝐵 ) ) → ( ( 𝑀 + 𝑁 ) · 𝑋 ) = ( ( 𝑀 · 𝑋 ) + ( 𝑁 · 𝑋 ) ) )