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 ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ) → ( reverse ‘ ( 𝑊 prefix 𝐿 ) ) = ( ( reverse ‘ 𝑊 ) substr ⟨ ( ( ♯ ‘ 𝑊 ) − 𝐿 ) , ( ♯ ‘ 𝑊 ) ⟩ ) )

Proof

Step Hyp Ref Expression
1 pfxcl ⊢ ( 𝑊 ∈ Word 𝑉 → ( 𝑊 prefix 𝐿 ) ∈ Word 𝑉 )
2 revcl ⊢ ( ( 𝑊 prefix 𝐿 ) ∈ Word 𝑉 → ( reverse ‘ ( 𝑊 prefix 𝐿 ) ) ∈ Word 𝑉 )
3 wrdfn ⊢ ( ( reverse ‘ ( 𝑊 prefix 𝐿 ) ) ∈ Word 𝑉 → ( reverse ‘ ( 𝑊 prefix 𝐿 ) ) Fn ( 0 ..^ ( ♯ ‘ ( reverse ‘ ( 𝑊 prefix 𝐿 ) ) ) ) )
4 1 2 3 3syl ⊢ ( 𝑊 ∈ Word 𝑉 → ( reverse ‘ ( 𝑊 prefix 𝐿 ) ) Fn ( 0 ..^ ( ♯ ‘ ( reverse ‘ ( 𝑊 prefix 𝐿 ) ) ) ) )
5 4 adantr ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ) → ( reverse ‘ ( 𝑊 prefix 𝐿 ) ) Fn ( 0 ..^ ( ♯ ‘ ( reverse ‘ ( 𝑊 prefix 𝐿 ) ) ) ) )
6 revlen ⊢ ( ( 𝑊 prefix 𝐿 ) ∈ Word 𝑉 → ( ♯ ‘ ( reverse ‘ ( 𝑊 prefix 𝐿 ) ) ) = ( ♯ ‘ ( 𝑊 prefix 𝐿 ) ) )
7 1 6 syl ⊢ ( 𝑊 ∈ Word 𝑉 → ( ♯ ‘ ( reverse ‘ ( 𝑊 prefix 𝐿 ) ) ) = ( ♯ ‘ ( 𝑊 prefix 𝐿 ) ) )
8 7 adantr ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ) → ( ♯ ‘ ( reverse ‘ ( 𝑊 prefix 𝐿 ) ) ) = ( ♯ ‘ ( 𝑊 prefix 𝐿 ) ) )
9 pfxlen ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ) → ( ♯ ‘ ( 𝑊 prefix 𝐿 ) ) = 𝐿 )
10 8 9 eqtrd ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ) → ( ♯ ‘ ( reverse ‘ ( 𝑊 prefix 𝐿 ) ) ) = 𝐿 )
11 10 oveq2d ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ) → ( 0 ..^ ( ♯ ‘ ( reverse ‘ ( 𝑊 prefix 𝐿 ) ) ) ) = ( 0 ..^ 𝐿 ) )
12 11 fneq2d ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ) → ( ( reverse ‘ ( 𝑊 prefix 𝐿 ) ) Fn ( 0 ..^ ( ♯ ‘ ( reverse ‘ ( 𝑊 prefix 𝐿 ) ) ) ) ↔ ( reverse ‘ ( 𝑊 prefix 𝐿 ) ) Fn ( 0 ..^ 𝐿 ) ) )
13 5 12 mpbid ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ) → ( reverse ‘ ( 𝑊 prefix 𝐿 ) ) Fn ( 0 ..^ 𝐿 ) )
14 revcl ⊢ ( 𝑊 ∈ Word 𝑉 → ( reverse ‘ 𝑊 ) ∈ Word 𝑉 )
15 swrdcl ⊢ ( ( reverse ‘ 𝑊 ) ∈ Word 𝑉 → ( ( reverse ‘ 𝑊 ) substr ⟨ ( ( ♯ ‘ 𝑊 ) − 𝐿 ) , ( ♯ ‘ 𝑊 ) ⟩ ) ∈ Word 𝑉 )
16 wrdfn ⊢ ( ( ( reverse ‘ 𝑊 ) substr ⟨ ( ( ♯ ‘ 𝑊 ) − 𝐿 ) , ( ♯ ‘ 𝑊 ) ⟩ ) ∈ Word 𝑉 → ( ( reverse ‘ 𝑊 ) substr ⟨ ( ( ♯ ‘ 𝑊 ) − 𝐿 ) , ( ♯ ‘ 𝑊 ) ⟩ ) Fn ( 0 ..^ ( ♯ ‘ ( ( reverse ‘ 𝑊 ) substr ⟨ ( ( ♯ ‘ 𝑊 ) − 𝐿 ) , ( ♯ ‘ 𝑊 ) ⟩ ) ) ) )
17 14 15 16 3syl ⊢ ( 𝑊 ∈ Word 𝑉 → ( ( reverse ‘ 𝑊 ) substr ⟨ ( ( ♯ ‘ 𝑊 ) − 𝐿 ) , ( ♯ ‘ 𝑊 ) ⟩ ) Fn ( 0 ..^ ( ♯ ‘ ( ( reverse ‘ 𝑊 ) substr ⟨ ( ( ♯ ‘ 𝑊 ) − 𝐿 ) , ( ♯ ‘ 𝑊 ) ⟩ ) ) ) )
18 17 adantr ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ) → ( ( reverse ‘ 𝑊 ) substr ⟨ ( ( ♯ ‘ 𝑊 ) − 𝐿 ) , ( ♯ ‘ 𝑊 ) ⟩ ) Fn ( 0 ..^ ( ♯ ‘ ( ( reverse ‘ 𝑊 ) substr ⟨ ( ( ♯ ‘ 𝑊 ) − 𝐿 ) , ( ♯ ‘ 𝑊 ) ⟩ ) ) ) )
19 fznn0sub2 ⊢ ( 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) → ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) )
20 lencl ⊢ ( 𝑊 ∈ Word 𝑉 → ( ♯ ‘ 𝑊 ) ∈ ℕ0 )
21 nn0fz0 ⊢ ( ( ♯ ‘ 𝑊 ) ∈ ℕ0 ↔ ( ♯ ‘ 𝑊 ) ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) )
22 20 21 sylib ⊢ ( 𝑊 ∈ Word 𝑉 → ( ♯ ‘ 𝑊 ) ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) )
23 revlen ⊢ ( 𝑊 ∈ Word 𝑉 → ( ♯ ‘ ( reverse ‘ 𝑊 ) ) = ( ♯ ‘ 𝑊 ) )
24 23 oveq2d ⊢ ( 𝑊 ∈ Word 𝑉 → ( 0 ... ( ♯ ‘ ( reverse ‘ 𝑊 ) ) ) = ( 0 ... ( ♯ ‘ 𝑊 ) ) )
25 22 24 eleqtrrd ⊢ ( 𝑊 ∈ Word 𝑉 → ( ♯ ‘ 𝑊 ) ∈ ( 0 ... ( ♯ ‘ ( reverse ‘ 𝑊 ) ) ) )
26 swrdlen ⊢ ( ( ( reverse ‘ 𝑊 ) ∈ Word 𝑉 ∧ ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ ( ♯ ‘ 𝑊 ) ∈ ( 0 ... ( ♯ ‘ ( reverse ‘ 𝑊 ) ) ) ) → ( ♯ ‘ ( ( reverse ‘ 𝑊 ) substr ⟨ ( ( ♯ ‘ 𝑊 ) − 𝐿 ) , ( ♯ ‘ 𝑊 ) ⟩ ) ) = ( ( ♯ ‘ 𝑊 ) − ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) )
27 14 19 25 26 syl3an ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑊 ∈ Word 𝑉 ) → ( ♯ ‘ ( ( reverse ‘ 𝑊 ) substr ⟨ ( ( ♯ ‘ 𝑊 ) − 𝐿 ) , ( ♯ ‘ 𝑊 ) ⟩ ) ) = ( ( ♯ ‘ 𝑊 ) − ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) )
28 27 3anidm13 ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ) → ( ♯ ‘ ( ( reverse ‘ 𝑊 ) substr ⟨ ( ( ♯ ‘ 𝑊 ) − 𝐿 ) , ( ♯ ‘ 𝑊 ) ⟩ ) ) = ( ( ♯ ‘ 𝑊 ) − ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) )
29 20 nn0cnd ⊢ ( 𝑊 ∈ Word 𝑉 → ( ♯ ‘ 𝑊 ) ∈ ℂ )
30 29 adantr ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ) → ( ♯ ‘ 𝑊 ) ∈ ℂ )
31 elfzelz ⊢ ( 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) → 𝐿 ∈ ℤ )
32 31 zcnd ⊢ ( 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) → 𝐿 ∈ ℂ )
33 32 adantl ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ) → 𝐿 ∈ ℂ )
34 30 33 nncand ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ) → ( ( ♯ ‘ 𝑊 ) − ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) = 𝐿 )
35 28 34 eqtrd ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ) → ( ♯ ‘ ( ( reverse ‘ 𝑊 ) substr ⟨ ( ( ♯ ‘ 𝑊 ) − 𝐿 ) , ( ♯ ‘ 𝑊 ) ⟩ ) ) = 𝐿 )
36 35 oveq2d ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ) → ( 0 ..^ ( ♯ ‘ ( ( reverse ‘ 𝑊 ) substr ⟨ ( ( ♯ ‘ 𝑊 ) − 𝐿 ) , ( ♯ ‘ 𝑊 ) ⟩ ) ) ) = ( 0 ..^ 𝐿 ) )
37 36 fneq2d ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ) → ( ( ( reverse ‘ 𝑊 ) substr ⟨ ( ( ♯ ‘ 𝑊 ) − 𝐿 ) , ( ♯ ‘ 𝑊 ) ⟩ ) Fn ( 0 ..^ ( ♯ ‘ ( ( reverse ‘ 𝑊 ) substr ⟨ ( ( ♯ ‘ 𝑊 ) − 𝐿 ) , ( ♯ ‘ 𝑊 ) ⟩ ) ) ) ↔ ( ( reverse ‘ 𝑊 ) substr ⟨ ( ( ♯ ‘ 𝑊 ) − 𝐿 ) , ( ♯ ‘ 𝑊 ) ⟩ ) Fn ( 0 ..^ 𝐿 ) ) )
38 18 37 mpbid ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ) → ( ( reverse ‘ 𝑊 ) substr ⟨ ( ( ♯ ‘ 𝑊 ) − 𝐿 ) , ( ♯ ‘ 𝑊 ) ⟩ ) Fn ( 0 ..^ 𝐿 ) )
39 simp1 ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑥 ∈ ( 0 ..^ 𝐿 ) ) → 𝑊 ∈ Word 𝑉 )
40 simp3 ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑥 ∈ ( 0 ..^ 𝐿 ) ) → 𝑥 ∈ ( 0 ..^ 𝐿 ) )
41 9 oveq2d ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ) → ( 0 ..^ ( ♯ ‘ ( 𝑊 prefix 𝐿 ) ) ) = ( 0 ..^ 𝐿 ) )
42 41 3adant3 ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑥 ∈ ( 0 ..^ 𝐿 ) ) → ( 0 ..^ ( ♯ ‘ ( 𝑊 prefix 𝐿 ) ) ) = ( 0 ..^ 𝐿 ) )
43 40 42 eleqtrrd ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑥 ∈ ( 0 ..^ 𝐿 ) ) → 𝑥 ∈ ( 0 ..^ ( ♯ ‘ ( 𝑊 prefix 𝐿 ) ) ) )
44 revfv ⊢ ( ( ( 𝑊 prefix 𝐿 ) ∈ Word 𝑉 ∧ 𝑥 ∈ ( 0 ..^ ( ♯ ‘ ( 𝑊 prefix 𝐿 ) ) ) ) → ( ( reverse ‘ ( 𝑊 prefix 𝐿 ) ) ‘ 𝑥 ) = ( ( 𝑊 prefix 𝐿 ) ‘ ( ( ( ♯ ‘ ( 𝑊 prefix 𝐿 ) ) − 1 ) − 𝑥 ) ) )
45 1 44 sylan ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝑥 ∈ ( 0 ..^ ( ♯ ‘ ( 𝑊 prefix 𝐿 ) ) ) ) → ( ( reverse ‘ ( 𝑊 prefix 𝐿 ) ) ‘ 𝑥 ) = ( ( 𝑊 prefix 𝐿 ) ‘ ( ( ( ♯ ‘ ( 𝑊 prefix 𝐿 ) ) − 1 ) − 𝑥 ) ) )
46 39 43 45 syl2anc ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑥 ∈ ( 0 ..^ 𝐿 ) ) → ( ( reverse ‘ ( 𝑊 prefix 𝐿 ) ) ‘ 𝑥 ) = ( ( 𝑊 prefix 𝐿 ) ‘ ( ( ( ♯ ‘ ( 𝑊 prefix 𝐿 ) ) − 1 ) − 𝑥 ) ) )
47 9 oveq1d ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ) → ( ( ♯ ‘ ( 𝑊 prefix 𝐿 ) ) − 1 ) = ( 𝐿 − 1 ) )
48 47 oveq1d ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ) → ( ( ( ♯ ‘ ( 𝑊 prefix 𝐿 ) ) − 1 ) − 𝑥 ) = ( ( 𝐿 − 1 ) − 𝑥 ) )
49 48 fveq2d ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ) → ( ( 𝑊 prefix 𝐿 ) ‘ ( ( ( ♯ ‘ ( 𝑊 prefix 𝐿 ) ) − 1 ) − 𝑥 ) ) = ( ( 𝑊 prefix 𝐿 ) ‘ ( ( 𝐿 − 1 ) − 𝑥 ) ) )
50 49 3adant3 ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑥 ∈ ( 0 ..^ 𝐿 ) ) → ( ( 𝑊 prefix 𝐿 ) ‘ ( ( ( ♯ ‘ ( 𝑊 prefix 𝐿 ) ) − 1 ) − 𝑥 ) ) = ( ( 𝑊 prefix 𝐿 ) ‘ ( ( 𝐿 − 1 ) − 𝑥 ) ) )
51 32 3ad2ant2 ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑥 ∈ ( 0 ..^ 𝐿 ) ) → 𝐿 ∈ ℂ )
52 elfzoelz ⊢ ( 𝑥 ∈ ( 0 ..^ 𝐿 ) → 𝑥 ∈ ℤ )
53 52 zcnd ⊢ ( 𝑥 ∈ ( 0 ..^ 𝐿 ) → 𝑥 ∈ ℂ )
54 53 3ad2ant3 ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑥 ∈ ( 0 ..^ 𝐿 ) ) → 𝑥 ∈ ℂ )
55 1cnd ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑥 ∈ ( 0 ..^ 𝐿 ) ) → 1 ∈ ℂ )
56 51 54 55 sub32d ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑥 ∈ ( 0 ..^ 𝐿 ) ) → ( ( 𝐿 − 𝑥 ) − 1 ) = ( ( 𝐿 − 1 ) − 𝑥 ) )
57 ubmelm1fzo ⊢ ( 𝑥 ∈ ( 0 ..^ 𝐿 ) → ( ( 𝐿 − 𝑥 ) − 1 ) ∈ ( 0 ..^ 𝐿 ) )
58 57 3ad2ant3 ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑥 ∈ ( 0 ..^ 𝐿 ) ) → ( ( 𝐿 − 𝑥 ) − 1 ) ∈ ( 0 ..^ 𝐿 ) )
59 56 58 eqeltrrd ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑥 ∈ ( 0 ..^ 𝐿 ) ) → ( ( 𝐿 − 1 ) − 𝑥 ) ∈ ( 0 ..^ 𝐿 ) )
60 pfxfv ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ ( ( 𝐿 − 1 ) − 𝑥 ) ∈ ( 0 ..^ 𝐿 ) ) → ( ( 𝑊 prefix 𝐿 ) ‘ ( ( 𝐿 − 1 ) − 𝑥 ) ) = ( 𝑊 ‘ ( ( 𝐿 − 1 ) − 𝑥 ) ) )
61 59 60 syld3an3 ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑥 ∈ ( 0 ..^ 𝐿 ) ) → ( ( 𝑊 prefix 𝐿 ) ‘ ( ( 𝐿 − 1 ) − 𝑥 ) ) = ( 𝑊 ‘ ( ( 𝐿 − 1 ) − 𝑥 ) ) )
62 46 50 61 3eqtrd ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑥 ∈ ( 0 ..^ 𝐿 ) ) → ( ( reverse ‘ ( 𝑊 prefix 𝐿 ) ) ‘ 𝑥 ) = ( 𝑊 ‘ ( ( 𝐿 − 1 ) − 𝑥 ) ) )
63 34 oveq2d ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ) → ( 0 ..^ ( ( ♯ ‘ 𝑊 ) − ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) ) = ( 0 ..^ 𝐿 ) )
64 63 eleq2d ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ) → ( 𝑥 ∈ ( 0 ..^ ( ( ♯ ‘ 𝑊 ) − ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) ) ↔ 𝑥 ∈ ( 0 ..^ 𝐿 ) ) )
65 64 biimp3ar ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑥 ∈ ( 0 ..^ 𝐿 ) ) → 𝑥 ∈ ( 0 ..^ ( ( ♯ ‘ 𝑊 ) − ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) ) )
66 id ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑊 ∈ Word 𝑉 ) → ( 𝑊 ∈ Word 𝑉 ∧ ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑊 ∈ Word 𝑉 ) )
67 66 3anidm13 ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ) → ( 𝑊 ∈ Word 𝑉 ∧ ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑊 ∈ Word 𝑉 ) )
68 swrdfv ⊢ ( ( ( ( reverse ‘ 𝑊 ) ∈ Word 𝑉 ∧ ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ ( ♯ ‘ 𝑊 ) ∈ ( 0 ... ( ♯ ‘ ( reverse ‘ 𝑊 ) ) ) ) ∧ 𝑥 ∈ ( 0 ..^ ( ( ♯ ‘ 𝑊 ) − ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) ) ) → ( ( ( reverse ‘ 𝑊 ) substr ⟨ ( ( ♯ ‘ 𝑊 ) − 𝐿 ) , ( ♯ ‘ 𝑊 ) ⟩ ) ‘ 𝑥 ) = ( ( reverse ‘ 𝑊 ) ‘ ( 𝑥 + ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) ) )
69 14 68 syl3anl1 ⊢ ( ( ( 𝑊 ∈ Word 𝑉 ∧ ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ ( ♯ ‘ 𝑊 ) ∈ ( 0 ... ( ♯ ‘ ( reverse ‘ 𝑊 ) ) ) ) ∧ 𝑥 ∈ ( 0 ..^ ( ( ♯ ‘ 𝑊 ) − ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) ) ) → ( ( ( reverse ‘ 𝑊 ) substr ⟨ ( ( ♯ ‘ 𝑊 ) − 𝐿 ) , ( ♯ ‘ 𝑊 ) ⟩ ) ‘ 𝑥 ) = ( ( reverse ‘ 𝑊 ) ‘ ( 𝑥 + ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) ) )
70 25 69 syl3anl3 ⊢ ( ( ( 𝑊 ∈ Word 𝑉 ∧ ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑊 ∈ Word 𝑉 ) ∧ 𝑥 ∈ ( 0 ..^ ( ( ♯ ‘ 𝑊 ) − ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) ) ) → ( ( ( reverse ‘ 𝑊 ) substr ⟨ ( ( ♯ ‘ 𝑊 ) − 𝐿 ) , ( ♯ ‘ 𝑊 ) ⟩ ) ‘ 𝑥 ) = ( ( reverse ‘ 𝑊 ) ‘ ( 𝑥 + ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) ) )
71 67 70 stoic3 ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑥 ∈ ( 0 ..^ ( ( ♯ ‘ 𝑊 ) − ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) ) ) → ( ( ( reverse ‘ 𝑊 ) substr ⟨ ( ( ♯ ‘ 𝑊 ) − 𝐿 ) , ( ♯ ‘ 𝑊 ) ⟩ ) ‘ 𝑥 ) = ( ( reverse ‘ 𝑊 ) ‘ ( 𝑥 + ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) ) )
72 19 71 syl3an2 ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑥 ∈ ( 0 ..^ ( ( ♯ ‘ 𝑊 ) − ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) ) ) → ( ( ( reverse ‘ 𝑊 ) substr ⟨ ( ( ♯ ‘ 𝑊 ) − 𝐿 ) , ( ♯ ‘ 𝑊 ) ⟩ ) ‘ 𝑥 ) = ( ( reverse ‘ 𝑊 ) ‘ ( 𝑥 + ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) ) )
73 65 72 syld3an3 ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑥 ∈ ( 0 ..^ 𝐿 ) ) → ( ( ( reverse ‘ 𝑊 ) substr ⟨ ( ( ♯ ‘ 𝑊 ) − 𝐿 ) , ( ♯ ‘ 𝑊 ) ⟩ ) ‘ 𝑥 ) = ( ( reverse ‘ 𝑊 ) ‘ ( 𝑥 + ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) ) )
74 0z ⊢ 0 ∈ ℤ
75 elfzuz3 ⊢ ( 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) → ( ♯ ‘ 𝑊 ) ∈ ( ℤ≥ ‘ 𝐿 ) )
76 32 addlidd ⊢ ( 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) → ( 0 + 𝐿 ) = 𝐿 )
77 76 fveq2d ⊢ ( 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) → ( ℤ≥ ‘ ( 0 + 𝐿 ) ) = ( ℤ≥ ‘ 𝐿 ) )
78 75 77 eleqtrrd ⊢ ( 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) → ( ♯ ‘ 𝑊 ) ∈ ( ℤ≥ ‘ ( 0 + 𝐿 ) ) )
79 eluzsub ⊢ ( ( 0 ∈ ℤ ∧ 𝐿 ∈ ℤ ∧ ( ♯ ‘ 𝑊 ) ∈ ( ℤ≥ ‘ ( 0 + 𝐿 ) ) ) → ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ∈ ( ℤ≥ ‘ 0 ) )
80 74 31 78 79 mp3an2i ⊢ ( 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) → ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ∈ ( ℤ≥ ‘ 0 ) )
81 fzoss1 ⊢ ( ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ∈ ( ℤ≥ ‘ 0 ) → ( ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ..^ ( ♯ ‘ 𝑊 ) ) ⊆ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) )
82 80 81 syl ⊢ ( 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) → ( ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ..^ ( ♯ ‘ 𝑊 ) ) ⊆ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) )
83 82 3ad2ant2 ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑥 ∈ ( 0 ..^ 𝐿 ) ) → ( ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ..^ ( ♯ ‘ 𝑊 ) ) ⊆ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) )
84 20 nn0zd ⊢ ( 𝑊 ∈ Word 𝑉 → ( ♯ ‘ 𝑊 ) ∈ ℤ )
85 84 3ad2ant1 ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑥 ∈ ( 0 ..^ 𝐿 ) ) → ( ♯ ‘ 𝑊 ) ∈ ℤ )
86 31 3ad2ant2 ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑥 ∈ ( 0 ..^ 𝐿 ) ) → 𝐿 ∈ ℤ )
87 85 86 zsubcld ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑥 ∈ ( 0 ..^ 𝐿 ) ) → ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ∈ ℤ )
88 fzo0addel ⊢ ( ( 𝑥 ∈ ( 0 ..^ 𝐿 ) ∧ ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ∈ ℤ ) → ( 𝑥 + ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) ∈ ( ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ..^ ( 𝐿 + ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) ) )
89 40 87 88 syl2anc ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑥 ∈ ( 0 ..^ 𝐿 ) ) → ( 𝑥 + ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) ∈ ( ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ..^ ( 𝐿 + ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) ) )
90 30 3adant3 ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑥 ∈ ( 0 ..^ 𝐿 ) ) → ( ♯ ‘ 𝑊 ) ∈ ℂ )
91 51 90 pncan3d ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑥 ∈ ( 0 ..^ 𝐿 ) ) → ( 𝐿 + ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) = ( ♯ ‘ 𝑊 ) )
92 91 oveq2d ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑥 ∈ ( 0 ..^ 𝐿 ) ) → ( ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ..^ ( 𝐿 + ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) ) = ( ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ..^ ( ♯ ‘ 𝑊 ) ) )
93 89 92 eleqtrd ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑥 ∈ ( 0 ..^ 𝐿 ) ) → ( 𝑥 + ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) ∈ ( ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ..^ ( ♯ ‘ 𝑊 ) ) )
94 83 93 sseldd ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑥 ∈ ( 0 ..^ 𝐿 ) ) → ( 𝑥 + ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) )
95 revfv ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ ( 𝑥 + ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ) → ( ( reverse ‘ 𝑊 ) ‘ ( 𝑥 + ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) ) = ( 𝑊 ‘ ( ( ( ♯ ‘ 𝑊 ) − 1 ) − ( 𝑥 + ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) ) ) )
96 39 94 95 syl2anc ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑥 ∈ ( 0 ..^ 𝐿 ) ) → ( ( reverse ‘ 𝑊 ) ‘ ( 𝑥 + ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) ) = ( 𝑊 ‘ ( ( ( ♯ ‘ 𝑊 ) − 1 ) − ( 𝑥 + ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) ) ) )
97 90 55 subcld ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑥 ∈ ( 0 ..^ 𝐿 ) ) → ( ( ♯ ‘ 𝑊 ) − 1 ) ∈ ℂ )
98 87 zcnd ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑥 ∈ ( 0 ..^ 𝐿 ) ) → ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ∈ ℂ )
99 97 54 98 sub32d ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑥 ∈ ( 0 ..^ 𝐿 ) ) → ( ( ( ( ♯ ‘ 𝑊 ) − 1 ) − 𝑥 ) − ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) = ( ( ( ( ♯ ‘ 𝑊 ) − 1 ) − ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) − 𝑥 ) )
100 97 54 98 subsub4d ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑥 ∈ ( 0 ..^ 𝐿 ) ) → ( ( ( ( ♯ ‘ 𝑊 ) − 1 ) − 𝑥 ) − ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) = ( ( ( ♯ ‘ 𝑊 ) − 1 ) − ( 𝑥 + ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) ) )
101 90 55 98 sub32d ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑥 ∈ ( 0 ..^ 𝐿 ) ) → ( ( ( ♯ ‘ 𝑊 ) − 1 ) − ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) = ( ( ( ♯ ‘ 𝑊 ) − ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) − 1 ) )
102 101 oveq1d ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑥 ∈ ( 0 ..^ 𝐿 ) ) → ( ( ( ( ♯ ‘ 𝑊 ) − 1 ) − ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) − 𝑥 ) = ( ( ( ( ♯ ‘ 𝑊 ) − ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) − 1 ) − 𝑥 ) )
103 99 100 102 3eqtr3d ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑥 ∈ ( 0 ..^ 𝐿 ) ) → ( ( ( ♯ ‘ 𝑊 ) − 1 ) − ( 𝑥 + ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) ) = ( ( ( ( ♯ ‘ 𝑊 ) − ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) − 1 ) − 𝑥 ) )
104 34 3adant3 ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑥 ∈ ( 0 ..^ 𝐿 ) ) → ( ( ♯ ‘ 𝑊 ) − ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) = 𝐿 )
105 104 oveq1d ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑥 ∈ ( 0 ..^ 𝐿 ) ) → ( ( ( ♯ ‘ 𝑊 ) − ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) − 1 ) = ( 𝐿 − 1 ) )
106 105 oveq1d ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑥 ∈ ( 0 ..^ 𝐿 ) ) → ( ( ( ( ♯ ‘ 𝑊 ) − ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) − 1 ) − 𝑥 ) = ( ( 𝐿 − 1 ) − 𝑥 ) )
107 103 106 eqtrd ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑥 ∈ ( 0 ..^ 𝐿 ) ) → ( ( ( ♯ ‘ 𝑊 ) − 1 ) − ( 𝑥 + ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) ) = ( ( 𝐿 − 1 ) − 𝑥 ) )
108 107 fveq2d ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑥 ∈ ( 0 ..^ 𝐿 ) ) → ( 𝑊 ‘ ( ( ( ♯ ‘ 𝑊 ) − 1 ) − ( 𝑥 + ( ( ♯ ‘ 𝑊 ) − 𝐿 ) ) ) ) = ( 𝑊 ‘ ( ( 𝐿 − 1 ) − 𝑥 ) ) )
109 73 96 108 3eqtrd ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑥 ∈ ( 0 ..^ 𝐿 ) ) → ( ( ( reverse ‘ 𝑊 ) substr ⟨ ( ( ♯ ‘ 𝑊 ) − 𝐿 ) , ( ♯ ‘ 𝑊 ) ⟩ ) ‘ 𝑥 ) = ( 𝑊 ‘ ( ( 𝐿 − 1 ) − 𝑥 ) ) )
110 62 109 eqtr4d ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ∧ 𝑥 ∈ ( 0 ..^ 𝐿 ) ) → ( ( reverse ‘ ( 𝑊 prefix 𝐿 ) ) ‘ 𝑥 ) = ( ( ( reverse ‘ 𝑊 ) substr ⟨ ( ( ♯ ‘ 𝑊 ) − 𝐿 ) , ( ♯ ‘ 𝑊 ) ⟩ ) ‘ 𝑥 ) )
111 110 3expa ⊢ ( ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ) ∧ 𝑥 ∈ ( 0 ..^ 𝐿 ) ) → ( ( reverse ‘ ( 𝑊 prefix 𝐿 ) ) ‘ 𝑥 ) = ( ( ( reverse ‘ 𝑊 ) substr ⟨ ( ( ♯ ‘ 𝑊 ) − 𝐿 ) , ( ♯ ‘ 𝑊 ) ⟩ ) ‘ 𝑥 ) )
112 13 38 111 eqfnfvd ⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝐿 ∈ ( 0 ... ( ♯ ‘ 𝑊 ) ) ) → ( reverse ‘ ( 𝑊 prefix 𝐿 ) ) = ( ( reverse ‘ 𝑊 ) substr ⟨ ( ( ♯ ‘ 𝑊 ) − 𝐿 ) , ( ♯ ‘ 𝑊 ) ⟩ ) )