Metamath Proof Explorer


Theorem frmdmnd

Description: A free monoid is a monoid. (Contributed by Mario Carneiro, 27-Sep-2015) (Revised by Mario Carneiro, 27-Feb-2016)

Ref Expression
Hypothesis frmdmnd.m M=freeMndI
Assertion frmdmnd IVMMnd

Proof

Step Hyp Ref Expression
1 frmdmnd.m M=freeMndI
2 eqidd IVBaseM=BaseM
3 eqidd IV+M=+M
4 eqid BaseM=BaseM
5 eqid +M=+M
6 1 4 5 frmdadd xBaseMyBaseMx+My=x++y
7 1 4 frmdelbas xBaseMxWordI
8 1 4 frmdelbas yBaseMyWordI
9 ccatcl xWordIyWordIx++yWordI
10 7 8 9 syl2an xBaseMyBaseMx++yWordI
11 6 10 eqeltrd xBaseMyBaseMx+MyWordI
12 11 3adant1 IVxBaseMyBaseMx+MyWordI
13 1 4 frmdbas IVBaseM=WordI
14 13 3ad2ant1 IVxBaseMyBaseMBaseM=WordI
15 12 14 eleqtrrd IVxBaseMyBaseMx+MyBaseM
16 simpr1 IVxBaseMyBaseMzBaseMxBaseM
17 16 7 syl IVxBaseMyBaseMzBaseMxWordI
18 simpr2 IVxBaseMyBaseMzBaseMyBaseM
19 18 8 syl IVxBaseMyBaseMzBaseMyWordI
20 simpr3 IVxBaseMyBaseMzBaseMzBaseM
21 1 4 frmdelbas zBaseMzWordI
22 20 21 syl IVxBaseMyBaseMzBaseMzWordI
23 ccatass xWordIyWordIzWordIx++y++z=x++y++z
24 17 19 22 23 syl3anc IVxBaseMyBaseMzBaseMx++y++z=x++y++z
25 16 18 10 syl2anc IVxBaseMyBaseMzBaseMx++yWordI
26 13 adantr IVxBaseMyBaseMzBaseMBaseM=WordI
27 25 26 eleqtrrd IVxBaseMyBaseMzBaseMx++yBaseM
28 1 4 5 frmdadd x++yBaseMzBaseMx++y+Mz=x++y++z
29 27 20 28 syl2anc IVxBaseMyBaseMzBaseMx++y+Mz=x++y++z
30 ccatcl yWordIzWordIy++zWordI
31 19 22 30 syl2anc IVxBaseMyBaseMzBaseMy++zWordI
32 31 26 eleqtrrd IVxBaseMyBaseMzBaseMy++zBaseM
33 1 4 5 frmdadd xBaseMy++zBaseMx+My++z=x++y++z
34 16 32 33 syl2anc IVxBaseMyBaseMzBaseMx+My++z=x++y++z
35 24 29 34 3eqtr4d IVxBaseMyBaseMzBaseMx++y+Mz=x+My++z
36 16 18 6 syl2anc IVxBaseMyBaseMzBaseMx+My=x++y
37 36 oveq1d IVxBaseMyBaseMzBaseMx+My+Mz=x++y+Mz
38 1 4 5 frmdadd yBaseMzBaseMy+Mz=y++z
39 18 20 38 syl2anc IVxBaseMyBaseMzBaseMy+Mz=y++z
40 39 oveq2d IVxBaseMyBaseMzBaseMx+My+Mz=x+My++z
41 35 37 40 3eqtr4d IVxBaseMyBaseMzBaseMx+My+Mz=x+My+Mz
42 wrd0 WordI
43 42 13 eleqtrrid IVBaseM
44 1 4 5 frmdadd BaseMxBaseM+Mx=++x
45 43 44 sylan IVxBaseM+Mx=++x
46 7 adantl IVxBaseMxWordI
47 ccatlid xWordI++x=x
48 46 47 syl IVxBaseM++x=x
49 45 48 eqtrd IVxBaseM+Mx=x
50 1 4 5 frmdadd xBaseMBaseMx+M=x++
51 50 ancoms BaseMxBaseMx+M=x++
52 43 51 sylan IVxBaseMx+M=x++
53 ccatrid xWordIx++=x
54 46 53 syl IVxBaseMx++=x
55 52 54 eqtrd IVxBaseMx+M=x
56 2 3 15 41 43 49 55 ismndd IVMMnd