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

Theorem cshwmodn 13762
Description: Cyclically shifting a word is invariant regarding modulo the word's length. (Contributed by AV, 26-Oct-2018.)
Assertion
Ref Expression
cshwmodn ((𝑊 ∈ Word 𝑉𝑁 ∈ ℤ) → (𝑊 cyclShift 𝑁) = (𝑊 cyclShift (𝑁 mod (♯‘𝑊))))

Proof of Theorem cshwmodn
StepHypRef Expression
1 0csh0 13760 . . . 4 (∅ cyclShift 𝑁) = ∅
2 oveq1 6822 . . . 4 (𝑊 = ∅ → (𝑊 cyclShift 𝑁) = (∅ cyclShift 𝑁))
3 oveq1 6822 . . . . 5 (𝑊 = ∅ → (𝑊 cyclShift (𝑁 mod (♯‘𝑊))) = (∅ cyclShift (𝑁 mod (♯‘𝑊))))
4 0csh0 13760 . . . . 5 (∅ cyclShift (𝑁 mod (♯‘𝑊))) = ∅
53, 4syl6eq 2811 . . . 4 (𝑊 = ∅ → (𝑊 cyclShift (𝑁 mod (♯‘𝑊))) = ∅)
61, 2, 53eqtr4a 2821 . . 3 (𝑊 = ∅ → (𝑊 cyclShift 𝑁) = (𝑊 cyclShift (𝑁 mod (♯‘𝑊))))
76a1d 25 . 2 (𝑊 = ∅ → ((𝑊 ∈ Word 𝑉𝑁 ∈ ℤ) → (𝑊 cyclShift 𝑁) = (𝑊 cyclShift (𝑁 mod (♯‘𝑊)))))
8 lennncl 13532 . . . . . . 7 ((𝑊 ∈ Word 𝑉𝑊 ≠ ∅) → (♯‘𝑊) ∈ ℕ)
9 zre 11594 . . . . . . . . . . . 12 (𝑁 ∈ ℤ → 𝑁 ∈ ℝ)
10 nnrp 12056 . . . . . . . . . . . 12 ((♯‘𝑊) ∈ ℕ → (♯‘𝑊) ∈ ℝ+)
11 modabs2 12919 . . . . . . . . . . . 12 ((𝑁 ∈ ℝ ∧ (♯‘𝑊) ∈ ℝ+) → ((𝑁 mod (♯‘𝑊)) mod (♯‘𝑊)) = (𝑁 mod (♯‘𝑊)))
129, 10, 11syl2anr 496 . . . . . . . . . . 11 (((♯‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ) → ((𝑁 mod (♯‘𝑊)) mod (♯‘𝑊)) = (𝑁 mod (♯‘𝑊)))
1312opeq1d 4560 . . . . . . . . . 10 (((♯‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ) → ⟨((𝑁 mod (♯‘𝑊)) mod (♯‘𝑊)), (♯‘𝑊)⟩ = ⟨(𝑁 mod (♯‘𝑊)), (♯‘𝑊)⟩)
1413oveq2d 6831 . . . . . . . . 9 (((♯‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ) → (𝑊 substr ⟨((𝑁 mod (♯‘𝑊)) mod (♯‘𝑊)), (♯‘𝑊)⟩) = (𝑊 substr ⟨(𝑁 mod (♯‘𝑊)), (♯‘𝑊)⟩))
1512opeq2d 4561 . . . . . . . . . 10 (((♯‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ) → ⟨0, ((𝑁 mod (♯‘𝑊)) mod (♯‘𝑊))⟩ = ⟨0, (𝑁 mod (♯‘𝑊))⟩)
1615oveq2d 6831 . . . . . . . . 9 (((♯‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ) → (𝑊 substr ⟨0, ((𝑁 mod (♯‘𝑊)) mod (♯‘𝑊))⟩) = (𝑊 substr ⟨0, (𝑁 mod (♯‘𝑊))⟩))
1714, 16oveq12d 6833 . . . . . . . 8 (((♯‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ) → ((𝑊 substr ⟨((𝑁 mod (♯‘𝑊)) mod (♯‘𝑊)), (♯‘𝑊)⟩) ++ (𝑊 substr ⟨0, ((𝑁 mod (♯‘𝑊)) mod (♯‘𝑊))⟩)) = ((𝑊 substr ⟨(𝑁 mod (♯‘𝑊)), (♯‘𝑊)⟩) ++ (𝑊 substr ⟨0, (𝑁 mod (♯‘𝑊))⟩)))
1817ex 449 . . . . . . 7 ((♯‘𝑊) ∈ ℕ → (𝑁 ∈ ℤ → ((𝑊 substr ⟨((𝑁 mod (♯‘𝑊)) mod (♯‘𝑊)), (♯‘𝑊)⟩) ++ (𝑊 substr ⟨0, ((𝑁 mod (♯‘𝑊)) mod (♯‘𝑊))⟩)) = ((𝑊 substr ⟨(𝑁 mod (♯‘𝑊)), (♯‘𝑊)⟩) ++ (𝑊 substr ⟨0, (𝑁 mod (♯‘𝑊))⟩))))
198, 18syl 17 . . . . . 6 ((𝑊 ∈ Word 𝑉𝑊 ≠ ∅) → (𝑁 ∈ ℤ → ((𝑊 substr ⟨((𝑁 mod (♯‘𝑊)) mod (♯‘𝑊)), (♯‘𝑊)⟩) ++ (𝑊 substr ⟨0, ((𝑁 mod (♯‘𝑊)) mod (♯‘𝑊))⟩)) = ((𝑊 substr ⟨(𝑁 mod (♯‘𝑊)), (♯‘𝑊)⟩) ++ (𝑊 substr ⟨0, (𝑁 mod (♯‘𝑊))⟩))))
2019impancom 455 . . . . 5 ((𝑊 ∈ Word 𝑉𝑁 ∈ ℤ) → (𝑊 ≠ ∅ → ((𝑊 substr ⟨((𝑁 mod (♯‘𝑊)) mod (♯‘𝑊)), (♯‘𝑊)⟩) ++ (𝑊 substr ⟨0, ((𝑁 mod (♯‘𝑊)) mod (♯‘𝑊))⟩)) = ((𝑊 substr ⟨(𝑁 mod (♯‘𝑊)), (♯‘𝑊)⟩) ++ (𝑊 substr ⟨0, (𝑁 mod (♯‘𝑊))⟩))))
2120impcom 445 . . . 4 ((𝑊 ≠ ∅ ∧ (𝑊 ∈ Word 𝑉𝑁 ∈ ℤ)) → ((𝑊 substr ⟨((𝑁 mod (♯‘𝑊)) mod (♯‘𝑊)), (♯‘𝑊)⟩) ++ (𝑊 substr ⟨0, ((𝑁 mod (♯‘𝑊)) mod (♯‘𝑊))⟩)) = ((𝑊 substr ⟨(𝑁 mod (♯‘𝑊)), (♯‘𝑊)⟩) ++ (𝑊 substr ⟨0, (𝑁 mod (♯‘𝑊))⟩)))
22 simprl 811 . . . . 5 ((𝑊 ≠ ∅ ∧ (𝑊 ∈ Word 𝑉𝑁 ∈ ℤ)) → 𝑊 ∈ Word 𝑉)
23 simprr 813 . . . . . . 7 ((𝑊 ≠ ∅ ∧ (𝑊 ∈ Word 𝑉𝑁 ∈ ℤ)) → 𝑁 ∈ ℤ)
248ex 449 . . . . . . . . 9 (𝑊 ∈ Word 𝑉 → (𝑊 ≠ ∅ → (♯‘𝑊) ∈ ℕ))
2524adantr 472 . . . . . . . 8 ((𝑊 ∈ Word 𝑉𝑁 ∈ ℤ) → (𝑊 ≠ ∅ → (♯‘𝑊) ∈ ℕ))
2625impcom 445 . . . . . . 7 ((𝑊 ≠ ∅ ∧ (𝑊 ∈ Word 𝑉𝑁 ∈ ℤ)) → (♯‘𝑊) ∈ ℕ)
2723, 26zmodcld 12906 . . . . . 6 ((𝑊 ≠ ∅ ∧ (𝑊 ∈ Word 𝑉𝑁 ∈ ℤ)) → (𝑁 mod (♯‘𝑊)) ∈ ℕ0)
2827nn0zd 11693 . . . . 5 ((𝑊 ≠ ∅ ∧ (𝑊 ∈ Word 𝑉𝑁 ∈ ℤ)) → (𝑁 mod (♯‘𝑊)) ∈ ℤ)
29 cshword 13758 . . . . 5 ((𝑊 ∈ Word 𝑉 ∧ (𝑁 mod (♯‘𝑊)) ∈ ℤ) → (𝑊 cyclShift (𝑁 mod (♯‘𝑊))) = ((𝑊 substr ⟨((𝑁 mod (♯‘𝑊)) mod (♯‘𝑊)), (♯‘𝑊)⟩) ++ (𝑊 substr ⟨0, ((𝑁 mod (♯‘𝑊)) mod (♯‘𝑊))⟩)))
3022, 28, 29syl2anc 696 . . . 4 ((𝑊 ≠ ∅ ∧ (𝑊 ∈ Word 𝑉𝑁 ∈ ℤ)) → (𝑊 cyclShift (𝑁 mod (♯‘𝑊))) = ((𝑊 substr ⟨((𝑁 mod (♯‘𝑊)) mod (♯‘𝑊)), (♯‘𝑊)⟩) ++ (𝑊 substr ⟨0, ((𝑁 mod (♯‘𝑊)) mod (♯‘𝑊))⟩)))
31 cshword 13758 . . . . 5 ((𝑊 ∈ Word 𝑉𝑁 ∈ ℤ) → (𝑊 cyclShift 𝑁) = ((𝑊 substr ⟨(𝑁 mod (♯‘𝑊)), (♯‘𝑊)⟩) ++ (𝑊 substr ⟨0, (𝑁 mod (♯‘𝑊))⟩)))
3231adantl 473 . . . 4 ((𝑊 ≠ ∅ ∧ (𝑊 ∈ Word 𝑉𝑁 ∈ ℤ)) → (𝑊 cyclShift 𝑁) = ((𝑊 substr ⟨(𝑁 mod (♯‘𝑊)), (♯‘𝑊)⟩) ++ (𝑊 substr ⟨0, (𝑁 mod (♯‘𝑊))⟩)))
3321, 30, 323eqtr4rd 2806 . . 3 ((𝑊 ≠ ∅ ∧ (𝑊 ∈ Word 𝑉𝑁 ∈ ℤ)) → (𝑊 cyclShift 𝑁) = (𝑊 cyclShift (𝑁 mod (♯‘𝑊))))
3433ex 449 . 2 (𝑊 ≠ ∅ → ((𝑊 ∈ Word 𝑉𝑁 ∈ ℤ) → (𝑊 cyclShift 𝑁) = (𝑊 cyclShift (𝑁 mod (♯‘𝑊)))))
357, 34pm2.61ine 3016 1 ((𝑊 ∈ Word 𝑉𝑁 ∈ ℤ) → (𝑊 cyclShift 𝑁) = (𝑊 cyclShift (𝑁 mod (♯‘𝑊))))
Colors of variables: wff setvar class
Syntax hints:  wi 4  wa 383   = wceq 1632  wcel 2140  wne 2933  c0 4059  cop 4328  cfv 6050  (class class class)co 6815  cr 10148  0cc0 10149  cn 11233  cz 11590  +crp 12046   mod cmo 12883  chash 13332  Word cword 13498   ++ cconcat 13500   substr csubstr 13502   cyclShift ccsh 13755
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  ax-pre-sup 10227
This theorem depends on definitions:  df-bi 197  df-or 384  df-an 385  df-3or 1073  df-3an 1074  df-tru 1635  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-rmo 3059  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-sup 8516  df-inf 8517  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-div 10898  df-nn 11234  df-n0 11506  df-z 11591  df-uz 11901  df-rp 12047  df-fz 12541  df-fzo 12681  df-fl 12808  df-mod 12884  df-hash 13333  df-word 13506  df-concat 13508  df-substr 13510  df-csh 13756
This theorem is referenced by:  cshwsublen  13763  cshwn  13764
  Copyright terms: Public domain W3C validator