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

Theorem pfxsuffeqwrdeq 14734
Description: Two words are equal if and only if they have the same prefix and the same suffix. (Contributed by Alexander van der Vekens, 23-Sep-2018.) (Revised by AV, 5-May-2020.)
Assertion
Ref Expression
pfxsuffeqwrdeq ((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) → (𝑊 = 𝑆 ↔ ((♯‘𝑊) = (♯‘𝑆) ∧ ((𝑊 prefix 𝐼) = (𝑆 prefix 𝐼) ∧ (𝑊 substr ⟨𝐼, (♯‘𝑊)⟩) = (𝑆 substr ⟨𝐼, (♯‘𝑊)⟩)))))

Proof of Theorem pfxsuffeqwrdeq
Dummy variable 𝑖 is distinct from all other variables.
StepHypRef Expression
1 eqwrd 14593 . . 3 ((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉) → (𝑊 = 𝑆 ↔ ((♯‘𝑊) = (♯‘𝑆) ∧ ∀𝑖 ∈ (0..^(♯‘𝑊))(𝑊𝑖) = (𝑆𝑖))))
213adant3 1148 . 2 ((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) → (𝑊 = 𝑆 ↔ ((♯‘𝑊) = (♯‘𝑆) ∧ ∀𝑖 ∈ (0..^(♯‘𝑊))(𝑊𝑖) = (𝑆𝑖))))
3 elfzofz 13703 . . . . . . . . 9 (𝐼 ∈ (0..^(♯‘𝑊)) → 𝐼 ∈ (0...(♯‘𝑊)))
4 fzosplit 13720 . . . . . . . . 9 (𝐼 ∈ (0...(♯‘𝑊)) → (0..^(♯‘𝑊)) = ((0..^𝐼) ∪ (𝐼..^(♯‘𝑊))))
53, 4syl 18 . . . . . . . 8 (𝐼 ∈ (0..^(♯‘𝑊)) → (0..^(♯‘𝑊)) = ((0..^𝐼) ∪ (𝐼..^(♯‘𝑊))))
653ad2ant3 1151 . . . . . . 7 ((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) → (0..^(♯‘𝑊)) = ((0..^𝐼) ∪ (𝐼..^(♯‘𝑊))))
76adantr 485 . . . . . 6 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → (0..^(♯‘𝑊)) = ((0..^𝐼) ∪ (𝐼..^(♯‘𝑊))))
87raleqdv 3329 . . . . 5 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → (∀𝑖 ∈ (0..^(♯‘𝑊))(𝑊𝑖) = (𝑆𝑖) ↔ ∀𝑖 ∈ ((0..^𝐼) ∪ (𝐼..^(♯‘𝑊)))(𝑊𝑖) = (𝑆𝑖)))
9 ralunb 4158 . . . . 5 (∀𝑖 ∈ ((0..^𝐼) ∪ (𝐼..^(♯‘𝑊)))(𝑊𝑖) = (𝑆𝑖) ↔ (∀𝑖 ∈ (0..^𝐼)(𝑊𝑖) = (𝑆𝑖) ∧ ∀𝑖 ∈ (𝐼..^(♯‘𝑊))(𝑊𝑖) = (𝑆𝑖)))
108, 9bitrdi 290 . . . 4 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → (∀𝑖 ∈ (0..^(♯‘𝑊))(𝑊𝑖) = (𝑆𝑖) ↔ (∀𝑖 ∈ (0..^𝐼)(𝑊𝑖) = (𝑆𝑖) ∧ ∀𝑖 ∈ (𝐼..^(♯‘𝑊))(𝑊𝑖) = (𝑆𝑖))))
11 eqidd 2770 . . . . . 6 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → 𝐼 = 𝐼)
12 3simpa 1164 . . . . . . . 8 ((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) → (𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉))
1312adantr 485 . . . . . . 7 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → (𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉))
14 elfzonn0 13735 . . . . . . . . . 10 (𝐼 ∈ (0..^(♯‘𝑊)) → 𝐼 ∈ ℕ0)
1514, 14jca 520 . . . . . . . . 9 (𝐼 ∈ (0..^(♯‘𝑊)) → (𝐼 ∈ ℕ0𝐼 ∈ ℕ0))
16153ad2ant3 1151 . . . . . . . 8 ((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) → (𝐼 ∈ ℕ0𝐼 ∈ ℕ0))
1716adantr 485 . . . . . . 7 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → (𝐼 ∈ ℕ0𝐼 ∈ ℕ0))
18 elfzo0le 13731 . . . . . . . . 9 (𝐼 ∈ (0..^(♯‘𝑊)) → 𝐼 ≤ (♯‘𝑊))
19183ad2ant3 1151 . . . . . . . 8 ((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) → 𝐼 ≤ (♯‘𝑊))
2019adantr 485 . . . . . . 7 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → 𝐼 ≤ (♯‘𝑊))
21 breq2 5117 . . . . . . . . 9 ((♯‘𝑊) = (♯‘𝑆) → (𝐼 ≤ (♯‘𝑊) ↔ 𝐼 ≤ (♯‘𝑆)))
2221adantl 486 . . . . . . . 8 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → (𝐼 ≤ (♯‘𝑊) ↔ 𝐼 ≤ (♯‘𝑆)))
2320, 22mpbid 235 . . . . . . 7 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → 𝐼 ≤ (♯‘𝑆))
24 pfxeq 14732 . . . . . . 7 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉) ∧ (𝐼 ∈ ℕ0𝐼 ∈ ℕ0) ∧ (𝐼 ≤ (♯‘𝑊) ∧ 𝐼 ≤ (♯‘𝑆))) → ((𝑊 prefix 𝐼) = (𝑆 prefix 𝐼) ↔ (𝐼 = 𝐼 ∧ ∀𝑖 ∈ (0..^𝐼)(𝑊𝑖) = (𝑆𝑖))))
2513, 17, 20, 23, 24syl112anc 1399 . . . . . 6 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → ((𝑊 prefix 𝐼) = (𝑆 prefix 𝐼) ↔ (𝐼 = 𝐼 ∧ ∀𝑖 ∈ (0..^𝐼)(𝑊𝑖) = (𝑆𝑖))))
2611, 25mpbirand 719 . . . . 5 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → ((𝑊 prefix 𝐼) = (𝑆 prefix 𝐼) ↔ ∀𝑖 ∈ (0..^𝐼)(𝑊𝑖) = (𝑆𝑖)))
27 lencl 14569 . . . . . . . . 9 (𝑊 ∈ Word 𝑉 → (♯‘𝑊) ∈ ℕ0)
2827, 14anim12ci 625 . . . . . . . 8 ((𝑊 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) → (𝐼 ∈ ℕ0 ∧ (♯‘𝑊) ∈ ℕ0))
29283adant2 1147 . . . . . . 7 ((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) → (𝐼 ∈ ℕ0 ∧ (♯‘𝑊) ∈ ℕ0))
3029adantr 485 . . . . . 6 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → (𝐼 ∈ ℕ0 ∧ (♯‘𝑊) ∈ ℕ0))
3127nn0red 12565 . . . . . . . . . 10 (𝑊 ∈ Word 𝑉 → (♯‘𝑊) ∈ ℝ)
3231leidd 11779 . . . . . . . . 9 (𝑊 ∈ Word 𝑉 → (♯‘𝑊) ≤ (♯‘𝑊))
3332adantr 485 . . . . . . . 8 ((𝑊 ∈ Word 𝑉 ∧ (♯‘𝑊) = (♯‘𝑆)) → (♯‘𝑊) ≤ (♯‘𝑊))
34 eqle 11311 . . . . . . . . 9 (((♯‘𝑊) ∈ ℝ ∧ (♯‘𝑊) = (♯‘𝑆)) → (♯‘𝑊) ≤ (♯‘𝑆))
3531, 34sylan 591 . . . . . . . 8 ((𝑊 ∈ Word 𝑉 ∧ (♯‘𝑊) = (♯‘𝑆)) → (♯‘𝑊) ≤ (♯‘𝑆))
3633, 35jca 520 . . . . . . 7 ((𝑊 ∈ Word 𝑉 ∧ (♯‘𝑊) = (♯‘𝑆)) → ((♯‘𝑊) ≤ (♯‘𝑊) ∧ (♯‘𝑊) ≤ (♯‘𝑆)))
37363ad2antl1 1202 . . . . . 6 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → ((♯‘𝑊) ≤ (♯‘𝑊) ∧ (♯‘𝑊) ≤ (♯‘𝑆)))
38 swrdspsleq 14702 . . . . . 6 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉) ∧ (𝐼 ∈ ℕ0 ∧ (♯‘𝑊) ∈ ℕ0) ∧ ((♯‘𝑊) ≤ (♯‘𝑊) ∧ (♯‘𝑊) ≤ (♯‘𝑆))) → ((𝑊 substr ⟨𝐼, (♯‘𝑊)⟩) = (𝑆 substr ⟨𝐼, (♯‘𝑊)⟩) ↔ ∀𝑖 ∈ (𝐼..^(♯‘𝑊))(𝑊𝑖) = (𝑆𝑖)))
3913, 30, 37, 38syl3anc 1396 . . . . 5 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → ((𝑊 substr ⟨𝐼, (♯‘𝑊)⟩) = (𝑆 substr ⟨𝐼, (♯‘𝑊)⟩) ↔ ∀𝑖 ∈ (𝐼..^(♯‘𝑊))(𝑊𝑖) = (𝑆𝑖)))
4026, 39anbi12d 643 . . . 4 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → (((𝑊 prefix 𝐼) = (𝑆 prefix 𝐼) ∧ (𝑊 substr ⟨𝐼, (♯‘𝑊)⟩) = (𝑆 substr ⟨𝐼, (♯‘𝑊)⟩)) ↔ (∀𝑖 ∈ (0..^𝐼)(𝑊𝑖) = (𝑆𝑖) ∧ ∀𝑖 ∈ (𝐼..^(♯‘𝑊))(𝑊𝑖) = (𝑆𝑖))))
4110, 40bitr4d 285 . . 3 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → (∀𝑖 ∈ (0..^(♯‘𝑊))(𝑊𝑖) = (𝑆𝑖) ↔ ((𝑊 prefix 𝐼) = (𝑆 prefix 𝐼) ∧ (𝑊 substr ⟨𝐼, (♯‘𝑊)⟩) = (𝑆 substr ⟨𝐼, (♯‘𝑊)⟩))))
4241pm5.32da 589 . 2 ((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) → (((♯‘𝑊) = (♯‘𝑆) ∧ ∀𝑖 ∈ (0..^(♯‘𝑊))(𝑊𝑖) = (𝑆𝑖)) ↔ ((♯‘𝑊) = (♯‘𝑆) ∧ ((𝑊 prefix 𝐼) = (𝑆 prefix 𝐼) ∧ (𝑊 substr ⟨𝐼, (♯‘𝑊)⟩) = (𝑆 substr ⟨𝐼, (♯‘𝑊)⟩)))))
432, 42bitrd 282 1 ((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) → (𝑊 = 𝑆 ↔ ((♯‘𝑊) = (♯‘𝑆) ∧ ((𝑊 prefix 𝐼) = (𝑆 prefix 𝐼) ∧ (𝑊 substr ⟨𝐼, (♯‘𝑊)⟩) = (𝑆 substr ⟨𝐼, (♯‘𝑊)⟩)))))
Colors of variables: wff setvar class
Syntax hints:  wi 4  wb 209  wa 400  w3a 1101   = wceq 1567  wcel 2149  wral 3085  cun 3911  cop 4600   class class class wbr 5113  cfv 6537  (class class class)co 7411  cr 11098  0cc0 11099  cle 11243  0cn0 12503  ...cfz 13534  ..^cfzo 13681  chash 14365  Word cword 14549   substr csubstr 14677   prefix cpfx 14707
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1822  ax-4 1836  ax-5 1937  ax-6 1994  ax-7 2035  ax-8 2151  ax-9 2159  ax-10 2182  ax-11 2198  ax-12 2219  ax-ext 2741  ax-rep 5242  ax-sep 5261  ax-nul 5271  ax-pow 5337  ax-pr 5405  ax-un 7733  ax-cnex 11155  ax-resscn 11156  ax-1cn 11157  ax-icn 11158  ax-addcl 11159  ax-addrcl 11160  ax-mulcl 11161  ax-mulrcl 11162  ax-mulcom 11163  ax-addass 11164  ax-mulass 11165  ax-distr 11166  ax-i2m1 11167  ax-1ne0 11168  ax-1rid 11169  ax-rnegex 11170  ax-rrecex 11171  ax-cnre 11172  ax-pre-lttri 11173  ax-pre-lttrn 11174  ax-pre-ltadd 11175  ax-pre-mulgt0 11176
This theorem depends on definitions:  df-bi 210  df-an 401  df-or 861  df-3or 1102  df-3an 1103  df-tru 1570  df-fal 1580  df-ex 1807  df-nf 1811  df-sb 2098  df-mo 2573  df-eu 2603  df-clab 2748  df-cleq 2761  df-clel 2844  df-nfc 2918  df-ne 2965  df-nel 3071  df-ral 3086  df-rex 3096  df-reu 3377  df-rab 3424  df-v 3465  df-sbc 3754  df-csb 3862  df-dif 3916  df-un 3918  df-in 3920  df-ss 3930  df-pss 3933  df-nul 4295  df-if 4493  df-pw 4569  df-sn 4595  df-pr 4597  df-op 4601  df-uni 4877  df-int 4917  df-iun 4962  df-br 5114  df-opab 5178  df-mpt 5197  df-tr 5223  df-id 5557  df-eprel 5562  df-po 5570  df-so 5571  df-fr 5615  df-we 5617  df-xp 5668  df-rel 5669  df-cnv 5670  df-co 5671  df-dm 5672  df-rn 5673  df-res 5674  df-ima 5675  df-pred 6303  df-ord 6364  df-on 6365  df-lim 6366  df-suc 6367  df-iota 6493  df-fun 6539  df-fn 6540  df-f 6541  df-f1 6542  df-fo 6543  df-f1o 6544  df-fv 6545  df-riota 7368  df-ov 7414  df-oprab 7415  df-mpo 7416  df-om 7862  df-1st 7985  df-2nd 7986  df-frecs 8277  df-wrecs 8308  df-recs 8357  df-rdg 8396  df-1o 8452  df-er 8693  df-en 8943  df-dom 8944  df-sdom 8945  df-fin 8946  df-card 9924  df-pnf 11244  df-mnf 11245  df-xr 11246  df-ltxr 11247  df-le 11248  df-sub 11442  df-neg 11443  df-nn 12233  df-n0 12504  df-z 12591  df-uz 12862  df-fz 13535  df-fzo 13682  df-hash 14366  df-word 14550  df-substr 14678  df-pfx 14708
This theorem is referenced by:  pfxsuff1eqwrdeq  14735  2swrd2eqwrdeq  14989
  Copyright terms: Public domain W3C validator