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

Theorem pfxsuffeqwrdeq 14711
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 14570 . . 3 ((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉) → (𝑊 = 𝑆 ↔ ((♯‘𝑊) = (♯‘𝑆) ∧ ∀𝑖 ∈ (0..^(♯‘𝑊))(𝑊𝑖) = (𝑆𝑖))))
213adant3 1145 . 2 ((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) → (𝑊 = 𝑆 ↔ ((♯‘𝑊) = (♯‘𝑆) ∧ ∀𝑖 ∈ (0..^(♯‘𝑊))(𝑊𝑖) = (𝑆𝑖))))
3 elfzofz 13681 . . . . . . . . 9 (𝐼 ∈ (0..^(♯‘𝑊)) → 𝐼 ∈ (0...(♯‘𝑊)))
4 fzosplit 13698 . . . . . . . . 9 (𝐼 ∈ (0...(♯‘𝑊)) → (0..^(♯‘𝑊)) = ((0..^𝐼) ∪ (𝐼..^(♯‘𝑊))))
53, 4syl 17 . . . . . . . 8 (𝐼 ∈ (0..^(♯‘𝑊)) → (0..^(♯‘𝑊)) = ((0..^𝐼) ∪ (𝐼..^(♯‘𝑊))))
653ad2ant3 1148 . . . . . . 7 ((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) → (0..^(♯‘𝑊)) = ((0..^𝐼) ∪ (𝐼..^(♯‘𝑊))))
76adantr 484 . . . . . 6 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → (0..^(♯‘𝑊)) = ((0..^𝐼) ∪ (𝐼..^(♯‘𝑊))))
87raleqdv 3320 . . . . 5 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → (∀𝑖 ∈ (0..^(♯‘𝑊))(𝑊𝑖) = (𝑆𝑖) ↔ ∀𝑖 ∈ ((0..^𝐼) ∪ (𝐼..^(♯‘𝑊)))(𝑊𝑖) = (𝑆𝑖)))
9 ralunb 4149 . . . . 5 (∀𝑖 ∈ ((0..^𝐼) ∪ (𝐼..^(♯‘𝑊)))(𝑊𝑖) = (𝑆𝑖) ↔ (∀𝑖 ∈ (0..^𝐼)(𝑊𝑖) = (𝑆𝑖) ∧ ∀𝑖 ∈ (𝐼..^(♯‘𝑊))(𝑊𝑖) = (𝑆𝑖)))
108, 9bitrdi 289 . . . 4 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → (∀𝑖 ∈ (0..^(♯‘𝑊))(𝑊𝑖) = (𝑆𝑖) ↔ (∀𝑖 ∈ (0..^𝐼)(𝑊𝑖) = (𝑆𝑖) ∧ ∀𝑖 ∈ (𝐼..^(♯‘𝑊))(𝑊𝑖) = (𝑆𝑖))))
11 eqidd 2763 . . . . . 6 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → 𝐼 = 𝐼)
12 3simpa 1161 . . . . . . . 8 ((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) → (𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉))
1312adantr 484 . . . . . . 7 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → (𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉))
14 elfzonn0 13713 . . . . . . . . . 10 (𝐼 ∈ (0..^(♯‘𝑊)) → 𝐼 ∈ ℕ0)
1514, 14jca 519 . . . . . . . . 9 (𝐼 ∈ (0..^(♯‘𝑊)) → (𝐼 ∈ ℕ0𝐼 ∈ ℕ0))
16153ad2ant3 1148 . . . . . . . 8 ((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) → (𝐼 ∈ ℕ0𝐼 ∈ ℕ0))
1716adantr 484 . . . . . . 7 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → (𝐼 ∈ ℕ0𝐼 ∈ ℕ0))
18 elfzo0le 13709 . . . . . . . . 9 (𝐼 ∈ (0..^(♯‘𝑊)) → 𝐼 ≤ (♯‘𝑊))
19183ad2ant3 1148 . . . . . . . 8 ((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) → 𝐼 ≤ (♯‘𝑊))
2019adantr 484 . . . . . . 7 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → 𝐼 ≤ (♯‘𝑊))
21 breq2 5104 . . . . . . . . 9 ((♯‘𝑊) = (♯‘𝑆) → (𝐼 ≤ (♯‘𝑊) ↔ 𝐼 ≤ (♯‘𝑆)))
2221adantl 485 . . . . . . . 8 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → (𝐼 ≤ (♯‘𝑊) ↔ 𝐼 ≤ (♯‘𝑆)))
2320, 22mpbid 234 . . . . . . 7 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → 𝐼 ≤ (♯‘𝑆))
24 pfxeq 14709 . . . . . . 7 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉) ∧ (𝐼 ∈ ℕ0𝐼 ∈ ℕ0) ∧ (𝐼 ≤ (♯‘𝑊) ∧ 𝐼 ≤ (♯‘𝑆))) → ((𝑊 prefix 𝐼) = (𝑆 prefix 𝐼) ↔ (𝐼 = 𝐼 ∧ ∀𝑖 ∈ (0..^𝐼)(𝑊𝑖) = (𝑆𝑖))))
2513, 17, 20, 23, 24syl112anc 1393 . . . . . 6 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → ((𝑊 prefix 𝐼) = (𝑆 prefix 𝐼) ↔ (𝐼 = 𝐼 ∧ ∀𝑖 ∈ (0..^𝐼)(𝑊𝑖) = (𝑆𝑖))))
2611, 25mpbirand 717 . . . . 5 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → ((𝑊 prefix 𝐼) = (𝑆 prefix 𝐼) ↔ ∀𝑖 ∈ (0..^𝐼)(𝑊𝑖) = (𝑆𝑖)))
27 lencl 14546 . . . . . . . . 9 (𝑊 ∈ Word 𝑉 → (♯‘𝑊) ∈ ℕ0)
2827, 14anim12ci 623 . . . . . . . 8 ((𝑊 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) → (𝐼 ∈ ℕ0 ∧ (♯‘𝑊) ∈ ℕ0))
29283adant2 1144 . . . . . . 7 ((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) → (𝐼 ∈ ℕ0 ∧ (♯‘𝑊) ∈ ℕ0))
3029adantr 484 . . . . . 6 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → (𝐼 ∈ ℕ0 ∧ (♯‘𝑊) ∈ ℕ0))
3127nn0red 12543 . . . . . . . . . 10 (𝑊 ∈ Word 𝑉 → (♯‘𝑊) ∈ ℝ)
3231leidd 11753 . . . . . . . . 9 (𝑊 ∈ Word 𝑉 → (♯‘𝑊) ≤ (♯‘𝑊))
3332adantr 484 . . . . . . . 8 ((𝑊 ∈ Word 𝑉 ∧ (♯‘𝑊) = (♯‘𝑆)) → (♯‘𝑊) ≤ (♯‘𝑊))
34 eqle 11285 . . . . . . . . 9 (((♯‘𝑊) ∈ ℝ ∧ (♯‘𝑊) = (♯‘𝑆)) → (♯‘𝑊) ≤ (♯‘𝑆))
3531, 34sylan 589 . . . . . . . 8 ((𝑊 ∈ Word 𝑉 ∧ (♯‘𝑊) = (♯‘𝑆)) → (♯‘𝑊) ≤ (♯‘𝑆))
3633, 35jca 519 . . . . . . 7 ((𝑊 ∈ Word 𝑉 ∧ (♯‘𝑊) = (♯‘𝑆)) → ((♯‘𝑊) ≤ (♯‘𝑊) ∧ (♯‘𝑊) ≤ (♯‘𝑆)))
37363ad2antl1 1199 . . . . . 6 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → ((♯‘𝑊) ≤ (♯‘𝑊) ∧ (♯‘𝑊) ≤ (♯‘𝑆)))
38 swrdspsleq 14679 . . . . . 6 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉) ∧ (𝐼 ∈ ℕ0 ∧ (♯‘𝑊) ∈ ℕ0) ∧ ((♯‘𝑊) ≤ (♯‘𝑊) ∧ (♯‘𝑊) ≤ (♯‘𝑆))) → ((𝑊 substr ⟨𝐼, (♯‘𝑊)⟩) = (𝑆 substr ⟨𝐼, (♯‘𝑊)⟩) ↔ ∀𝑖 ∈ (𝐼..^(♯‘𝑊))(𝑊𝑖) = (𝑆𝑖)))
3913, 30, 37, 38syl3anc 1390 . . . . 5 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → ((𝑊 substr ⟨𝐼, (♯‘𝑊)⟩) = (𝑆 substr ⟨𝐼, (♯‘𝑊)⟩) ↔ ∀𝑖 ∈ (𝐼..^(♯‘𝑊))(𝑊𝑖) = (𝑆𝑖)))
4026, 39anbi12d 641 . . . 4 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → (((𝑊 prefix 𝐼) = (𝑆 prefix 𝐼) ∧ (𝑊 substr ⟨𝐼, (♯‘𝑊)⟩) = (𝑆 substr ⟨𝐼, (♯‘𝑊)⟩)) ↔ (∀𝑖 ∈ (0..^𝐼)(𝑊𝑖) = (𝑆𝑖) ∧ ∀𝑖 ∈ (𝐼..^(♯‘𝑊))(𝑊𝑖) = (𝑆𝑖))))
4110, 40bitr4d 284 . . 3 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → (∀𝑖 ∈ (0..^(♯‘𝑊))(𝑊𝑖) = (𝑆𝑖) ↔ ((𝑊 prefix 𝐼) = (𝑆 prefix 𝐼) ∧ (𝑊 substr ⟨𝐼, (♯‘𝑊)⟩) = (𝑆 substr ⟨𝐼, (♯‘𝑊)⟩))))
4241pm5.32da 587 . 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 399  w3a 1098   = wceq 1560  wcel 2142  wral 3076  cun 3902  cop 4588   class class class wbr 5100  cfv 6521  (class class class)co 7396  cr 11072  0cc0 11073  cle 11217  0cn0 12481  ...cfz 13512  ..^cfzo 13659  chash 14343  Word cword 14526   substr csubstr 14654   prefix cpfx 14684
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1815  ax-4 1829  ax-5 1930  ax-6 1987  ax-7 2028  ax-8 2144  ax-9 2152  ax-10 2175  ax-11 2191  ax-12 2212  ax-ext 2734  ax-rep 5227  ax-sep 5246  ax-nul 5256  ax-pow 5322  ax-pr 5390  ax-un 7718  ax-cnex 11129  ax-resscn 11130  ax-1cn 11131  ax-icn 11132  ax-addcl 11133  ax-addrcl 11134  ax-mulcl 11135  ax-mulrcl 11136  ax-mulcom 11137  ax-addass 11138  ax-mulass 11139  ax-distr 11140  ax-i2m1 11141  ax-1ne0 11142  ax-1rid 11143  ax-rnegex 11144  ax-rrecex 11145  ax-cnre 11146  ax-pre-lttri 11147  ax-pre-lttrn 11148  ax-pre-ltadd 11149  ax-pre-mulgt0 11150
This theorem depends on definitions:  df-bi 209  df-an 400  df-or 859  df-3or 1099  df-3an 1100  df-tru 1563  df-fal 1573  df-ex 1800  df-nf 1804  df-sb 2091  df-mo 2566  df-eu 2596  df-clab 2741  df-cleq 2754  df-clel 2837  df-nfc 2911  df-ne 2958  df-nel 3062  df-ral 3077  df-rex 3087  df-reu 3368  df-rab 3415  df-v 3456  df-sbc 3745  df-csb 3853  df-dif 3907  df-un 3909  df-in 3911  df-ss 3921  df-pss 3924  df-nul 4286  df-if 4481  df-pw 4557  df-sn 4583  df-pr 4585  df-op 4589  df-uni 4866  df-int 4906  df-iun 4951  df-br 5101  df-opab 5163  df-mpt 5182  df-tr 5208  df-id 5542  df-eprel 5547  df-po 5555  df-so 5556  df-fr 5600  df-we 5602  df-xp 5653  df-rel 5654  df-cnv 5655  df-co 5656  df-dm 5657  df-rn 5658  df-res 5659  df-ima 5660  df-pred 6288  df-ord 6349  df-on 6350  df-lim 6351  df-suc 6352  df-iota 6477  df-fun 6523  df-fn 6524  df-f 6525  df-f1 6526  df-fo 6527  df-f1o 6528  df-fv 6529  df-riota 7353  df-ov 7399  df-oprab 7400  df-mpo 7401  df-om 7847  df-1st 7970  df-2nd 7971  df-frecs 8262  df-wrecs 8293  df-recs 8342  df-rdg 8381  df-1o 8437  df-er 8678  df-en 8928  df-dom 8929  df-sdom 8930  df-fin 8931  df-card 9897  df-pnf 11218  df-mnf 11219  df-xr 11220  df-ltxr 11221  df-le 11222  df-sub 11416  df-neg 11417  df-nn 12211  df-n0 12482  df-z 12569  df-uz 12840  df-fz 13513  df-fzo 13660  df-hash 14344  df-word 14527  df-substr 14655  df-pfx 14685
This theorem is referenced by:  pfxsuff1eqwrdeq  14712  2swrd2eqwrdeq  14966
  Copyright terms: Public domain W3C validator