| Step | Hyp | Ref
| Expression |
| 1 | | iswrd 14538 |
. . . . 5
⊢ (𝑊 ∈ Word 𝑉 ↔ ∃𝑙 ∈ ℕ0 𝑊:(0..^𝑙)⟶𝑉) |
| 2 | | ffn 6711 |
. . . . . 6
⊢ (𝑊:(0..^𝑙)⟶𝑉 → 𝑊 Fn (0..^𝑙)) |
| 3 | 2 | reximi 3075 |
. . . . 5
⊢
(∃𝑙 ∈
ℕ0 𝑊:(0..^𝑙)⟶𝑉 → ∃𝑙 ∈ ℕ0 𝑊 Fn (0..^𝑙)) |
| 4 | 1, 3 | sylbi 217 |
. . . 4
⊢ (𝑊 ∈ Word 𝑉 → ∃𝑙 ∈ ℕ0 𝑊 Fn (0..^𝑙)) |
| 5 | | fneq1 6634 |
. . . . . 6
⊢ (𝑤 = 𝑊 → (𝑤 Fn (0..^𝑙) ↔ 𝑊 Fn (0..^𝑙))) |
| 6 | 5 | rexbidv 3165 |
. . . . 5
⊢ (𝑤 = 𝑊 → (∃𝑙 ∈ ℕ0 𝑤 Fn (0..^𝑙) ↔ ∃𝑙 ∈ ℕ0 𝑊 Fn (0..^𝑙))) |
| 7 | 6 | elabg 3660 |
. . . 4
⊢ (𝑊 ∈ Word 𝑉 → (𝑊 ∈ {𝑤 ∣ ∃𝑙 ∈ ℕ0 𝑤 Fn (0..^𝑙)} ↔ ∃𝑙 ∈ ℕ0 𝑊 Fn (0..^𝑙))) |
| 8 | 4, 7 | mpbird 257 |
. . 3
⊢ (𝑊 ∈ Word 𝑉 → 𝑊 ∈ {𝑤 ∣ ∃𝑙 ∈ ℕ0 𝑤 Fn (0..^𝑙)}) |
| 9 | | cshfn 14813 |
. . 3
⊢ ((𝑊 ∈ {𝑤 ∣ ∃𝑙 ∈ ℕ0 𝑤 Fn (0..^𝑙)} ∧ 𝑁 ∈ ℤ) → (𝑊 cyclShift 𝑁) = if(𝑊 = ∅, ∅, ((𝑊 substr 〈(𝑁 mod (♯‘𝑊)), (♯‘𝑊)〉) ++ (𝑊 prefix (𝑁 mod (♯‘𝑊)))))) |
| 10 | 8, 9 | sylan 580 |
. 2
⊢ ((𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ) → (𝑊 cyclShift 𝑁) = if(𝑊 = ∅, ∅, ((𝑊 substr 〈(𝑁 mod (♯‘𝑊)), (♯‘𝑊)〉) ++ (𝑊 prefix (𝑁 mod (♯‘𝑊)))))) |
| 11 | | iftrue 4511 |
. . . . 5
⊢ (𝑊 = ∅ → if(𝑊 = ∅, ∅, ((𝑊 substr 〈(𝑁 mod (♯‘𝑊)), (♯‘𝑊)〉) ++ (𝑊 prefix (𝑁 mod (♯‘𝑊))))) = ∅) |
| 12 | 11 | adantr 480 |
. . . 4
⊢ ((𝑊 = ∅ ∧ (𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ)) → if(𝑊 = ∅, ∅, ((𝑊 substr 〈(𝑁 mod (♯‘𝑊)), (♯‘𝑊)〉) ++ (𝑊 prefix (𝑁 mod (♯‘𝑊))))) = ∅) |
| 13 | | oveq1 7417 |
. . . . . . . 8
⊢ (𝑊 = ∅ → (𝑊 substr 〈(𝑁 mod (♯‘𝑊)), (♯‘𝑊)〉) = (∅ substr 〈(𝑁 mod (♯‘𝑊)), (♯‘𝑊)〉)) |
| 14 | | swrd0 14681 |
. . . . . . . 8
⊢ (∅
substr 〈(𝑁 mod
(♯‘𝑊)),
(♯‘𝑊)〉) =
∅ |
| 15 | 13, 14 | eqtrdi 2787 |
. . . . . . 7
⊢ (𝑊 = ∅ → (𝑊 substr 〈(𝑁 mod (♯‘𝑊)), (♯‘𝑊)〉) = ∅) |
| 16 | | oveq1 7417 |
. . . . . . . 8
⊢ (𝑊 = ∅ → (𝑊 prefix (𝑁 mod (♯‘𝑊))) = (∅ prefix (𝑁 mod (♯‘𝑊)))) |
| 17 | | pfx0 14698 |
. . . . . . . 8
⊢ (∅
prefix (𝑁 mod
(♯‘𝑊))) =
∅ |
| 18 | 16, 17 | eqtrdi 2787 |
. . . . . . 7
⊢ (𝑊 = ∅ → (𝑊 prefix (𝑁 mod (♯‘𝑊))) = ∅) |
| 19 | 15, 18 | oveq12d 7428 |
. . . . . 6
⊢ (𝑊 = ∅ → ((𝑊 substr 〈(𝑁 mod (♯‘𝑊)), (♯‘𝑊)〉) ++ (𝑊 prefix (𝑁 mod (♯‘𝑊)))) = (∅ ++
∅)) |
| 20 | 19 | adantr 480 |
. . . . 5
⊢ ((𝑊 = ∅ ∧ (𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ)) → ((𝑊 substr 〈(𝑁 mod (♯‘𝑊)), (♯‘𝑊)〉) ++ (𝑊 prefix (𝑁 mod (♯‘𝑊)))) = (∅ ++
∅)) |
| 21 | | ccatidid 14613 |
. . . . 5
⊢ (∅
++ ∅) = ∅ |
| 22 | 20, 21 | eqtr2di 2788 |
. . . 4
⊢ ((𝑊 = ∅ ∧ (𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ)) → ∅ = ((𝑊 substr 〈(𝑁 mod (♯‘𝑊)), (♯‘𝑊)〉) ++ (𝑊 prefix (𝑁 mod (♯‘𝑊))))) |
| 23 | 12, 22 | eqtrd 2771 |
. . 3
⊢ ((𝑊 = ∅ ∧ (𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ)) → if(𝑊 = ∅, ∅, ((𝑊 substr 〈(𝑁 mod (♯‘𝑊)), (♯‘𝑊)〉) ++ (𝑊 prefix (𝑁 mod (♯‘𝑊))))) = ((𝑊 substr 〈(𝑁 mod (♯‘𝑊)), (♯‘𝑊)〉) ++ (𝑊 prefix (𝑁 mod (♯‘𝑊))))) |
| 24 | | iffalse 4514 |
. . . 4
⊢ (¬
𝑊 = ∅ → if(𝑊 = ∅, ∅, ((𝑊 substr 〈(𝑁 mod (♯‘𝑊)), (♯‘𝑊)〉) ++ (𝑊 prefix (𝑁 mod (♯‘𝑊))))) = ((𝑊 substr 〈(𝑁 mod (♯‘𝑊)), (♯‘𝑊)〉) ++ (𝑊 prefix (𝑁 mod (♯‘𝑊))))) |
| 25 | 24 | adantr 480 |
. . 3
⊢ ((¬
𝑊 = ∅ ∧ (𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ)) → if(𝑊 = ∅, ∅, ((𝑊 substr 〈(𝑁 mod (♯‘𝑊)), (♯‘𝑊)〉) ++ (𝑊 prefix (𝑁 mod (♯‘𝑊))))) = ((𝑊 substr 〈(𝑁 mod (♯‘𝑊)), (♯‘𝑊)〉) ++ (𝑊 prefix (𝑁 mod (♯‘𝑊))))) |
| 26 | 23, 25 | pm2.61ian 811 |
. 2
⊢ ((𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ) → if(𝑊 = ∅, ∅, ((𝑊 substr 〈(𝑁 mod (♯‘𝑊)), (♯‘𝑊)〉) ++ (𝑊 prefix (𝑁 mod (♯‘𝑊))))) = ((𝑊 substr 〈(𝑁 mod (♯‘𝑊)), (♯‘𝑊)〉) ++ (𝑊 prefix (𝑁 mod (♯‘𝑊))))) |
| 27 | 10, 26 | eqtrd 2771 |
1
⊢ ((𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ) → (𝑊 cyclShift 𝑁) = ((𝑊 substr 〈(𝑁 mod (♯‘𝑊)), (♯‘𝑊)〉) ++ (𝑊 prefix (𝑁 mod (♯‘𝑊))))) |