Metamath Proof Explorer


Theorem revpfxsfxrev

Description: The reverse of a prefix of a word is equal to the same-length suffix of the reverse of that word. (Contributed by BTernaryTau, 2-Dec-2023)

Ref Expression
Assertion revpfxsfxrev WWordVL0WreverseWprefixL=reverseWsubstrWLW

Proof

Step Hyp Ref Expression
1 pfxcl WWordVWprefixLWordV
2 revcl WprefixLWordVreverseWprefixLWordV
3 wrdfn reverseWprefixLWordVreverseWprefixLFn0..^reverseWprefixL
4 1 2 3 3syl WWordVreverseWprefixLFn0..^reverseWprefixL
5 4 adantr WWordVL0WreverseWprefixLFn0..^reverseWprefixL
6 revlen WprefixLWordVreverseWprefixL=WprefixL
7 1 6 syl WWordVreverseWprefixL=WprefixL
8 7 adantr WWordVL0WreverseWprefixL=WprefixL
9 pfxlen WWordVL0WWprefixL=L
10 8 9 eqtrd WWordVL0WreverseWprefixL=L
11 10 oveq2d WWordVL0W0..^reverseWprefixL=0..^L
12 11 fneq2d WWordVL0WreverseWprefixLFn0..^reverseWprefixLreverseWprefixLFn0..^L
13 5 12 mpbid WWordVL0WreverseWprefixLFn0..^L
14 revcl WWordVreverseWWordV
15 swrdcl reverseWWordVreverseWsubstrWLWWordV
16 wrdfn reverseWsubstrWLWWordVreverseWsubstrWLWFn0..^reverseWsubstrWLW
17 14 15 16 3syl WWordVreverseWsubstrWLWFn0..^reverseWsubstrWLW
18 17 adantr WWordVL0WreverseWsubstrWLWFn0..^reverseWsubstrWLW
19 fznn0sub2 L0WWL0W
20 lencl WWordVW0
21 nn0fz0 W0W0W
22 20 21 sylib WWordVW0W
23 revlen WWordVreverseW=W
24 23 oveq2d WWordV0reverseW=0W
25 22 24 eleqtrrd WWordVW0reverseW
26 swrdlen reverseWWordVWL0WW0reverseWreverseWsubstrWLW=WWL
27 14 19 25 26 syl3an WWordVL0WWWordVreverseWsubstrWLW=WWL
28 27 3anidm13 WWordVL0WreverseWsubstrWLW=WWL
29 20 nn0cnd WWordVW
30 29 adantr WWordVL0WW
31 elfzelz L0WL
32 31 zcnd L0WL
33 32 adantl WWordVL0WL
34 30 33 nncand WWordVL0WWWL=L
35 28 34 eqtrd WWordVL0WreverseWsubstrWLW=L
36 35 oveq2d WWordVL0W0..^reverseWsubstrWLW=0..^L
37 36 fneq2d WWordVL0WreverseWsubstrWLWFn0..^reverseWsubstrWLWreverseWsubstrWLWFn0..^L
38 18 37 mpbid WWordVL0WreverseWsubstrWLWFn0..^L
39 simp1 WWordVL0Wx0..^LWWordV
40 simp3 WWordVL0Wx0..^Lx0..^L
41 9 oveq2d WWordVL0W0..^WprefixL=0..^L
42 41 3adant3 WWordVL0Wx0..^L0..^WprefixL=0..^L
43 40 42 eleqtrrd WWordVL0Wx0..^Lx0..^WprefixL
44 revfv WprefixLWordVx0..^WprefixLreverseWprefixLx=WprefixLWprefixL-1-x
45 1 44 sylan WWordVx0..^WprefixLreverseWprefixLx=WprefixLWprefixL-1-x
46 39 43 45 syl2anc WWordVL0Wx0..^LreverseWprefixLx=WprefixLWprefixL-1-x
47 9 oveq1d WWordVL0WWprefixL1=L1
48 47 oveq1d WWordVL0WWprefixL-1-x=L-1-x
49 48 fveq2d WWordVL0WWprefixLWprefixL-1-x=WprefixLL-1-x
50 49 3adant3 WWordVL0Wx0..^LWprefixLWprefixL-1-x=WprefixLL-1-x
51 32 3ad2ant2 WWordVL0Wx0..^LL
52 elfzoelz x0..^Lx
53 52 zcnd x0..^Lx
54 53 3ad2ant3 WWordVL0Wx0..^Lx
55 1cnd WWordVL0Wx0..^L1
56 51 54 55 sub32d WWordVL0Wx0..^LL-x-1=L-1-x
57 ubmelm1fzo x0..^LL-x-10..^L
58 57 3ad2ant3 WWordVL0Wx0..^LL-x-10..^L
59 56 58 eqeltrrd WWordVL0Wx0..^LL-1-x0..^L
60 pfxfv WWordVL0WL-1-x0..^LWprefixLL-1-x=WL-1-x
61 59 60 syld3an3 WWordVL0Wx0..^LWprefixLL-1-x=WL-1-x
62 46 50 61 3eqtrd WWordVL0Wx0..^LreverseWprefixLx=WL-1-x
63 34 oveq2d WWordVL0W0..^WWL=0..^L
64 63 eleq2d WWordVL0Wx0..^WWLx0..^L
65 64 biimp3ar WWordVL0Wx0..^Lx0..^WWL
66 id WWordVWL0WWWordVWWordVWL0WWWordV
67 66 3anidm13 WWordVWL0WWWordVWL0WWWordV
68 swrdfv reverseWWordVWL0WW0reverseWx0..^WWLreverseWsubstrWLWx=reverseWx+W-L
69 14 68 syl3anl1 WWordVWL0WW0reverseWx0..^WWLreverseWsubstrWLWx=reverseWx+W-L
70 25 69 syl3anl3 WWordVWL0WWWordVx0..^WWLreverseWsubstrWLWx=reverseWx+W-L
71 67 70 stoic3 WWordVWL0Wx0..^WWLreverseWsubstrWLWx=reverseWx+W-L
72 19 71 syl3an2 WWordVL0Wx0..^WWLreverseWsubstrWLWx=reverseWx+W-L
73 65 72 syld3an3 WWordVL0Wx0..^LreverseWsubstrWLWx=reverseWx+W-L
74 0z 0
75 elfzuz3 L0WWL
76 32 addlidd L0W0+L=L
77 76 fveq2d L0W0+L=L
78 75 77 eleqtrrd L0WW0+L
79 eluzsub 0LW0+LWL0
80 74 31 78 79 mp3an2i L0WWL0
81 fzoss1 WL0WL..^W0..^W
82 80 81 syl L0WWL..^W0..^W
83 82 3ad2ant2 WWordVL0Wx0..^LWL..^W0..^W
84 20 nn0zd WWordVW
85 84 3ad2ant1 WWordVL0Wx0..^LW
86 31 3ad2ant2 WWordVL0Wx0..^LL
87 85 86 zsubcld WWordVL0Wx0..^LWL
88 fzo0addel x0..^LWLx+W-LWL..^L+W-L
89 40 87 88 syl2anc WWordVL0Wx0..^Lx+W-LWL..^L+W-L
90 30 3adant3 WWordVL0Wx0..^LW
91 51 90 pncan3d WWordVL0Wx0..^LL+W-L=W
92 91 oveq2d WWordVL0Wx0..^LWL..^L+W-L=WL..^W
93 89 92 eleqtrd WWordVL0Wx0..^Lx+W-LWL..^W
94 83 93 sseldd WWordVL0Wx0..^Lx+W-L0..^W
95 revfv WWordVx+W-L0..^WreverseWx+W-L=WW-1-x+W-L
96 39 94 95 syl2anc WWordVL0Wx0..^LreverseWx+W-L=WW-1-x+W-L
97 90 55 subcld WWordVL0Wx0..^LW1
98 87 zcnd WWordVL0Wx0..^LWL
99 97 54 98 sub32d WWordVL0Wx0..^LW1-x-WL=W1-WL-x
100 97 54 98 subsub4d WWordVL0Wx0..^LW1-x-WL=W-1-x+W-L
101 90 55 98 sub32d WWordVL0Wx0..^LW-1-WL=W-WL-1
102 101 oveq1d WWordVL0Wx0..^LW1-WL-x=WWL-1-x
103 99 100 102 3eqtr3d WWordVL0Wx0..^LW-1-x+W-L=WWL-1-x
104 34 3adant3 WWordVL0Wx0..^LWWL=L
105 104 oveq1d WWordVL0Wx0..^LW-WL-1=L1
106 105 oveq1d WWordVL0Wx0..^LWWL-1-x=L-1-x
107 103 106 eqtrd WWordVL0Wx0..^LW-1-x+W-L=L-1-x
108 107 fveq2d WWordVL0Wx0..^LWW-1-x+W-L=WL-1-x
109 73 96 108 3eqtrd WWordVL0Wx0..^LreverseWsubstrWLWx=WL-1-x
110 62 109 eqtr4d WWordVL0Wx0..^LreverseWprefixLx=reverseWsubstrWLWx
111 110 3expa WWordVL0Wx0..^LreverseWprefixLx=reverseWsubstrWLWx
112 13 38 111 eqfnfvd WWordVL0WreverseWprefixL=reverseWsubstrWLW