Metamath Proof Explorer


Theorem cshwlen

Description: The length of a cyclically shifted word is the same as the length of the original word. (Contributed by AV, 16-May-2018) (Revised by AV, 20-May-2018) (Revised by AV, 27-Oct-2018) (Proof shortened by AV, 16-Oct-2022)

Ref Expression
Assertion cshwlen WWordVNWcyclShiftN=W

Proof

Step Hyp Ref Expression
1 0csh0 cyclShiftN=
2 oveq1 W=WcyclShiftN=cyclShiftN
3 id W=W=
4 1 2 3 3eqtr4a W=WcyclShiftN=W
5 4 fveq2d W=WcyclShiftN=W
6 5 a1d W=WWordVNWcyclShiftN=W
7 cshword WWordVNWcyclShiftN=WsubstrNmodWW++WprefixNmodW
8 7 fveq2d WWordVNWcyclShiftN=WsubstrNmodWW++WprefixNmodW
9 8 adantr WWordVNWWcyclShiftN=WsubstrNmodWW++WprefixNmodW
10 swrdcl WWordVWsubstrNmodWWWordV
11 pfxcl WWordVWprefixNmodWWordV
12 ccatlen WsubstrNmodWWWordVWprefixNmodWWordVWsubstrNmodWW++WprefixNmodW=WsubstrNmodWW+WprefixNmodW
13 10 11 12 syl2anc WWordVWsubstrNmodWW++WprefixNmodW=WsubstrNmodWW+WprefixNmodW
14 13 ad2antrr WWordVNWWsubstrNmodWW++WprefixNmodW=WsubstrNmodWW+WprefixNmodW
15 lennncl WWordVWW
16 pm3.21 WNWWordVWWordVWN
17 16 ex WNWWordVWWordVWN
18 15 17 syl WWordVWNWWordVWWordVWN
19 18 ex WWordVWNWWordVWWordVWN
20 19 com24 WWordVWWordVNWWWordVWN
21 20 pm2.43i WWordVNWWWordVWN
22 21 imp31 WWordVNWWWordVWN
23 simpl WWordVWNWWordV
24 zmodfzp1 NWNmodW0W
25 24 ancoms WNNmodW0W
26 25 adantl WWordVWNNmodW0W
27 lencl WWordVW0
28 nn0fz0 W0W0W
29 27 28 sylib WWordVW0W
30 29 adantr WWordVWNW0W
31 swrdlen WWordVNmodW0WW0WWsubstrNmodWW=WNmodW
32 23 26 30 31 syl3anc WWordVWNWsubstrNmodWW=WNmodW
33 pfxlen WWordVNmodW0WWprefixNmodW=NmodW
34 25 33 sylan2 WWordVWNWprefixNmodW=NmodW
35 32 34 oveq12d WWordVWNWsubstrNmodWW+WprefixNmodW=W-NmodW+NmodW
36 27 nn0cnd WWordVW
37 zmodcl NWNmodW0
38 37 nn0cnd NWNmodW
39 38 ancoms WNNmodW
40 npcan WNmodWW-NmodW+NmodW=W
41 36 39 40 syl2an WWordVWNW-NmodW+NmodW=W
42 35 41 eqtrd WWordVWNWsubstrNmodWW+WprefixNmodW=W
43 22 42 syl WWordVNWWsubstrNmodWW+WprefixNmodW=W
44 9 14 43 3eqtrd WWordVNWWcyclShiftN=W
45 44 expcom WWWordVNWcyclShiftN=W
46 6 45 pm2.61ine WWordVNWcyclShiftN=W