Metamath Proof Explorer


Theorem cshword

Description: Perform a cyclical shift for a word. (Contributed by Alexander van der Vekens, 20-May-2018) (Revised by AV, 12-Oct-2022)

Ref Expression
Assertion cshword WWordVNWcyclShiftN=WsubstrNmodWW++WprefixNmodW

Proof

Step Hyp Ref Expression
1 iswrd WWordVl0W:0..^lV
2 ffn W:0..^lVWFn0..^l
3 2 reximi l0W:0..^lVl0WFn0..^l
4 1 3 sylbi WWordVl0WFn0..^l
5 fneq1 w=WwFn0..^lWFn0..^l
6 5 rexbidv w=Wl0wFn0..^ll0WFn0..^l
7 6 elabg WWordVWw|l0wFn0..^ll0WFn0..^l
8 4 7 mpbird WWordVWw|l0wFn0..^l
9 cshfn Ww|l0wFn0..^lNWcyclShiftN=ifW=WsubstrNmodWW++WprefixNmodW
10 8 9 sylan WWordVNWcyclShiftN=ifW=WsubstrNmodWW++WprefixNmodW
11 iftrue W=ifW=WsubstrNmodWW++WprefixNmodW=
12 11 adantr W=WWordVNifW=WsubstrNmodWW++WprefixNmodW=
13 oveq1 W=WsubstrNmodWW=substrNmodWW
14 swrd0 substrNmodWW=
15 13 14 eqtrdi W=WsubstrNmodWW=
16 oveq1 W=WprefixNmodW=prefixNmodW
17 pfx0 prefixNmodW=
18 16 17 eqtrdi W=WprefixNmodW=
19 15 18 oveq12d W=WsubstrNmodWW++WprefixNmodW=++
20 19 adantr W=WWordVNWsubstrNmodWW++WprefixNmodW=++
21 ccatidid ++=
22 20 21 eqtr2di W=WWordVN=WsubstrNmodWW++WprefixNmodW
23 12 22 eqtrd W=WWordVNifW=WsubstrNmodWW++WprefixNmodW=WsubstrNmodWW++WprefixNmodW
24 iffalse ¬W=ifW=WsubstrNmodWW++WprefixNmodW=WsubstrNmodWW++WprefixNmodW
25 24 adantr ¬W=WWordVNifW=WsubstrNmodWW++WprefixNmodW=WsubstrNmodWW++WprefixNmodW
26 23 25 pm2.61ian WWordVNifW=WsubstrNmodWW++WprefixNmodW=WsubstrNmodWW++WprefixNmodW
27 10 26 eqtrd WWordVNWcyclShiftN=WsubstrNmodWW++WprefixNmodW