Metamath Proof Explorer


Theorem scshwfzeqfzo

Description: For a nonempty word the sets of shifted words, expressd by a finite interval of integers or by a half-open integer range are identical. (Contributed by Alexander van der Vekens, 15-Jun-2018)

Ref Expression
Assertion scshwfzeqfzo XWordVXN=XyWordV|n0Ny=XcyclShiftn=yWordV|n0..^Ny=XcyclShiftn

Proof

Step Hyp Ref Expression
1 lencl XWordVX0
2 elnn0uz X0X0
3 1 2 sylib XWordVX0
4 3 adantr XWordVN=XX0
5 eleq1 N=XN0X0
6 5 adantl XWordVN=XN0X0
7 4 6 mpbird XWordVN=XN0
8 7 3adant2 XWordVXN=XN0
9 8 adantr XWordVXN=XyWordVN0
10 fzisfzounsn N00N=0..^NN
11 9 10 syl XWordVXN=XyWordV0N=0..^NN
12 11 rexeqdv XWordVXN=XyWordVn0Ny=XcyclShiftnn0..^NNy=XcyclShiftn
13 rexun n0..^NNy=XcyclShiftnn0..^Ny=XcyclShiftnnNy=XcyclShiftn
14 12 13 bitrdi XWordVXN=XyWordVn0Ny=XcyclShiftnn0..^Ny=XcyclShiftnnNy=XcyclShiftn
15 fvex XV
16 eleq1 N=XNVXV
17 15 16 mpbiri N=XNV
18 oveq2 n=NXcyclShiftn=XcyclShiftN
19 18 eqeq2d n=Ny=XcyclShiftny=XcyclShiftN
20 19 rexsng NVnNy=XcyclShiftny=XcyclShiftN
21 17 20 syl N=XnNy=XcyclShiftny=XcyclShiftN
22 21 3ad2ant3 XWordVXN=XnNy=XcyclShiftny=XcyclShiftN
23 22 adantr XWordVXN=XyWordVnNy=XcyclShiftny=XcyclShiftN
24 oveq2 N=XXcyclShiftN=XcyclShiftX
25 24 3ad2ant3 XWordVXN=XXcyclShiftN=XcyclShiftX
26 cshwn XWordVXcyclShiftX=X
27 26 3ad2ant1 XWordVXN=XXcyclShiftX=X
28 25 27 eqtrd XWordVXN=XXcyclShiftN=X
29 28 eqeq2d XWordVXN=Xy=XcyclShiftNy=X
30 29 adantr XWordVXN=XyWordVy=XcyclShiftNy=X
31 cshw0 XWordVXcyclShift0=X
32 31 3ad2ant1 XWordVXN=XXcyclShift0=X
33 lennncl XWordVXX
34 33 3adant3 XWordVXN=XX
35 eleq1 N=XNX
36 35 3ad2ant3 XWordVXN=XNX
37 34 36 mpbird XWordVXN=XN
38 lbfzo0 00..^NN
39 37 38 sylibr XWordVXN=X00..^N
40 oveq2 0=nXcyclShift0=XcyclShiftn
41 40 eqeq1d 0=nXcyclShift0=XXcyclShiftn=X
42 41 eqcoms n=0XcyclShift0=XXcyclShiftn=X
43 eqcom XcyclShiftn=XX=XcyclShiftn
44 42 43 bitrdi n=0XcyclShift0=XX=XcyclShiftn
45 44 adantl XWordVXN=Xn=0XcyclShift0=XX=XcyclShiftn
46 45 biimpd XWordVXN=Xn=0XcyclShift0=XX=XcyclShiftn
47 39 46 rspcimedv XWordVXN=XXcyclShift0=Xn0..^NX=XcyclShiftn
48 32 47 mpd XWordVXN=Xn0..^NX=XcyclShiftn
49 48 adantr XWordVXN=XyWordVn0..^NX=XcyclShiftn
50 49 adantr XWordVXN=XyWordVy=Xn0..^NX=XcyclShiftn
51 eqeq1 y=Xy=XcyclShiftnX=XcyclShiftn
52 51 adantl XWordVXN=XyWordVy=Xy=XcyclShiftnX=XcyclShiftn
53 52 rexbidv XWordVXN=XyWordVy=Xn0..^Ny=XcyclShiftnn0..^NX=XcyclShiftn
54 50 53 mpbird XWordVXN=XyWordVy=Xn0..^Ny=XcyclShiftn
55 54 ex XWordVXN=XyWordVy=Xn0..^Ny=XcyclShiftn
56 30 55 sylbid XWordVXN=XyWordVy=XcyclShiftNn0..^Ny=XcyclShiftn
57 23 56 sylbid XWordVXN=XyWordVnNy=XcyclShiftnn0..^Ny=XcyclShiftn
58 57 com12 nNy=XcyclShiftnXWordVXN=XyWordVn0..^Ny=XcyclShiftn
59 58 jao1i n0..^Ny=XcyclShiftnnNy=XcyclShiftnXWordVXN=XyWordVn0..^Ny=XcyclShiftn
60 59 com12 XWordVXN=XyWordVn0..^Ny=XcyclShiftnnNy=XcyclShiftnn0..^Ny=XcyclShiftn
61 14 60 sylbid XWordVXN=XyWordVn0Ny=XcyclShiftnn0..^Ny=XcyclShiftn
62 fzossfz 0..^N0N
63 ssrexv 0..^N0Nn0..^Ny=XcyclShiftnn0Ny=XcyclShiftn
64 62 63 mp1i XWordVXN=XyWordVn0..^Ny=XcyclShiftnn0Ny=XcyclShiftn
65 61 64 impbid XWordVXN=XyWordVn0Ny=XcyclShiftnn0..^Ny=XcyclShiftn
66 65 rabbidva XWordVXN=XyWordV|n0Ny=XcyclShiftn=yWordV|n0..^Ny=XcyclShiftn