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 33303
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 488 . . . 4 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 𝑊 ∈ Word 𝑉)
2 simpr 490 . . . . . 6 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 2 ≤ 𝑁)
3 pfxlsw2ccat.n . . . . . 6 𝑁 = (♯‘𝑊)
42, 3breqtrdi 5157 . . . . 5 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 2 ≤ (♯‘𝑊))
5 wrdlenge2n0 14609 . . . . 5 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ (♯‘𝑊)) → 𝑊 ≠ ∅)
61, 4, 5syl2anc 596 . . . 4 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 𝑊 ≠ ∅)
7 pfxlswccat 14774 . . . 4 ((𝑊 ∈ Word 𝑉𝑊 ≠ ∅) → ((𝑊 prefix ((♯‘𝑊) − 1)) ++ ⟨“(lastS‘𝑊)”⟩) = 𝑊)
81, 6, 7syl2anc 596 . . 3 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((𝑊 prefix ((♯‘𝑊) − 1)) ++ ⟨“(lastS‘𝑊)”⟩) = 𝑊)
9 lsw 14621 . . . . . . 7 (𝑊 ∈ Word 𝑉 → (lastS‘𝑊) = (𝑊‘((♯‘𝑊) − 1)))
103oveq1i 7433 . . . . . . . 8 (𝑁 − 1) = ((♯‘𝑊) − 1)
1110fveq2i 6891 . . . . . . 7 (𝑊‘(𝑁 − 1)) = (𝑊‘((♯‘𝑊) − 1))
129, 11eqtr4di 2819 . . . . . 6 (𝑊 ∈ Word 𝑉 → (lastS‘𝑊) = (𝑊‘(𝑁 − 1)))
131, 12syl 18 . . . . 5 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (lastS‘𝑊) = (𝑊‘(𝑁 − 1)))
1413s1eqd 14660 . . . 4 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ⟨“(lastS‘𝑊)”⟩ = ⟨“(𝑊‘(𝑁 − 1))”⟩)
1514oveq2d 7439 . . 3 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((𝑊 prefix ((♯‘𝑊) − 1)) ++ ⟨“(lastS‘𝑊)”⟩) = ((𝑊 prefix ((♯‘𝑊) − 1)) ++ ⟨“(𝑊‘(𝑁 − 1))”⟩))
168, 15eqtr3d 2803 . 2 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 𝑊 = ((𝑊 prefix ((♯‘𝑊) − 1)) ++ ⟨“(𝑊‘(𝑁 − 1))”⟩))
17 pfxcl 14739 . . . . . 6 (𝑊 ∈ Word 𝑉 → (𝑊 prefix ((♯‘𝑊) − 1)) ∈ Word 𝑉)
181, 17syl 18 . . . . 5 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (𝑊 prefix ((♯‘𝑊) − 1)) ∈ Word 𝑉)
19 lencl 14590 . . . . . . . . . 10 (𝑊 ∈ Word 𝑉 → (♯‘𝑊) ∈ ℕ0)
201, 19syl 18 . . . . . . . . 9 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (♯‘𝑊) ∈ ℕ0)
213, 20eqeltrid 2870 . . . . . . . 8 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 𝑁 ∈ ℕ0)
22 nn0ge2m1nn 12592 . . . . . . . 8 ((𝑁 ∈ ℕ0 ∧ 2 ≤ 𝑁) → (𝑁 − 1) ∈ ℕ)
2321, 2, 22syl2anc 596 . . . . . . 7 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (𝑁 − 1) ∈ ℕ)
2410, 23eqeltrrid 2871 . . . . . 6 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((♯‘𝑊) − 1) ∈ ℕ)
2520nn0red 12584 . . . . . . 7 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (♯‘𝑊) ∈ ℝ)
2625lem1d 12166 . . . . . 6 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((♯‘𝑊) − 1) ≤ (♯‘𝑊))
27 pfxn0 14748 . . . . . 6 ((𝑊 ∈ Word 𝑉 ∧ ((♯‘𝑊) − 1) ∈ ℕ ∧ ((♯‘𝑊) − 1) ≤ (♯‘𝑊)) → (𝑊 prefix ((♯‘𝑊) − 1)) ≠ ∅)
281, 24, 26, 27syl3anc 1398 . . . . 5 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (𝑊 prefix ((♯‘𝑊) − 1)) ≠ ∅)
29 pfxlswccat 14774 . . . . 5 (((𝑊 prefix ((♯‘𝑊) − 1)) ∈ Word 𝑉 ∧ (𝑊 prefix ((♯‘𝑊) − 1)) ≠ ∅) → (((𝑊 prefix ((♯‘𝑊) − 1)) prefix ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1)) ++ ⟨“(lastS‘(𝑊 prefix ((♯‘𝑊) − 1)))”⟩) = (𝑊 prefix ((♯‘𝑊) − 1)))
3018, 28, 29syl2anc 596 . . . 4 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (((𝑊 prefix ((♯‘𝑊) − 1)) prefix ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1)) ++ ⟨“(lastS‘(𝑊 prefix ((♯‘𝑊) − 1)))”⟩) = (𝑊 prefix ((♯‘𝑊) − 1)))
31 ige2m1fz 13664 . . . . . . . 8 (((♯‘𝑊) ∈ ℕ0 ∧ 2 ≤ (♯‘𝑊)) → ((♯‘𝑊) − 1) ∈ (0...(♯‘𝑊)))
3220, 4, 31syl2anc 596 . . . . . . 7 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((♯‘𝑊) − 1) ∈ (0...(♯‘𝑊)))
33 pfxlen 14745 . . . . . . . . . 10 ((𝑊 ∈ Word 𝑉 ∧ ((♯‘𝑊) − 1) ∈ (0...(♯‘𝑊))) → (♯‘(𝑊 prefix ((♯‘𝑊) − 1))) = ((♯‘𝑊) − 1))
341, 32, 33syl2anc 596 . . . . . . . . 9 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (♯‘(𝑊 prefix ((♯‘𝑊) − 1))) = ((♯‘𝑊) − 1))
3534oveq1d 7438 . . . . . . . 8 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1) = (((♯‘𝑊) − 1) − 1))
36 0zd 12621 . . . . . . . . 9 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 0 ∈ ℤ)
37 nn0ge2m1nn0 12593 . . . . . . . . . . . 12 ((𝑁 ∈ ℕ0 ∧ 2 ≤ 𝑁) → (𝑁 − 1) ∈ ℕ0)
3821, 2, 37syl2anc 596 . . . . . . . . . . 11 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (𝑁 − 1) ∈ ℕ0)
3910, 38eqeltrrid 2871 . . . . . . . . . 10 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((♯‘𝑊) − 1) ∈ ℕ0)
4039nn0zd 12634 . . . . . . . . 9 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((♯‘𝑊) − 1) ∈ ℤ)
41 1zzd 12643 . . . . . . . . . 10 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 1 ∈ ℤ)
4240, 41zsubcld 12723 . . . . . . . . 9 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (((♯‘𝑊) − 1) − 1) ∈ ℤ)
43 2nn0 12539 . . . . . . . . . . . . . 14 2 ∈ ℕ0
4443a1i 11 . . . . . . . . . . . . 13 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 2 ∈ ℕ0)
45 nn0sub 12572 . . . . . . . . . . . . . 14 ((2 ∈ ℕ0𝑁 ∈ ℕ0) → (2 ≤ 𝑁 ↔ (𝑁 − 2) ∈ ℕ0))
4645biimpa 482 . . . . . . . . . . . . 13 (((2 ∈ ℕ0𝑁 ∈ ℕ0) ∧ 2 ≤ 𝑁) → (𝑁 − 2) ∈ ℕ0)
4744, 21, 2, 46syl21anc 851 . . . . . . . . . . . 12 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (𝑁 − 2) ∈ ℕ0)
4847nn0ge0d 12586 . . . . . . . . . . 11 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 0 ≤ (𝑁 − 2))
4921nn0cnd 12585 . . . . . . . . . . . 12 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 𝑁 ∈ ℂ)
50 sub1m1 12514 . . . . . . . . . . . 12 (𝑁 ∈ ℂ → ((𝑁 − 1) − 1) = (𝑁 − 2))
5149, 50syl 18 . . . . . . . . . . 11 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((𝑁 − 1) − 1) = (𝑁 − 2))
5248, 51breqtrrd 5144 . . . . . . . . . 10 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 0 ≤ ((𝑁 − 1) − 1))
5310oveq1i 7433 . . . . . . . . . 10 ((𝑁 − 1) − 1) = (((♯‘𝑊) − 1) − 1)
5452, 53breqtrdi 5157 . . . . . . . . 9 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 0 ≤ (((♯‘𝑊) − 1) − 1))
5524nnred 12266 . . . . . . . . . 10 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((♯‘𝑊) − 1) ∈ ℝ)
5655lem1d 12166 . . . . . . . . 9 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (((♯‘𝑊) − 1) − 1) ≤ ((♯‘𝑊) − 1))
5736, 40, 42, 54, 56elfzd 13561 . . . . . . . 8 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (((♯‘𝑊) − 1) − 1) ∈ (0...((♯‘𝑊) − 1)))
5835, 57eqeltrd 2866 . . . . . . 7 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1) ∈ (0...((♯‘𝑊) − 1)))
59 pfxpfx 14769 . . . . . . 7 ((𝑊 ∈ Word 𝑉 ∧ ((♯‘𝑊) − 1) ∈ (0...(♯‘𝑊)) ∧ ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1) ∈ (0...((♯‘𝑊) − 1))) → ((𝑊 prefix ((♯‘𝑊) − 1)) prefix ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1)) = (𝑊 prefix ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1)))
601, 32, 58, 59syl3anc 1398 . . . . . 6 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((𝑊 prefix ((♯‘𝑊) − 1)) prefix ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1)) = (𝑊 prefix ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1)))
6134, 10eqtr4di 2819 . . . . . . . . 9 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (♯‘(𝑊 prefix ((♯‘𝑊) − 1))) = (𝑁 − 1))
6261oveq1d 7438 . . . . . . . 8 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1) = ((𝑁 − 1) − 1))
6362, 51eqtrd 2801 . . . . . . 7 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1) = (𝑁 − 2))
6463oveq2d 7439 . . . . . 6 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (𝑊 prefix ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1)) = (𝑊 prefix (𝑁 − 2)))
6560, 64eqtrd 2801 . . . . 5 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((𝑊 prefix ((♯‘𝑊) − 1)) prefix ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1)) = (𝑊 prefix (𝑁 − 2)))
66 pfxtrcfvl 14758 . . . . . . . 8 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ (♯‘𝑊)) → (lastS‘(𝑊 prefix ((♯‘𝑊) − 1))) = (𝑊‘((♯‘𝑊) − 2)))
671, 4, 66syl2anc 596 . . . . . . 7 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (lastS‘(𝑊 prefix ((♯‘𝑊) − 1))) = (𝑊‘((♯‘𝑊) − 2)))
683a1i 11 . . . . . . . 8 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 𝑁 = (♯‘𝑊))
6968fvoveq1d 7445 . . . . . . 7 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (𝑊‘(𝑁 − 2)) = (𝑊‘((♯‘𝑊) − 2)))
7067, 69eqtr4d 2804 . . . . . 6 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (lastS‘(𝑊 prefix ((♯‘𝑊) − 1))) = (𝑊‘(𝑁 − 2)))
7170s1eqd 14660 . . . . 5 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ⟨“(lastS‘(𝑊 prefix ((♯‘𝑊) − 1)))”⟩ = ⟨“(𝑊‘(𝑁 − 2))”⟩)
7265, 71oveq12d 7441 . . . 4 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (((𝑊 prefix ((♯‘𝑊) − 1)) prefix ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1)) ++ ⟨“(lastS‘(𝑊 prefix ((♯‘𝑊) − 1)))”⟩) = ((𝑊 prefix (𝑁 − 2)) ++ ⟨“(𝑊‘(𝑁 − 2))”⟩))
7330, 72eqtr3d 2803 . . 3 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (𝑊 prefix ((♯‘𝑊) − 1)) = ((𝑊 prefix (𝑁 − 2)) ++ ⟨“(𝑊‘(𝑁 − 2))”⟩))
7473oveq1d 7438 . 2 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((𝑊 prefix ((♯‘𝑊) − 1)) ++ ⟨“(𝑊‘(𝑁 − 1))”⟩) = (((𝑊 prefix (𝑁 − 2)) ++ ⟨“(𝑊‘(𝑁 − 2))”⟩) ++ ⟨“(𝑊‘(𝑁 − 1))”⟩))
75 pfxcl 14739 . . . 4 (𝑊 ∈ Word 𝑉 → (𝑊 prefix (𝑁 − 2)) ∈ Word 𝑉)
761, 75syl 18 . . 3 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (𝑊 prefix (𝑁 − 2)) ∈ Word 𝑉)
77 ccatw2s1ccatws2 15017 . . 3 ((𝑊 prefix (𝑁 − 2)) ∈ Word 𝑉 → (((𝑊 prefix (𝑁 − 2)) ++ ⟨“(𝑊‘(𝑁 − 2))”⟩) ++ ⟨“(𝑊‘(𝑁 − 1))”⟩) = ((𝑊 prefix (𝑁 − 2)) ++ ⟨“(𝑊‘(𝑁 − 2))(𝑊‘(𝑁 − 1))”⟩))
7876, 77syl 18 . 2 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (((𝑊 prefix (𝑁 − 2)) ++ ⟨“(𝑊‘(𝑁 − 2))”⟩) ++ ⟨“(𝑊‘(𝑁 − 1))”⟩) = ((𝑊 prefix (𝑁 − 2)) ++ ⟨“(𝑊‘(𝑁 − 2))(𝑊‘(𝑁 − 1))”⟩))
7916, 74, 783eqtrd 2805 1 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 𝑊 = ((𝑊 prefix (𝑁 − 2)) ++ ⟨“(𝑊‘(𝑁 − 2))(𝑊‘(𝑁 − 1))”⟩))
Colors of variables:    wff setvar class
This proof depends on syntax axioms:  wi 4  wa 401   = wceq 1570  wcel 2146  wne 2961  c0 4289   class class class wbr 5114  cfv 6543  (class class class)co 7423  cc 11116  0cc0 11118  1c1 11119  cle 11262  cmin 11459  cn 12251  2c2 12313  0cn0 12522  ...cfz 13553  chash 14386  Word cword 14570  lastSclsw 14619   ++ cconcat 14627  ⟨“cs1 14654   prefix cpfx 14732  ⟨“cs2 14904
This proof depends on axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1828  ax-4 1842  ax-5 1943  ax-6 2000  ax-7 2041  ax-8 2148  ax-9 2156  ax-10 2179  ax-11 2195  ax-12 2216  ax-ext 2738  ax-rep 5243  ax-sep 5262  ax-nul 5274  ax-pow 5341  ax-pr 5409  ax-un 7745  ax-cnex 11174  ax-resscn 11175  ax-1cn 11176  ax-icn 11177  ax-addcl 11178  ax-addrcl 11179  ax-mulcl 11180  ax-mulrcl 11181  ax-mulcom 11182  ax-addass 11183  ax-mulass 11184  ax-distr 11185  ax-i2m1 11186  ax-1ne0 11187  ax-1rid 11188  ax-rnegex 11189  ax-rrecex 11190  ax-cnre 11191  ax-pre-lttri 11192  ax-pre-lttrn 11193  ax-pre-ltadd 11194  ax-pre-mulgt0 11195
This proof depends on definitions:  df-bi 210  df-an 402  df-or 862  df-3or 1104  df-3an 1105  df-tru 1573  df-fal 1583  df-ex 1813  df-nf 1817  df-sb 2100  df-mo 2570  df-eu 2600  df-clab 2745  df-cleq 2758  df-clel 2841  df-nfc 2915  df-ne 2962  df-nel 3068  df-ral 3083  df-rex 3093  df-reu 3373  df-rab 3420  df-v 3460  df-sbc 3748  df-csb 3857  df-dif 3911  df-un 3913  df-in 3915  df-ss 3925  df-pss 3928  df-nul 4290  df-if 4493  df-pw 4569  df-sn 4595  df-pr 4597  df-op 4601  df-uni 4878  df-int 4918  df-iun 4963  df-br 5115  df-opab 5179  df-mpt 5198  df-tr 5224  df-id 5561  df-eprel 5566  df-po 5574  df-so 5575  df-fr 5619  df-we 5621  df-xp 5672  df-rel 5673  df-cnv 5674  df-co 5675  df-dm 5676  df-rn 5677  df-res 5678  df-ima 5679  df-pred 6309  df-ord 6370  df-on 6371  df-lim 6372  df-suc 6373  df-iota 6499  df-fun 6545  df-fn 6546  df-f 6547  df-f1 6548  df-fo 6549  df-f1o 6550  df-fv 6551  df-riota 7380  df-ov 7426  df-oprab 7427  df-mpo 7428  df-om 7872  df-1st 7995  df-2nd 7996  df-frecs 8287  df-wrecs 8318  df-recs 8367  df-rdg 8406  df-1o 8462  df-er 8703  df-en 8953  df-dom 8954  df-sdom 8955  df-fin 8956  df-card 9944  df-pnf 11263  df-mnf 11264  df-xr 11265  df-ltxr 11266  df-le 11267  df-sub 11461  df-neg 11462  df-nn 12252  df-2 12321  df-n0 12523  df-xnn0 12596  df-z 12610  df-uz 12881  df-fz 13554  df-fzo 13702  df-hash 14387  df-word 14571  df-lsw 14620  df-concat 14628  df-s1 14655  df-substr 14701  df-pfx 14733  df-s2 14911
This theorem is used by:  wrdt2ind  33306
  Copyright terms: Public domain W3C validator