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

Theorem cshwlen 13338
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 6530 . . . . 5 (𝑊 = ∅ → (𝑊 cyclShift 𝑁) = (∅ cyclShift 𝑁))
2 0csh0 13332 . . . . . 6 (∅ cyclShift 𝑁) = ∅
32a1i 11 . . . . 5 (𝑊 = ∅ → (∅ cyclShift 𝑁) = ∅)
4 eqcom 2612 . . . . . 6 (𝑊 = ∅ ↔ ∅ = 𝑊)
54biimpi 204 . . . . 5 (𝑊 = ∅ → ∅ = 𝑊)
61, 3, 53eqtrd 2643 . . . 4 (𝑊 = ∅ → (𝑊 cyclShift 𝑁) = 𝑊)
76fveq2d 6088 . . 3 (𝑊 = ∅ → (#‘(𝑊 cyclShift 𝑁)) = (#‘𝑊))
87a1d 25 . 2 (𝑊 = ∅ → ((𝑊 ∈ Word 𝑉𝑁 ∈ ℤ) → (#‘(𝑊 cyclShift 𝑁)) = (#‘𝑊)))
9 cshword 13330 . . . . . 6 ((𝑊 ∈ Word 𝑉𝑁 ∈ ℤ) → (𝑊 cyclShift 𝑁) = ((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ++ (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩)))
109fveq2d 6088 . . . . 5 ((𝑊 ∈ Word 𝑉𝑁 ∈ ℤ) → (#‘(𝑊 cyclShift 𝑁)) = (#‘((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ++ (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))))
1110adantr 479 . . . 4 (((𝑊 ∈ Word 𝑉𝑁 ∈ ℤ) ∧ 𝑊 ≠ ∅) → (#‘(𝑊 cyclShift 𝑁)) = (#‘((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ++ (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))))
12 swrdcl 13213 . . . . . . 7 (𝑊 ∈ Word 𝑉 → (𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ∈ Word 𝑉)
13 swrdcl 13213 . . . . . . 7 (𝑊 ∈ Word 𝑉 → (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩) ∈ Word 𝑉)
14 ccatlen 13155 . . . . . . 7 (((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ∈ Word 𝑉 ∧ (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩) ∈ Word 𝑉) → (#‘((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ++ (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))) = ((#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)) + (#‘(𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))))
1512, 13, 14syl2anc 690 . . . . . 6 (𝑊 ∈ Word 𝑉 → (#‘((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ++ (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))) = ((#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)) + (#‘(𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))))
1615adantr 479 . . . . 5 ((𝑊 ∈ Word 𝑉𝑁 ∈ ℤ) → (#‘((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ++ (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))) = ((#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)) + (#‘(𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))))
1716adantr 479 . . . 4 (((𝑊 ∈ Word 𝑉𝑁 ∈ ℤ) ∧ 𝑊 ≠ ∅) → (#‘((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ++ (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))) = ((#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)) + (#‘(𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))))
18 lennncl 13122 . . . . . . . . . 10 ((𝑊 ∈ Word 𝑉𝑊 ≠ ∅) → (#‘𝑊) ∈ ℕ)
19 pm3.21 462 . . . . . . . . . . 11 (((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ) → (𝑊 ∈ Word 𝑉 → (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ))))
2019ex 448 . . . . . . . . . 10 ((#‘𝑊) ∈ ℕ → (𝑁 ∈ ℤ → (𝑊 ∈ Word 𝑉 → (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ)))))
2118, 20syl 17 . . . . . . . . 9 ((𝑊 ∈ Word 𝑉𝑊 ≠ ∅) → (𝑁 ∈ ℤ → (𝑊 ∈ Word 𝑉 → (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ)))))
2221ex 448 . . . . . . . 8 (𝑊 ∈ Word 𝑉 → (𝑊 ≠ ∅ → (𝑁 ∈ ℤ → (𝑊 ∈ Word 𝑉 → (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ))))))
2322com24 92 . . . . . . 7 (𝑊 ∈ Word 𝑉 → (𝑊 ∈ Word 𝑉 → (𝑁 ∈ ℤ → (𝑊 ≠ ∅ → (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ))))))
2423pm2.43i 49 . . . . . 6 (𝑊 ∈ Word 𝑉 → (𝑁 ∈ ℤ → (𝑊 ≠ ∅ → (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ)))))
2524imp31 446 . . . . 5 (((𝑊 ∈ Word 𝑉𝑁 ∈ ℤ) ∧ 𝑊 ≠ ∅) → (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ)))
26 simpl 471 . . . . . . . 8 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ)) → 𝑊 ∈ Word 𝑉)
27 pm3.22 463 . . . . . . . . . 10 (((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ) → (𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ))
2827adantl 480 . . . . . . . . 9 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ)) → (𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ))
29 zmodfzp1 12507 . . . . . . . . 9 ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → (𝑁 mod (#‘𝑊)) ∈ (0...(#‘𝑊)))
3028, 29syl 17 . . . . . . . 8 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ)) → (𝑁 mod (#‘𝑊)) ∈ (0...(#‘𝑊)))
31 lencl 13121 . . . . . . . . . 10 (𝑊 ∈ Word 𝑉 → (#‘𝑊) ∈ ℕ0)
32 nn0fz0 12257 . . . . . . . . . 10 ((#‘𝑊) ∈ ℕ0 ↔ (#‘𝑊) ∈ (0...(#‘𝑊)))
3331, 32sylib 206 . . . . . . . . 9 (𝑊 ∈ Word 𝑉 → (#‘𝑊) ∈ (0...(#‘𝑊)))
3433adantr 479 . . . . . . . 8 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ)) → (#‘𝑊) ∈ (0...(#‘𝑊)))
35 swrdlen 13217 . . . . . . . 8 ((𝑊 ∈ Word 𝑉 ∧ (𝑁 mod (#‘𝑊)) ∈ (0...(#‘𝑊)) ∧ (#‘𝑊) ∈ (0...(#‘𝑊))) → (#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)) = ((#‘𝑊) − (𝑁 mod (#‘𝑊))))
3626, 30, 34, 35syl3anc 1317 . . . . . . 7 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ)) → (#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)) = ((#‘𝑊) − (𝑁 mod (#‘𝑊))))
37 zmodcl 12503 . . . . . . . . . . 11 ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → (𝑁 mod (#‘𝑊)) ∈ ℕ0)
3837ancoms 467 . . . . . . . . . 10 (((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ) → (𝑁 mod (#‘𝑊)) ∈ ℕ0)
3938adantl 480 . . . . . . . . 9 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ)) → (𝑁 mod (#‘𝑊)) ∈ ℕ0)
40 0elfz 12256 . . . . . . . . 9 ((𝑁 mod (#‘𝑊)) ∈ ℕ0 → 0 ∈ (0...(𝑁 mod (#‘𝑊))))
4139, 40syl 17 . . . . . . . 8 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ)) → 0 ∈ (0...(𝑁 mod (#‘𝑊))))
42 swrdlen 13217 . . . . . . . 8 ((𝑊 ∈ Word 𝑉 ∧ 0 ∈ (0...(𝑁 mod (#‘𝑊))) ∧ (𝑁 mod (#‘𝑊)) ∈ (0...(#‘𝑊))) → (#‘(𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩)) = ((𝑁 mod (#‘𝑊)) − 0))
4326, 41, 30, 42syl3anc 1317 . . . . . . 7 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ)) → (#‘(𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩)) = ((𝑁 mod (#‘𝑊)) − 0))
4436, 43oveq12d 6541 . . . . . 6 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ)) → ((#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)) + (#‘(𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))) = (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + ((𝑁 mod (#‘𝑊)) − 0)))
4537nn0cnd 11196 . . . . . . . . . 10 ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → (𝑁 mod (#‘𝑊)) ∈ ℂ)
4645ancoms 467 . . . . . . . . 9 (((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ) → (𝑁 mod (#‘𝑊)) ∈ ℂ)
4746adantl 480 . . . . . . . 8 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ)) → (𝑁 mod (#‘𝑊)) ∈ ℂ)
4847subid1d 10228 . . . . . . 7 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ)) → ((𝑁 mod (#‘𝑊)) − 0) = (𝑁 mod (#‘𝑊)))
4948oveq2d 6539 . . . . . 6 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ)) → (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + ((𝑁 mod (#‘𝑊)) − 0)) = (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊))))
5031nn0cnd 11196 . . . . . . 7 (𝑊 ∈ Word 𝑉 → (#‘𝑊) ∈ ℂ)
51 npcan 10137 . . . . . . 7 (((#‘𝑊) ∈ ℂ ∧ (𝑁 mod (#‘𝑊)) ∈ ℂ) → (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊))) = (#‘𝑊))
5250, 46, 51syl2an 492 . . . . . 6 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ)) → (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊))) = (#‘𝑊))
5344, 49, 523eqtrd 2643 . . . . 5 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ)) → ((#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)) + (#‘(𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))) = (#‘𝑊))
5425, 53syl 17 . . . 4 (((𝑊 ∈ Word 𝑉𝑁 ∈ ℤ) ∧ 𝑊 ≠ ∅) → ((#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)) + (#‘(𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))) = (#‘𝑊))
5511, 17, 543eqtrd 2643 . . 3 (((𝑊 ∈ Word 𝑉𝑁 ∈ ℤ) ∧ 𝑊 ≠ ∅) → (#‘(𝑊 cyclShift 𝑁)) = (#‘𝑊))
5655expcom 449 . 2 (𝑊 ≠ ∅ → ((𝑊 ∈ Word 𝑉𝑁 ∈ ℤ) → (#‘(𝑊 cyclShift 𝑁)) = (#‘𝑊)))
578, 56pm2.61ine 2860 1 ((𝑊 ∈ Word 𝑉𝑁 ∈ ℤ) → (#‘(𝑊 cyclShift 𝑁)) = (#‘𝑊))
Colors of variables: wff setvar class
Syntax hints:  wi 4  wa 382   = wceq 1474  wcel 1975  wne 2775  c0 3869  cop 4126  cfv 5786  (class class class)co 6523  cc 9786  0cc0 9788   + caddc 9791  cmin 10113  cn 10863  0cn0 11135  cz 11206  ...cfz 12148   mod cmo 12481  #chash 12930  Word cword 13088   ++ cconcat 13090   substr csubstr 13092   cyclShift ccsh 13327
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1711  ax-4 1726  ax-5 1825  ax-6 1873  ax-7 1920  ax-8 1977  ax-9 1984  ax-10 2004  ax-11 2019  ax-12 2031  ax-13 2228  ax-ext 2585  ax-rep 4689  ax-sep 4699  ax-nul 4708  ax-pow 4760  ax-pr 4824  ax-un 6820  ax-cnex 9844  ax-resscn 9845  ax-1cn 9846  ax-icn 9847  ax-addcl 9848  ax-addrcl 9849  ax-mulcl 9850  ax-mulrcl 9851  ax-mulcom 9852  ax-addass 9853  ax-mulass 9854  ax-distr 9855  ax-i2m1 9856  ax-1ne0 9857  ax-1rid 9858  ax-rnegex 9859  ax-rrecex 9860  ax-cnre 9861  ax-pre-lttri 9862  ax-pre-lttrn 9863  ax-pre-ltadd 9864  ax-pre-mulgt0 9865  ax-pre-sup 9866
This theorem depends on definitions:  df-bi 195  df-or 383  df-an 384  df-3or 1031  df-3an 1032  df-tru 1477  df-ex 1695  df-nf 1700  df-sb 1866  df-eu 2457  df-mo 2458  df-clab 2592  df-cleq 2598  df-clel 2601  df-nfc 2735  df-ne 2777  df-nel 2778  df-ral 2896  df-rex 2897  df-reu 2898  df-rmo 2899  df-rab 2900  df-v 3170  df-sbc 3398  df-csb 3495  df-dif 3538  df-un 3540  df-in 3542  df-ss 3549  df-pss 3551  df-nul 3870  df-if 4032  df-pw 4105  df-sn 4121  df-pr 4123  df-tp 4125  df-op 4127  df-uni 4363  df-int 4401  df-iun 4447  df-br 4574  df-opab 4634  df-mpt 4635  df-tr 4671  df-eprel 4935  df-id 4939  df-po 4945  df-so 4946  df-fr 4983  df-we 4985  df-xp 5030  df-rel 5031  df-cnv 5032  df-co 5033  df-dm 5034  df-rn 5035  df-res 5036  df-ima 5037  df-pred 5579  df-ord 5625  df-on 5626  df-lim 5627  df-suc 5628  df-iota 5750  df-fun 5788  df-fn 5789  df-f 5790  df-f1 5791  df-fo 5792  df-f1o 5793  df-fv 5794  df-riota 6485  df-ov 6526  df-oprab 6527  df-mpt2 6528  df-om 6931  df-1st 7032  df-2nd 7033  df-wrecs 7267  df-recs 7328  df-rdg 7366  df-1o 7420  df-oadd 7424  df-er 7602  df-en 7815  df-dom 7816  df-sdom 7817  df-fin 7818  df-sup 8204  df-inf 8205  df-card 8621  df-pnf 9928  df-mnf 9929  df-xr 9930  df-ltxr 9931  df-le 9932  df-sub 10115  df-neg 10116  df-div 10530  df-nn 10864  df-n0 11136  df-z 11207  df-uz 11516  df-rp 11661  df-fz 12149  df-fzo 12286  df-fl 12406  df-mod 12482  df-hash 12931  df-word 13096  df-concat 13098  df-substr 13100  df-csh 13328
This theorem is referenced by:  cshwf  13339  2cshw  13352  lswcshw  13354  cshwleneq  13356  clwwisshclwwlem  26096  clwwnisshclwwn  26099  erclwwlkeqlen  26102  erclwwlkneqlen  26114  crctcshlem2  41019  clwwisshclwwslem  41232  clwwisshclwws  41233  clwwnisshclwwsn  41235  erclwwlkseqlen  41238  erclwwlksneqlen  41250  eucrct2eupth  41411
  Copyright terms: Public domain W3C validator