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

Theorem swrdccatin12d 13721
 Description: The subword of a concatenation of two words within both of the concatenated words. (Contributed by AV, 31-May-2018.) (Revised by Mario Carneiro/AV, 21-Oct-2018.)
Hypotheses
Ref Expression
swrdccatind.l (𝜑 → (♯‘𝐴) = 𝐿)
swrdccatind.w (𝜑 → (𝐴 ∈ Word 𝑉𝐵 ∈ Word 𝑉))
swrdccatin12d.1 (𝜑𝑀 ∈ (0...𝐿))
swrdccatin12d.2 (𝜑𝑁 ∈ (𝐿...(𝐿 + (♯‘𝐵))))
Assertion
Ref Expression
swrdccatin12d (𝜑 → ((𝐴 ++ 𝐵) substr ⟨𝑀, 𝑁⟩) = ((𝐴 substr ⟨𝑀, 𝐿⟩) ++ (𝐵 substr ⟨0, (𝑁𝐿)⟩)))

Proof of Theorem swrdccatin12d
StepHypRef Expression
1 swrdccatind.l . 2 (𝜑 → (♯‘𝐴) = 𝐿)
2 swrdccatind.w . . . . . 6 (𝜑 → (𝐴 ∈ Word 𝑉𝐵 ∈ Word 𝑉))
32adantl 473 . . . . 5 (((♯‘𝐴) = 𝐿𝜑) → (𝐴 ∈ Word 𝑉𝐵 ∈ Word 𝑉))
4 swrdccatin12d.1 . . . . . . . 8 (𝜑𝑀 ∈ (0...𝐿))
5 swrdccatin12d.2 . . . . . . . 8 (𝜑𝑁 ∈ (𝐿...(𝐿 + (♯‘𝐵))))
64, 5jca 555 . . . . . . 7 (𝜑 → (𝑀 ∈ (0...𝐿) ∧ 𝑁 ∈ (𝐿...(𝐿 + (♯‘𝐵)))))
76adantl 473 . . . . . 6 (((♯‘𝐴) = 𝐿𝜑) → (𝑀 ∈ (0...𝐿) ∧ 𝑁 ∈ (𝐿...(𝐿 + (♯‘𝐵)))))
8 oveq2 6822 . . . . . . . . 9 ((♯‘𝐴) = 𝐿 → (0...(♯‘𝐴)) = (0...𝐿))
98eleq2d 2825 . . . . . . . 8 ((♯‘𝐴) = 𝐿 → (𝑀 ∈ (0...(♯‘𝐴)) ↔ 𝑀 ∈ (0...𝐿)))
10 id 22 . . . . . . . . . 10 ((♯‘𝐴) = 𝐿 → (♯‘𝐴) = 𝐿)
11 oveq1 6821 . . . . . . . . . 10 ((♯‘𝐴) = 𝐿 → ((♯‘𝐴) + (♯‘𝐵)) = (𝐿 + (♯‘𝐵)))
1210, 11oveq12d 6832 . . . . . . . . 9 ((♯‘𝐴) = 𝐿 → ((♯‘𝐴)...((♯‘𝐴) + (♯‘𝐵))) = (𝐿...(𝐿 + (♯‘𝐵))))
1312eleq2d 2825 . . . . . . . 8 ((♯‘𝐴) = 𝐿 → (𝑁 ∈ ((♯‘𝐴)...((♯‘𝐴) + (♯‘𝐵))) ↔ 𝑁 ∈ (𝐿...(𝐿 + (♯‘𝐵)))))
149, 13anbi12d 749 . . . . . . 7 ((♯‘𝐴) = 𝐿 → ((𝑀 ∈ (0...(♯‘𝐴)) ∧ 𝑁 ∈ ((♯‘𝐴)...((♯‘𝐴) + (♯‘𝐵)))) ↔ (𝑀 ∈ (0...𝐿) ∧ 𝑁 ∈ (𝐿...(𝐿 + (♯‘𝐵))))))
1514adantr 472 . . . . . 6 (((♯‘𝐴) = 𝐿𝜑) → ((𝑀 ∈ (0...(♯‘𝐴)) ∧ 𝑁 ∈ ((♯‘𝐴)...((♯‘𝐴) + (♯‘𝐵)))) ↔ (𝑀 ∈ (0...𝐿) ∧ 𝑁 ∈ (𝐿...(𝐿 + (♯‘𝐵))))))
167, 15mpbird 247 . . . . 5 (((♯‘𝐴) = 𝐿𝜑) → (𝑀 ∈ (0...(♯‘𝐴)) ∧ 𝑁 ∈ ((♯‘𝐴)...((♯‘𝐴) + (♯‘𝐵)))))
17 eqid 2760 . . . . . 6 (♯‘𝐴) = (♯‘𝐴)
1817swrdccatin12 13711 . . . . 5 ((𝐴 ∈ Word 𝑉𝐵 ∈ Word 𝑉) → ((𝑀 ∈ (0...(♯‘𝐴)) ∧ 𝑁 ∈ ((♯‘𝐴)...((♯‘𝐴) + (♯‘𝐵)))) → ((𝐴 ++ 𝐵) substr ⟨𝑀, 𝑁⟩) = ((𝐴 substr ⟨𝑀, (♯‘𝐴)⟩) ++ (𝐵 substr ⟨0, (𝑁 − (♯‘𝐴))⟩))))
193, 16, 18sylc 65 . . . 4 (((♯‘𝐴) = 𝐿𝜑) → ((𝐴 ++ 𝐵) substr ⟨𝑀, 𝑁⟩) = ((𝐴 substr ⟨𝑀, (♯‘𝐴)⟩) ++ (𝐵 substr ⟨0, (𝑁 − (♯‘𝐴))⟩)))
2019ex 449 . . 3 ((♯‘𝐴) = 𝐿 → (𝜑 → ((𝐴 ++ 𝐵) substr ⟨𝑀, 𝑁⟩) = ((𝐴 substr ⟨𝑀, (♯‘𝐴)⟩) ++ (𝐵 substr ⟨0, (𝑁 − (♯‘𝐴))⟩))))
21 opeq2 4554 . . . . . 6 ((♯‘𝐴) = 𝐿 → ⟨𝑀, (♯‘𝐴)⟩ = ⟨𝑀, 𝐿⟩)
2221oveq2d 6830 . . . . 5 ((♯‘𝐴) = 𝐿 → (𝐴 substr ⟨𝑀, (♯‘𝐴)⟩) = (𝐴 substr ⟨𝑀, 𝐿⟩))
23 oveq2 6822 . . . . . . 7 ((♯‘𝐴) = 𝐿 → (𝑁 − (♯‘𝐴)) = (𝑁𝐿))
2423opeq2d 4560 . . . . . 6 ((♯‘𝐴) = 𝐿 → ⟨0, (𝑁 − (♯‘𝐴))⟩ = ⟨0, (𝑁𝐿)⟩)
2524oveq2d 6830 . . . . 5 ((♯‘𝐴) = 𝐿 → (𝐵 substr ⟨0, (𝑁 − (♯‘𝐴))⟩) = (𝐵 substr ⟨0, (𝑁𝐿)⟩))
2622, 25oveq12d 6832 . . . 4 ((♯‘𝐴) = 𝐿 → ((𝐴 substr ⟨𝑀, (♯‘𝐴)⟩) ++ (𝐵 substr ⟨0, (𝑁 − (♯‘𝐴))⟩)) = ((𝐴 substr ⟨𝑀, 𝐿⟩) ++ (𝐵 substr ⟨0, (𝑁𝐿)⟩)))
2726eqeq2d 2770 . . 3 ((♯‘𝐴) = 𝐿 → (((𝐴 ++ 𝐵) substr ⟨𝑀, 𝑁⟩) = ((𝐴 substr ⟨𝑀, (♯‘𝐴)⟩) ++ (𝐵 substr ⟨0, (𝑁 − (♯‘𝐴))⟩)) ↔ ((𝐴 ++ 𝐵) substr ⟨𝑀, 𝑁⟩) = ((𝐴 substr ⟨𝑀, 𝐿⟩) ++ (𝐵 substr ⟨0, (𝑁𝐿)⟩))))
2820, 27sylibd 229 . 2 ((♯‘𝐴) = 𝐿 → (𝜑 → ((𝐴 ++ 𝐵) substr ⟨𝑀, 𝑁⟩) = ((𝐴 substr ⟨𝑀, 𝐿⟩) ++ (𝐵 substr ⟨0, (𝑁𝐿)⟩))))
291, 28mpcom 38 1 (𝜑 → ((𝐴 ++ 𝐵) substr ⟨𝑀, 𝑁⟩) = ((𝐴 substr ⟨𝑀, 𝐿⟩) ++ (𝐵 substr ⟨0, (𝑁𝐿)⟩)))
 Colors of variables: wff setvar class Syntax hints:   → wi 4   ↔ wb 196   ∧ wa 383   = wceq 1632   ∈ wcel 2139  ⟨cop 4327  ‘cfv 6049  (class class class)co 6814  0cc0 10148   + caddc 10151   − cmin 10478  ...cfz 12539  ♯chash 13331  Word cword 13497   ++ cconcat 13499   substr csubstr 13501 This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1871  ax-4 1886  ax-5 1988  ax-6 2054  ax-7 2090  ax-8 2141  ax-9 2148  ax-10 2168  ax-11 2183  ax-12 2196  ax-13 2391  ax-ext 2740  ax-rep 4923  ax-sep 4933  ax-nul 4941  ax-pow 4992  ax-pr 5055  ax-un 7115  ax-cnex 10204  ax-resscn 10205  ax-1cn 10206  ax-icn 10207  ax-addcl 10208  ax-addrcl 10209  ax-mulcl 10210  ax-mulrcl 10211  ax-mulcom 10212  ax-addass 10213  ax-mulass 10214  ax-distr 10215  ax-i2m1 10216  ax-1ne0 10217  ax-1rid 10218  ax-rnegex 10219  ax-rrecex 10220  ax-cnre 10221  ax-pre-lttri 10222  ax-pre-lttrn 10223  ax-pre-ltadd 10224  ax-pre-mulgt0 10225 This theorem depends on definitions:  df-bi 197  df-or 384  df-an 385  df-3or 1073  df-3an 1074  df-tru 1635  df-ex 1854  df-nf 1859  df-sb 2047  df-eu 2611  df-mo 2612  df-clab 2747  df-cleq 2753  df-clel 2756  df-nfc 2891  df-ne 2933  df-nel 3036  df-ral 3055  df-rex 3056  df-reu 3057  df-rab 3059  df-v 3342  df-sbc 3577  df-csb 3675  df-dif 3718  df-un 3720  df-in 3722  df-ss 3729  df-pss 3731  df-nul 4059  df-if 4231  df-pw 4304  df-sn 4322  df-pr 4324  df-tp 4326  df-op 4328  df-uni 4589  df-int 4628  df-iun 4674  df-br 4805  df-opab 4865  df-mpt 4882  df-tr 4905  df-id 5174  df-eprel 5179  df-po 5187  df-so 5188  df-fr 5225  df-we 5227  df-xp 5272  df-rel 5273  df-cnv 5274  df-co 5275  df-dm 5276  df-rn 5277  df-res 5278  df-ima 5279  df-pred 5841  df-ord 5887  df-on 5888  df-lim 5889  df-suc 5890  df-iota 6012  df-fun 6051  df-fn 6052  df-f 6053  df-f1 6054  df-fo 6055  df-f1o 6056  df-fv 6057  df-riota 6775  df-ov 6817  df-oprab 6818  df-mpt2 6819  df-om 7232  df-1st 7334  df-2nd 7335  df-wrecs 7577  df-recs 7638  df-rdg 7676  df-1o 7730  df-oadd 7734  df-er 7913  df-en 8124  df-dom 8125  df-sdom 8126  df-fin 8127  df-card 8975  df-pnf 10288  df-mnf 10289  df-xr 10290  df-ltxr 10291  df-le 10292  df-sub 10480  df-neg 10481  df-nn 11233  df-n0 11505  df-z 11590  df-uz 11900  df-fz 12540  df-fzo 12680  df-hash 13332  df-word 13505  df-concat 13507  df-substr 13509 This theorem is referenced by: (None)
 Copyright terms: Public domain W3C validator