Users' Mathboxes Mathbox for Thierry Arnoux < Previous   Next >
Nearby theorems
Mirrors  >  Home  >  MPE Home  >  Th. List  >   Mathboxes  >  pfxlsw2ccat Structured version   Visualization version   GIF version

Theorem pfxlsw2ccat 33089
Description: Reconstruct a word from its prefix and its last two symbols. (Contributed by Thierry Arnoux, 26-Sep-2023.)
Hypothesis
Ref Expression
pfxlsw2ccat.n 𝑁 = (♯‘𝑊)
Assertion
Ref Expression
pfxlsw2ccat ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 𝑊 = ((𝑊 prefix (𝑁 − 2)) ++ ⟨“(𝑊‘(𝑁 − 2))(𝑊‘(𝑁 − 1))”⟩))

Proof of Theorem pfxlsw2ccat
StepHypRef Expression
1 simpl 486 . . . 4 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 𝑊 ∈ Word 𝑉)
2 simpr 488 . . . . . 6 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 2 ≤ 𝑁)
3 pfxlsw2ccat.n . . . . . 6 𝑁 = (♯‘𝑊)
42, 3breqtrdi 5140 . . . . 5 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 2 ≤ (♯‘𝑊))
5 wrdlenge2n0 14562 . . . . 5 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ (♯‘𝑊)) → 𝑊 ≠ ∅)
61, 4, 5syl2anc 593 . . . 4 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 𝑊 ≠ ∅)
7 pfxlswccat 14723 . . . 4 ((𝑊 ∈ Word 𝑉𝑊 ≠ ∅) → ((𝑊 prefix ((♯‘𝑊) − 1)) ++ ⟨“(lastS‘𝑊)”⟩) = 𝑊)
81, 6, 7syl2anc 593 . . 3 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((𝑊 prefix ((♯‘𝑊) − 1)) ++ ⟨“(lastS‘𝑊)”⟩) = 𝑊)
9 lsw 14574 . . . . . . 7 (𝑊 ∈ Word 𝑉 → (lastS‘𝑊) = (𝑊‘((♯‘𝑊) − 1)))
103oveq1i 7402 . . . . . . . 8 (𝑁 − 1) = ((♯‘𝑊) − 1)
1110fveq2i 6866 . . . . . . 7 (𝑊‘(𝑁 − 1)) = (𝑊‘((♯‘𝑊) − 1))
129, 11eqtr4di 2814 . . . . . 6 (𝑊 ∈ Word 𝑉 → (lastS‘𝑊) = (𝑊‘(𝑁 − 1)))
131, 12syl 17 . . . . 5 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (lastS‘𝑊) = (𝑊‘(𝑁 − 1)))
1413s1eqd 14612 . . . 4 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ⟨“(lastS‘𝑊)”⟩ = ⟨“(𝑊‘(𝑁 − 1))”⟩)
1514oveq2d 7408 . . 3 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((𝑊 prefix ((♯‘𝑊) − 1)) ++ ⟨“(lastS‘𝑊)”⟩) = ((𝑊 prefix ((♯‘𝑊) − 1)) ++ ⟨“(𝑊‘(𝑁 − 1))”⟩))
168, 15eqtr3d 2798 . 2 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 𝑊 = ((𝑊 prefix ((♯‘𝑊) − 1)) ++ ⟨“(𝑊‘(𝑁 − 1))”⟩))
17 pfxcl 14688 . . . . . 6 (𝑊 ∈ Word 𝑉 → (𝑊 prefix ((♯‘𝑊) − 1)) ∈ Word 𝑉)
181, 17syl 17 . . . . 5 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (𝑊 prefix ((♯‘𝑊) − 1)) ∈ Word 𝑉)
19 lencl 14543 . . . . . . . . . 10 (𝑊 ∈ Word 𝑉 → (♯‘𝑊) ∈ ℕ0)
201, 19syl 17 . . . . . . . . 9 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (♯‘𝑊) ∈ ℕ0)
213, 20eqeltrid 2865 . . . . . . . 8 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 𝑁 ∈ ℕ0)
22 nn0ge2m1nn 12548 . . . . . . . 8 ((𝑁 ∈ ℕ0 ∧ 2 ≤ 𝑁) → (𝑁 − 1) ∈ ℕ)
2321, 2, 22syl2anc 593 . . . . . . 7 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (𝑁 − 1) ∈ ℕ)
2410, 23eqeltrrid 2866 . . . . . 6 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((♯‘𝑊) − 1) ∈ ℕ)
2520nn0red 12540 . . . . . . 7 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (♯‘𝑊) ∈ ℝ)
2625lem1d 12122 . . . . . 6 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((♯‘𝑊) − 1) ≤ (♯‘𝑊))
27 pfxn0 14697 . . . . . 6 ((𝑊 ∈ Word 𝑉 ∧ ((♯‘𝑊) − 1) ∈ ℕ ∧ ((♯‘𝑊) − 1) ≤ (♯‘𝑊)) → (𝑊 prefix ((♯‘𝑊) − 1)) ≠ ∅)
281, 24, 26, 27syl3anc 1389 . . . . 5 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (𝑊 prefix ((♯‘𝑊) − 1)) ≠ ∅)
29 pfxlswccat 14723 . . . . 5 (((𝑊 prefix ((♯‘𝑊) − 1)) ∈ Word 𝑉 ∧ (𝑊 prefix ((♯‘𝑊) − 1)) ≠ ∅) → (((𝑊 prefix ((♯‘𝑊) − 1)) prefix ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1)) ++ ⟨“(lastS‘(𝑊 prefix ((♯‘𝑊) − 1)))”⟩) = (𝑊 prefix ((♯‘𝑊) − 1)))
3018, 28, 29syl2anc 593 . . . 4 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (((𝑊 prefix ((♯‘𝑊) − 1)) prefix ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1)) ++ ⟨“(lastS‘(𝑊 prefix ((♯‘𝑊) − 1)))”⟩) = (𝑊 prefix ((♯‘𝑊) − 1)))
31 ige2m1fz 13619 . . . . . . . 8 (((♯‘𝑊) ∈ ℕ0 ∧ 2 ≤ (♯‘𝑊)) → ((♯‘𝑊) − 1) ∈ (0...(♯‘𝑊)))
3220, 4, 31syl2anc 593 . . . . . . 7 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((♯‘𝑊) − 1) ∈ (0...(♯‘𝑊)))
33 pfxlen 14694 . . . . . . . . . 10 ((𝑊 ∈ Word 𝑉 ∧ ((♯‘𝑊) − 1) ∈ (0...(♯‘𝑊))) → (♯‘(𝑊 prefix ((♯‘𝑊) − 1))) = ((♯‘𝑊) − 1))
341, 32, 33syl2anc 593 . . . . . . . . 9 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (♯‘(𝑊 prefix ((♯‘𝑊) − 1))) = ((♯‘𝑊) − 1))
3534oveq1d 7407 . . . . . . . 8 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1) = (((♯‘𝑊) − 1) − 1))
36 0zd 12577 . . . . . . . . 9 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 0 ∈ ℤ)
37 nn0ge2m1nn0 12549 . . . . . . . . . . . 12 ((𝑁 ∈ ℕ0 ∧ 2 ≤ 𝑁) → (𝑁 − 1) ∈ ℕ0)
3821, 2, 37syl2anc 593 . . . . . . . . . . 11 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (𝑁 − 1) ∈ ℕ0)
3910, 38eqeltrrid 2866 . . . . . . . . . 10 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((♯‘𝑊) − 1) ∈ ℕ0)
4039nn0zd 12590 . . . . . . . . 9 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((♯‘𝑊) − 1) ∈ ℤ)
41 1zzd 12599 . . . . . . . . . 10 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 1 ∈ ℤ)
4240, 41zsubcld 12679 . . . . . . . . 9 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (((♯‘𝑊) − 1) − 1) ∈ ℤ)
43 2nn0 12495 . . . . . . . . . . . . . 14 2 ∈ ℕ0
4443a1i 11 . . . . . . . . . . . . 13 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 2 ∈ ℕ0)
45 nn0sub 12528 . . . . . . . . . . . . . 14 ((2 ∈ ℕ0𝑁 ∈ ℕ0) → (2 ≤ 𝑁 ↔ (𝑁 − 2) ∈ ℕ0))
4645biimpa 480 . . . . . . . . . . . . 13 (((2 ∈ ℕ0𝑁 ∈ ℕ0) ∧ 2 ≤ 𝑁) → (𝑁 − 2) ∈ ℕ0)
4744, 21, 2, 46syl21anc 848 . . . . . . . . . . . 12 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (𝑁 − 2) ∈ ℕ0)
4847nn0ge0d 12542 . . . . . . . . . . 11 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 0 ≤ (𝑁 − 2))
4921nn0cnd 12541 . . . . . . . . . . . 12 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 𝑁 ∈ ℂ)
50 sub1m1 12470 . . . . . . . . . . . 12 (𝑁 ∈ ℂ → ((𝑁 − 1) − 1) = (𝑁 − 2))
5149, 50syl 17 . . . . . . . . . . 11 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((𝑁 − 1) − 1) = (𝑁 − 2))
5248, 51breqtrrd 5127 . . . . . . . . . 10 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 0 ≤ ((𝑁 − 1) − 1))
5310oveq1i 7402 . . . . . . . . . 10 ((𝑁 − 1) − 1) = (((♯‘𝑊) − 1) − 1)
5452, 53breqtrdi 5140 . . . . . . . . 9 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 0 ≤ (((♯‘𝑊) − 1) − 1))
5524nnred 12222 . . . . . . . . . 10 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((♯‘𝑊) − 1) ∈ ℝ)
5655lem1d 12122 . . . . . . . . 9 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (((♯‘𝑊) − 1) − 1) ≤ ((♯‘𝑊) − 1))
5736, 40, 42, 54, 56elfzd 13517 . . . . . . . 8 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (((♯‘𝑊) − 1) − 1) ∈ (0...((♯‘𝑊) − 1)))
5835, 57eqeltrd 2861 . . . . . . 7 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1) ∈ (0...((♯‘𝑊) − 1)))
59 pfxpfx 14718 . . . . . . 7 ((𝑊 ∈ Word 𝑉 ∧ ((♯‘𝑊) − 1) ∈ (0...(♯‘𝑊)) ∧ ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1) ∈ (0...((♯‘𝑊) − 1))) → ((𝑊 prefix ((♯‘𝑊) − 1)) prefix ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1)) = (𝑊 prefix ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1)))
601, 32, 58, 59syl3anc 1389 . . . . . 6 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((𝑊 prefix ((♯‘𝑊) − 1)) prefix ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1)) = (𝑊 prefix ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1)))
6134, 10eqtr4di 2814 . . . . . . . . 9 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (♯‘(𝑊 prefix ((♯‘𝑊) − 1))) = (𝑁 − 1))
6261oveq1d 7407 . . . . . . . 8 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1) = ((𝑁 − 1) − 1))
6362, 51eqtrd 2796 . . . . . . 7 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1) = (𝑁 − 2))
6463oveq2d 7408 . . . . . 6 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (𝑊 prefix ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1)) = (𝑊 prefix (𝑁 − 2)))
6560, 64eqtrd 2796 . . . . 5 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((𝑊 prefix ((♯‘𝑊) − 1)) prefix ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1)) = (𝑊 prefix (𝑁 − 2)))
66 pfxtrcfvl 14707 . . . . . . . 8 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ (♯‘𝑊)) → (lastS‘(𝑊 prefix ((♯‘𝑊) − 1))) = (𝑊‘((♯‘𝑊) − 2)))
671, 4, 66syl2anc 593 . . . . . . 7 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (lastS‘(𝑊 prefix ((♯‘𝑊) − 1))) = (𝑊‘((♯‘𝑊) − 2)))
683a1i 11 . . . . . . . 8 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 𝑁 = (♯‘𝑊))
6968fvoveq1d 7414 . . . . . . 7 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (𝑊‘(𝑁 − 2)) = (𝑊‘((♯‘𝑊) − 2)))
7067, 69eqtr4d 2799 . . . . . 6 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (lastS‘(𝑊 prefix ((♯‘𝑊) − 1))) = (𝑊‘(𝑁 − 2)))
7170s1eqd 14612 . . . . 5 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ⟨“(lastS‘(𝑊 prefix ((♯‘𝑊) − 1)))”⟩ = ⟨“(𝑊‘(𝑁 − 2))”⟩)
7265, 71oveq12d 7410 . . . 4 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (((𝑊 prefix ((♯‘𝑊) − 1)) prefix ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1)) ++ ⟨“(lastS‘(𝑊 prefix ((♯‘𝑊) − 1)))”⟩) = ((𝑊 prefix (𝑁 − 2)) ++ ⟨“(𝑊‘(𝑁 − 2))”⟩))
7330, 72eqtr3d 2798 . . 3 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (𝑊 prefix ((♯‘𝑊) − 1)) = ((𝑊 prefix (𝑁 − 2)) ++ ⟨“(𝑊‘(𝑁 − 2))”⟩))
7473oveq1d 7407 . 2 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((𝑊 prefix ((♯‘𝑊) − 1)) ++ ⟨“(𝑊‘(𝑁 − 1))”⟩) = (((𝑊 prefix (𝑁 − 2)) ++ ⟨“(𝑊‘(𝑁 − 2))”⟩) ++ ⟨“(𝑊‘(𝑁 − 1))”⟩))
75 pfxcl 14688 . . . 4 (𝑊 ∈ Word 𝑉 → (𝑊 prefix (𝑁 − 2)) ∈ Word 𝑉)
761, 75syl 17 . . 3 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (𝑊 prefix (𝑁 − 2)) ∈ Word 𝑉)
77 ccatw2s1ccatws2 14964 . . 3 ((𝑊 prefix (𝑁 − 2)) ∈ Word 𝑉 → (((𝑊 prefix (𝑁 − 2)) ++ ⟨“(𝑊‘(𝑁 − 2))”⟩) ++ ⟨“(𝑊‘(𝑁 − 1))”⟩) = ((𝑊 prefix (𝑁 − 2)) ++ ⟨“(𝑊‘(𝑁 − 2))(𝑊‘(𝑁 − 1))”⟩))
7876, 77syl 17 . 2 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (((𝑊 prefix (𝑁 − 2)) ++ ⟨“(𝑊‘(𝑁 − 2))”⟩) ++ ⟨“(𝑊‘(𝑁 − 1))”⟩) = ((𝑊 prefix (𝑁 − 2)) ++ ⟨“(𝑊‘(𝑁 − 2))(𝑊‘(𝑁 − 1))”⟩))
7916, 74, 783eqtrd 2800 1 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 𝑊 = ((𝑊 prefix (𝑁 − 2)) ++ ⟨“(𝑊‘(𝑁 − 2))(𝑊‘(𝑁 − 1))”⟩))
Colors of variables: wff setvar class
Syntax hints:  wi 4  wa 399   = wceq 1559  wcel 2141  wne 2956  c0 4285   class class class wbr 5099  cfv 6517  (class class class)co 7392  cc 11068  0cc0 11070  1c1 11071  cle 11214  cmin 11411  cn 12207  2c2 12269  0cn0 12478  ...cfz 13509  chash 14340  Word cword 14523  lastSclsw 14572   ++ cconcat 14580  ⟨“cs1 14606   prefix cpfx 14681  ⟨“cs2 14851
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1814  ax-4 1828  ax-5 1929  ax-6 1986  ax-7 2027  ax-8 2143  ax-9 2151  ax-10 2174  ax-11 2190  ax-12 2211  ax-ext 2733  ax-rep 5226  ax-sep 5245  ax-nul 5255  ax-pow 5321  ax-pr 5389  ax-un 7714  ax-cnex 11126  ax-resscn 11127  ax-1cn 11128  ax-icn 11129  ax-addcl 11130  ax-addrcl 11131  ax-mulcl 11132  ax-mulrcl 11133  ax-mulcom 11134  ax-addass 11135  ax-mulass 11136  ax-distr 11137  ax-i2m1 11138  ax-1ne0 11139  ax-1rid 11140  ax-rnegex 11141  ax-rrecex 11142  ax-cnre 11143  ax-pre-lttri 11144  ax-pre-lttrn 11145  ax-pre-ltadd 11146  ax-pre-mulgt0 11147
This theorem depends on definitions:  df-bi 209  df-an 400  df-or 859  df-3or 1098  df-3an 1099  df-tru 1562  df-fal 1572  df-ex 1799  df-nf 1803  df-sb 2090  df-mo 2565  df-eu 2595  df-clab 2740  df-cleq 2753  df-clel 2836  df-nfc 2910  df-ne 2957  df-nel 3061  df-ral 3076  df-rex 3086  df-reu 3367  df-rab 3414  df-v 3455  df-sbc 3745  df-csb 3853  df-dif 3907  df-un 3909  df-in 3911  df-ss 3921  df-pss 3924  df-nul 4286  df-if 4480  df-pw 4556  df-sn 4582  df-pr 4584  df-op 4588  df-uni 4865  df-int 4905  df-iun 4950  df-br 5100  df-opab 5162  df-mpt 5181  df-tr 5207  df-id 5540  df-eprel 5545  df-po 5553  df-so 5554  df-fr 5598  df-we 5600  df-xp 5651  df-rel 5652  df-cnv 5653  df-co 5654  df-dm 5655  df-rn 5656  df-res 5657  df-ima 5658  df-pred 6284  df-ord 6345  df-on 6346  df-lim 6347  df-suc 6348  df-iota 6473  df-fun 6519  df-fn 6520  df-f 6521  df-f1 6522  df-fo 6523  df-f1o 6524  df-fv 6525  df-riota 7349  df-ov 7395  df-oprab 7396  df-mpo 7397  df-om 7843  df-1st 7966  df-2nd 7967  df-frecs 8257  df-wrecs 8288  df-recs 8337  df-rdg 8376  df-1o 8432  df-er 8673  df-en 8924  df-dom 8925  df-sdom 8926  df-fin 8927  df-card 9894  df-pnf 11215  df-mnf 11216  df-xr 11217  df-ltxr 11218  df-le 11219  df-sub 11413  df-neg 11414  df-nn 12208  df-2 12277  df-n0 12479  df-xnn0 12552  df-z 12566  df-uz 12837  df-fz 13510  df-fzo 13657  df-hash 14341  df-word 14524  df-lsw 14573  df-concat 14581  df-s1 14607  df-substr 14652  df-pfx 14682  df-s2 14858
This theorem is referenced by:  wrdt2ind  33092
  Copyright terms: Public domain W3C validator