Metamath Proof Explorer


Theorem cshwcsh2id

Description: A cyclically shifted word can be reconstructed by cyclically shifting it again twice. Lemma for erclwwlktr and erclwwlkntr . (Contributed by AV, 9-Apr-2018) (Revised by AV, 11-Jun-2018) (Proof shortened by AV, 3-Nov-2018)

Ref Expression
Hypotheses cshwcsh2id.1 φzWordV
cshwcsh2id.2 φy=zx=y
Assertion cshwcsh2id φm0yx=ycyclShiftmk0zy=zcyclShiftkn0zx=zcyclShiftn

Proof

Step Hyp Ref Expression
1 cshwcsh2id.1 φzWordV
2 cshwcsh2id.2 φy=zx=y
3 oveq1 y=zcyclShiftkycyclShiftm=zcyclShiftkcyclShiftm
4 3 eqeq2d y=zcyclShiftkx=ycyclShiftmx=zcyclShiftkcyclShiftm
5 4 anbi2d y=zcyclShiftkm0yx=ycyclShiftmm0yx=zcyclShiftkcyclShiftm
6 5 adantr y=zcyclShiftkk0zm0yx=ycyclShiftmm0yx=zcyclShiftkcyclShiftm
7 elfznn0 k0zk0
8 elfznn0 m0ym0
9 nn0addcl k0m0k+m0
10 7 8 9 syl2anr m0yk0zk+m0
11 10 adantr m0yk0zk+mzφk+m0
12 elfz3nn0 k0zz0
13 12 ad2antlr m0yk0zk+mzφz0
14 simprl m0yk0zk+mzφk+mz
15 elfz2nn0 k+m0zk+m0z0k+mz
16 11 13 14 15 syl3anbrc m0yk0zk+mzφk+m0z
17 16 adantr m0yk0zk+mzφx=zcyclShiftkcyclShiftmk+m0z
18 1 adantl k+mzφzWordV
19 18 adantl m0yk0zk+mzφzWordV
20 elfzelz k0zk
21 20 ad2antlr m0yk0zk+mzφk
22 elfzelz m0ym
23 22 adantr m0yk0zm
24 23 adantr m0yk0zk+mzφm
25 2cshw zWordVkmzcyclShiftkcyclShiftm=zcyclShiftk+m
26 19 21 24 25 syl3anc m0yk0zk+mzφzcyclShiftkcyclShiftm=zcyclShiftk+m
27 26 eqeq2d m0yk0zk+mzφx=zcyclShiftkcyclShiftmx=zcyclShiftk+m
28 27 biimpa m0yk0zk+mzφx=zcyclShiftkcyclShiftmx=zcyclShiftk+m
29 17 28 jca m0yk0zk+mzφx=zcyclShiftkcyclShiftmk+m0zx=zcyclShiftk+m
30 29 exp41 m0yk0zk+mzφx=zcyclShiftkcyclShiftmk+m0zx=zcyclShiftk+m
31 30 com23 m0yk+mzφk0zx=zcyclShiftkcyclShiftmk+m0zx=zcyclShiftk+m
32 31 com24 m0yx=zcyclShiftkcyclShiftmk0zk+mzφk+m0zx=zcyclShiftk+m
33 32 imp m0yx=zcyclShiftkcyclShiftmk0zk+mzφk+m0zx=zcyclShiftk+m
34 33 com12 k0zm0yx=zcyclShiftkcyclShiftmk+mzφk+m0zx=zcyclShiftk+m
35 34 adantl y=zcyclShiftkk0zm0yx=zcyclShiftkcyclShiftmk+mzφk+m0zx=zcyclShiftk+m
36 6 35 sylbid y=zcyclShiftkk0zm0yx=ycyclShiftmk+mzφk+m0zx=zcyclShiftk+m
37 36 ancoms k0zy=zcyclShiftkm0yx=ycyclShiftmk+mzφk+m0zx=zcyclShiftk+m
38 37 impcom m0yx=ycyclShiftmk0zy=zcyclShiftkk+mzφk+m0zx=zcyclShiftk+m
39 oveq2 n=k+mzcyclShiftn=zcyclShiftk+m
40 39 rspceeqv k+m0zx=zcyclShiftk+mn0zx=zcyclShiftn
41 38 40 syl6com k+mzφm0yx=ycyclShiftmk0zy=zcyclShiftkn0zx=zcyclShiftn
42 elfz2 k0z0zk0kkz
43 nn0z m0m
44 zaddcl kmk+m
45 44 ex kmk+m
46 45 adantl zkmk+m
47 46 impcom mzkk+m
48 simprl mzkz
49 47 48 zsubcld mzkk+m-z
50 49 ex mzkk+m-z
51 43 50 syl m0zkk+m-z
52 51 com12 zkm0k+m-z
53 52 3adant1 0zkm0k+m-z
54 53 adantr 0zk0kkzm0k+m-z
55 42 54 sylbi k0zm0k+m-z
56 8 55 mpan9 m0yk0zk+m-z
57 56 adantr m0yk0z¬k+mzφk+m-z
58 elfz2nn0 k0zk0z0kz
59 nn0re k0k
60 nn0re z0z
61 59 60 anim12i k0z0kz
62 nn0re m0m
63 61 62 anim12i k0z0m0kzm
64 simplr kzmz
65 readdcl kmk+m
66 65 adantlr kzmk+m
67 64 66 ltnled kzmz<k+m¬k+mz
68 64 66 posdifd kzmz<k+m0<k+m-z
69 68 biimpd kzmz<k+m0<k+m-z
70 67 69 sylbird kzm¬k+mz0<k+m-z
71 63 70 syl k0z0m0¬k+mz0<k+m-z
72 71 ex k0z0m0¬k+mz0<k+m-z
73 72 3adant3 k0z0kzm0¬k+mz0<k+m-z
74 58 73 sylbi k0zm0¬k+mz0<k+m-z
75 8 74 mpan9 m0yk0z¬k+mz0<k+m-z
76 75 com12 ¬k+mzm0yk0z0<k+m-z
77 76 adantr ¬k+mzφm0yk0z0<k+m-z
78 77 impcom m0yk0z¬k+mzφ0<k+m-z
79 elnnz k+m-zk+m-z0<k+m-z
80 57 78 79 sylanbrc m0yk0z¬k+mzφk+m-z
81 80 nnnn0d m0yk0z¬k+mzφk+m-z0
82 12 ad2antlr m0yk0z¬k+mzφz0
83 oveq2 y=z0y=0z
84 83 eleq2d y=zm0ym0z
85 84 anbi1d y=zm0yk0zm0zk0z
86 elfz2nn0 m0zm0z0mz
87 59 adantr k0z0k
88 87 62 anim12i k0z0m0km
89 60 60 jca z0zz
90 89 ad2antlr k0z0m0zz
91 le2add kmzzkzmzk+mz+z
92 88 90 91 syl2anc k0z0m0kzmzk+mz+z
93 nn0readdcl k0m0k+m
94 93 adantlr k0z0m0k+m
95 60 ad2antlr k0z0m0z
96 94 95 95 lesubadd2d k0z0m0k+m-zzk+mz+z
97 92 96 sylibrd k0z0m0kzmzk+m-zz
98 97 expcomd k0z0m0mzkzk+m-zz
99 98 ex k0z0m0mzkzk+m-zz
100 99 com24 k0z0kzmzm0k+m-zz
101 100 3impia k0z0kzmzm0k+m-zz
102 101 com13 m0mzk0z0kzk+m-zz
103 102 imp m0mzk0z0kzk+m-zz
104 58 103 biimtrid m0mzk0zk+m-zz
105 104 3adant2 m0z0mzk0zk+m-zz
106 86 105 sylbi m0zk0zk+m-zz
107 106 imp m0zk0zk+m-zz
108 85 107 syl6bi y=zm0yk0zk+m-zz
109 108 adantr y=zx=ym0yk0zk+m-zz
110 2 109 syl φm0yk0zk+m-zz
111 110 adantl ¬k+mzφm0yk0zk+m-zz
112 111 impcom m0yk0z¬k+mzφk+m-zz
113 elfz2nn0 k+m-z0zk+m-z0z0k+m-zz
114 81 82 112 113 syl3anbrc m0yk0z¬k+mzφk+m-z0z
115 114 adantr m0yk0z¬k+mzφx=zcyclShiftkcyclShiftmk+m-z0z
116 1 adantl ¬k+mzφzWordV
117 116 adantl m0yk0z¬k+mzφzWordV
118 20 ad2antlr m0yk0z¬k+mzφk
119 23 adantr m0yk0z¬k+mzφm
120 117 118 119 25 syl3anc m0yk0z¬k+mzφzcyclShiftkcyclShiftm=zcyclShiftk+m
121 20 22 44 syl2anr m0yk0zk+m
122 cshwsublen zWordVk+mzcyclShiftk+m=zcyclShiftk+m-z
123 116 121 122 syl2anr m0yk0z¬k+mzφzcyclShiftk+m=zcyclShiftk+m-z
124 120 123 eqtrd m0yk0z¬k+mzφzcyclShiftkcyclShiftm=zcyclShiftk+m-z
125 124 eqeq2d m0yk0z¬k+mzφx=zcyclShiftkcyclShiftmx=zcyclShiftk+m-z
126 125 biimpa m0yk0z¬k+mzφx=zcyclShiftkcyclShiftmx=zcyclShiftk+m-z
127 115 126 jca m0yk0z¬k+mzφx=zcyclShiftkcyclShiftmk+m-z0zx=zcyclShiftk+m-z
128 127 exp41 m0yk0z¬k+mzφx=zcyclShiftkcyclShiftmk+m-z0zx=zcyclShiftk+m-z
129 128 com23 m0y¬k+mzφk0zx=zcyclShiftkcyclShiftmk+m-z0zx=zcyclShiftk+m-z
130 129 com24 m0yx=zcyclShiftkcyclShiftmk0z¬k+mzφk+m-z0zx=zcyclShiftk+m-z
131 130 imp m0yx=zcyclShiftkcyclShiftmk0z¬k+mzφk+m-z0zx=zcyclShiftk+m-z
132 5 131 syl6bi y=zcyclShiftkm0yx=ycyclShiftmk0z¬k+mzφk+m-z0zx=zcyclShiftk+m-z
133 132 com23 y=zcyclShiftkk0zm0yx=ycyclShiftm¬k+mzφk+m-z0zx=zcyclShiftk+m-z
134 133 impcom k0zy=zcyclShiftkm0yx=ycyclShiftm¬k+mzφk+m-z0zx=zcyclShiftk+m-z
135 134 impcom m0yx=ycyclShiftmk0zy=zcyclShiftk¬k+mzφk+m-z0zx=zcyclShiftk+m-z
136 oveq2 n=k+m-zzcyclShiftn=zcyclShiftk+m-z
137 136 rspceeqv k+m-z0zx=zcyclShiftk+m-zn0zx=zcyclShiftn
138 135 137 syl6com ¬k+mzφm0yx=ycyclShiftmk0zy=zcyclShiftkn0zx=zcyclShiftn
139 41 138 pm2.61ian φm0yx=ycyclShiftmk0zy=zcyclShiftkn0zx=zcyclShiftn