Step |
Hyp |
Ref |
Expression |
1 |
|
elfzoelz |
⊢ ( 𝑖 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) → 𝑖 ∈ ℤ ) |
2 |
1
|
3ad2ant3 |
⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ ∧ 𝑖 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ) → 𝑖 ∈ ℤ ) |
3 |
|
simp2 |
⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ ∧ 𝑖 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ) → 𝑁 ∈ ℤ ) |
4 |
2 3
|
zsubcld |
⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ ∧ 𝑖 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ) → ( 𝑖 − 𝑁 ) ∈ ℤ ) |
5 |
|
elfzo0 |
⊢ ( 𝑖 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ↔ ( 𝑖 ∈ ℕ0 ∧ ( ♯ ‘ 𝑊 ) ∈ ℕ ∧ 𝑖 < ( ♯ ‘ 𝑊 ) ) ) |
6 |
5
|
simp2bi |
⊢ ( 𝑖 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) → ( ♯ ‘ 𝑊 ) ∈ ℕ ) |
7 |
6
|
3ad2ant3 |
⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ ∧ 𝑖 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ) → ( ♯ ‘ 𝑊 ) ∈ ℕ ) |
8 |
|
zmodfzo |
⊢ ( ( ( 𝑖 − 𝑁 ) ∈ ℤ ∧ ( ♯ ‘ 𝑊 ) ∈ ℕ ) → ( ( 𝑖 − 𝑁 ) mod ( ♯ ‘ 𝑊 ) ) ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ) |
9 |
4 7 8
|
syl2anc |
⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ ∧ 𝑖 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ) → ( ( 𝑖 − 𝑁 ) mod ( ♯ ‘ 𝑊 ) ) ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ) |
10 |
9
|
3expa |
⊢ ( ( ( 𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ ) ∧ 𝑖 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ) → ( ( 𝑖 − 𝑁 ) mod ( ♯ ‘ 𝑊 ) ) ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ) |
11 |
|
elfzoelz |
⊢ ( 𝑗 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) → 𝑗 ∈ ℤ ) |
12 |
11
|
adantl |
⊢ ( ( ( 𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ ) ∧ 𝑗 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ) → 𝑗 ∈ ℤ ) |
13 |
|
simplr |
⊢ ( ( ( 𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ ) ∧ 𝑗 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ) → 𝑁 ∈ ℤ ) |
14 |
12 13
|
zaddcld |
⊢ ( ( ( 𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ ) ∧ 𝑗 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ) → ( 𝑗 + 𝑁 ) ∈ ℤ ) |
15 |
|
elfzo0 |
⊢ ( 𝑗 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ↔ ( 𝑗 ∈ ℕ0 ∧ ( ♯ ‘ 𝑊 ) ∈ ℕ ∧ 𝑗 < ( ♯ ‘ 𝑊 ) ) ) |
16 |
15
|
simp2bi |
⊢ ( 𝑗 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) → ( ♯ ‘ 𝑊 ) ∈ ℕ ) |
17 |
16
|
adantl |
⊢ ( ( ( 𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ ) ∧ 𝑗 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ) → ( ♯ ‘ 𝑊 ) ∈ ℕ ) |
18 |
|
zmodfzo |
⊢ ( ( ( 𝑗 + 𝑁 ) ∈ ℤ ∧ ( ♯ ‘ 𝑊 ) ∈ ℕ ) → ( ( 𝑗 + 𝑁 ) mod ( ♯ ‘ 𝑊 ) ) ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ) |
19 |
14 17 18
|
syl2anc |
⊢ ( ( ( 𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ ) ∧ 𝑗 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ) → ( ( 𝑗 + 𝑁 ) mod ( ♯ ‘ 𝑊 ) ) ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ) |
20 |
|
simpr |
⊢ ( ( ( ( 𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ ) ∧ 𝑗 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ) ∧ 𝑖 = ( ( 𝑗 + 𝑁 ) mod ( ♯ ‘ 𝑊 ) ) ) → 𝑖 = ( ( 𝑗 + 𝑁 ) mod ( ♯ ‘ 𝑊 ) ) ) |
21 |
20
|
oveq1d |
⊢ ( ( ( ( 𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ ) ∧ 𝑗 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ) ∧ 𝑖 = ( ( 𝑗 + 𝑁 ) mod ( ♯ ‘ 𝑊 ) ) ) → ( 𝑖 − 𝑁 ) = ( ( ( 𝑗 + 𝑁 ) mod ( ♯ ‘ 𝑊 ) ) − 𝑁 ) ) |
22 |
21
|
oveq1d |
⊢ ( ( ( ( 𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ ) ∧ 𝑗 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ) ∧ 𝑖 = ( ( 𝑗 + 𝑁 ) mod ( ♯ ‘ 𝑊 ) ) ) → ( ( 𝑖 − 𝑁 ) mod ( ♯ ‘ 𝑊 ) ) = ( ( ( ( 𝑗 + 𝑁 ) mod ( ♯ ‘ 𝑊 ) ) − 𝑁 ) mod ( ♯ ‘ 𝑊 ) ) ) |
23 |
22
|
eqeq2d |
⊢ ( ( ( ( 𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ ) ∧ 𝑗 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ) ∧ 𝑖 = ( ( 𝑗 + 𝑁 ) mod ( ♯ ‘ 𝑊 ) ) ) → ( 𝑗 = ( ( 𝑖 − 𝑁 ) mod ( ♯ ‘ 𝑊 ) ) ↔ 𝑗 = ( ( ( ( 𝑗 + 𝑁 ) mod ( ♯ ‘ 𝑊 ) ) − 𝑁 ) mod ( ♯ ‘ 𝑊 ) ) ) ) |
24 |
12
|
zred |
⊢ ( ( ( 𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ ) ∧ 𝑗 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ) → 𝑗 ∈ ℝ ) |
25 |
13
|
zred |
⊢ ( ( ( 𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ ) ∧ 𝑗 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ) → 𝑁 ∈ ℝ ) |
26 |
24 25
|
readdcld |
⊢ ( ( ( 𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ ) ∧ 𝑗 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ) → ( 𝑗 + 𝑁 ) ∈ ℝ ) |
27 |
17
|
nnrpd |
⊢ ( ( ( 𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ ) ∧ 𝑗 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ) → ( ♯ ‘ 𝑊 ) ∈ ℝ+ ) |
28 |
|
modsubmod |
⊢ ( ( ( 𝑗 + 𝑁 ) ∈ ℝ ∧ 𝑁 ∈ ℝ ∧ ( ♯ ‘ 𝑊 ) ∈ ℝ+ ) → ( ( ( ( 𝑗 + 𝑁 ) mod ( ♯ ‘ 𝑊 ) ) − 𝑁 ) mod ( ♯ ‘ 𝑊 ) ) = ( ( ( 𝑗 + 𝑁 ) − 𝑁 ) mod ( ♯ ‘ 𝑊 ) ) ) |
29 |
26 25 27 28
|
syl3anc |
⊢ ( ( ( 𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ ) ∧ 𝑗 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ) → ( ( ( ( 𝑗 + 𝑁 ) mod ( ♯ ‘ 𝑊 ) ) − 𝑁 ) mod ( ♯ ‘ 𝑊 ) ) = ( ( ( 𝑗 + 𝑁 ) − 𝑁 ) mod ( ♯ ‘ 𝑊 ) ) ) |
30 |
12
|
zcnd |
⊢ ( ( ( 𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ ) ∧ 𝑗 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ) → 𝑗 ∈ ℂ ) |
31 |
13
|
zcnd |
⊢ ( ( ( 𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ ) ∧ 𝑗 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ) → 𝑁 ∈ ℂ ) |
32 |
30 31
|
pncand |
⊢ ( ( ( 𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ ) ∧ 𝑗 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ) → ( ( 𝑗 + 𝑁 ) − 𝑁 ) = 𝑗 ) |
33 |
32
|
oveq1d |
⊢ ( ( ( 𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ ) ∧ 𝑗 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ) → ( ( ( 𝑗 + 𝑁 ) − 𝑁 ) mod ( ♯ ‘ 𝑊 ) ) = ( 𝑗 mod ( ♯ ‘ 𝑊 ) ) ) |
34 |
|
zmodidfzoimp |
⊢ ( 𝑗 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) → ( 𝑗 mod ( ♯ ‘ 𝑊 ) ) = 𝑗 ) |
35 |
34
|
adantl |
⊢ ( ( ( 𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ ) ∧ 𝑗 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ) → ( 𝑗 mod ( ♯ ‘ 𝑊 ) ) = 𝑗 ) |
36 |
29 33 35
|
3eqtrrd |
⊢ ( ( ( 𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ ) ∧ 𝑗 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ) → 𝑗 = ( ( ( ( 𝑗 + 𝑁 ) mod ( ♯ ‘ 𝑊 ) ) − 𝑁 ) mod ( ♯ ‘ 𝑊 ) ) ) |
37 |
19 23 36
|
rspcedvd |
⊢ ( ( ( 𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ ) ∧ 𝑗 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ) → ∃ 𝑖 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) 𝑗 = ( ( 𝑖 − 𝑁 ) mod ( ♯ ‘ 𝑊 ) ) ) |
38 |
|
simp3 |
⊢ ( ( ( 𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ ) ∧ 𝑖 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ∧ 𝑗 = ( ( 𝑖 − 𝑁 ) mod ( ♯ ‘ 𝑊 ) ) ) → 𝑗 = ( ( 𝑖 − 𝑁 ) mod ( ♯ ‘ 𝑊 ) ) ) |
39 |
38
|
fveq2d |
⊢ ( ( ( 𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ ) ∧ 𝑖 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ∧ 𝑗 = ( ( 𝑖 − 𝑁 ) mod ( ♯ ‘ 𝑊 ) ) ) → ( ( 𝑊 cyclShift 𝑁 ) ‘ 𝑗 ) = ( ( 𝑊 cyclShift 𝑁 ) ‘ ( ( 𝑖 − 𝑁 ) mod ( ♯ ‘ 𝑊 ) ) ) ) |
40 |
|
simp1l |
⊢ ( ( ( 𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ ) ∧ 𝑖 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ∧ 𝑗 = ( ( 𝑖 − 𝑁 ) mod ( ♯ ‘ 𝑊 ) ) ) → 𝑊 ∈ Word 𝑉 ) |
41 |
|
simp1r |
⊢ ( ( ( 𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ ) ∧ 𝑖 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ∧ 𝑗 = ( ( 𝑖 − 𝑁 ) mod ( ♯ ‘ 𝑊 ) ) ) → 𝑁 ∈ ℤ ) |
42 |
|
simp2 |
⊢ ( ( ( 𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ ) ∧ 𝑖 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ∧ 𝑗 = ( ( 𝑖 − 𝑁 ) mod ( ♯ ‘ 𝑊 ) ) ) → 𝑖 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ) |
43 |
|
cshwidxmodr |
⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ ∧ 𝑖 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ) → ( ( 𝑊 cyclShift 𝑁 ) ‘ ( ( 𝑖 − 𝑁 ) mod ( ♯ ‘ 𝑊 ) ) ) = ( 𝑊 ‘ 𝑖 ) ) |
44 |
40 41 42 43
|
syl3anc |
⊢ ( ( ( 𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ ) ∧ 𝑖 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ∧ 𝑗 = ( ( 𝑖 − 𝑁 ) mod ( ♯ ‘ 𝑊 ) ) ) → ( ( 𝑊 cyclShift 𝑁 ) ‘ ( ( 𝑖 − 𝑁 ) mod ( ♯ ‘ 𝑊 ) ) ) = ( 𝑊 ‘ 𝑖 ) ) |
45 |
39 44
|
eqtrd |
⊢ ( ( ( 𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ ) ∧ 𝑖 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ∧ 𝑗 = ( ( 𝑖 − 𝑁 ) mod ( ♯ ‘ 𝑊 ) ) ) → ( ( 𝑊 cyclShift 𝑁 ) ‘ 𝑗 ) = ( 𝑊 ‘ 𝑖 ) ) |
46 |
45
|
eqeq2d |
⊢ ( ( ( 𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ ) ∧ 𝑖 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ∧ 𝑗 = ( ( 𝑖 − 𝑁 ) mod ( ♯ ‘ 𝑊 ) ) ) → ( 𝑐 = ( ( 𝑊 cyclShift 𝑁 ) ‘ 𝑗 ) ↔ 𝑐 = ( 𝑊 ‘ 𝑖 ) ) ) |
47 |
10 37 46
|
rexxfrd2 |
⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ ) → ( ∃ 𝑗 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) 𝑐 = ( ( 𝑊 cyclShift 𝑁 ) ‘ 𝑗 ) ↔ ∃ 𝑖 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) 𝑐 = ( 𝑊 ‘ 𝑖 ) ) ) |
48 |
47
|
abbidv |
⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ ) → { 𝑐 ∣ ∃ 𝑗 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) 𝑐 = ( ( 𝑊 cyclShift 𝑁 ) ‘ 𝑗 ) } = { 𝑐 ∣ ∃ 𝑖 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) 𝑐 = ( 𝑊 ‘ 𝑖 ) } ) |
49 |
|
cshwfn |
⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ ) → ( 𝑊 cyclShift 𝑁 ) Fn ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ) |
50 |
|
fnrnfv |
⊢ ( ( 𝑊 cyclShift 𝑁 ) Fn ( 0 ..^ ( ♯ ‘ 𝑊 ) ) → ran ( 𝑊 cyclShift 𝑁 ) = { 𝑐 ∣ ∃ 𝑗 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) 𝑐 = ( ( 𝑊 cyclShift 𝑁 ) ‘ 𝑗 ) } ) |
51 |
49 50
|
syl |
⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ ) → ran ( 𝑊 cyclShift 𝑁 ) = { 𝑐 ∣ ∃ 𝑗 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) 𝑐 = ( ( 𝑊 cyclShift 𝑁 ) ‘ 𝑗 ) } ) |
52 |
|
wrdfn |
⊢ ( 𝑊 ∈ Word 𝑉 → 𝑊 Fn ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ) |
53 |
52
|
adantr |
⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ ) → 𝑊 Fn ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ) |
54 |
|
fnrnfv |
⊢ ( 𝑊 Fn ( 0 ..^ ( ♯ ‘ 𝑊 ) ) → ran 𝑊 = { 𝑐 ∣ ∃ 𝑖 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) 𝑐 = ( 𝑊 ‘ 𝑖 ) } ) |
55 |
53 54
|
syl |
⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ ) → ran 𝑊 = { 𝑐 ∣ ∃ 𝑖 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) 𝑐 = ( 𝑊 ‘ 𝑖 ) } ) |
56 |
48 51 55
|
3eqtr4d |
⊢ ( ( 𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ ) → ran ( 𝑊 cyclShift 𝑁 ) = ran 𝑊 ) |