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 32905
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 482 . . . 4 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 𝑊 ∈ Word 𝑉)
2 simpr 484 . . . . . 6 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 2 ≤ 𝑁)
3 pfxlsw2ccat.n . . . . . 6 𝑁 = (♯‘𝑊)
42, 3breqtrdi 5136 . . . . 5 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 2 ≤ (♯‘𝑊))
5 wrdlenge2n0 14477 . . . . 5 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ (♯‘𝑊)) → 𝑊 ≠ ∅)
61, 4, 5syl2anc 584 . . . 4 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 𝑊 ≠ ∅)
7 pfxlswccat 14637 . . . 4 ((𝑊 ∈ Word 𝑉𝑊 ≠ ∅) → ((𝑊 prefix ((♯‘𝑊) − 1)) ++ ⟨“(lastS‘𝑊)”⟩) = 𝑊)
81, 6, 7syl2anc 584 . . 3 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((𝑊 prefix ((♯‘𝑊) − 1)) ++ ⟨“(lastS‘𝑊)”⟩) = 𝑊)
9 lsw 14489 . . . . . . 7 (𝑊 ∈ Word 𝑉 → (lastS‘𝑊) = (𝑊‘((♯‘𝑊) − 1)))
103oveq1i 7363 . . . . . . . 8 (𝑁 − 1) = ((♯‘𝑊) − 1)
1110fveq2i 6829 . . . . . . 7 (𝑊‘(𝑁 − 1)) = (𝑊‘((♯‘𝑊) − 1))
129, 11eqtr4di 2782 . . . . . 6 (𝑊 ∈ Word 𝑉 → (lastS‘𝑊) = (𝑊‘(𝑁 − 1)))
131, 12syl 17 . . . . 5 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (lastS‘𝑊) = (𝑊‘(𝑁 − 1)))
1413s1eqd 14526 . . . 4 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ⟨“(lastS‘𝑊)”⟩ = ⟨“(𝑊‘(𝑁 − 1))”⟩)
1514oveq2d 7369 . . 3 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((𝑊 prefix ((♯‘𝑊) − 1)) ++ ⟨“(lastS‘𝑊)”⟩) = ((𝑊 prefix ((♯‘𝑊) − 1)) ++ ⟨“(𝑊‘(𝑁 − 1))”⟩))
168, 15eqtr3d 2766 . 2 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 𝑊 = ((𝑊 prefix ((♯‘𝑊) − 1)) ++ ⟨“(𝑊‘(𝑁 − 1))”⟩))
17 pfxcl 14602 . . . . . 6 (𝑊 ∈ Word 𝑉 → (𝑊 prefix ((♯‘𝑊) − 1)) ∈ Word 𝑉)
181, 17syl 17 . . . . 5 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (𝑊 prefix ((♯‘𝑊) − 1)) ∈ Word 𝑉)
19 lencl 14458 . . . . . . . . . 10 (𝑊 ∈ Word 𝑉 → (♯‘𝑊) ∈ ℕ0)
201, 19syl 17 . . . . . . . . 9 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (♯‘𝑊) ∈ ℕ0)
213, 20eqeltrid 2832 . . . . . . . 8 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 𝑁 ∈ ℕ0)
22 nn0ge2m1nn 12472 . . . . . . . 8 ((𝑁 ∈ ℕ0 ∧ 2 ≤ 𝑁) → (𝑁 − 1) ∈ ℕ)
2321, 2, 22syl2anc 584 . . . . . . 7 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (𝑁 − 1) ∈ ℕ)
2410, 23eqeltrrid 2833 . . . . . 6 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((♯‘𝑊) − 1) ∈ ℕ)
2520nn0red 12464 . . . . . . 7 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (♯‘𝑊) ∈ ℝ)
2625lem1d 12076 . . . . . 6 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((♯‘𝑊) − 1) ≤ (♯‘𝑊))
27 pfxn0 14611 . . . . . 6 ((𝑊 ∈ Word 𝑉 ∧ ((♯‘𝑊) − 1) ∈ ℕ ∧ ((♯‘𝑊) − 1) ≤ (♯‘𝑊)) → (𝑊 prefix ((♯‘𝑊) − 1)) ≠ ∅)
281, 24, 26, 27syl3anc 1373 . . . . 5 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (𝑊 prefix ((♯‘𝑊) − 1)) ≠ ∅)
29 pfxlswccat 14637 . . . . 5 (((𝑊 prefix ((♯‘𝑊) − 1)) ∈ Word 𝑉 ∧ (𝑊 prefix ((♯‘𝑊) − 1)) ≠ ∅) → (((𝑊 prefix ((♯‘𝑊) − 1)) prefix ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1)) ++ ⟨“(lastS‘(𝑊 prefix ((♯‘𝑊) − 1)))”⟩) = (𝑊 prefix ((♯‘𝑊) − 1)))
3018, 28, 29syl2anc 584 . . . 4 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (((𝑊 prefix ((♯‘𝑊) − 1)) prefix ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1)) ++ ⟨“(lastS‘(𝑊 prefix ((♯‘𝑊) − 1)))”⟩) = (𝑊 prefix ((♯‘𝑊) − 1)))
31 ige2m1fz 13538 . . . . . . . 8 (((♯‘𝑊) ∈ ℕ0 ∧ 2 ≤ (♯‘𝑊)) → ((♯‘𝑊) − 1) ∈ (0...(♯‘𝑊)))
3220, 4, 31syl2anc 584 . . . . . . 7 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((♯‘𝑊) − 1) ∈ (0...(♯‘𝑊)))
33 pfxlen 14608 . . . . . . . . . 10 ((𝑊 ∈ Word 𝑉 ∧ ((♯‘𝑊) − 1) ∈ (0...(♯‘𝑊))) → (♯‘(𝑊 prefix ((♯‘𝑊) − 1))) = ((♯‘𝑊) − 1))
341, 32, 33syl2anc 584 . . . . . . . . 9 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (♯‘(𝑊 prefix ((♯‘𝑊) − 1))) = ((♯‘𝑊) − 1))
3534oveq1d 7368 . . . . . . . 8 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1) = (((♯‘𝑊) − 1) − 1))
36 0zd 12501 . . . . . . . . 9 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 0 ∈ ℤ)
37 nn0ge2m1nn0 12473 . . . . . . . . . . . 12 ((𝑁 ∈ ℕ0 ∧ 2 ≤ 𝑁) → (𝑁 − 1) ∈ ℕ0)
3821, 2, 37syl2anc 584 . . . . . . . . . . 11 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (𝑁 − 1) ∈ ℕ0)
3910, 38eqeltrrid 2833 . . . . . . . . . 10 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((♯‘𝑊) − 1) ∈ ℕ0)
4039nn0zd 12515 . . . . . . . . 9 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((♯‘𝑊) − 1) ∈ ℤ)
41 1zzd 12524 . . . . . . . . . 10 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 1 ∈ ℤ)
4240, 41zsubcld 12603 . . . . . . . . 9 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (((♯‘𝑊) − 1) − 1) ∈ ℤ)
43 2nn0 12419 . . . . . . . . . . . . . 14 2 ∈ ℕ0
4443a1i 11 . . . . . . . . . . . . 13 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 2 ∈ ℕ0)
45 nn0sub 12452 . . . . . . . . . . . . . 14 ((2 ∈ ℕ0𝑁 ∈ ℕ0) → (2 ≤ 𝑁 ↔ (𝑁 − 2) ∈ ℕ0))
4645biimpa 476 . . . . . . . . . . . . 13 (((2 ∈ ℕ0𝑁 ∈ ℕ0) ∧ 2 ≤ 𝑁) → (𝑁 − 2) ∈ ℕ0)
4744, 21, 2, 46syl21anc 837 . . . . . . . . . . . 12 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (𝑁 − 2) ∈ ℕ0)
4847nn0ge0d 12466 . . . . . . . . . . 11 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 0 ≤ (𝑁 − 2))
4921nn0cnd 12465 . . . . . . . . . . . 12 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 𝑁 ∈ ℂ)
50 sub1m1 12394 . . . . . . . . . . . 12 (𝑁 ∈ ℂ → ((𝑁 − 1) − 1) = (𝑁 − 2))
5149, 50syl 17 . . . . . . . . . . 11 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((𝑁 − 1) − 1) = (𝑁 − 2))
5248, 51breqtrrd 5123 . . . . . . . . . 10 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 0 ≤ ((𝑁 − 1) − 1))
5310oveq1i 7363 . . . . . . . . . 10 ((𝑁 − 1) − 1) = (((♯‘𝑊) − 1) − 1)
5452, 53breqtrdi 5136 . . . . . . . . 9 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 0 ≤ (((♯‘𝑊) − 1) − 1))
5524nnred 12161 . . . . . . . . . 10 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((♯‘𝑊) − 1) ∈ ℝ)
5655lem1d 12076 . . . . . . . . 9 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (((♯‘𝑊) − 1) − 1) ≤ ((♯‘𝑊) − 1))
5736, 40, 42, 54, 56elfzd 13436 . . . . . . . 8 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (((♯‘𝑊) − 1) − 1) ∈ (0...((♯‘𝑊) − 1)))
5835, 57eqeltrd 2828 . . . . . . 7 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1) ∈ (0...((♯‘𝑊) − 1)))
59 pfxpfx 14632 . . . . . . 7 ((𝑊 ∈ Word 𝑉 ∧ ((♯‘𝑊) − 1) ∈ (0...(♯‘𝑊)) ∧ ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1) ∈ (0...((♯‘𝑊) − 1))) → ((𝑊 prefix ((♯‘𝑊) − 1)) prefix ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1)) = (𝑊 prefix ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1)))
601, 32, 58, 59syl3anc 1373 . . . . . 6 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((𝑊 prefix ((♯‘𝑊) − 1)) prefix ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1)) = (𝑊 prefix ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1)))
6134, 10eqtr4di 2782 . . . . . . . . 9 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (♯‘(𝑊 prefix ((♯‘𝑊) − 1))) = (𝑁 − 1))
6261oveq1d 7368 . . . . . . . 8 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1) = ((𝑁 − 1) − 1))
6362, 51eqtrd 2764 . . . . . . 7 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1) = (𝑁 − 2))
6463oveq2d 7369 . . . . . 6 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (𝑊 prefix ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1)) = (𝑊 prefix (𝑁 − 2)))
6560, 64eqtrd 2764 . . . . 5 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((𝑊 prefix ((♯‘𝑊) − 1)) prefix ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1)) = (𝑊 prefix (𝑁 − 2)))
66 pfxtrcfvl 14621 . . . . . . . 8 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ (♯‘𝑊)) → (lastS‘(𝑊 prefix ((♯‘𝑊) − 1))) = (𝑊‘((♯‘𝑊) − 2)))
671, 4, 66syl2anc 584 . . . . . . 7 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (lastS‘(𝑊 prefix ((♯‘𝑊) − 1))) = (𝑊‘((♯‘𝑊) − 2)))
683a1i 11 . . . . . . . 8 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 𝑁 = (♯‘𝑊))
6968fvoveq1d 7375 . . . . . . 7 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (𝑊‘(𝑁 − 2)) = (𝑊‘((♯‘𝑊) − 2)))
7067, 69eqtr4d 2767 . . . . . 6 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (lastS‘(𝑊 prefix ((♯‘𝑊) − 1))) = (𝑊‘(𝑁 − 2)))
7170s1eqd 14526 . . . . 5 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ⟨“(lastS‘(𝑊 prefix ((♯‘𝑊) − 1)))”⟩ = ⟨“(𝑊‘(𝑁 − 2))”⟩)
7265, 71oveq12d 7371 . . . 4 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (((𝑊 prefix ((♯‘𝑊) − 1)) prefix ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1)) ++ ⟨“(lastS‘(𝑊 prefix ((♯‘𝑊) − 1)))”⟩) = ((𝑊 prefix (𝑁 − 2)) ++ ⟨“(𝑊‘(𝑁 − 2))”⟩))
7330, 72eqtr3d 2766 . . 3 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (𝑊 prefix ((♯‘𝑊) − 1)) = ((𝑊 prefix (𝑁 − 2)) ++ ⟨“(𝑊‘(𝑁 − 2))”⟩))
7473oveq1d 7368 . 2 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((𝑊 prefix ((♯‘𝑊) − 1)) ++ ⟨“(𝑊‘(𝑁 − 1))”⟩) = (((𝑊 prefix (𝑁 − 2)) ++ ⟨“(𝑊‘(𝑁 − 2))”⟩) ++ ⟨“(𝑊‘(𝑁 − 1))”⟩))
75 pfxcl 14602 . . . 4 (𝑊 ∈ Word 𝑉 → (𝑊 prefix (𝑁 − 2)) ∈ Word 𝑉)
761, 75syl 17 . . 3 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (𝑊 prefix (𝑁 − 2)) ∈ Word 𝑉)
77 ccatw2s1ccatws2 14879 . . 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 2768 1 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 𝑊 = ((𝑊 prefix (𝑁 − 2)) ++ ⟨“(𝑊‘(𝑁 − 2))(𝑊‘(𝑁 − 1))”⟩))
Colors of variables: wff setvar class
Syntax hints:  wi 4  wa 395   = wceq 1540  wcel 2109  wne 2925  c0 4286   class class class wbr 5095  cfv 6486  (class class class)co 7353  cc 11026  0cc0 11028  1c1 11029  cle 11169  cmin 11365  cn 12146  2c2 12201  0cn0 12402  ...cfz 13428  chash 14255  Word cword 14438  lastSclsw 14487   ++ cconcat 14495  ⟨“cs1 14520   prefix cpfx 14595  ⟨“cs2 14766
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1795  ax-4 1809  ax-5 1910  ax-6 1967  ax-7 2008  ax-8 2111  ax-9 2119  ax-10 2142  ax-11 2158  ax-12 2178  ax-ext 2701  ax-rep 5221  ax-sep 5238  ax-nul 5248  ax-pow 5307  ax-pr 5374  ax-un 7675  ax-cnex 11084  ax-resscn 11085  ax-1cn 11086  ax-icn 11087  ax-addcl 11088  ax-addrcl 11089  ax-mulcl 11090  ax-mulrcl 11091  ax-mulcom 11092  ax-addass 11093  ax-mulass 11094  ax-distr 11095  ax-i2m1 11096  ax-1ne0 11097  ax-1rid 11098  ax-rnegex 11099  ax-rrecex 11100  ax-cnre 11101  ax-pre-lttri 11102  ax-pre-lttrn 11103  ax-pre-ltadd 11104  ax-pre-mulgt0 11105
This theorem depends on definitions:  df-bi 207  df-an 396  df-or 848  df-3or 1087  df-3an 1088  df-tru 1543  df-fal 1553  df-ex 1780  df-nf 1784  df-sb 2066  df-mo 2533  df-eu 2562  df-clab 2708  df-cleq 2721  df-clel 2803  df-nfc 2878  df-ne 2926  df-nel 3030  df-ral 3045  df-rex 3054  df-reu 3346  df-rab 3397  df-v 3440  df-sbc 3745  df-csb 3854  df-dif 3908  df-un 3910  df-in 3912  df-ss 3922  df-pss 3925  df-nul 4287  df-if 4479  df-pw 4555  df-sn 4580  df-pr 4582  df-op 4586  df-uni 4862  df-int 4900  df-iun 4946  df-br 5096  df-opab 5158  df-mpt 5177  df-tr 5203  df-id 5518  df-eprel 5523  df-po 5531  df-so 5532  df-fr 5576  df-we 5578  df-xp 5629  df-rel 5630  df-cnv 5631  df-co 5632  df-dm 5633  df-rn 5634  df-res 5635  df-ima 5636  df-pred 6253  df-ord 6314  df-on 6315  df-lim 6316  df-suc 6317  df-iota 6442  df-fun 6488  df-fn 6489  df-f 6490  df-f1 6491  df-fo 6492  df-f1o 6493  df-fv 6494  df-riota 7310  df-ov 7356  df-oprab 7357  df-mpo 7358  df-om 7807  df-1st 7931  df-2nd 7932  df-frecs 8221  df-wrecs 8252  df-recs 8301  df-rdg 8339  df-1o 8395  df-er 8632  df-en 8880  df-dom 8881  df-sdom 8882  df-fin 8883  df-card 9854  df-pnf 11170  df-mnf 11171  df-xr 11172  df-ltxr 11173  df-le 11174  df-sub 11367  df-neg 11368  df-nn 12147  df-2 12209  df-n0 12403  df-xnn0 12476  df-z 12490  df-uz 12754  df-fz 13429  df-fzo 13576  df-hash 14256  df-word 14439  df-lsw 14488  df-concat 14496  df-s1 14521  df-substr 14566  df-pfx 14596  df-s2 14773
This theorem is referenced by:  wrdt2ind  32908
  Copyright terms: Public domain W3C validator