Metamath Proof Explorer


Theorem cshwrnid

Description: Cyclically shifting a word preserves its range. (Contributed by Thierry Arnoux, 19-Sep-2023)

Ref Expression
Assertion cshwrnid WWordVNranWcyclShiftN=ranW

Proof

Step Hyp Ref Expression
1 elfzoelz i0..^Wi
2 1 3ad2ant3 WWordVNi0..^Wi
3 simp2 WWordVNi0..^WN
4 2 3 zsubcld WWordVNi0..^WiN
5 elfzo0 i0..^Wi0Wi<W
6 5 simp2bi i0..^WW
7 6 3ad2ant3 WWordVNi0..^WW
8 zmodfzo iNWiNmodW0..^W
9 4 7 8 syl2anc WWordVNi0..^WiNmodW0..^W
10 9 3expa WWordVNi0..^WiNmodW0..^W
11 elfzoelz j0..^Wj
12 11 adantl WWordVNj0..^Wj
13 simplr WWordVNj0..^WN
14 12 13 zaddcld WWordVNj0..^Wj+N
15 elfzo0 j0..^Wj0Wj<W
16 15 simp2bi j0..^WW
17 16 adantl WWordVNj0..^WW
18 zmodfzo j+NWj+NmodW0..^W
19 14 17 18 syl2anc WWordVNj0..^Wj+NmodW0..^W
20 simpr WWordVNj0..^Wi=j+NmodWi=j+NmodW
21 20 oveq1d WWordVNj0..^Wi=j+NmodWiN=j+NmodWN
22 21 oveq1d WWordVNj0..^Wi=j+NmodWiNmodW=j+NmodWNmodW
23 22 eqeq2d WWordVNj0..^Wi=j+NmodWj=iNmodWj=j+NmodWNmodW
24 12 zred WWordVNj0..^Wj
25 13 zred WWordVNj0..^WN
26 24 25 readdcld WWordVNj0..^Wj+N
27 17 nnrpd WWordVNj0..^WW+
28 modsubmod j+NNW+j+NmodWNmodW=j+N-NmodW
29 26 25 27 28 syl3anc WWordVNj0..^Wj+NmodWNmodW=j+N-NmodW
30 12 zcnd WWordVNj0..^Wj
31 13 zcnd WWordVNj0..^WN
32 30 31 pncand WWordVNj0..^Wj+N-N=j
33 32 oveq1d WWordVNj0..^Wj+N-NmodW=jmodW
34 zmodidfzoimp j0..^WjmodW=j
35 34 adantl WWordVNj0..^WjmodW=j
36 29 33 35 3eqtrrd WWordVNj0..^Wj=j+NmodWNmodW
37 19 23 36 rspcedvd WWordVNj0..^Wi0..^Wj=iNmodW
38 simp3 WWordVNi0..^Wj=iNmodWj=iNmodW
39 38 fveq2d WWordVNi0..^Wj=iNmodWWcyclShiftNj=WcyclShiftNiNmodW
40 simp1l WWordVNi0..^Wj=iNmodWWWordV
41 simp1r WWordVNi0..^Wj=iNmodWN
42 simp2 WWordVNi0..^Wj=iNmodWi0..^W
43 cshwidxmodr WWordVNi0..^WWcyclShiftNiNmodW=Wi
44 40 41 42 43 syl3anc WWordVNi0..^Wj=iNmodWWcyclShiftNiNmodW=Wi
45 39 44 eqtrd WWordVNi0..^Wj=iNmodWWcyclShiftNj=Wi
46 45 eqeq2d WWordVNi0..^Wj=iNmodWc=WcyclShiftNjc=Wi
47 10 37 46 rexxfrd2 WWordVNj0..^Wc=WcyclShiftNji0..^Wc=Wi
48 47 abbidv WWordVNc|j0..^Wc=WcyclShiftNj=c|i0..^Wc=Wi
49 cshwfn WWordVNWcyclShiftNFn0..^W
50 fnrnfv WcyclShiftNFn0..^WranWcyclShiftN=c|j0..^Wc=WcyclShiftNj
51 49 50 syl WWordVNranWcyclShiftN=c|j0..^Wc=WcyclShiftNj
52 wrdfn WWordVWFn0..^W
53 52 adantr WWordVNWFn0..^W
54 fnrnfv WFn0..^WranW=c|i0..^Wc=Wi
55 53 54 syl WWordVNranW=c|i0..^Wc=Wi
56 48 51 55 3eqtr4d WWordVNranWcyclShiftN=ranW