Metamath Proof Explorer


Theorem mulgnnass

Description: Product of group multiples, for positive multiples in a semigroup. (Contributed by Mario Carneiro, 13-Dec-2014) (Revised by AV, 29-Aug-2021)

Ref Expression
Hypotheses mulgass.b 𝐵 = ( Base ‘ 𝐺 )
mulgass.t · = ( .g𝐺 )
Assertion mulgnnass ( ( 𝐺 ∈ Smgrp ∧ ( 𝑀 ∈ ℕ ∧ 𝑁 ∈ ℕ ∧ 𝑋𝐵 ) ) → ( ( 𝑀 · 𝑁 ) · 𝑋 ) = ( 𝑀 · ( 𝑁 · 𝑋 ) ) )

Proof

Step Hyp Ref Expression
1 mulgass.b 𝐵 = ( Base ‘ 𝐺 )
2 mulgass.t · = ( .g𝐺 )
3 oveq1 ( 𝑛 = 1 → ( 𝑛 · 𝑁 ) = ( 1 · 𝑁 ) )
4 3 oveq1d ( 𝑛 = 1 → ( ( 𝑛 · 𝑁 ) · 𝑋 ) = ( ( 1 · 𝑁 ) · 𝑋 ) )
5 oveq1 ( 𝑛 = 1 → ( 𝑛 · ( 𝑁 · 𝑋 ) ) = ( 1 · ( 𝑁 · 𝑋 ) ) )
6 4 5 eqeq12d ( 𝑛 = 1 → ( ( ( 𝑛 · 𝑁 ) · 𝑋 ) = ( 𝑛 · ( 𝑁 · 𝑋 ) ) ↔ ( ( 1 · 𝑁 ) · 𝑋 ) = ( 1 · ( 𝑁 · 𝑋 ) ) ) )
7 6 imbi2d ( 𝑛 = 1 → ( ( ( 𝑁 ∈ ℕ ∧ 𝑋𝐵𝐺 ∈ Smgrp ) → ( ( 𝑛 · 𝑁 ) · 𝑋 ) = ( 𝑛 · ( 𝑁 · 𝑋 ) ) ) ↔ ( ( 𝑁 ∈ ℕ ∧ 𝑋𝐵𝐺 ∈ Smgrp ) → ( ( 1 · 𝑁 ) · 𝑋 ) = ( 1 · ( 𝑁 · 𝑋 ) ) ) ) )
8 oveq1 ( 𝑛 = 𝑚 → ( 𝑛 · 𝑁 ) = ( 𝑚 · 𝑁 ) )
9 8 oveq1d ( 𝑛 = 𝑚 → ( ( 𝑛 · 𝑁 ) · 𝑋 ) = ( ( 𝑚 · 𝑁 ) · 𝑋 ) )
10 oveq1 ( 𝑛 = 𝑚 → ( 𝑛 · ( 𝑁 · 𝑋 ) ) = ( 𝑚 · ( 𝑁 · 𝑋 ) ) )
11 9 10 eqeq12d ( 𝑛 = 𝑚 → ( ( ( 𝑛 · 𝑁 ) · 𝑋 ) = ( 𝑛 · ( 𝑁 · 𝑋 ) ) ↔ ( ( 𝑚 · 𝑁 ) · 𝑋 ) = ( 𝑚 · ( 𝑁 · 𝑋 ) ) ) )
12 11 imbi2d ( 𝑛 = 𝑚 → ( ( ( 𝑁 ∈ ℕ ∧ 𝑋𝐵𝐺 ∈ Smgrp ) → ( ( 𝑛 · 𝑁 ) · 𝑋 ) = ( 𝑛 · ( 𝑁 · 𝑋 ) ) ) ↔ ( ( 𝑁 ∈ ℕ ∧ 𝑋𝐵𝐺 ∈ Smgrp ) → ( ( 𝑚 · 𝑁 ) · 𝑋 ) = ( 𝑚 · ( 𝑁 · 𝑋 ) ) ) ) )
13 oveq1 ( 𝑛 = ( 𝑚 + 1 ) → ( 𝑛 · 𝑁 ) = ( ( 𝑚 + 1 ) · 𝑁 ) )
14 13 oveq1d ( 𝑛 = ( 𝑚 + 1 ) → ( ( 𝑛 · 𝑁 ) · 𝑋 ) = ( ( ( 𝑚 + 1 ) · 𝑁 ) · 𝑋 ) )
15 oveq1 ( 𝑛 = ( 𝑚 + 1 ) → ( 𝑛 · ( 𝑁 · 𝑋 ) ) = ( ( 𝑚 + 1 ) · ( 𝑁 · 𝑋 ) ) )
16 14 15 eqeq12d ( 𝑛 = ( 𝑚 + 1 ) → ( ( ( 𝑛 · 𝑁 ) · 𝑋 ) = ( 𝑛 · ( 𝑁 · 𝑋 ) ) ↔ ( ( ( 𝑚 + 1 ) · 𝑁 ) · 𝑋 ) = ( ( 𝑚 + 1 ) · ( 𝑁 · 𝑋 ) ) ) )
17 16 imbi2d ( 𝑛 = ( 𝑚 + 1 ) → ( ( ( 𝑁 ∈ ℕ ∧ 𝑋𝐵𝐺 ∈ Smgrp ) → ( ( 𝑛 · 𝑁 ) · 𝑋 ) = ( 𝑛 · ( 𝑁 · 𝑋 ) ) ) ↔ ( ( 𝑁 ∈ ℕ ∧ 𝑋𝐵𝐺 ∈ Smgrp ) → ( ( ( 𝑚 + 1 ) · 𝑁 ) · 𝑋 ) = ( ( 𝑚 + 1 ) · ( 𝑁 · 𝑋 ) ) ) ) )
18 oveq1 ( 𝑛 = 𝑀 → ( 𝑛 · 𝑁 ) = ( 𝑀 · 𝑁 ) )
19 18 oveq1d ( 𝑛 = 𝑀 → ( ( 𝑛 · 𝑁 ) · 𝑋 ) = ( ( 𝑀 · 𝑁 ) · 𝑋 ) )
20 oveq1 ( 𝑛 = 𝑀 → ( 𝑛 · ( 𝑁 · 𝑋 ) ) = ( 𝑀 · ( 𝑁 · 𝑋 ) ) )
21 19 20 eqeq12d ( 𝑛 = 𝑀 → ( ( ( 𝑛 · 𝑁 ) · 𝑋 ) = ( 𝑛 · ( 𝑁 · 𝑋 ) ) ↔ ( ( 𝑀 · 𝑁 ) · 𝑋 ) = ( 𝑀 · ( 𝑁 · 𝑋 ) ) ) )
22 21 imbi2d ( 𝑛 = 𝑀 → ( ( ( 𝑁 ∈ ℕ ∧ 𝑋𝐵𝐺 ∈ Smgrp ) → ( ( 𝑛 · 𝑁 ) · 𝑋 ) = ( 𝑛 · ( 𝑁 · 𝑋 ) ) ) ↔ ( ( 𝑁 ∈ ℕ ∧ 𝑋𝐵𝐺 ∈ Smgrp ) → ( ( 𝑀 · 𝑁 ) · 𝑋 ) = ( 𝑀 · ( 𝑁 · 𝑋 ) ) ) ) )
23 nncn ( 𝑁 ∈ ℕ → 𝑁 ∈ ℂ )
24 23 mulid2d ( 𝑁 ∈ ℕ → ( 1 · 𝑁 ) = 𝑁 )
25 24 3ad2ant1 ( ( 𝑁 ∈ ℕ ∧ 𝑋𝐵𝐺 ∈ Smgrp ) → ( 1 · 𝑁 ) = 𝑁 )
26 25 oveq1d ( ( 𝑁 ∈ ℕ ∧ 𝑋𝐵𝐺 ∈ Smgrp ) → ( ( 1 · 𝑁 ) · 𝑋 ) = ( 𝑁 · 𝑋 ) )
27 sgrpmgm ( 𝐺 ∈ Smgrp → 𝐺 ∈ Mgm )
28 1 2 mulgnncl ( ( 𝐺 ∈ Mgm ∧ 𝑁 ∈ ℕ ∧ 𝑋𝐵 ) → ( 𝑁 · 𝑋 ) ∈ 𝐵 )
29 27 28 syl3an1 ( ( 𝐺 ∈ Smgrp ∧ 𝑁 ∈ ℕ ∧ 𝑋𝐵 ) → ( 𝑁 · 𝑋 ) ∈ 𝐵 )
30 29 3coml ( ( 𝑁 ∈ ℕ ∧ 𝑋𝐵𝐺 ∈ Smgrp ) → ( 𝑁 · 𝑋 ) ∈ 𝐵 )
31 1 2 mulg1 ( ( 𝑁 · 𝑋 ) ∈ 𝐵 → ( 1 · ( 𝑁 · 𝑋 ) ) = ( 𝑁 · 𝑋 ) )
32 30 31 syl ( ( 𝑁 ∈ ℕ ∧ 𝑋𝐵𝐺 ∈ Smgrp ) → ( 1 · ( 𝑁 · 𝑋 ) ) = ( 𝑁 · 𝑋 ) )
33 26 32 eqtr4d ( ( 𝑁 ∈ ℕ ∧ 𝑋𝐵𝐺 ∈ Smgrp ) → ( ( 1 · 𝑁 ) · 𝑋 ) = ( 1 · ( 𝑁 · 𝑋 ) ) )
34 oveq1 ( ( ( 𝑚 · 𝑁 ) · 𝑋 ) = ( 𝑚 · ( 𝑁 · 𝑋 ) ) → ( ( ( 𝑚 · 𝑁 ) · 𝑋 ) ( +g𝐺 ) ( 𝑁 · 𝑋 ) ) = ( ( 𝑚 · ( 𝑁 · 𝑋 ) ) ( +g𝐺 ) ( 𝑁 · 𝑋 ) ) )
35 nncn ( 𝑚 ∈ ℕ → 𝑚 ∈ ℂ )
36 35 adantr ( ( 𝑚 ∈ ℕ ∧ ( 𝑁 ∈ ℕ ∧ 𝑋𝐵𝐺 ∈ Smgrp ) ) → 𝑚 ∈ ℂ )
37 simpr1 ( ( 𝑚 ∈ ℕ ∧ ( 𝑁 ∈ ℕ ∧ 𝑋𝐵𝐺 ∈ Smgrp ) ) → 𝑁 ∈ ℕ )
38 37 nncnd ( ( 𝑚 ∈ ℕ ∧ ( 𝑁 ∈ ℕ ∧ 𝑋𝐵𝐺 ∈ Smgrp ) ) → 𝑁 ∈ ℂ )
39 36 38 adddirp1d ( ( 𝑚 ∈ ℕ ∧ ( 𝑁 ∈ ℕ ∧ 𝑋𝐵𝐺 ∈ Smgrp ) ) → ( ( 𝑚 + 1 ) · 𝑁 ) = ( ( 𝑚 · 𝑁 ) + 𝑁 ) )
40 39 oveq1d ( ( 𝑚 ∈ ℕ ∧ ( 𝑁 ∈ ℕ ∧ 𝑋𝐵𝐺 ∈ Smgrp ) ) → ( ( ( 𝑚 + 1 ) · 𝑁 ) · 𝑋 ) = ( ( ( 𝑚 · 𝑁 ) + 𝑁 ) · 𝑋 ) )
41 simpr3 ( ( 𝑚 ∈ ℕ ∧ ( 𝑁 ∈ ℕ ∧ 𝑋𝐵𝐺 ∈ Smgrp ) ) → 𝐺 ∈ Smgrp )
42 nnmulcl ( ( 𝑚 ∈ ℕ ∧ 𝑁 ∈ ℕ ) → ( 𝑚 · 𝑁 ) ∈ ℕ )
43 42 3ad2antr1 ( ( 𝑚 ∈ ℕ ∧ ( 𝑁 ∈ ℕ ∧ 𝑋𝐵𝐺 ∈ Smgrp ) ) → ( 𝑚 · 𝑁 ) ∈ ℕ )
44 simpr2 ( ( 𝑚 ∈ ℕ ∧ ( 𝑁 ∈ ℕ ∧ 𝑋𝐵𝐺 ∈ Smgrp ) ) → 𝑋𝐵 )
45 eqid ( +g𝐺 ) = ( +g𝐺 )
46 1 2 45 mulgnndir ( ( 𝐺 ∈ Smgrp ∧ ( ( 𝑚 · 𝑁 ) ∈ ℕ ∧ 𝑁 ∈ ℕ ∧ 𝑋𝐵 ) ) → ( ( ( 𝑚 · 𝑁 ) + 𝑁 ) · 𝑋 ) = ( ( ( 𝑚 · 𝑁 ) · 𝑋 ) ( +g𝐺 ) ( 𝑁 · 𝑋 ) ) )
47 41 43 37 44 46 syl13anc ( ( 𝑚 ∈ ℕ ∧ ( 𝑁 ∈ ℕ ∧ 𝑋𝐵𝐺 ∈ Smgrp ) ) → ( ( ( 𝑚 · 𝑁 ) + 𝑁 ) · 𝑋 ) = ( ( ( 𝑚 · 𝑁 ) · 𝑋 ) ( +g𝐺 ) ( 𝑁 · 𝑋 ) ) )
48 40 47 eqtrd ( ( 𝑚 ∈ ℕ ∧ ( 𝑁 ∈ ℕ ∧ 𝑋𝐵𝐺 ∈ Smgrp ) ) → ( ( ( 𝑚 + 1 ) · 𝑁 ) · 𝑋 ) = ( ( ( 𝑚 · 𝑁 ) · 𝑋 ) ( +g𝐺 ) ( 𝑁 · 𝑋 ) ) )
49 1 2 45 mulgnnp1 ( ( 𝑚 ∈ ℕ ∧ ( 𝑁 · 𝑋 ) ∈ 𝐵 ) → ( ( 𝑚 + 1 ) · ( 𝑁 · 𝑋 ) ) = ( ( 𝑚 · ( 𝑁 · 𝑋 ) ) ( +g𝐺 ) ( 𝑁 · 𝑋 ) ) )
50 30 49 sylan2 ( ( 𝑚 ∈ ℕ ∧ ( 𝑁 ∈ ℕ ∧ 𝑋𝐵𝐺 ∈ Smgrp ) ) → ( ( 𝑚 + 1 ) · ( 𝑁 · 𝑋 ) ) = ( ( 𝑚 · ( 𝑁 · 𝑋 ) ) ( +g𝐺 ) ( 𝑁 · 𝑋 ) ) )
51 48 50 eqeq12d ( ( 𝑚 ∈ ℕ ∧ ( 𝑁 ∈ ℕ ∧ 𝑋𝐵𝐺 ∈ Smgrp ) ) → ( ( ( ( 𝑚 + 1 ) · 𝑁 ) · 𝑋 ) = ( ( 𝑚 + 1 ) · ( 𝑁 · 𝑋 ) ) ↔ ( ( ( 𝑚 · 𝑁 ) · 𝑋 ) ( +g𝐺 ) ( 𝑁 · 𝑋 ) ) = ( ( 𝑚 · ( 𝑁 · 𝑋 ) ) ( +g𝐺 ) ( 𝑁 · 𝑋 ) ) ) )
52 34 51 syl5ibr ( ( 𝑚 ∈ ℕ ∧ ( 𝑁 ∈ ℕ ∧ 𝑋𝐵𝐺 ∈ Smgrp ) ) → ( ( ( 𝑚 · 𝑁 ) · 𝑋 ) = ( 𝑚 · ( 𝑁 · 𝑋 ) ) → ( ( ( 𝑚 + 1 ) · 𝑁 ) · 𝑋 ) = ( ( 𝑚 + 1 ) · ( 𝑁 · 𝑋 ) ) ) )
53 52 ex ( 𝑚 ∈ ℕ → ( ( 𝑁 ∈ ℕ ∧ 𝑋𝐵𝐺 ∈ Smgrp ) → ( ( ( 𝑚 · 𝑁 ) · 𝑋 ) = ( 𝑚 · ( 𝑁 · 𝑋 ) ) → ( ( ( 𝑚 + 1 ) · 𝑁 ) · 𝑋 ) = ( ( 𝑚 + 1 ) · ( 𝑁 · 𝑋 ) ) ) ) )
54 53 a2d ( 𝑚 ∈ ℕ → ( ( ( 𝑁 ∈ ℕ ∧ 𝑋𝐵𝐺 ∈ Smgrp ) → ( ( 𝑚 · 𝑁 ) · 𝑋 ) = ( 𝑚 · ( 𝑁 · 𝑋 ) ) ) → ( ( 𝑁 ∈ ℕ ∧ 𝑋𝐵𝐺 ∈ Smgrp ) → ( ( ( 𝑚 + 1 ) · 𝑁 ) · 𝑋 ) = ( ( 𝑚 + 1 ) · ( 𝑁 · 𝑋 ) ) ) ) )
55 7 12 17 22 33 54 nnind ( 𝑀 ∈ ℕ → ( ( 𝑁 ∈ ℕ ∧ 𝑋𝐵𝐺 ∈ Smgrp ) → ( ( 𝑀 · 𝑁 ) · 𝑋 ) = ( 𝑀 · ( 𝑁 · 𝑋 ) ) ) )
56 55 3expd ( 𝑀 ∈ ℕ → ( 𝑁 ∈ ℕ → ( 𝑋𝐵 → ( 𝐺 ∈ Smgrp → ( ( 𝑀 · 𝑁 ) · 𝑋 ) = ( 𝑀 · ( 𝑁 · 𝑋 ) ) ) ) ) )
57 56 com4r ( 𝐺 ∈ Smgrp → ( 𝑀 ∈ ℕ → ( 𝑁 ∈ ℕ → ( 𝑋𝐵 → ( ( 𝑀 · 𝑁 ) · 𝑋 ) = ( 𝑀 · ( 𝑁 · 𝑋 ) ) ) ) ) )
58 57 3imp2 ( ( 𝐺 ∈ Smgrp ∧ ( 𝑀 ∈ ℕ ∧ 𝑁 ∈ ℕ ∧ 𝑋𝐵 ) ) → ( ( 𝑀 · 𝑁 ) · 𝑋 ) = ( 𝑀 · ( 𝑁 · 𝑋 ) ) )