Users' Mathboxes Mathbox for Alexander van der Vekens < Previous   Next >
Nearby theorems
Mirrors  >  Home  >  MPE Home  >  Th. List  >   Mathboxes  >  pfxsuffeqwrdeq Structured version   Visualization version   GIF version

Theorem pfxsuffeqwrdeq 41935
Description: Two words are equal if and only if they have the same prefix and the same suffix. Could replace 2swrdeqwrdeq 13674. (Contributed 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 13554 . . 3 ((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉) → (𝑊 = 𝑆 ↔ ((♯‘𝑊) = (♯‘𝑆) ∧ ∀𝑖 ∈ (0..^(♯‘𝑊))(𝑊𝑖) = (𝑆𝑖))))
213adant3 1127 . 2 ((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) → (𝑊 = 𝑆 ↔ ((♯‘𝑊) = (♯‘𝑆) ∧ ∀𝑖 ∈ (0..^(♯‘𝑊))(𝑊𝑖) = (𝑆𝑖))))
3 elfzofz 12700 . . . . . . . . 9 (𝐼 ∈ (0..^(♯‘𝑊)) → 𝐼 ∈ (0...(♯‘𝑊)))
4 fzosplit 12716 . . . . . . . . 9 (𝐼 ∈ (0...(♯‘𝑊)) → (0..^(♯‘𝑊)) = ((0..^𝐼) ∪ (𝐼..^(♯‘𝑊))))
53, 4syl 17 . . . . . . . 8 (𝐼 ∈ (0..^(♯‘𝑊)) → (0..^(♯‘𝑊)) = ((0..^𝐼) ∪ (𝐼..^(♯‘𝑊))))
653ad2ant3 1130 . . . . . . 7 ((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) → (0..^(♯‘𝑊)) = ((0..^𝐼) ∪ (𝐼..^(♯‘𝑊))))
76adantr 472 . . . . . 6 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → (0..^(♯‘𝑊)) = ((0..^𝐼) ∪ (𝐼..^(♯‘𝑊))))
87raleqdv 3284 . . . . 5 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → (∀𝑖 ∈ (0..^(♯‘𝑊))(𝑊𝑖) = (𝑆𝑖) ↔ ∀𝑖 ∈ ((0..^𝐼) ∪ (𝐼..^(♯‘𝑊)))(𝑊𝑖) = (𝑆𝑖)))
9 ralunb 3938 . . . . 5 (∀𝑖 ∈ ((0..^𝐼) ∪ (𝐼..^(♯‘𝑊)))(𝑊𝑖) = (𝑆𝑖) ↔ (∀𝑖 ∈ (0..^𝐼)(𝑊𝑖) = (𝑆𝑖) ∧ ∀𝑖 ∈ (𝐼..^(♯‘𝑊))(𝑊𝑖) = (𝑆𝑖)))
108, 9syl6bb 276 . . . 4 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → (∀𝑖 ∈ (0..^(♯‘𝑊))(𝑊𝑖) = (𝑆𝑖) ↔ (∀𝑖 ∈ (0..^𝐼)(𝑊𝑖) = (𝑆𝑖) ∧ ∀𝑖 ∈ (𝐼..^(♯‘𝑊))(𝑊𝑖) = (𝑆𝑖))))
11 eqidd 2762 . . . . . . 7 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → 𝐼 = 𝐼)
1211biantrurd 530 . . . . . 6 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → (∀𝑖 ∈ (0..^𝐼)(𝑊𝑖) = (𝑆𝑖) ↔ (𝐼 = 𝐼 ∧ ∀𝑖 ∈ (0..^𝐼)(𝑊𝑖) = (𝑆𝑖))))
13 3simpa 1143 . . . . . . . 8 ((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) → (𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉))
1413adantr 472 . . . . . . 7 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → (𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉))
15 elfzonn0 12728 . . . . . . . . . 10 (𝐼 ∈ (0..^(♯‘𝑊)) → 𝐼 ∈ ℕ0)
1615, 15jca 555 . . . . . . . . 9 (𝐼 ∈ (0..^(♯‘𝑊)) → (𝐼 ∈ ℕ0𝐼 ∈ ℕ0))
17163ad2ant3 1130 . . . . . . . 8 ((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) → (𝐼 ∈ ℕ0𝐼 ∈ ℕ0))
1817adantr 472 . . . . . . 7 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → (𝐼 ∈ ℕ0𝐼 ∈ ℕ0))
19 elfzo0le 12727 . . . . . . . . 9 (𝐼 ∈ (0..^(♯‘𝑊)) → 𝐼 ≤ (♯‘𝑊))
20193ad2ant3 1130 . . . . . . . 8 ((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) → 𝐼 ≤ (♯‘𝑊))
2120adantr 472 . . . . . . 7 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → 𝐼 ≤ (♯‘𝑊))
22 breq2 4809 . . . . . . . . . 10 ((♯‘𝑆) = (♯‘𝑊) → (𝐼 ≤ (♯‘𝑆) ↔ 𝐼 ≤ (♯‘𝑊)))
2322eqcoms 2769 . . . . . . . . 9 ((♯‘𝑊) = (♯‘𝑆) → (𝐼 ≤ (♯‘𝑆) ↔ 𝐼 ≤ (♯‘𝑊)))
2423adantl 473 . . . . . . . 8 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → (𝐼 ≤ (♯‘𝑆) ↔ 𝐼 ≤ (♯‘𝑊)))
2521, 24mpbird 247 . . . . . . 7 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → 𝐼 ≤ (♯‘𝑆))
26 pfxeq 41933 . . . . . . 7 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉) ∧ (𝐼 ∈ ℕ0𝐼 ∈ ℕ0) ∧ (𝐼 ≤ (♯‘𝑊) ∧ 𝐼 ≤ (♯‘𝑆))) → ((𝑊 prefix 𝐼) = (𝑆 prefix 𝐼) ↔ (𝐼 = 𝐼 ∧ ∀𝑖 ∈ (0..^𝐼)(𝑊𝑖) = (𝑆𝑖))))
2714, 18, 21, 25, 26syl112anc 1481 . . . . . 6 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → ((𝑊 prefix 𝐼) = (𝑆 prefix 𝐼) ↔ (𝐼 = 𝐼 ∧ ∀𝑖 ∈ (0..^𝐼)(𝑊𝑖) = (𝑆𝑖))))
2812, 27bitr4d 271 . . . . 5 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → (∀𝑖 ∈ (0..^𝐼)(𝑊𝑖) = (𝑆𝑖) ↔ (𝑊 prefix 𝐼) = (𝑆 prefix 𝐼)))
29 lencl 13531 . . . . . . . . . 10 (𝑊 ∈ Word 𝑉 → (♯‘𝑊) ∈ ℕ0)
3029, 15anim12i 591 . . . . . . . . 9 ((𝑊 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) → ((♯‘𝑊) ∈ ℕ0𝐼 ∈ ℕ0))
31303adant2 1126 . . . . . . . 8 ((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) → ((♯‘𝑊) ∈ ℕ0𝐼 ∈ ℕ0))
3231ancomd 466 . . . . . . 7 ((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) → (𝐼 ∈ ℕ0 ∧ (♯‘𝑊) ∈ ℕ0))
3332adantr 472 . . . . . 6 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → (𝐼 ∈ ℕ0 ∧ (♯‘𝑊) ∈ ℕ0))
3429nn0red 11565 . . . . . . . . 9 (𝑊 ∈ Word 𝑉 → (♯‘𝑊) ∈ ℝ)
3534leidd 10807 . . . . . . . 8 (𝑊 ∈ Word 𝑉 → (♯‘𝑊) ≤ (♯‘𝑊))
36353ad2ant1 1128 . . . . . . 7 ((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) → (♯‘𝑊) ≤ (♯‘𝑊))
3736adantr 472 . . . . . 6 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → (♯‘𝑊) ≤ (♯‘𝑊))
38343ad2ant1 1128 . . . . . . 7 ((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) → (♯‘𝑊) ∈ ℝ)
39 eqle 10352 . . . . . . 7 (((♯‘𝑊) ∈ ℝ ∧ (♯‘𝑊) = (♯‘𝑆)) → (♯‘𝑊) ≤ (♯‘𝑆))
4038, 39sylan 489 . . . . . 6 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → (♯‘𝑊) ≤ (♯‘𝑆))
41 swrdspsleq 13670 . . . . . . 7 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉) ∧ (𝐼 ∈ ℕ0 ∧ (♯‘𝑊) ∈ ℕ0) ∧ ((♯‘𝑊) ≤ (♯‘𝑊) ∧ (♯‘𝑊) ≤ (♯‘𝑆))) → ((𝑊 substr ⟨𝐼, (♯‘𝑊)⟩) = (𝑆 substr ⟨𝐼, (♯‘𝑊)⟩) ↔ ∀𝑖 ∈ (𝐼..^(♯‘𝑊))(𝑊𝑖) = (𝑆𝑖)))
4241bicomd 213 . . . . . 6 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉) ∧ (𝐼 ∈ ℕ0 ∧ (♯‘𝑊) ∈ ℕ0) ∧ ((♯‘𝑊) ≤ (♯‘𝑊) ∧ (♯‘𝑊) ≤ (♯‘𝑆))) → (∀𝑖 ∈ (𝐼..^(♯‘𝑊))(𝑊𝑖) = (𝑆𝑖) ↔ (𝑊 substr ⟨𝐼, (♯‘𝑊)⟩) = (𝑆 substr ⟨𝐼, (♯‘𝑊)⟩)))
4314, 33, 37, 40, 42syl112anc 1481 . . . . 5 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → (∀𝑖 ∈ (𝐼..^(♯‘𝑊))(𝑊𝑖) = (𝑆𝑖) ↔ (𝑊 substr ⟨𝐼, (♯‘𝑊)⟩) = (𝑆 substr ⟨𝐼, (♯‘𝑊)⟩)))
4428, 43anbi12d 749 . . . 4 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → ((∀𝑖 ∈ (0..^𝐼)(𝑊𝑖) = (𝑆𝑖) ∧ ∀𝑖 ∈ (𝐼..^(♯‘𝑊))(𝑊𝑖) = (𝑆𝑖)) ↔ ((𝑊 prefix 𝐼) = (𝑆 prefix 𝐼) ∧ (𝑊 substr ⟨𝐼, (♯‘𝑊)⟩) = (𝑆 substr ⟨𝐼, (♯‘𝑊)⟩))))
4510, 44bitrd 268 . . 3 (((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) ∧ (♯‘𝑊) = (♯‘𝑆)) → (∀𝑖 ∈ (0..^(♯‘𝑊))(𝑊𝑖) = (𝑆𝑖) ↔ ((𝑊 prefix 𝐼) = (𝑆 prefix 𝐼) ∧ (𝑊 substr ⟨𝐼, (♯‘𝑊)⟩) = (𝑆 substr ⟨𝐼, (♯‘𝑊)⟩))))
4645pm5.32da 676 . 2 ((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) → (((♯‘𝑊) = (♯‘𝑆) ∧ ∀𝑖 ∈ (0..^(♯‘𝑊))(𝑊𝑖) = (𝑆𝑖)) ↔ ((♯‘𝑊) = (♯‘𝑆) ∧ ((𝑊 prefix 𝐼) = (𝑆 prefix 𝐼) ∧ (𝑊 substr ⟨𝐼, (♯‘𝑊)⟩) = (𝑆 substr ⟨𝐼, (♯‘𝑊)⟩)))))
472, 46bitrd 268 1 ((𝑊 ∈ Word 𝑉𝑆 ∈ Word 𝑉𝐼 ∈ (0..^(♯‘𝑊))) → (𝑊 = 𝑆 ↔ ((♯‘𝑊) = (♯‘𝑆) ∧ ((𝑊 prefix 𝐼) = (𝑆 prefix 𝐼) ∧ (𝑊 substr ⟨𝐼, (♯‘𝑊)⟩) = (𝑆 substr ⟨𝐼, (♯‘𝑊)⟩)))))
Colors of variables: wff setvar class
Syntax hints:  wi 4  wb 196  wa 383  w3a 1072   = wceq 1632  wcel 2140  wral 3051  cun 3714  cop 4328   class class class wbr 4805  cfv 6050  (class class class)co 6815  cr 10148  0cc0 10149  cle 10288  0cn0 11505  ...cfz 12540  ..^cfzo 12680  chash 13332  Word cword 13498   substr csubstr 13502   prefix cpfx 41910
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 1989  ax-6 2055  ax-7 2091  ax-8 2142  ax-9 2149  ax-10 2169  ax-11 2184  ax-12 2197  ax-13 2392  ax-ext 2741  ax-rep 4924  ax-sep 4934  ax-nul 4942  ax-pow 4993  ax-pr 5056  ax-un 7116  ax-cnex 10205  ax-resscn 10206  ax-1cn 10207  ax-icn 10208  ax-addcl 10209  ax-addrcl 10210  ax-mulcl 10211  ax-mulrcl 10212  ax-mulcom 10213  ax-addass 10214  ax-mulass 10215  ax-distr 10216  ax-i2m1 10217  ax-1ne0 10218  ax-1rid 10219  ax-rnegex 10220  ax-rrecex 10221  ax-cnre 10222  ax-pre-lttri 10223  ax-pre-lttrn 10224  ax-pre-ltadd 10225  ax-pre-mulgt0 10226
This theorem depends on definitions:  df-bi 197  df-or 384  df-an 385  df-3or 1073  df-3an 1074  df-tru 1635  df-fal 1638  df-ex 1854  df-nf 1859  df-sb 2048  df-eu 2612  df-mo 2613  df-clab 2748  df-cleq 2754  df-clel 2757  df-nfc 2892  df-ne 2934  df-nel 3037  df-ral 3056  df-rex 3057  df-reu 3058  df-rab 3060  df-v 3343  df-sbc 3578  df-csb 3676  df-dif 3719  df-un 3721  df-in 3723  df-ss 3730  df-pss 3732  df-nul 4060  df-if 4232  df-pw 4305  df-sn 4323  df-pr 4325  df-tp 4327  df-op 4329  df-uni 4590  df-int 4629  df-iun 4675  df-br 4806  df-opab 4866  df-mpt 4883  df-tr 4906  df-id 5175  df-eprel 5180  df-po 5188  df-so 5189  df-fr 5226  df-we 5228  df-xp 5273  df-rel 5274  df-cnv 5275  df-co 5276  df-dm 5277  df-rn 5278  df-res 5279  df-ima 5280  df-pred 5842  df-ord 5888  df-on 5889  df-lim 5890  df-suc 5891  df-iota 6013  df-fun 6052  df-fn 6053  df-f 6054  df-f1 6055  df-fo 6056  df-f1o 6057  df-fv 6058  df-riota 6776  df-ov 6818  df-oprab 6819  df-mpt2 6820  df-om 7233  df-1st 7335  df-2nd 7336  df-wrecs 7578  df-recs 7639  df-rdg 7677  df-1o 7731  df-oadd 7735  df-er 7914  df-en 8125  df-dom 8126  df-sdom 8127  df-fin 8128  df-card 8976  df-pnf 10289  df-mnf 10290  df-xr 10291  df-ltxr 10292  df-le 10293  df-sub 10481  df-neg 10482  df-nn 11234  df-n0 11506  df-z 11591  df-uz 11901  df-fz 12541  df-fzo 12681  df-hash 13333  df-word 13506  df-substr 13510  df-pfx 41911
This theorem is referenced by:  pfxsuff1eqwrdeq  41936
  Copyright terms: Public domain W3C validator