MPE Home Metamath Proof Explorer < Previous   Next >
Nearby theorems
Mirrors  >  Home  >  MPE Home  >  Th. List  >  pfxccat1 Structured version   Visualization version   GIF version

Theorem pfxccat1 14772
Description: Recover the left half of a concatenated word. (Contributed by Mario Carneiro, 27-Sep-2015.) (Revised by AV, 6-May-2020.)
Assertion
Ref Expression
pfxccat1 ((𝑆 ∈ Word 𝐵𝑇 ∈ Word 𝐵) → ((𝑆 ++ 𝑇) prefix (♯‘𝑆)) = 𝑆)

Proof of Theorem pfxccat1
Dummy variable 𝑘 is distinct from all other variables.
StepHypRef Expression
1 ccatcl 14640 . . 3 ((𝑆 ∈ Word 𝐵𝑇 ∈ Word 𝐵) → (𝑆 ++ 𝑇) ∈ Word 𝐵)
2 lencl 14599 . . . . . 6 (𝑆 ∈ Word 𝐵 → (♯‘𝑆) ∈ ℕ0)
3 lencl 14599 . . . . . 6 (𝑇 ∈ Word 𝐵 → (♯‘𝑇) ∈ ℕ0)
42, 3anim12i 625 . . . . 5 ((𝑆 ∈ Word 𝐵𝑇 ∈ Word 𝐵) → ((♯‘𝑆) ∈ ℕ0 ∧ (♯‘𝑇) ∈ ℕ0))
5 nn0fz0 13681 . . . . . . 7 ((♯‘𝑆) ∈ ℕ0 ↔ (♯‘𝑆) ∈ (0...(♯‘𝑆)))
62, 5sylib 221 . . . . . 6 (𝑆 ∈ Word 𝐵 → (♯‘𝑆) ∈ (0...(♯‘𝑆)))
76adantr 486 . . . . 5 ((𝑆 ∈ Word 𝐵𝑇 ∈ Word 𝐵) → (♯‘𝑆) ∈ (0...(♯‘𝑆)))
8 elfz0add 13682 . . . . 5 (((♯‘𝑆) ∈ ℕ0 ∧ (♯‘𝑇) ∈ ℕ0) → ((♯‘𝑆) ∈ (0...(♯‘𝑆)) → (♯‘𝑆) ∈ (0...((♯‘𝑆) + (♯‘𝑇)))))
94, 7, 8sylc 66 . . . 4 ((𝑆 ∈ Word 𝐵𝑇 ∈ Word 𝐵) → (♯‘𝑆) ∈ (0...((♯‘𝑆) + (♯‘𝑇))))
10 ccatlen 14641 . . . . 5 ((𝑆 ∈ Word 𝐵𝑇 ∈ Word 𝐵) → (♯‘(𝑆 ++ 𝑇)) = ((♯‘𝑆) + (♯‘𝑇)))
1110oveq2d 7430 . . . 4 ((𝑆 ∈ Word 𝐵𝑇 ∈ Word 𝐵) → (0...(♯‘(𝑆 ++ 𝑇))) = (0...((♯‘𝑆) + (♯‘𝑇))))
129, 11eleqtrrd 2863 . . 3 ((𝑆 ∈ Word 𝐵𝑇 ∈ Word 𝐵) → (♯‘𝑆) ∈ (0...(♯‘(𝑆 ++ 𝑇))))
13 pfxres 14750 . . 3 (((𝑆 ++ 𝑇) ∈ Word 𝐵 ∧ (♯‘𝑆) ∈ (0...(♯‘(𝑆 ++ 𝑇)))) → ((𝑆 ++ 𝑇) prefix (♯‘𝑆)) = ((𝑆 ++ 𝑇) ↾ (0..^(♯‘𝑆))))
141, 12, 13syl2anc 596 . 2 ((𝑆 ∈ Word 𝐵𝑇 ∈ Word 𝐵) → ((𝑆 ++ 𝑇) prefix (♯‘𝑆)) = ((𝑆 ++ 𝑇) ↾ (0..^(♯‘𝑆))))
15 ccatvalfn 14647 . . . 4 ((𝑆 ∈ Word 𝐵𝑇 ∈ Word 𝐵) → (𝑆 ++ 𝑇) Fn (0..^((♯‘𝑆) + (♯‘𝑇))))
162nn0zd 12641 . . . . . . 7 (𝑆 ∈ Word 𝐵 → (♯‘𝑆) ∈ ℤ)
1716uzidd 12904 . . . . . 6 (𝑆 ∈ Word 𝐵 → (♯‘𝑆) ∈ (ℤ‘(♯‘𝑆)))
18 uzaddcl 12954 . . . . . 6 (((♯‘𝑆) ∈ (ℤ‘(♯‘𝑆)) ∧ (♯‘𝑇) ∈ ℕ0) → ((♯‘𝑆) + (♯‘𝑇)) ∈ (ℤ‘(♯‘𝑆)))
1917, 3, 18syl2an 608 . . . . 5 ((𝑆 ∈ Word 𝐵𝑇 ∈ Word 𝐵) → ((♯‘𝑆) + (♯‘𝑇)) ∈ (ℤ‘(♯‘𝑆)))
20 fzoss2 13744 . . . . 5 (((♯‘𝑆) + (♯‘𝑇)) ∈ (ℤ‘(♯‘𝑆)) → (0..^(♯‘𝑆)) ⊆ (0..^((♯‘𝑆) + (♯‘𝑇))))
2119, 20syl 18 . . . 4 ((𝑆 ∈ Word 𝐵𝑇 ∈ Word 𝐵) → (0..^(♯‘𝑆)) ⊆ (0..^((♯‘𝑆) + (♯‘𝑇))))
2215, 21fnssresd 6657 . . 3 ((𝑆 ∈ Word 𝐵𝑇 ∈ Word 𝐵) → ((𝑆 ++ 𝑇) ↾ (0..^(♯‘𝑆))) Fn (0..^(♯‘𝑆)))
23 wrdfn 14594 . . . 4 (𝑆 ∈ Word 𝐵𝑆 Fn (0..^(♯‘𝑆)))
2423adantr 486 . . 3 ((𝑆 ∈ Word 𝐵𝑇 ∈ Word 𝐵) → 𝑆 Fn (0..^(♯‘𝑆)))
25 fvres 6898 . . . . 5 (𝑘 ∈ (0..^(♯‘𝑆)) → (((𝑆 ++ 𝑇) ↾ (0..^(♯‘𝑆)))‘𝑘) = ((𝑆 ++ 𝑇)‘𝑘))
2625adantl 487 . . . 4 (((𝑆 ∈ Word 𝐵𝑇 ∈ Word 𝐵) ∧ 𝑘 ∈ (0..^(♯‘𝑆))) → (((𝑆 ++ 𝑇) ↾ (0..^(♯‘𝑆)))‘𝑘) = ((𝑆 ++ 𝑇)‘𝑘))
27 ccatval1 14643 . . . . 5 ((𝑆 ∈ Word 𝐵𝑇 ∈ Word 𝐵𝑘 ∈ (0..^(♯‘𝑆))) → ((𝑆 ++ 𝑇)‘𝑘) = (𝑆𝑘))
28273expa 1136 . . . 4 (((𝑆 ∈ Word 𝐵𝑇 ∈ Word 𝐵) ∧ 𝑘 ∈ (0..^(♯‘𝑆))) → ((𝑆 ++ 𝑇)‘𝑘) = (𝑆𝑘))
2926, 28eqtrd 2795 . . 3 (((𝑆 ∈ Word 𝐵𝑇 ∈ Word 𝐵) ∧ 𝑘 ∈ (0..^(♯‘𝑆))) → (((𝑆 ++ 𝑇) ↾ (0..^(♯‘𝑆)))‘𝑘) = (𝑆𝑘))
3022, 24, 29eqfnfvd 7026 . 2 ((𝑆 ∈ Word 𝐵𝑇 ∈ Word 𝐵) → ((𝑆 ++ 𝑇) ↾ (0..^(♯‘𝑆))) = 𝑆)
3114, 30eqtrd 2795 1 ((𝑆 ∈ Word 𝐵𝑇 ∈ Word 𝐵) → ((𝑆 ++ 𝑇) prefix (♯‘𝑆)) = 𝑆)
Colors of variables:    wff setvar class
This proof depends on syntax axioms:  wi 4  wa 401   = wceq 1570  wcel 2145  wss 3899  cres 5657   Fn wfn 6528  cfv 6533  (class class class)co 7414  0cc0 11125   + caddc 11128  0cn0 12529  cuz 12888  ...cfz 13562  ..^cfzo 13710  chash 14395  Word cword 14579   ++ cconcat 14636   prefix cpfx 14741
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 2147  ax-9 2155  ax-10 2178  ax-11 2194  ax-12 2213  ax-ext 2732  ax-rep 5232  ax-sep 5251  ax-nul 5263  ax-pow 5330  ax-pr 5398  ax-un 7737  ax-cnex 11181  ax-resscn 11182  ax-1cn 11183  ax-icn 11184  ax-addcl 11185  ax-addrcl 11186  ax-mulcl 11187  ax-mulrcl 11188  ax-mulcom 11189  ax-addass 11190  ax-mulass 11191  ax-distr 11192  ax-i2m1 11193  ax-1ne0 11194  ax-1rid 11195  ax-rnegex 11196  ax-rrecex 11197  ax-cnre 11198  ax-pre-lttri 11199  ax-pre-lttrn 11200  ax-pre-ltadd 11201  ax-pre-mulgt0 11202
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 2564  df-eu 2594  df-clab 2739  df-cleq 2752  df-clel 2835  df-nfc 2909  df-ne 2956  df-nel 3062  df-ral 3077  df-rex 3087  df-reu 3366  df-rab 3413  df-v 3452  df-sbc 3740  df-csb 3848  df-dif 3902  df-un 3904  df-in 3906  df-ss 3916  df-pss 3919  df-nul 4280  df-if 4483  df-pw 4559  df-sn 4585  df-pr 4587  df-op 4591  df-uni 4868  df-int 4908  df-iun 4953  df-br 5104  df-opab 5168  df-mpt 5187  df-tr 5213  df-id 5550  df-eprel 5555  df-po 5563  df-so 5564  df-fr 5608  df-we 5610  df-xp 5661  df-rel 5662  df-cnv 5663  df-co 5664  df-dm 5665  df-rn 5666  df-res 5667  df-ima 5668  df-pred 6299  df-ord 6360  df-on 6361  df-lim 6362  df-suc 6363  df-iota 6489  df-fun 6535  df-fn 6536  df-f 6537  df-f1 6538  df-fo 6539  df-f1o 6540  df-fv 6541  df-riota 7371  df-ov 7417  df-oprab 7418  df-mpo 7419  df-om 7864  df-1st 7987  df-2nd 7988  df-frecs 8281  df-wrecs 8312  df-recs 8361  df-rdg 8400  df-1o 8456  df-er 8697  df-en 8954  df-dom 8955  df-sdom 8956  df-fin 8957  df-card 9945  df-pnf 11270  df-mnf 11271  df-xr 11272  df-ltxr 11273  df-le 11274  df-sub 11468  df-neg 11469  df-nn 12259  df-n0 12530  df-z 12617  df-uz 12889  df-fz 13563  df-fzo 13711  df-hash 14396  df-word 14580  df-concat 14637  df-substr 14710  df-pfx 14742
This theorem is used by:  ccatopth  14786  reuccatpfxs1  14817  wwlksnextbi  30363  wwlksnextsurj  30369  clwwlkfo  30521  ccatws1f1olast  33395  gsumwrd2dccatlem  33518  ccatcan2d  43119
  Copyright terms: Public domain W3C validator