Metamath Proof Explorer


Theorem cshwidxmod

Description: The symbol at a given index of a cyclically shifted nonempty word is the symbol at the shifted index of the original word. (Contributed by AV, 13-May-2018) (Revised by AV, 21-May-2018) (Revised by AV, 30-Oct-2018) (Proof shortened by AV, 12-Oct-2022)

Ref Expression
Assertion cshwidxmod WWordVNI0..^WWcyclShiftNI=WI+NmodW

Proof

Step Hyp Ref Expression
1 elfzo0 I0..^WI0WI<W
2 nnne0 WW0
3 eqneqall W=0W0WcyclShiftNI=WI+NmodW
4 2 3 syl5com WW=0WcyclShiftNI=WI+NmodW
5 4 3ad2ant2 I0WI<WW=0WcyclShiftNI=WI+NmodW
6 1 5 sylbi I0..^WW=0WcyclShiftNI=WI+NmodW
7 6 3ad2ant3 WWordVNI0..^WW=0WcyclShiftNI=WI+NmodW
8 lencl WWordVW0
9 elnnne0 WW0W0
10 simprl WNI0..^WN
11 cshword WWordVNWcyclShiftN=WsubstrNmodWW++WprefixNmodW
12 10 11 sylan2 WWordVWNI0..^WWcyclShiftN=WsubstrNmodWW++WprefixNmodW
13 12 fveq1d WWordVWNI0..^WWcyclShiftNI=WsubstrNmodWW++WprefixNmodWI
14 swrdcl WWordVWsubstrNmodWWWordV
15 14 adantr WWordVWNI0..^WWsubstrNmodWWWordV
16 pfxcl WWordVWprefixNmodWWordV
17 16 adantr WWordVWNI0..^WWprefixNmodWWordV
18 simpl WWordVWNI0..^WWWordV
19 simpl NI0..^WN
20 19 anim2i WNI0..^WWN
21 20 adantl WWordVWNI0..^WWN
22 21 ancomd WWordVWNI0..^WNW
23 zmodfzp1 NWNmodW0W
24 22 23 syl WWordVWNI0..^WNmodW0W
25 nn0fz0 W0W0W
26 8 25 sylib WWordVW0W
27 26 adantr WWordVWNI0..^WW0W
28 swrdlen WWordVNmodW0WW0WWsubstrNmodWW=WNmodW
29 18 24 27 28 syl3anc WWordVWNI0..^WWsubstrNmodWW=WNmodW
30 20 ancomd WNI0..^WNW
31 30 23 syl WNI0..^WNmodW0W
32 pfxlen WWordVNmodW0WWprefixNmodW=NmodW
33 31 32 sylan2 WWordVWNI0..^WWprefixNmodW=NmodW
34 29 33 oveq12d WWordVWNI0..^WWsubstrNmodWW+WprefixNmodW=W-NmodW+NmodW
35 29 34 oveq12d WWordVWNI0..^WWsubstrNmodWW..^WsubstrNmodWW+WprefixNmodW=WNmodW..^W-NmodW+NmodW
36 35 eleq2d WWordVWNI0..^WIWsubstrNmodWW..^WsubstrNmodWW+WprefixNmodWIWNmodW..^W-NmodW+NmodW
37 36 biimparc IWNmodW..^W-NmodW+NmodWWWordVWNI0..^WIWsubstrNmodWW..^WsubstrNmodWW+WprefixNmodW
38 ccatval2 WsubstrNmodWWWordVWprefixNmodWWordVIWsubstrNmodWW..^WsubstrNmodWW+WprefixNmodWWsubstrNmodWW++WprefixNmodWI=WprefixNmodWIWsubstrNmodWW
39 15 17 37 38 syl2an23an IWNmodW..^W-NmodW+NmodWWWordVWNI0..^WWsubstrNmodWW++WprefixNmodWI=WprefixNmodWIWsubstrNmodWW
40 26 ad2antrl IWNmodW..^W-NmodW+NmodWWWordVWNI0..^WW0W
41 18 24 40 28 syl2an23an IWNmodW..^W-NmodW+NmodWWWordVWNI0..^WWsubstrNmodWW=WNmodW
42 41 oveq2d IWNmodW..^W-NmodW+NmodWWWordVWNI0..^WIWsubstrNmodWW=IWNmodW
43 42 fveq2d IWNmodW..^W-NmodW+NmodWWWordVWNI0..^WWprefixNmodWIWsubstrNmodWW=WprefixNmodWIWNmodW
44 elfzo2 IWNmodW..^W-NmodW+NmodWIWNmodWW-NmodW+NmodWI<W-NmodW+NmodW
45 eluz2 IWNmodWWNmodWIWNmodWI
46 simpl INWI
47 nnz WW
48 47 adantl NWW
49 zmodcl NWNmodW0
50 49 nn0zd NWNmodW
51 48 50 zsubcld NWWNmodW
52 51 adantl INWWNmodW
53 46 52 zsubcld INWIWNmodW
54 53 adantlr IWNmodWINWIWNmodW
55 zre II
56 nnre WW
57 56 adantl NWW
58 49 nn0red NWNmodW
59 57 58 resubcld NWWNmodW
60 subge0 IWNmodW0IWNmodWWNmodWI
61 55 59 60 syl2an INW0IWNmodWWNmodWI
62 61 exbiri INWWNmodWI0IWNmodW
63 62 com23 IWNmodWINW0IWNmodW
64 63 imp31 IWNmodWINW0IWNmodW
65 elnn0uz IWNmodW0IWNmodW0
66 elnn0z IWNmodW0IWNmodW0IWNmodW
67 65 66 bitr3i IWNmodW0IWNmodW0IWNmodW
68 54 64 67 sylanbrc IWNmodWINWIWNmodW0
69 68 adantlr IWNmodWII<W-NmodW+NmodWNWIWNmodW0
70 50 adantl IWNmodWII<W-NmodW+NmodWNWNmodW
71 55 adantr INWI
72 59 adantl INWWNmodW
73 58 adantl INWNmodW
74 71 72 73 ltsubadd2d INWIWNmodW<NmodWI<W-NmodW+NmodW
75 74 adantlr IWNmodWINWIWNmodW<NmodWI<W-NmodW+NmodW
76 75 exbiri IWNmodWINWI<W-NmodW+NmodWIWNmodW<NmodW
77 76 com23 IWNmodWII<W-NmodW+NmodWNWIWNmodW<NmodW
78 77 imp31 IWNmodWII<W-NmodW+NmodWNWIWNmodW<NmodW
79 elfzo2 IWNmodW0..^NmodWIWNmodW0NmodWIWNmodW<NmodW
80 69 70 78 79 syl3anbrc IWNmodWII<W-NmodW+NmodWNWIWNmodW0..^NmodW
81 80 exp31 IWNmodWII<W-NmodW+NmodWNWIWNmodW0..^NmodW
82 81 3adant1 WNmodWIWNmodWII<W-NmodW+NmodWNWIWNmodW0..^NmodW
83 45 82 sylbi IWNmodWI<W-NmodW+NmodWNWIWNmodW0..^NmodW
84 83 imp IWNmodWI<W-NmodW+NmodWNWIWNmodW0..^NmodW
85 84 3adant2 IWNmodWW-NmodW+NmodWI<W-NmodW+NmodWNWIWNmodW0..^NmodW
86 44 85 sylbi IWNmodW..^W-NmodW+NmodWNWIWNmodW0..^NmodW
87 86 expdcom NWIWNmodW..^W-NmodW+NmodWIWNmodW0..^NmodW
88 87 adantr NI0..^WWIWNmodW..^W-NmodW+NmodWIWNmodW0..^NmodW
89 88 impcom WNI0..^WIWNmodW..^W-NmodW+NmodWIWNmodW0..^NmodW
90 89 adantl WWordVWNI0..^WIWNmodW..^W-NmodW+NmodWIWNmodW0..^NmodW
91 90 impcom IWNmodW..^W-NmodW+NmodWWWordVWNI0..^WIWNmodW0..^NmodW
92 pfxfv WWordVNmodW0WIWNmodW0..^NmodWWprefixNmodWIWNmodW=WIWNmodW
93 18 24 91 92 syl2an23an IWNmodW..^W-NmodW+NmodWWWordVWNI0..^WWprefixNmodWIWNmodW=WIWNmodW
94 elfzoelz I0..^WI
95 94 zcnd I0..^WI
96 95 ad2antll WNI0..^WI
97 nncn WW
98 97 adantr WNI0..^WW
99 30 49 syl WNI0..^WNmodW0
100 99 nn0cnd WNI0..^WNmodW
101 96 98 100 subsub3d WNI0..^WIWNmodW=I+NmodW-W
102 101 ad2antll IWNmodW..^W-NmodW+NmodWWWordVWNI0..^WIWNmodW=I+NmodW-W
103 30 ad2antll IWNmodW..^W-NmodW+NmodWWWordVWNI0..^WNW
104 97 adantl NWW
105 49 nn0cnd NWNmodW
106 104 105 npcand NWW-NmodW+NmodW=W
107 106 ex NWW-NmodW+NmodW=W
108 107 adantr NI0..^WWW-NmodW+NmodW=W
109 108 impcom WNI0..^WW-NmodW+NmodW=W
110 109 adantl WWordVWNI0..^WW-NmodW+NmodW=W
111 110 oveq2d WWordVWNI0..^WWNmodW..^W-NmodW+NmodW=WNmodW..^W
112 111 eleq2d WWordVWNI0..^WIWNmodW..^W-NmodW+NmodWIWNmodW..^W
113 112 biimpac IWNmodW..^W-NmodW+NmodWWWordVWNI0..^WIWNmodW..^W
114 modaddmodup NWIWNmodW..^WI+NmodW-W=I+NmodW
115 103 113 114 sylc IWNmodW..^W-NmodW+NmodWWWordVWNI0..^WI+NmodW-W=I+NmodW
116 102 115 eqtrd IWNmodW..^W-NmodW+NmodWWWordVWNI0..^WIWNmodW=I+NmodW
117 116 fveq2d IWNmodW..^W-NmodW+NmodWWWordVWNI0..^WWIWNmodW=WI+NmodW
118 93 117 eqtrd IWNmodW..^W-NmodW+NmodWWWordVWNI0..^WWprefixNmodWIWNmodW=WI+NmodW
119 39 43 118 3eqtrd IWNmodW..^W-NmodW+NmodWWWordVWNI0..^WWsubstrNmodWW++WprefixNmodWI=WI+NmodW
120 119 ex IWNmodW..^W-NmodW+NmodWWWordVWNI0..^WWsubstrNmodWW++WprefixNmodWI=WI+NmodW
121 112 notbid WWordVWNI0..^W¬IWNmodW..^W-NmodW+NmodW¬IWNmodW..^W
122 14 ad2antrr WWordVWNI0..^W¬IWNmodW..^WWsubstrNmodWWWordV
123 16 ad2antrr WWordVWNI0..^W¬IWNmodW..^WWprefixNmodWWordV
124 49 ancoms WNNmodW0
125 124 nn0zd WNNmodW
126 125 adantrr WNI0..^WNmodW
127 zre NN
128 127 adantr NI0..^WN
129 nnrp WW+
130 modlt NW+NmodW<W
131 128 129 130 syl2anr WNI0..^WNmodW<W
132 simprrr WWordVWNI0..^WI0..^W
133 fzonfzoufzol NmodWNmodW<WI0..^W¬IWNmodW..^WI0..^WNmodW
134 126 131 132 133 syl2an23an WWordVWNI0..^W¬IWNmodW..^WI0..^WNmodW
135 134 imp WWordVWNI0..^W¬IWNmodW..^WI0..^WNmodW
136 simpll WWordVWNI0..^W¬IWNmodW..^WWWordV
137 24 adantr WWordVWNI0..^W¬IWNmodW..^WNmodW0W
138 26 ad2antrr WWordVWNI0..^W¬IWNmodW..^WW0W
139 136 137 138 28 syl3anc WWordVWNI0..^W¬IWNmodW..^WWsubstrNmodWW=WNmodW
140 139 oveq2d WWordVWNI0..^W¬IWNmodW..^W0..^WsubstrNmodWW=0..^WNmodW
141 135 140 eleqtrrd WWordVWNI0..^W¬IWNmodW..^WI0..^WsubstrNmodWW
142 ccatval1 WsubstrNmodWWWordVWprefixNmodWWordVI0..^WsubstrNmodWWWsubstrNmodWW++WprefixNmodWI=WsubstrNmodWWI
143 122 123 141 142 syl3anc WWordVWNI0..^W¬IWNmodW..^WWsubstrNmodWW++WprefixNmodWI=WsubstrNmodWWI
144 swrdfv WWordVNmodW0WW0WI0..^WNmodWWsubstrNmodWWI=WI+NmodW
145 136 137 138 135 144 syl31anc WWordVWNI0..^W¬IWNmodW..^WWsubstrNmodWWI=WI+NmodW
146 30 ad2antlr WWordVWNI0..^W¬IWNmodW..^WNW
147 modaddmodlo NWI0..^WNmodWI+NmodW=I+NmodW
148 146 135 147 sylc WWordVWNI0..^W¬IWNmodW..^WI+NmodW=I+NmodW
149 148 fveq2d WWordVWNI0..^W¬IWNmodW..^WWI+NmodW=WI+NmodW
150 143 145 149 3eqtrd WWordVWNI0..^W¬IWNmodW..^WWsubstrNmodWW++WprefixNmodWI=WI+NmodW
151 150 ex WWordVWNI0..^W¬IWNmodW..^WWsubstrNmodWW++WprefixNmodWI=WI+NmodW
152 121 151 sylbid WWordVWNI0..^W¬IWNmodW..^W-NmodW+NmodWWsubstrNmodWW++WprefixNmodWI=WI+NmodW
153 152 com12 ¬IWNmodW..^W-NmodW+NmodWWWordVWNI0..^WWsubstrNmodWW++WprefixNmodWI=WI+NmodW
154 120 153 pm2.61i WWordVWNI0..^WWsubstrNmodWW++WprefixNmodWI=WI+NmodW
155 13 154 eqtrd WWordVWNI0..^WWcyclShiftNI=WI+NmodW
156 155 exp32 WWordVWNI0..^WWcyclShiftNI=WI+NmodW
157 156 com12 WWWordVNI0..^WWcyclShiftNI=WI+NmodW
158 9 157 sylbir W0W0WWordVNI0..^WWcyclShiftNI=WI+NmodW
159 158 ex W0W0WWordVNI0..^WWcyclShiftNI=WI+NmodW
160 159 com23 W0WWordVW0NI0..^WWcyclShiftNI=WI+NmodW
161 8 160 mpcom WWordVW0NI0..^WWcyclShiftNI=WI+NmodW
162 161 com23 WWordVNI0..^WW0WcyclShiftNI=WI+NmodW
163 162 3impib WWordVNI0..^WW0WcyclShiftNI=WI+NmodW
164 7 163 pm2.61dne WWordVNI0..^WWcyclShiftNI=WI+NmodW