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

Theorem pfxccat1 14623
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 14495 . . 3 ((𝑆 ∈ Word 𝐵𝑇 ∈ Word 𝐵) → (𝑆 ++ 𝑇) ∈ Word 𝐵)
2 lencl 14454 . . . . . 6 (𝑆 ∈ Word 𝐵 → (♯‘𝑆) ∈ ℕ0)
3 lencl 14454 . . . . . 6 (𝑇 ∈ Word 𝐵 → (♯‘𝑇) ∈ ℕ0)
42, 3anim12i 613 . . . . 5 ((𝑆 ∈ Word 𝐵𝑇 ∈ Word 𝐵) → ((♯‘𝑆) ∈ ℕ0 ∧ (♯‘𝑇) ∈ ℕ0))
5 nn0fz0 13539 . . . . . . 7 ((♯‘𝑆) ∈ ℕ0 ↔ (♯‘𝑆) ∈ (0...(♯‘𝑆)))
62, 5sylib 218 . . . . . 6 (𝑆 ∈ Word 𝐵 → (♯‘𝑆) ∈ (0...(♯‘𝑆)))
76adantr 480 . . . . 5 ((𝑆 ∈ Word 𝐵𝑇 ∈ Word 𝐵) → (♯‘𝑆) ∈ (0...(♯‘𝑆)))
8 elfz0add 13540 . . . . 5 (((♯‘𝑆) ∈ ℕ0 ∧ (♯‘𝑇) ∈ ℕ0) → ((♯‘𝑆) ∈ (0...(♯‘𝑆)) → (♯‘𝑆) ∈ (0...((♯‘𝑆) + (♯‘𝑇)))))
94, 7, 8sylc 65 . . . 4 ((𝑆 ∈ Word 𝐵𝑇 ∈ Word 𝐵) → (♯‘𝑆) ∈ (0...((♯‘𝑆) + (♯‘𝑇))))
10 ccatlen 14496 . . . . 5 ((𝑆 ∈ Word 𝐵𝑇 ∈ Word 𝐵) → (♯‘(𝑆 ++ 𝑇)) = ((♯‘𝑆) + (♯‘𝑇)))
1110oveq2d 7372 . . . 4 ((𝑆 ∈ Word 𝐵𝑇 ∈ Word 𝐵) → (0...(♯‘(𝑆 ++ 𝑇))) = (0...((♯‘𝑆) + (♯‘𝑇))))
129, 11eleqtrrd 2837 . . 3 ((𝑆 ∈ Word 𝐵𝑇 ∈ Word 𝐵) → (♯‘𝑆) ∈ (0...(♯‘(𝑆 ++ 𝑇))))
13 pfxres 14601 . . 3 (((𝑆 ++ 𝑇) ∈ Word 𝐵 ∧ (♯‘𝑆) ∈ (0...(♯‘(𝑆 ++ 𝑇)))) → ((𝑆 ++ 𝑇) prefix (♯‘𝑆)) = ((𝑆 ++ 𝑇) ↾ (0..^(♯‘𝑆))))
141, 12, 13syl2anc 584 . 2 ((𝑆 ∈ Word 𝐵𝑇 ∈ Word 𝐵) → ((𝑆 ++ 𝑇) prefix (♯‘𝑆)) = ((𝑆 ++ 𝑇) ↾ (0..^(♯‘𝑆))))
15 ccatvalfn 14502 . . . 4 ((𝑆 ∈ Word 𝐵𝑇 ∈ Word 𝐵) → (𝑆 ++ 𝑇) Fn (0..^((♯‘𝑆) + (♯‘𝑇))))
162nn0zd 12511 . . . . . . 7 (𝑆 ∈ Word 𝐵 → (♯‘𝑆) ∈ ℤ)
1716uzidd 12765 . . . . . 6 (𝑆 ∈ Word 𝐵 → (♯‘𝑆) ∈ (ℤ‘(♯‘𝑆)))
18 uzaddcl 12815 . . . . . 6 (((♯‘𝑆) ∈ (ℤ‘(♯‘𝑆)) ∧ (♯‘𝑇) ∈ ℕ0) → ((♯‘𝑆) + (♯‘𝑇)) ∈ (ℤ‘(♯‘𝑆)))
1917, 3, 18syl2an 596 . . . . 5 ((𝑆 ∈ Word 𝐵𝑇 ∈ Word 𝐵) → ((♯‘𝑆) + (♯‘𝑇)) ∈ (ℤ‘(♯‘𝑆)))
20 fzoss2 13601 . . . . 5 (((♯‘𝑆) + (♯‘𝑇)) ∈ (ℤ‘(♯‘𝑆)) → (0..^(♯‘𝑆)) ⊆ (0..^((♯‘𝑆) + (♯‘𝑇))))
2119, 20syl 17 . . . 4 ((𝑆 ∈ Word 𝐵𝑇 ∈ Word 𝐵) → (0..^(♯‘𝑆)) ⊆ (0..^((♯‘𝑆) + (♯‘𝑇))))
2215, 21fnssresd 6614 . . 3 ((𝑆 ∈ Word 𝐵𝑇 ∈ Word 𝐵) → ((𝑆 ++ 𝑇) ↾ (0..^(♯‘𝑆))) Fn (0..^(♯‘𝑆)))
23 wrdfn 14449 . . . 4 (𝑆 ∈ Word 𝐵𝑆 Fn (0..^(♯‘𝑆)))
2423adantr 480 . . 3 ((𝑆 ∈ Word 𝐵𝑇 ∈ Word 𝐵) → 𝑆 Fn (0..^(♯‘𝑆)))
25 fvres 6851 . . . . 5 (𝑘 ∈ (0..^(♯‘𝑆)) → (((𝑆 ++ 𝑇) ↾ (0..^(♯‘𝑆)))‘𝑘) = ((𝑆 ++ 𝑇)‘𝑘))
2625adantl 481 . . . 4 (((𝑆 ∈ Word 𝐵𝑇 ∈ Word 𝐵) ∧ 𝑘 ∈ (0..^(♯‘𝑆))) → (((𝑆 ++ 𝑇) ↾ (0..^(♯‘𝑆)))‘𝑘) = ((𝑆 ++ 𝑇)‘𝑘))
27 ccatval1 14498 . . . . 5 ((𝑆 ∈ Word 𝐵𝑇 ∈ Word 𝐵𝑘 ∈ (0..^(♯‘𝑆))) → ((𝑆 ++ 𝑇)‘𝑘) = (𝑆𝑘))
28273expa 1118 . . . 4 (((𝑆 ∈ Word 𝐵𝑇 ∈ Word 𝐵) ∧ 𝑘 ∈ (0..^(♯‘𝑆))) → ((𝑆 ++ 𝑇)‘𝑘) = (𝑆𝑘))
2926, 28eqtrd 2769 . . 3 (((𝑆 ∈ Word 𝐵𝑇 ∈ Word 𝐵) ∧ 𝑘 ∈ (0..^(♯‘𝑆))) → (((𝑆 ++ 𝑇) ↾ (0..^(♯‘𝑆)))‘𝑘) = (𝑆𝑘))
3022, 24, 29eqfnfvd 6977 . 2 ((𝑆 ∈ Word 𝐵𝑇 ∈ Word 𝐵) → ((𝑆 ++ 𝑇) ↾ (0..^(♯‘𝑆))) = 𝑆)
3114, 30eqtrd 2769 1 ((𝑆 ∈ Word 𝐵𝑇 ∈ Word 𝐵) → ((𝑆 ++ 𝑇) prefix (♯‘𝑆)) = 𝑆)
Colors of variables: wff setvar class
Syntax hints:  wi 4  wa 395   = wceq 1541  wcel 2113  wss 3899  cres 5624   Fn wfn 6485  cfv 6490  (class class class)co 7356  0cc0 11024   + caddc 11027  0cn0 12399  cuz 12749  ...cfz 13421  ..^cfzo 13568  chash 14251  Word cword 14434   ++ cconcat 14491   prefix cpfx 14592
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1796  ax-4 1810  ax-5 1911  ax-6 1968  ax-7 2009  ax-8 2115  ax-9 2123  ax-10 2146  ax-11 2162  ax-12 2182  ax-ext 2706  ax-rep 5222  ax-sep 5239  ax-nul 5249  ax-pow 5308  ax-pr 5375  ax-un 7678  ax-cnex 11080  ax-resscn 11081  ax-1cn 11082  ax-icn 11083  ax-addcl 11084  ax-addrcl 11085  ax-mulcl 11086  ax-mulrcl 11087  ax-mulcom 11088  ax-addass 11089  ax-mulass 11090  ax-distr 11091  ax-i2m1 11092  ax-1ne0 11093  ax-1rid 11094  ax-rnegex 11095  ax-rrecex 11096  ax-cnre 11097  ax-pre-lttri 11098  ax-pre-lttrn 11099  ax-pre-ltadd 11100  ax-pre-mulgt0 11101
This theorem depends on definitions:  df-bi 207  df-an 396  df-or 848  df-3or 1087  df-3an 1088  df-tru 1544  df-fal 1554  df-ex 1781  df-nf 1785  df-sb 2068  df-mo 2537  df-eu 2567  df-clab 2713  df-cleq 2726  df-clel 2809  df-nfc 2883  df-ne 2931  df-nel 3035  df-ral 3050  df-rex 3059  df-reu 3349  df-rab 3398  df-v 3440  df-sbc 3739  df-csb 3848  df-dif 3902  df-un 3904  df-in 3906  df-ss 3916  df-pss 3919  df-nul 4284  df-if 4478  df-pw 4554  df-sn 4579  df-pr 4581  df-op 4585  df-uni 4862  df-int 4901  df-iun 4946  df-br 5097  df-opab 5159  df-mpt 5178  df-tr 5204  df-id 5517  df-eprel 5522  df-po 5530  df-so 5531  df-fr 5575  df-we 5577  df-xp 5628  df-rel 5629  df-cnv 5630  df-co 5631  df-dm 5632  df-rn 5633  df-res 5634  df-ima 5635  df-pred 6257  df-ord 6318  df-on 6319  df-lim 6320  df-suc 6321  df-iota 6446  df-fun 6492  df-fn 6493  df-f 6494  df-f1 6495  df-fo 6496  df-f1o 6497  df-fv 6498  df-riota 7313  df-ov 7359  df-oprab 7360  df-mpo 7361  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 8633  df-en 8882  df-dom 8883  df-sdom 8884  df-fin 8885  df-card 9849  df-pnf 11166  df-mnf 11167  df-xr 11168  df-ltxr 11169  df-le 11170  df-sub 11364  df-neg 11365  df-nn 12144  df-n0 12400  df-z 12487  df-uz 12750  df-fz 13422  df-fzo 13569  df-hash 14252  df-word 14435  df-concat 14492  df-substr 14563  df-pfx 14593
This theorem is referenced by:  ccatopth  14637  reuccatpfxs1  14668  wwlksnextbi  29916  wwlksnextsurj  29922  clwwlkfo  30074  ccatws1f1olast  32983  gsumwrd2dccatlem  33108  ccatcan2d  42448
  Copyright terms: Public domain W3C validator