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

Theorem pfxsuffeqwrdeq 14040
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 13889 . . 3 ((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉) → (𝑊 = 𝑆 ↔ ((♯‘𝑊) = (♯‘𝑆) ∧ ∀𝑖 ∈ (0..^(♯‘𝑊))(𝑊𝑖) = (𝑆𝑖))))
213adant3 1128 . 2 ((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) → (𝑊 = 𝑆 ↔ ((♯‘𝑊) = (♯‘𝑆) ∧ ∀𝑖 ∈ (0..^(♯‘𝑊))(𝑊𝑖) = (𝑆𝑖))))
3 elfzofz 13037 . . . . . . . . 9 (𝐼 ∈ (0..^(♯‘𝑊)) → 𝐼 ∈ (0...(♯‘𝑊)))
4 fzosplit 13054 . . . . . . . . 9 (𝐼 ∈ (0...(♯‘𝑊)) → (0..^(♯‘𝑊)) = ((0..^𝐼) ∪ (𝐼..^(♯‘𝑊))))
53, 4syl 17 . . . . . . . 8 (𝐼 ∈ (0..^(♯‘𝑊)) → (0..^(♯‘𝑊)) = ((0..^𝐼) ∪ (𝐼..^(♯‘𝑊))))
653ad2ant3 1131 . . . . . . 7 ((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) → (0..^(♯‘𝑊)) = ((0..^𝐼) ∪ (𝐼..^(♯‘𝑊))))
76adantr 483 . . . . . 6 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → (0..^(♯‘𝑊)) = ((0..^𝐼) ∪ (𝐼..^(♯‘𝑊))))
87raleqdv 3398 . . . . 5 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → (∀𝑖 ∈ (0..^(♯‘𝑊))(𝑊𝑖) = (𝑆𝑖) ↔ ∀𝑖 ∈ ((0..^𝐼) ∪ (𝐼..^(♯‘𝑊)))(𝑊𝑖) = (𝑆𝑖)))
9 ralunb 4146 . . . . 5 (∀𝑖 ∈ ((0..^𝐼) ∪ (𝐼..^(♯‘𝑊)))(𝑊𝑖) = (𝑆𝑖) ↔ (∀𝑖 ∈ (0..^𝐼)(𝑊𝑖) = (𝑆𝑖) ∧ ∀𝑖 ∈ (𝐼..^(♯‘𝑊))(𝑊𝑖) = (𝑆𝑖)))
108, 9syl6bb 289 . . . 4 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → (∀𝑖 ∈ (0..^(♯‘𝑊))(𝑊𝑖) = (𝑆𝑖) ↔ (∀𝑖 ∈ (0..^𝐼)(𝑊𝑖) = (𝑆𝑖) ∧ ∀𝑖 ∈ (𝐼..^(♯‘𝑊))(𝑊𝑖) = (𝑆𝑖))))
11 eqidd 2821 . . . . . 6 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → 𝐼 = 𝐼)
12 3simpa 1144 . . . . . . . 8 ((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) → (𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉))
1312adantr 483 . . . . . . 7 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → (𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉))
14 elfzonn0 13066 . . . . . . . . . 10 (𝐼 ∈ (0..^(♯‘𝑊)) → 𝐼 ∈ ℕ0)
1514, 14jca 514 . . . . . . . . 9 (𝐼 ∈ (0..^(♯‘𝑊)) → (𝐼 ∈ ℕ0𝐼 ∈ ℕ0))
16153ad2ant3 1131 . . . . . . . 8 ((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) → (𝐼 ∈ ℕ0𝐼 ∈ ℕ0))
1716adantr 483 . . . . . . 7 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → (𝐼 ∈ ℕ0𝐼 ∈ ℕ0))
18 elfzo0le 13065 . . . . . . . . 9 (𝐼 ∈ (0..^(♯‘𝑊)) → 𝐼 ≤ (♯‘𝑊))
19183ad2ant3 1131 . . . . . . . 8 ((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) → 𝐼 ≤ (♯‘𝑊))
2019adantr 483 . . . . . . 7 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → 𝐼 ≤ (♯‘𝑊))
21 breq2 5046 . . . . . . . . 9 ((♯‘𝑊) = (♯‘𝑆) → (𝐼 ≤ (♯‘𝑊) ↔ 𝐼 ≤ (♯‘𝑆)))
2221adantl 484 . . . . . . . 8 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → (𝐼 ≤ (♯‘𝑊) ↔ 𝐼 ≤ (♯‘𝑆)))
2320, 22mpbid 234 . . . . . . 7 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → 𝐼 ≤ (♯‘𝑆))
24 pfxeq 14038 . . . . . . 7 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉) ∧ (𝐼 ∈ ℕ0𝐼 ∈ ℕ0) ∧ (𝐼 ≤ (♯‘𝑊) ∧ 𝐼 ≤ (♯‘𝑆))) → ((𝑊 prefix 𝐼) = (𝑆 prefix 𝐼) ↔ (𝐼 = 𝐼 ∧ ∀𝑖 ∈ (0..^𝐼)(𝑊𝑖) = (𝑆𝑖))))
2513, 17, 20, 23, 24syl112anc 1370 . . . . . 6 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → ((𝑊 prefix 𝐼) = (𝑆 prefix 𝐼) ↔ (𝐼 = 𝐼 ∧ ∀𝑖 ∈ (0..^𝐼)(𝑊𝑖) = (𝑆𝑖))))
2611, 25mpbirand 705 . . . . 5 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → ((𝑊 prefix 𝐼) = (𝑆 prefix 𝐼) ↔ ∀𝑖 ∈ (0..^𝐼)(𝑊𝑖) = (𝑆𝑖)))
27 lencl 13865 . . . . . . . . 9 (𝑊 ∈ Word 𝑉 → (♯‘𝑊) ∈ ℕ0)
2827, 14anim12ci 615 . . . . . . . 8 ((𝑊 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) → (𝐼 ∈ ℕ0 ∧ (♯‘𝑊) ∈ ℕ0))
29283adant2 1127 . . . . . . 7 ((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) → (𝐼 ∈ ℕ0 ∧ (♯‘𝑊) ∈ ℕ0))
3029adantr 483 . . . . . 6 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → (𝐼 ∈ ℕ0 ∧ (♯‘𝑊) ∈ ℕ0))
3127nn0red 11935 . . . . . . . . . 10 (𝑊 ∈ Word 𝑉 → (♯‘𝑊) ∈ ℝ)
3231leidd 11184 . . . . . . . . 9 (𝑊 ∈ Word 𝑉 → (♯‘𝑊) ≤ (♯‘𝑊))
3332adantr 483 . . . . . . . 8 ((𝑊 ∈ Word 𝑉 ∧ (♯‘𝑊) = (♯‘𝑆)) → (♯‘𝑊) ≤ (♯‘𝑊))
34 eqle 10720 . . . . . . . . 9 (((♯‘𝑊) ∈ ℝ ∧ (♯‘𝑊) = (♯‘𝑆)) → (♯‘𝑊) ≤ (♯‘𝑆))
3531, 34sylan 582 . . . . . . . 8 ((𝑊 ∈ Word 𝑉 ∧ (♯‘𝑊) = (♯‘𝑆)) → (♯‘𝑊) ≤ (♯‘𝑆))
3633, 35jca 514 . . . . . . 7 ((𝑊 ∈ Word 𝑉 ∧ (♯‘𝑊) = (♯‘𝑆)) → ((♯‘𝑊) ≤ (♯‘𝑊) ∧ (♯‘𝑊) ≤ (♯‘𝑆)))
37363ad2antl1 1181 . . . . . 6 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → ((♯‘𝑊) ≤ (♯‘𝑊) ∧ (♯‘𝑊) ≤ (♯‘𝑆)))
38 swrdspsleq 14007 . . . . . 6 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉) ∧ (𝐼 ∈ ℕ0 ∧ (♯‘𝑊) ∈ ℕ0) ∧ ((♯‘𝑊) ≤ (♯‘𝑊) ∧ (♯‘𝑊) ≤ (♯‘𝑆))) → ((𝑊 substr ⟨𝐼, (♯‘𝑊)⟩) = (𝑆 substr ⟨𝐼, (♯‘𝑊)⟩) ↔ ∀𝑖 ∈ (𝐼..^(♯‘𝑊))(𝑊𝑖) = (𝑆𝑖)))
3913, 30, 37, 38syl3anc 1367 . . . . 5 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → ((𝑊 substr ⟨𝐼, (♯‘𝑊)⟩) = (𝑆 substr ⟨𝐼, (♯‘𝑊)⟩) ↔ ∀𝑖 ∈ (𝐼..^(♯‘𝑊))(𝑊𝑖) = (𝑆𝑖)))
4026, 39anbi12d 632 . . . 4 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → (((𝑊 prefix 𝐼) = (𝑆 prefix 𝐼) ∧ (𝑊 substr ⟨𝐼, (♯‘𝑊)⟩) = (𝑆 substr ⟨𝐼, (♯‘𝑊)⟩)) ↔ (∀𝑖 ∈ (0..^𝐼)(𝑊𝑖) = (𝑆𝑖) ∧ ∀𝑖 ∈ (𝐼..^(♯‘𝑊))(𝑊𝑖) = (𝑆𝑖))))
4110, 40bitr4d 284 . . 3 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → (∀𝑖 ∈ (0..^(♯‘𝑊))(𝑊𝑖) = (𝑆𝑖) ↔ ((𝑊 prefix 𝐼) = (𝑆 prefix 𝐼) ∧ (𝑊 substr ⟨𝐼, (♯‘𝑊)⟩) = (𝑆 substr ⟨𝐼, (♯‘𝑊)⟩))))
4241pm5.32da 581 . 2 ((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) → (((♯‘𝑊) = (♯‘𝑆) ∧ ∀𝑖 ∈ (0..^(♯‘𝑊))(𝑊𝑖) = (𝑆𝑖)) ↔ ((♯‘𝑊) = (♯‘𝑆) ∧ ((𝑊 prefix 𝐼) = (𝑆 prefix 𝐼) ∧ (𝑊 substr ⟨𝐼, (♯‘𝑊)⟩) = (𝑆 substr ⟨𝐼, (♯‘𝑊)⟩)))))
432, 42bitrd 281 1 ((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) → (𝑊 = 𝑆 ↔ ((♯‘𝑊) = (♯‘𝑆) ∧ ((𝑊 prefix 𝐼) = (𝑆 prefix 𝐼) ∧ (𝑊 substr ⟨𝐼, (♯‘𝑊)⟩) = (𝑆 substr ⟨𝐼, (♯‘𝑊)⟩)))))
Colors of variables: wff setvar class
Syntax hints:  wi 4  wb 208  wa 398  w3a 1083   = wceq 1537  wcel 2114  wral 3125  cun 3911  cop 4549   class class class wbr 5042  cfv 6331  (class class class)co 7133  cr 10514  0cc0 10515  cle 10654  0cn0 11876  ...cfz 12876  ..^cfzo 13017  chash 13675  Word cword 13846   substr csubstr 13982   prefix cpfx 14012
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 1970  ax-7 2015  ax-8 2116  ax-9 2124  ax-10 2145  ax-11 2161  ax-12 2177  ax-ext 2792  ax-rep 5166  ax-sep 5179  ax-nul 5186  ax-pow 5242  ax-pr 5306  ax-un 7439  ax-cnex 10571  ax-resscn 10572  ax-1cn 10573  ax-icn 10574  ax-addcl 10575  ax-addrcl 10576  ax-mulcl 10577  ax-mulrcl 10578  ax-mulcom 10579  ax-addass 10580  ax-mulass 10581  ax-distr 10582  ax-i2m1 10583  ax-1ne0 10584  ax-1rid 10585  ax-rnegex 10586  ax-rrecex 10587  ax-cnre 10588  ax-pre-lttri 10589  ax-pre-lttrn 10590  ax-pre-ltadd 10591  ax-pre-mulgt0 10592
This theorem depends on definitions:  df-bi 209  df-an 399  df-or 844  df-3or 1084  df-3an 1085  df-tru 1540  df-fal 1550  df-ex 1781  df-nf 1785  df-sb 2070  df-mo 2622  df-eu 2653  df-clab 2799  df-cleq 2813  df-clel 2891  df-nfc 2959  df-ne 3007  df-nel 3111  df-ral 3130  df-rex 3131  df-reu 3132  df-rab 3134  df-v 3475  df-sbc 3753  df-csb 3861  df-dif 3916  df-un 3918  df-in 3920  df-ss 3930  df-pss 3932  df-nul 4270  df-if 4444  df-pw 4517  df-sn 4544  df-pr 4546  df-tp 4548  df-op 4550  df-uni 4815  df-int 4853  df-iun 4897  df-br 5043  df-opab 5105  df-mpt 5123  df-tr 5149  df-id 5436  df-eprel 5441  df-po 5450  df-so 5451  df-fr 5490  df-we 5492  df-xp 5537  df-rel 5538  df-cnv 5539  df-co 5540  df-dm 5541  df-rn 5542  df-res 5543  df-ima 5544  df-pred 6124  df-ord 6170  df-on 6171  df-lim 6172  df-suc 6173  df-iota 6290  df-fun 6333  df-fn 6334  df-f 6335  df-f1 6336  df-fo 6337  df-f1o 6338  df-fv 6339  df-riota 7091  df-ov 7136  df-oprab 7137  df-mpo 7138  df-om 7559  df-1st 7667  df-2nd 7668  df-wrecs 7925  df-recs 7986  df-rdg 8024  df-1o 8080  df-oadd 8084  df-er 8267  df-en 8488  df-dom 8489  df-sdom 8490  df-fin 8491  df-card 9346  df-pnf 10655  df-mnf 10656  df-xr 10657  df-ltxr 10658  df-le 10659  df-sub 10850  df-neg 10851  df-nn 11617  df-n0 11877  df-z 11961  df-uz 12223  df-fz 12877  df-fzo 13018  df-hash 13676  df-word 13847  df-substr 13983  df-pfx 14013
This theorem is referenced by:  pfxsuff1eqwrdeq  14041  2swrd2eqwrdeq  14295
  Copyright terms: Public domain W3C validator