Step |
Hyp |
Ref |
Expression |
0 |
|
ccsh |
⊢ cyclShift |
1 |
|
vw |
⊢ 𝑤 |
2 |
|
vf |
⊢ 𝑓 |
3 |
|
vl |
⊢ 𝑙 |
4 |
|
cn0 |
⊢ ℕ0 |
5 |
2
|
cv |
⊢ 𝑓 |
6 |
|
cc0 |
⊢ 0 |
7 |
|
cfzo |
⊢ ..^ |
8 |
3
|
cv |
⊢ 𝑙 |
9 |
6 8 7
|
co |
⊢ ( 0 ..^ 𝑙 ) |
10 |
5 9
|
wfn |
⊢ 𝑓 Fn ( 0 ..^ 𝑙 ) |
11 |
10 3 4
|
wrex |
⊢ ∃ 𝑙 ∈ ℕ0 𝑓 Fn ( 0 ..^ 𝑙 ) |
12 |
11 2
|
cab |
⊢ { 𝑓 ∣ ∃ 𝑙 ∈ ℕ0 𝑓 Fn ( 0 ..^ 𝑙 ) } |
13 |
|
vn |
⊢ 𝑛 |
14 |
|
cz |
⊢ ℤ |
15 |
1
|
cv |
⊢ 𝑤 |
16 |
|
c0 |
⊢ ∅ |
17 |
15 16
|
wceq |
⊢ 𝑤 = ∅ |
18 |
|
csubstr |
⊢ substr |
19 |
13
|
cv |
⊢ 𝑛 |
20 |
|
cmo |
⊢ mod |
21 |
|
chash |
⊢ ♯ |
22 |
15 21
|
cfv |
⊢ ( ♯ ‘ 𝑤 ) |
23 |
19 22 20
|
co |
⊢ ( 𝑛 mod ( ♯ ‘ 𝑤 ) ) |
24 |
23 22
|
cop |
⊢ 〈 ( 𝑛 mod ( ♯ ‘ 𝑤 ) ) , ( ♯ ‘ 𝑤 ) 〉 |
25 |
15 24 18
|
co |
⊢ ( 𝑤 substr 〈 ( 𝑛 mod ( ♯ ‘ 𝑤 ) ) , ( ♯ ‘ 𝑤 ) 〉 ) |
26 |
|
cconcat |
⊢ ++ |
27 |
|
cpfx |
⊢ prefix |
28 |
15 23 27
|
co |
⊢ ( 𝑤 prefix ( 𝑛 mod ( ♯ ‘ 𝑤 ) ) ) |
29 |
25 28 26
|
co |
⊢ ( ( 𝑤 substr 〈 ( 𝑛 mod ( ♯ ‘ 𝑤 ) ) , ( ♯ ‘ 𝑤 ) 〉 ) ++ ( 𝑤 prefix ( 𝑛 mod ( ♯ ‘ 𝑤 ) ) ) ) |
30 |
17 16 29
|
cif |
⊢ if ( 𝑤 = ∅ , ∅ , ( ( 𝑤 substr 〈 ( 𝑛 mod ( ♯ ‘ 𝑤 ) ) , ( ♯ ‘ 𝑤 ) 〉 ) ++ ( 𝑤 prefix ( 𝑛 mod ( ♯ ‘ 𝑤 ) ) ) ) ) |
31 |
1 13 12 14 30
|
cmpo |
⊢ ( 𝑤 ∈ { 𝑓 ∣ ∃ 𝑙 ∈ ℕ0 𝑓 Fn ( 0 ..^ 𝑙 ) } , 𝑛 ∈ ℤ ↦ if ( 𝑤 = ∅ , ∅ , ( ( 𝑤 substr 〈 ( 𝑛 mod ( ♯ ‘ 𝑤 ) ) , ( ♯ ‘ 𝑤 ) 〉 ) ++ ( 𝑤 prefix ( 𝑛 mod ( ♯ ‘ 𝑤 ) ) ) ) ) ) |
32 |
0 31
|
wceq |
⊢ cyclShift = ( 𝑤 ∈ { 𝑓 ∣ ∃ 𝑙 ∈ ℕ0 𝑓 Fn ( 0 ..^ 𝑙 ) } , 𝑛 ∈ ℤ ↦ if ( 𝑤 = ∅ , ∅ , ( ( 𝑤 substr 〈 ( 𝑛 mod ( ♯ ‘ 𝑤 ) ) , ( ♯ ‘ 𝑤 ) 〉 ) ++ ( 𝑤 prefix ( 𝑛 mod ( ♯ ‘ 𝑤 ) ) ) ) ) ) |