| Step | Hyp | Ref | Expression | 
|---|
| 1 |  | iswrd 14555 | . . . . 5
⊢ (𝑊 ∈ Word 𝑉 ↔ ∃𝑙 ∈ ℕ0 𝑊:(0..^𝑙)⟶𝑉) | 
| 2 |  | ffn 6735 | . . . . . 6
⊢ (𝑊:(0..^𝑙)⟶𝑉 → 𝑊 Fn (0..^𝑙)) | 
| 3 | 2 | reximi 3083 | . . . . 5
⊢
(∃𝑙 ∈
ℕ0 𝑊:(0..^𝑙)⟶𝑉 → ∃𝑙 ∈ ℕ0 𝑊 Fn (0..^𝑙)) | 
| 4 | 1, 3 | sylbi 217 | . . . 4
⊢ (𝑊 ∈ Word 𝑉 → ∃𝑙 ∈ ℕ0 𝑊 Fn (0..^𝑙)) | 
| 5 |  | fneq1 6658 | . . . . . 6
⊢ (𝑤 = 𝑊 → (𝑤 Fn (0..^𝑙) ↔ 𝑊 Fn (0..^𝑙))) | 
| 6 | 5 | rexbidv 3178 | . . . . 5
⊢ (𝑤 = 𝑊 → (∃𝑙 ∈ ℕ0 𝑤 Fn (0..^𝑙) ↔ ∃𝑙 ∈ ℕ0 𝑊 Fn (0..^𝑙))) | 
| 7 | 6 | elabg 3675 | . . . 4
⊢ (𝑊 ∈ Word 𝑉 → (𝑊 ∈ {𝑤 ∣ ∃𝑙 ∈ ℕ0 𝑤 Fn (0..^𝑙)} ↔ ∃𝑙 ∈ ℕ0 𝑊 Fn (0..^𝑙))) | 
| 8 | 4, 7 | mpbird 257 | . . 3
⊢ (𝑊 ∈ Word 𝑉 → 𝑊 ∈ {𝑤 ∣ ∃𝑙 ∈ ℕ0 𝑤 Fn (0..^𝑙)}) | 
| 9 |  | cshfn 14829 | . . 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 4530 | . . . . 5
⊢ (𝑊 = ∅ → if(𝑊 = ∅, ∅, ((𝑊 substr 〈(𝑁 mod (♯‘𝑊)), (♯‘𝑊)〉) ++ (𝑊 prefix (𝑁 mod (♯‘𝑊))))) = ∅) | 
| 12 | 11 | adantr 480 | . . . 4
⊢ ((𝑊 = ∅ ∧ (𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ)) → if(𝑊 = ∅, ∅, ((𝑊 substr 〈(𝑁 mod (♯‘𝑊)), (♯‘𝑊)〉) ++ (𝑊 prefix (𝑁 mod (♯‘𝑊))))) = ∅) | 
| 13 |  | oveq1 7439 | . . . . . . . 8
⊢ (𝑊 = ∅ → (𝑊 substr 〈(𝑁 mod (♯‘𝑊)), (♯‘𝑊)〉) = (∅ substr 〈(𝑁 mod (♯‘𝑊)), (♯‘𝑊)〉)) | 
| 14 |  | swrd0 14697 | . . . . . . . 8
⊢ (∅
substr 〈(𝑁 mod
(♯‘𝑊)),
(♯‘𝑊)〉) =
∅ | 
| 15 | 13, 14 | eqtrdi 2792 | . . . . . . 7
⊢ (𝑊 = ∅ → (𝑊 substr 〈(𝑁 mod (♯‘𝑊)), (♯‘𝑊)〉) = ∅) | 
| 16 |  | oveq1 7439 | . . . . . . . 8
⊢ (𝑊 = ∅ → (𝑊 prefix (𝑁 mod (♯‘𝑊))) = (∅ prefix (𝑁 mod (♯‘𝑊)))) | 
| 17 |  | pfx0 14714 | . . . . . . . 8
⊢ (∅
prefix (𝑁 mod
(♯‘𝑊))) =
∅ | 
| 18 | 16, 17 | eqtrdi 2792 | . . . . . . 7
⊢ (𝑊 = ∅ → (𝑊 prefix (𝑁 mod (♯‘𝑊))) = ∅) | 
| 19 | 15, 18 | oveq12d 7450 | . . . . . 6
⊢ (𝑊 = ∅ → ((𝑊 substr 〈(𝑁 mod (♯‘𝑊)), (♯‘𝑊)〉) ++ (𝑊 prefix (𝑁 mod (♯‘𝑊)))) = (∅ ++
∅)) | 
| 20 | 19 | adantr 480 | . . . . 5
⊢ ((𝑊 = ∅ ∧ (𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ)) → ((𝑊 substr 〈(𝑁 mod (♯‘𝑊)), (♯‘𝑊)〉) ++ (𝑊 prefix (𝑁 mod (♯‘𝑊)))) = (∅ ++
∅)) | 
| 21 |  | ccatidid 14629 | . . . . 5
⊢ (∅
++ ∅) = ∅ | 
| 22 | 20, 21 | eqtr2di 2793 | . . . 4
⊢ ((𝑊 = ∅ ∧ (𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ)) → ∅ = ((𝑊 substr 〈(𝑁 mod (♯‘𝑊)), (♯‘𝑊)〉) ++ (𝑊 prefix (𝑁 mod (♯‘𝑊))))) | 
| 23 | 12, 22 | eqtrd 2776 | . . 3
⊢ ((𝑊 = ∅ ∧ (𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ)) → if(𝑊 = ∅, ∅, ((𝑊 substr 〈(𝑁 mod (♯‘𝑊)), (♯‘𝑊)〉) ++ (𝑊 prefix (𝑁 mod (♯‘𝑊))))) = ((𝑊 substr 〈(𝑁 mod (♯‘𝑊)), (♯‘𝑊)〉) ++ (𝑊 prefix (𝑁 mod (♯‘𝑊))))) | 
| 24 |  | iffalse 4533 | . . . 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 2776 | 1
⊢ ((𝑊 ∈ Word 𝑉 ∧ 𝑁 ∈ ℤ) → (𝑊 cyclShift 𝑁) = ((𝑊 substr 〈(𝑁 mod (♯‘𝑊)), (♯‘𝑊)〉) ++ (𝑊 prefix (𝑁 mod (♯‘𝑊))))) |