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

Theorem cshwlen 13396
Description: The length of a cyclically shifted word is the same as the length of the original word. (Contributed by AV, 16-May-2018.) (Revised by AV, 20-May-2018.) (Revised by AV, 27-Oct-2018.)
Assertion
Ref Expression
cshwlen ((𝑊 ∈ Word 𝑉𝑁 ∈ ℤ) → (#‘(𝑊 cyclShift 𝑁)) = (#‘𝑊))

Proof of Theorem cshwlen
StepHypRef Expression
1 oveq1 6556 . . . . 5 (𝑊 = ∅ → (𝑊 cyclShift 𝑁) = (∅ cyclShift 𝑁))
2 0csh0 13390 . . . . . 6 (∅ cyclShift 𝑁) = ∅
32a1i 11 . . . . 5 (𝑊 = ∅ → (∅ cyclShift 𝑁) = ∅)
4 eqcom 2617 . . . . . 6 (𝑊 = ∅ ↔ ∅ = 𝑊)
54biimpi 205 . . . . 5 (𝑊 = ∅ → ∅ = 𝑊)
61, 3, 53eqtrd 2648 . . . 4 (𝑊 = ∅ → (𝑊 cyclShift 𝑁) = 𝑊)
76fveq2d 6107 . . 3 (𝑊 = ∅ → (#‘(𝑊 cyclShift 𝑁)) = (#‘𝑊))
87a1d 25 . 2 (𝑊 = ∅ → ((𝑊 ∈ Word 𝑉𝑁 ∈ ℤ) → (#‘(𝑊 cyclShift 𝑁)) = (#‘𝑊)))
9 cshword 13388 . . . . . 6 ((𝑊 ∈ Word 𝑉𝑁 ∈ ℤ) → (𝑊 cyclShift 𝑁) = ((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ++ (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩)))
109fveq2d 6107 . . . . 5 ((𝑊 ∈ Word 𝑉𝑁 ∈ ℤ) → (#‘(𝑊 cyclShift 𝑁)) = (#‘((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ++ (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))))
1110adantr 480 . . . 4 (((𝑊 ∈ Word 𝑉𝑁 ∈ ℤ) ∧ 𝑊 ≠ ∅) → (#‘(𝑊 cyclShift 𝑁)) = (#‘((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ++ (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))))
12 swrdcl 13271 . . . . . . 7 (𝑊 ∈ Word 𝑉 → (𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ∈ Word 𝑉)
13 swrdcl 13271 . . . . . . 7 (𝑊 ∈ Word 𝑉 → (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩) ∈ Word 𝑉)
14 ccatlen 13213 . . . . . . 7 (((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ∈ Word 𝑉 ∧ (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩) ∈ Word 𝑉) → (#‘((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ++ (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))) = ((#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)) + (#‘(𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))))
1512, 13, 14syl2anc 691 . . . . . 6 (𝑊 ∈ Word 𝑉 → (#‘((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ++ (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))) = ((#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)) + (#‘(𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))))
1615adantr 480 . . . . 5 ((𝑊 ∈ Word 𝑉𝑁 ∈ ℤ) → (#‘((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ++ (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))) = ((#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)) + (#‘(𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))))
1716adantr 480 . . . 4 (((𝑊 ∈ Word 𝑉𝑁 ∈ ℤ) ∧ 𝑊 ≠ ∅) → (#‘((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ++ (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))) = ((#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)) + (#‘(𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))))
18 lennncl 13180 . . . . . . . . . 10 ((𝑊 ∈ Word 𝑉𝑊 ≠ ∅) → (#‘𝑊) ∈ ℕ)
19 pm3.21 463 . . . . . . . . . . 11 (((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ) → (𝑊 ∈ Word 𝑉 → (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ))))
2019ex 449 . . . . . . . . . 10 ((#‘𝑊) ∈ ℕ → (𝑁 ∈ ℤ → (𝑊 ∈ Word 𝑉 → (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ)))))
2118, 20syl 17 . . . . . . . . 9 ((𝑊 ∈ Word 𝑉𝑊 ≠ ∅) → (𝑁 ∈ ℤ → (𝑊 ∈ Word 𝑉 → (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ)))))
2221ex 449 . . . . . . . 8 (𝑊 ∈ Word 𝑉 → (𝑊 ≠ ∅ → (𝑁 ∈ ℤ → (𝑊 ∈ Word 𝑉 → (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ))))))
2322com24 93 . . . . . . 7 (𝑊 ∈ Word 𝑉 → (𝑊 ∈ Word 𝑉 → (𝑁 ∈ ℤ → (𝑊 ≠ ∅ → (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ))))))
2423pm2.43i 50 . . . . . 6 (𝑊 ∈ Word 𝑉 → (𝑁 ∈ ℤ → (𝑊 ≠ ∅ → (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ)))))
2524imp31 447 . . . . 5 (((𝑊 ∈ Word 𝑉𝑁 ∈ ℤ) ∧ 𝑊 ≠ ∅) → (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ)))
26 simpl 472 . . . . . . . 8 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ)) → 𝑊 ∈ Word 𝑉)
27 pm3.22 464 . . . . . . . . . 10 (((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ) → (𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ))
2827adantl 481 . . . . . . . . 9 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ)) → (𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ))
29 zmodfzp1 12556 . . . . . . . . 9 ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → (𝑁 mod (#‘𝑊)) ∈ (0...(#‘𝑊)))
3028, 29syl 17 . . . . . . . 8 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ)) → (𝑁 mod (#‘𝑊)) ∈ (0...(#‘𝑊)))
31 lencl 13179 . . . . . . . . . 10 (𝑊 ∈ Word 𝑉 → (#‘𝑊) ∈ ℕ0)
32 nn0fz0 12306 . . . . . . . . . 10 ((#‘𝑊) ∈ ℕ0 ↔ (#‘𝑊) ∈ (0...(#‘𝑊)))
3331, 32sylib 207 . . . . . . . . 9 (𝑊 ∈ Word 𝑉 → (#‘𝑊) ∈ (0...(#‘𝑊)))
3433adantr 480 . . . . . . . 8 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ)) → (#‘𝑊) ∈ (0...(#‘𝑊)))
35 swrdlen 13275 . . . . . . . 8 ((𝑊 ∈ Word 𝑉 ∧ (𝑁 mod (#‘𝑊)) ∈ (0...(#‘𝑊)) ∧ (#‘𝑊) ∈ (0...(#‘𝑊))) → (#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)) = ((#‘𝑊) − (𝑁 mod (#‘𝑊))))
3626, 30, 34, 35syl3anc 1318 . . . . . . 7 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ)) → (#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)) = ((#‘𝑊) − (𝑁 mod (#‘𝑊))))
37 zmodcl 12552 . . . . . . . . . . 11 ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → (𝑁 mod (#‘𝑊)) ∈ ℕ0)
3837ancoms 468 . . . . . . . . . 10 (((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ) → (𝑁 mod (#‘𝑊)) ∈ ℕ0)
3938adantl 481 . . . . . . . . 9 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ)) → (𝑁 mod (#‘𝑊)) ∈ ℕ0)
40 0elfz 12305 . . . . . . . . 9 ((𝑁 mod (#‘𝑊)) ∈ ℕ0 → 0 ∈ (0...(𝑁 mod (#‘𝑊))))
4139, 40syl 17 . . . . . . . 8 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ)) → 0 ∈ (0...(𝑁 mod (#‘𝑊))))
42 swrdlen 13275 . . . . . . . 8 ((𝑊 ∈ Word 𝑉 ∧ 0 ∈ (0...(𝑁 mod (#‘𝑊))) ∧ (𝑁 mod (#‘𝑊)) ∈ (0...(#‘𝑊))) → (#‘(𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩)) = ((𝑁 mod (#‘𝑊)) − 0))
4326, 41, 30, 42syl3anc 1318 . . . . . . 7 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ)) → (#‘(𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩)) = ((𝑁 mod (#‘𝑊)) − 0))
4436, 43oveq12d 6567 . . . . . 6 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ)) → ((#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)) + (#‘(𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))) = (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + ((𝑁 mod (#‘𝑊)) − 0)))
4537nn0cnd 11230 . . . . . . . . . 10 ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → (𝑁 mod (#‘𝑊)) ∈ ℂ)
4645ancoms 468 . . . . . . . . 9 (((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ) → (𝑁 mod (#‘𝑊)) ∈ ℂ)
4746adantl 481 . . . . . . . 8 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ)) → (𝑁 mod (#‘𝑊)) ∈ ℂ)
4847subid1d 10260 . . . . . . 7 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ)) → ((𝑁 mod (#‘𝑊)) − 0) = (𝑁 mod (#‘𝑊)))
4948oveq2d 6565 . . . . . 6 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ)) → (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + ((𝑁 mod (#‘𝑊)) − 0)) = (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊))))
5031nn0cnd 11230 . . . . . . 7 (𝑊 ∈ Word 𝑉 → (#‘𝑊) ∈ ℂ)
51 npcan 10169 . . . . . . 7 (((#‘𝑊) ∈ ℂ ∧ (𝑁 mod (#‘𝑊)) ∈ ℂ) → (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊))) = (#‘𝑊))
5250, 46, 51syl2an 493 . . . . . 6 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ)) → (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊))) = (#‘𝑊))
5344, 49, 523eqtrd 2648 . . . . 5 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ)) → ((#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)) + (#‘(𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))) = (#‘𝑊))
5425, 53syl 17 . . . 4 (((𝑊 ∈ Word 𝑉𝑁 ∈ ℤ) ∧ 𝑊 ≠ ∅) → ((#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)) + (#‘(𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))) = (#‘𝑊))
5511, 17, 543eqtrd 2648 . . 3 (((𝑊 ∈ Word 𝑉𝑁 ∈ ℤ) ∧ 𝑊 ≠ ∅) → (#‘(𝑊 cyclShift 𝑁)) = (#‘𝑊))
5655expcom 450 . 2 (𝑊 ≠ ∅ → ((𝑊 ∈ Word 𝑉𝑁 ∈ ℤ) → (#‘(𝑊 cyclShift 𝑁)) = (#‘𝑊)))
578, 56pm2.61ine 2865 1 ((𝑊 ∈ Word 𝑉𝑁 ∈ ℤ) → (#‘(𝑊 cyclShift 𝑁)) = (#‘𝑊))
Colors of variables: wff setvar class
Syntax hints:  wi 4  wa 383   = wceq 1475  wcel 1977  wne 2780  c0 3874  cop 4131  cfv 5804  (class class class)co 6549  cc 9813  0cc0 9815   + caddc 9818  cmin 10145  cn 10897  0cn0 11169  cz 11254  ...cfz 12197   mod cmo 12530  #chash 12979  Word cword 13146   ++ cconcat 13148   substr csubstr 13150   cyclShift ccsh 13385
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1713  ax-4 1728  ax-5 1827  ax-6 1875  ax-7 1922  ax-8 1979  ax-9 1986  ax-10 2006  ax-11 2021  ax-12 2034  ax-13 2234  ax-ext 2590  ax-rep 4699  ax-sep 4709  ax-nul 4717  ax-pow 4769  ax-pr 4833  ax-un 6847  ax-cnex 9871  ax-resscn 9872  ax-1cn 9873  ax-icn 9874  ax-addcl 9875  ax-addrcl 9876  ax-mulcl 9877  ax-mulrcl 9878  ax-mulcom 9879  ax-addass 9880  ax-mulass 9881  ax-distr 9882  ax-i2m1 9883  ax-1ne0 9884  ax-1rid 9885  ax-rnegex 9886  ax-rrecex 9887  ax-cnre 9888  ax-pre-lttri 9889  ax-pre-lttrn 9890  ax-pre-ltadd 9891  ax-pre-mulgt0 9892  ax-pre-sup 9893
This theorem depends on definitions:  df-bi 196  df-or 384  df-an 385  df-3or 1032  df-3an 1033  df-tru 1478  df-ex 1696  df-nf 1701  df-sb 1868  df-eu 2462  df-mo 2463  df-clab 2597  df-cleq 2603  df-clel 2606  df-nfc 2740  df-ne 2782  df-nel 2783  df-ral 2901  df-rex 2902  df-reu 2903  df-rmo 2904  df-rab 2905  df-v 3175  df-sbc 3403  df-csb 3500  df-dif 3543  df-un 3545  df-in 3547  df-ss 3554  df-pss 3556  df-nul 3875  df-if 4037  df-pw 4110  df-sn 4126  df-pr 4128  df-tp 4130  df-op 4132  df-uni 4373  df-int 4411  df-iun 4457  df-br 4584  df-opab 4644  df-mpt 4645  df-tr 4681  df-eprel 4949  df-id 4953  df-po 4959  df-so 4960  df-fr 4997  df-we 4999  df-xp 5044  df-rel 5045  df-cnv 5046  df-co 5047  df-dm 5048  df-rn 5049  df-res 5050  df-ima 5051  df-pred 5597  df-ord 5643  df-on 5644  df-lim 5645  df-suc 5646  df-iota 5768  df-fun 5806  df-fn 5807  df-f 5808  df-f1 5809  df-fo 5810  df-f1o 5811  df-fv 5812  df-riota 6511  df-ov 6552  df-oprab 6553  df-mpt2 6554  df-om 6958  df-1st 7059  df-2nd 7060  df-wrecs 7294  df-recs 7355  df-rdg 7393  df-1o 7447  df-oadd 7451  df-er 7629  df-en 7842  df-dom 7843  df-sdom 7844  df-fin 7845  df-sup 8231  df-inf 8232  df-card 8648  df-pnf 9955  df-mnf 9956  df-xr 9957  df-ltxr 9958  df-le 9959  df-sub 10147  df-neg 10148  df-div 10564  df-nn 10898  df-n0 11170  df-z 11255  df-uz 11564  df-rp 11709  df-fz 12198  df-fzo 12335  df-fl 12455  df-mod 12531  df-hash 12980  df-word 13154  df-concat 13156  df-substr 13158  df-csh 13386
This theorem is referenced by:  cshwf  13397  2cshw  13410  lswcshw  13412  cshwleneq  13414  clwwisshclwwlem  26334  clwwnisshclwwn  26337  erclwwlkeqlen  26340  erclwwlkneqlen  26352  crctcshlem2  41021  clwwisshclwwslem  41234  clwwisshclwws  41235  clwwnisshclwwsn  41237  erclwwlkseqlen  41240  erclwwlksneqlen  41252  eucrct2eupth  41413
  Copyright terms: Public domain W3C validator