Metamath Proof Explorer


Theorem frgpadd

Description: Addition in the free group is given by concatenation. (Contributed by Mario Carneiro, 1-Oct-2015)

Ref Expression
Hypotheses frgpadd.w 𝑊 = ( I ‘ Word ( 𝐼 × 2o ) )
frgpadd.g 𝐺 = ( freeGrp ‘ 𝐼 )
frgpadd.r = ( ~FG𝐼 )
frgpadd.n + = ( +g𝐺 )
Assertion frgpadd ( ( 𝐴𝑊𝐵𝑊 ) → ( [ 𝐴 ] + [ 𝐵 ] ) = [ ( 𝐴 ++ 𝐵 ) ] )

Proof

Step Hyp Ref Expression
1 frgpadd.w 𝑊 = ( I ‘ Word ( 𝐼 × 2o ) )
2 frgpadd.g 𝐺 = ( freeGrp ‘ 𝐼 )
3 frgpadd.r = ( ~FG𝐼 )
4 frgpadd.n + = ( +g𝐺 )
5 simpl ( ( 𝐴𝑊𝐵𝑊 ) → 𝐴𝑊 )
6 simpr ( ( 𝐴𝑊𝐵𝑊 ) → 𝐵𝑊 )
7 1 efgrcl ( 𝐴𝑊 → ( 𝐼 ∈ V ∧ 𝑊 = Word ( 𝐼 × 2o ) ) )
8 7 adantr ( ( 𝐴𝑊𝐵𝑊 ) → ( 𝐼 ∈ V ∧ 𝑊 = Word ( 𝐼 × 2o ) ) )
9 8 simpld ( ( 𝐴𝑊𝐵𝑊 ) → 𝐼 ∈ V )
10 eqid ( freeMnd ‘ ( 𝐼 × 2o ) ) = ( freeMnd ‘ ( 𝐼 × 2o ) )
11 2 10 3 frgpval ( 𝐼 ∈ V → 𝐺 = ( ( freeMnd ‘ ( 𝐼 × 2o ) ) /s ) )
12 9 11 syl ( ( 𝐴𝑊𝐵𝑊 ) → 𝐺 = ( ( freeMnd ‘ ( 𝐼 × 2o ) ) /s ) )
13 8 simprd ( ( 𝐴𝑊𝐵𝑊 ) → 𝑊 = Word ( 𝐼 × 2o ) )
14 2on 2o ∈ On
15 xpexg ( ( 𝐼 ∈ V ∧ 2o ∈ On ) → ( 𝐼 × 2o ) ∈ V )
16 9 14 15 sylancl ( ( 𝐴𝑊𝐵𝑊 ) → ( 𝐼 × 2o ) ∈ V )
17 eqid ( Base ‘ ( freeMnd ‘ ( 𝐼 × 2o ) ) ) = ( Base ‘ ( freeMnd ‘ ( 𝐼 × 2o ) ) )
18 10 17 frmdbas ( ( 𝐼 × 2o ) ∈ V → ( Base ‘ ( freeMnd ‘ ( 𝐼 × 2o ) ) ) = Word ( 𝐼 × 2o ) )
19 16 18 syl ( ( 𝐴𝑊𝐵𝑊 ) → ( Base ‘ ( freeMnd ‘ ( 𝐼 × 2o ) ) ) = Word ( 𝐼 × 2o ) )
20 13 19 eqtr4d ( ( 𝐴𝑊𝐵𝑊 ) → 𝑊 = ( Base ‘ ( freeMnd ‘ ( 𝐼 × 2o ) ) ) )
21 1 3 efger Er 𝑊
22 21 a1i ( ( 𝐴𝑊𝐵𝑊 ) → Er 𝑊 )
23 10 frmdmnd ( ( 𝐼 × 2o ) ∈ V → ( freeMnd ‘ ( 𝐼 × 2o ) ) ∈ Mnd )
24 16 23 syl ( ( 𝐴𝑊𝐵𝑊 ) → ( freeMnd ‘ ( 𝐼 × 2o ) ) ∈ Mnd )
25 eqid ( +g ‘ ( freeMnd ‘ ( 𝐼 × 2o ) ) ) = ( +g ‘ ( freeMnd ‘ ( 𝐼 × 2o ) ) )
26 2 10 3 25 frgpcpbl ( ( 𝑎 𝑏𝑐 𝑑 ) → ( 𝑎 ( +g ‘ ( freeMnd ‘ ( 𝐼 × 2o ) ) ) 𝑐 ) ( 𝑏 ( +g ‘ ( freeMnd ‘ ( 𝐼 × 2o ) ) ) 𝑑 ) )
27 26 a1i ( ( 𝐴𝑊𝐵𝑊 ) → ( ( 𝑎 𝑏𝑐 𝑑 ) → ( 𝑎 ( +g ‘ ( freeMnd ‘ ( 𝐼 × 2o ) ) ) 𝑐 ) ( 𝑏 ( +g ‘ ( freeMnd ‘ ( 𝐼 × 2o ) ) ) 𝑑 ) ) )
28 24 adantr ( ( ( 𝐴𝑊𝐵𝑊 ) ∧ ( 𝑏𝑊𝑑𝑊 ) ) → ( freeMnd ‘ ( 𝐼 × 2o ) ) ∈ Mnd )
29 simprl ( ( ( 𝐴𝑊𝐵𝑊 ) ∧ ( 𝑏𝑊𝑑𝑊 ) ) → 𝑏𝑊 )
30 20 adantr ( ( ( 𝐴𝑊𝐵𝑊 ) ∧ ( 𝑏𝑊𝑑𝑊 ) ) → 𝑊 = ( Base ‘ ( freeMnd ‘ ( 𝐼 × 2o ) ) ) )
31 29 30 eleqtrd ( ( ( 𝐴𝑊𝐵𝑊 ) ∧ ( 𝑏𝑊𝑑𝑊 ) ) → 𝑏 ∈ ( Base ‘ ( freeMnd ‘ ( 𝐼 × 2o ) ) ) )
32 simprr ( ( ( 𝐴𝑊𝐵𝑊 ) ∧ ( 𝑏𝑊𝑑𝑊 ) ) → 𝑑𝑊 )
33 32 30 eleqtrd ( ( ( 𝐴𝑊𝐵𝑊 ) ∧ ( 𝑏𝑊𝑑𝑊 ) ) → 𝑑 ∈ ( Base ‘ ( freeMnd ‘ ( 𝐼 × 2o ) ) ) )
34 17 25 mndcl ( ( ( freeMnd ‘ ( 𝐼 × 2o ) ) ∈ Mnd ∧ 𝑏 ∈ ( Base ‘ ( freeMnd ‘ ( 𝐼 × 2o ) ) ) ∧ 𝑑 ∈ ( Base ‘ ( freeMnd ‘ ( 𝐼 × 2o ) ) ) ) → ( 𝑏 ( +g ‘ ( freeMnd ‘ ( 𝐼 × 2o ) ) ) 𝑑 ) ∈ ( Base ‘ ( freeMnd ‘ ( 𝐼 × 2o ) ) ) )
35 28 31 33 34 syl3anc ( ( ( 𝐴𝑊𝐵𝑊 ) ∧ ( 𝑏𝑊𝑑𝑊 ) ) → ( 𝑏 ( +g ‘ ( freeMnd ‘ ( 𝐼 × 2o ) ) ) 𝑑 ) ∈ ( Base ‘ ( freeMnd ‘ ( 𝐼 × 2o ) ) ) )
36 35 30 eleqtrrd ( ( ( 𝐴𝑊𝐵𝑊 ) ∧ ( 𝑏𝑊𝑑𝑊 ) ) → ( 𝑏 ( +g ‘ ( freeMnd ‘ ( 𝐼 × 2o ) ) ) 𝑑 ) ∈ 𝑊 )
37 12 20 22 24 27 36 25 4 qusaddval ( ( ( 𝐴𝑊𝐵𝑊 ) ∧ 𝐴𝑊𝐵𝑊 ) → ( [ 𝐴 ] + [ 𝐵 ] ) = [ ( 𝐴 ( +g ‘ ( freeMnd ‘ ( 𝐼 × 2o ) ) ) 𝐵 ) ] )
38 5 6 37 mpd3an23 ( ( 𝐴𝑊𝐵𝑊 ) → ( [ 𝐴 ] + [ 𝐵 ] ) = [ ( 𝐴 ( +g ‘ ( freeMnd ‘ ( 𝐼 × 2o ) ) ) 𝐵 ) ] )
39 5 20 eleqtrd ( ( 𝐴𝑊𝐵𝑊 ) → 𝐴 ∈ ( Base ‘ ( freeMnd ‘ ( 𝐼 × 2o ) ) ) )
40 6 20 eleqtrd ( ( 𝐴𝑊𝐵𝑊 ) → 𝐵 ∈ ( Base ‘ ( freeMnd ‘ ( 𝐼 × 2o ) ) ) )
41 10 17 25 frmdadd ( ( 𝐴 ∈ ( Base ‘ ( freeMnd ‘ ( 𝐼 × 2o ) ) ) ∧ 𝐵 ∈ ( Base ‘ ( freeMnd ‘ ( 𝐼 × 2o ) ) ) ) → ( 𝐴 ( +g ‘ ( freeMnd ‘ ( 𝐼 × 2o ) ) ) 𝐵 ) = ( 𝐴 ++ 𝐵 ) )
42 39 40 41 syl2anc ( ( 𝐴𝑊𝐵𝑊 ) → ( 𝐴 ( +g ‘ ( freeMnd ‘ ( 𝐼 × 2o ) ) ) 𝐵 ) = ( 𝐴 ++ 𝐵 ) )
43 42 eceq1d ( ( 𝐴𝑊𝐵𝑊 ) → [ ( 𝐴 ( +g ‘ ( freeMnd ‘ ( 𝐼 × 2o ) ) ) 𝐵 ) ] = [ ( 𝐴 ++ 𝐵 ) ] )
44 38 43 eqtrd ( ( 𝐴𝑊𝐵𝑊 ) → ( [ 𝐴 ] + [ 𝐵 ] ) = [ ( 𝐴 ++ 𝐵 ) ] )