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 32917
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 5207 . . . . 5 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 2 ≤ (♯‘𝑊))
5 wrdlenge2n0 14600 . . . . 5 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ (♯‘𝑊)) → 𝑊 ≠ ∅)
61, 4, 5syl2anc 583 . . . 4 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 𝑊 ≠ ∅)
7 pfxlswccat 14761 . . . 4 ((𝑊 ∈ Word 𝑉𝑊 ≠ ∅) → ((𝑊 prefix ((♯‘𝑊) − 1)) ++ ⟨“(lastS‘𝑊)”⟩) = 𝑊)
81, 6, 7syl2anc 583 . . 3 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((𝑊 prefix ((♯‘𝑊) − 1)) ++ ⟨“(lastS‘𝑊)”⟩) = 𝑊)
9 lsw 14612 . . . . . . 7 (𝑊 ∈ Word 𝑉 → (lastS‘𝑊) = (𝑊‘((♯‘𝑊) − 1)))
103oveq1i 7458 . . . . . . . 8 (𝑁 − 1) = ((♯‘𝑊) − 1)
1110fveq2i 6923 . . . . . . 7 (𝑊‘(𝑁 − 1)) = (𝑊‘((♯‘𝑊) − 1))
129, 11eqtr4di 2798 . . . . . 6 (𝑊 ∈ Word 𝑉 → (lastS‘𝑊) = (𝑊‘(𝑁 − 1)))
131, 12syl 17 . . . . 5 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (lastS‘𝑊) = (𝑊‘(𝑁 − 1)))
1413s1eqd 14649 . . . 4 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ⟨“(lastS‘𝑊)”⟩ = ⟨“(𝑊‘(𝑁 − 1))”⟩)
1514oveq2d 7464 . . 3 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((𝑊 prefix ((♯‘𝑊) − 1)) ++ ⟨“(lastS‘𝑊)”⟩) = ((𝑊 prefix ((♯‘𝑊) − 1)) ++ ⟨“(𝑊‘(𝑁 − 1))”⟩))
168, 15eqtr3d 2782 . 2 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 𝑊 = ((𝑊 prefix ((♯‘𝑊) − 1)) ++ ⟨“(𝑊‘(𝑁 − 1))”⟩))
17 pfxcl 14725 . . . . . 6 (𝑊 ∈ Word 𝑉 → (𝑊 prefix ((♯‘𝑊) − 1)) ∈ Word 𝑉)
181, 17syl 17 . . . . 5 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (𝑊 prefix ((♯‘𝑊) − 1)) ∈ Word 𝑉)
19 lencl 14581 . . . . . . . . . 10 (𝑊 ∈ Word 𝑉 → (♯‘𝑊) ∈ ℕ0)
201, 19syl 17 . . . . . . . . 9 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (♯‘𝑊) ∈ ℕ0)
213, 20eqeltrid 2848 . . . . . . . 8 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 𝑁 ∈ ℕ0)
22 nn0ge2m1nn 12622 . . . . . . . 8 ((𝑁 ∈ ℕ0 ∧ 2 ≤ 𝑁) → (𝑁 − 1) ∈ ℕ)
2321, 2, 22syl2anc 583 . . . . . . 7 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (𝑁 − 1) ∈ ℕ)
2410, 23eqeltrrid 2849 . . . . . 6 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((♯‘𝑊) − 1) ∈ ℕ)
2520nn0red 12614 . . . . . . 7 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (♯‘𝑊) ∈ ℝ)
2625lem1d 12228 . . . . . 6 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((♯‘𝑊) − 1) ≤ (♯‘𝑊))
27 pfxn0 14734 . . . . . 6 ((𝑊 ∈ Word 𝑉 ∧ ((♯‘𝑊) − 1) ∈ ℕ ∧ ((♯‘𝑊) − 1) ≤ (♯‘𝑊)) → (𝑊 prefix ((♯‘𝑊) − 1)) ≠ ∅)
281, 24, 26, 27syl3anc 1371 . . . . 5 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (𝑊 prefix ((♯‘𝑊) − 1)) ≠ ∅)
29 pfxlswccat 14761 . . . . 5 (((𝑊 prefix ((♯‘𝑊) − 1)) ∈ Word 𝑉 ∧ (𝑊 prefix ((♯‘𝑊) − 1)) ≠ ∅) → (((𝑊 prefix ((♯‘𝑊) − 1)) prefix ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1)) ++ ⟨“(lastS‘(𝑊 prefix ((♯‘𝑊) − 1)))”⟩) = (𝑊 prefix ((♯‘𝑊) − 1)))
3018, 28, 29syl2anc 583 . . . 4 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (((𝑊 prefix ((♯‘𝑊) − 1)) prefix ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1)) ++ ⟨“(lastS‘(𝑊 prefix ((♯‘𝑊) − 1)))”⟩) = (𝑊 prefix ((♯‘𝑊) − 1)))
31 ige2m1fz 13674 . . . . . . . 8 (((♯‘𝑊) ∈ ℕ0 ∧ 2 ≤ (♯‘𝑊)) → ((♯‘𝑊) − 1) ∈ (0...(♯‘𝑊)))
3220, 4, 31syl2anc 583 . . . . . . 7 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((♯‘𝑊) − 1) ∈ (0...(♯‘𝑊)))
33 pfxlen 14731 . . . . . . . . . 10 ((𝑊 ∈ Word 𝑉 ∧ ((♯‘𝑊) − 1) ∈ (0...(♯‘𝑊))) → (♯‘(𝑊 prefix ((♯‘𝑊) − 1))) = ((♯‘𝑊) − 1))
341, 32, 33syl2anc 583 . . . . . . . . 9 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (♯‘(𝑊 prefix ((♯‘𝑊) − 1))) = ((♯‘𝑊) − 1))
3534oveq1d 7463 . . . . . . . 8 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1) = (((♯‘𝑊) − 1) − 1))
36 0zd 12651 . . . . . . . . 9 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 0 ∈ ℤ)
37 nn0ge2m1nn0 12623 . . . . . . . . . . . 12 ((𝑁 ∈ ℕ0 ∧ 2 ≤ 𝑁) → (𝑁 − 1) ∈ ℕ0)
3821, 2, 37syl2anc 583 . . . . . . . . . . 11 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (𝑁 − 1) ∈ ℕ0)
3910, 38eqeltrrid 2849 . . . . . . . . . 10 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((♯‘𝑊) − 1) ∈ ℕ0)
4039nn0zd 12665 . . . . . . . . 9 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((♯‘𝑊) − 1) ∈ ℤ)
41 1zzd 12674 . . . . . . . . . 10 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 1 ∈ ℤ)
4240, 41zsubcld 12752 . . . . . . . . 9 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (((♯‘𝑊) − 1) − 1) ∈ ℤ)
43 2nn0 12570 . . . . . . . . . . . . . 14 2 ∈ ℕ0
4443a1i 11 . . . . . . . . . . . . 13 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 2 ∈ ℕ0)
45 nn0sub 12603 . . . . . . . . . . . . . 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 12616 . . . . . . . . . . 11 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 0 ≤ (𝑁 − 2))
4921nn0cnd 12615 . . . . . . . . . . . 12 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 𝑁 ∈ ℂ)
50 sub1m1 12545 . . . . . . . . . . . 12 (𝑁 ∈ ℂ → ((𝑁 − 1) − 1) = (𝑁 − 2))
5149, 50syl 17 . . . . . . . . . . 11 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((𝑁 − 1) − 1) = (𝑁 − 2))
5248, 51breqtrrd 5194 . . . . . . . . . 10 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 0 ≤ ((𝑁 − 1) − 1))
5310oveq1i 7458 . . . . . . . . . 10 ((𝑁 − 1) − 1) = (((♯‘𝑊) − 1) − 1)
5452, 53breqtrdi 5207 . . . . . . . . 9 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 0 ≤ (((♯‘𝑊) − 1) − 1))
5524nnred 12308 . . . . . . . . . 10 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((♯‘𝑊) − 1) ∈ ℝ)
5655lem1d 12228 . . . . . . . . 9 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (((♯‘𝑊) − 1) − 1) ≤ ((♯‘𝑊) − 1))
5736, 40, 42, 54, 56elfzd 13575 . . . . . . . 8 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (((♯‘𝑊) − 1) − 1) ∈ (0...((♯‘𝑊) − 1)))
5835, 57eqeltrd 2844 . . . . . . 7 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1) ∈ (0...((♯‘𝑊) − 1)))
59 pfxpfx 14756 . . . . . . 7 ((𝑊 ∈ Word 𝑉 ∧ ((♯‘𝑊) − 1) ∈ (0...(♯‘𝑊)) ∧ ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1) ∈ (0...((♯‘𝑊) − 1))) → ((𝑊 prefix ((♯‘𝑊) − 1)) prefix ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1)) = (𝑊 prefix ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1)))
601, 32, 58, 59syl3anc 1371 . . . . . 6 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((𝑊 prefix ((♯‘𝑊) − 1)) prefix ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1)) = (𝑊 prefix ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1)))
6134, 10eqtr4di 2798 . . . . . . . . 9 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (♯‘(𝑊 prefix ((♯‘𝑊) − 1))) = (𝑁 − 1))
6261oveq1d 7463 . . . . . . . 8 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1) = ((𝑁 − 1) − 1))
6362, 51eqtrd 2780 . . . . . . 7 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1) = (𝑁 − 2))
6463oveq2d 7464 . . . . . 6 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (𝑊 prefix ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1)) = (𝑊 prefix (𝑁 − 2)))
6560, 64eqtrd 2780 . . . . 5 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((𝑊 prefix ((♯‘𝑊) − 1)) prefix ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1)) = (𝑊 prefix (𝑁 − 2)))
66 pfxtrcfvl 14745 . . . . . . . 8 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ (♯‘𝑊)) → (lastS‘(𝑊 prefix ((♯‘𝑊) − 1))) = (𝑊‘((♯‘𝑊) − 2)))
671, 4, 66syl2anc 583 . . . . . . 7 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (lastS‘(𝑊 prefix ((♯‘𝑊) − 1))) = (𝑊‘((♯‘𝑊) − 2)))
683a1i 11 . . . . . . . 8 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 𝑁 = (♯‘𝑊))
6968fvoveq1d 7470 . . . . . . 7 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (𝑊‘(𝑁 − 2)) = (𝑊‘((♯‘𝑊) − 2)))
7067, 69eqtr4d 2783 . . . . . 6 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (lastS‘(𝑊 prefix ((♯‘𝑊) − 1))) = (𝑊‘(𝑁 − 2)))
7170s1eqd 14649 . . . . 5 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ⟨“(lastS‘(𝑊 prefix ((♯‘𝑊) − 1)))”⟩ = ⟨“(𝑊‘(𝑁 − 2))”⟩)
7265, 71oveq12d 7466 . . . 4 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (((𝑊 prefix ((♯‘𝑊) − 1)) prefix ((♯‘(𝑊 prefix ((♯‘𝑊) − 1))) − 1)) ++ ⟨“(lastS‘(𝑊 prefix ((♯‘𝑊) − 1)))”⟩) = ((𝑊 prefix (𝑁 − 2)) ++ ⟨“(𝑊‘(𝑁 − 2))”⟩))
7330, 72eqtr3d 2782 . . 3 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (𝑊 prefix ((♯‘𝑊) − 1)) = ((𝑊 prefix (𝑁 − 2)) ++ ⟨“(𝑊‘(𝑁 − 2))”⟩))
7473oveq1d 7463 . 2 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → ((𝑊 prefix ((♯‘𝑊) − 1)) ++ ⟨“(𝑊‘(𝑁 − 1))”⟩) = (((𝑊 prefix (𝑁 − 2)) ++ ⟨“(𝑊‘(𝑁 − 2))”⟩) ++ ⟨“(𝑊‘(𝑁 − 1))”⟩))
75 pfxcl 14725 . . . 4 (𝑊 ∈ Word 𝑉 → (𝑊 prefix (𝑁 − 2)) ∈ Word 𝑉)
761, 75syl 17 . . 3 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → (𝑊 prefix (𝑁 − 2)) ∈ Word 𝑉)
77 ccatw2s1ccatws2 15003 . . 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 2784 1 ((𝑊 ∈ Word 𝑉 ∧ 2 ≤ 𝑁) → 𝑊 = ((𝑊 prefix (𝑁 − 2)) ++ ⟨“(𝑊‘(𝑁 − 2))(𝑊‘(𝑁 − 1))”⟩))
Colors of variables: wff setvar class
Syntax hints:  wi 4  wa 395   = wceq 1537  wcel 2108  wne 2946  c0 4352   class class class wbr 5166  cfv 6573  (class class class)co 7448  cc 11182  0cc0 11184  1c1 11185  cle 11325  cmin 11520  cn 12293  2c2 12348  0cn0 12553  ...cfz 13567  chash 14379  Word cword 14562  lastSclsw 14610   ++ cconcat 14618  ⟨“cs1 14643   prefix cpfx 14718  ⟨“cs2 14890
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1793  ax-4 1807  ax-5 1909  ax-6 1967  ax-7 2007  ax-8 2110  ax-9 2118  ax-10 2141  ax-11 2158  ax-12 2178  ax-ext 2711  ax-rep 5303  ax-sep 5317  ax-nul 5324  ax-pow 5383  ax-pr 5447  ax-un 7770  ax-cnex 11240  ax-resscn 11241  ax-1cn 11242  ax-icn 11243  ax-addcl 11244  ax-addrcl 11245  ax-mulcl 11246  ax-mulrcl 11247  ax-mulcom 11248  ax-addass 11249  ax-mulass 11250  ax-distr 11251  ax-i2m1 11252  ax-1ne0 11253  ax-1rid 11254  ax-rnegex 11255  ax-rrecex 11256  ax-cnre 11257  ax-pre-lttri 11258  ax-pre-lttrn 11259  ax-pre-ltadd 11260  ax-pre-mulgt0 11261
This theorem depends on definitions:  df-bi 207  df-an 396  df-or 847  df-3or 1088  df-3an 1089  df-tru 1540  df-fal 1550  df-ex 1778  df-nf 1782  df-sb 2065  df-mo 2543  df-eu 2572  df-clab 2718  df-cleq 2732  df-clel 2819  df-nfc 2895  df-ne 2947  df-nel 3053  df-ral 3068  df-rex 3077  df-reu 3389  df-rab 3444  df-v 3490  df-sbc 3805  df-csb 3922  df-dif 3979  df-un 3981  df-in 3983  df-ss 3993  df-pss 3996  df-nul 4353  df-if 4549  df-pw 4624  df-sn 4649  df-pr 4651  df-op 4655  df-uni 4932  df-int 4971  df-iun 5017  df-br 5167  df-opab 5229  df-mpt 5250  df-tr 5284  df-id 5593  df-eprel 5599  df-po 5607  df-so 5608  df-fr 5652  df-we 5654  df-xp 5706  df-rel 5707  df-cnv 5708  df-co 5709  df-dm 5710  df-rn 5711  df-res 5712  df-ima 5713  df-pred 6332  df-ord 6398  df-on 6399  df-lim 6400  df-suc 6401  df-iota 6525  df-fun 6575  df-fn 6576  df-f 6577  df-f1 6578  df-fo 6579  df-f1o 6580  df-fv 6581  df-riota 7404  df-ov 7451  df-oprab 7452  df-mpo 7453  df-om 7904  df-1st 8030  df-2nd 8031  df-frecs 8322  df-wrecs 8353  df-recs 8427  df-rdg 8466  df-1o 8522  df-er 8763  df-en 9004  df-dom 9005  df-sdom 9006  df-fin 9007  df-card 10008  df-pnf 11326  df-mnf 11327  df-xr 11328  df-ltxr 11329  df-le 11330  df-sub 11522  df-neg 11523  df-nn 12294  df-2 12356  df-n0 12554  df-xnn0 12626  df-z 12640  df-uz 12904  df-fz 13568  df-fzo 13712  df-hash 14380  df-word 14563  df-lsw 14611  df-concat 14619  df-s1 14644  df-substr 14689  df-pfx 14719  df-s2 14897
This theorem is referenced by:  wrdt2ind  32920
  Copyright terms: Public domain W3C validator