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

Theorem cshwidxmod 13595
 Description: The symbol at a given index of a cyclically shifted nonempty word is the symbol at the shifted index of the original word. (Contributed by AV, 13-May-2018.) (Revised by AV, 21-May-2018.) (Revised by AV, 30-Oct-2018.)
Assertion
Ref Expression
cshwidxmod ((𝑊 ∈ Word 𝑉𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))) → ((𝑊 cyclShift 𝑁)‘𝐼) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊))))

Proof of Theorem cshwidxmod
StepHypRef Expression
1 elfzo0 12548 . . . 4 (𝐼 ∈ (0..^(#‘𝑊)) ↔ (𝐼 ∈ ℕ0 ∧ (#‘𝑊) ∈ ℕ ∧ 𝐼 < (#‘𝑊)))
2 nnne0 11091 . . . . . 6 ((#‘𝑊) ∈ ℕ → (#‘𝑊) ≠ 0)
3 eqneqall 2834 . . . . . . 7 ((#‘𝑊) = 0 → ((#‘𝑊) ≠ 0 → ((𝑊 cyclShift 𝑁)‘𝐼) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊)))))
43com12 32 . . . . . 6 ((#‘𝑊) ≠ 0 → ((#‘𝑊) = 0 → ((𝑊 cyclShift 𝑁)‘𝐼) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊)))))
52, 4syl 17 . . . . 5 ((#‘𝑊) ∈ ℕ → ((#‘𝑊) = 0 → ((𝑊 cyclShift 𝑁)‘𝐼) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊)))))
653ad2ant2 1103 . . . 4 ((𝐼 ∈ ℕ0 ∧ (#‘𝑊) ∈ ℕ ∧ 𝐼 < (#‘𝑊)) → ((#‘𝑊) = 0 → ((𝑊 cyclShift 𝑁)‘𝐼) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊)))))
71, 6sylbi 207 . . 3 (𝐼 ∈ (0..^(#‘𝑊)) → ((#‘𝑊) = 0 → ((𝑊 cyclShift 𝑁)‘𝐼) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊)))))
873ad2ant3 1104 . 2 ((𝑊 ∈ Word 𝑉𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))) → ((#‘𝑊) = 0 → ((𝑊 cyclShift 𝑁)‘𝐼) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊)))))
9 lencl 13356 . . . . 5 (𝑊 ∈ Word 𝑉 → (#‘𝑊) ∈ ℕ0)
10 elnnne0 11344 . . . . . . . 8 ((#‘𝑊) ∈ ℕ ↔ ((#‘𝑊) ∈ ℕ0 ∧ (#‘𝑊) ≠ 0))
11 simpl 472 . . . . . . . . . . . . . 14 ((𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))) → 𝑁 ∈ ℤ)
1211adantl 481 . . . . . . . . . . . . 13 (((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))) → 𝑁 ∈ ℤ)
13 cshword 13583 . . . . . . . . . . . . 13 ((𝑊 ∈ Word 𝑉𝑁 ∈ ℤ) → (𝑊 cyclShift 𝑁) = ((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ++ (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩)))
1412, 13sylan2 490 . . . . . . . . . . . 12 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (𝑊 cyclShift 𝑁) = ((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ++ (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩)))
1514fveq1d 6231 . . . . . . . . . . 11 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → ((𝑊 cyclShift 𝑁)‘𝐼) = (((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ++ (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))‘𝐼))
16 swrdcl 13464 . . . . . . . . . . . . . . . . 17 (𝑊 ∈ Word 𝑉 → (𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ∈ Word 𝑉)
1716adantr 480 . . . . . . . . . . . . . . . 16 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ∈ Word 𝑉)
1817adantl 481 . . . . . . . . . . . . . . 15 ((𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) ∧ (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))))) → (𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ∈ Word 𝑉)
19 swrdcl 13464 . . . . . . . . . . . . . . . . 17 (𝑊 ∈ Word 𝑉 → (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩) ∈ Word 𝑉)
2019adantr 480 . . . . . . . . . . . . . . . 16 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩) ∈ Word 𝑉)
2120adantl 481 . . . . . . . . . . . . . . 15 ((𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) ∧ (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))))) → (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩) ∈ Word 𝑉)
22 simpl 472 . . . . . . . . . . . . . . . . . . . 20 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → 𝑊 ∈ Word 𝑉)
2311anim2i 592 . . . . . . . . . . . . . . . . . . . . . . 23 (((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))) → ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ))
2423ancomd 466 . . . . . . . . . . . . . . . . . . . . . 22 (((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))) → (𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ))
25 zmodfzp1 12734 . . . . . . . . . . . . . . . . . . . . . 22 ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → (𝑁 mod (#‘𝑊)) ∈ (0...(#‘𝑊)))
2624, 25syl 17 . . . . . . . . . . . . . . . . . . . . 21 (((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))) → (𝑁 mod (#‘𝑊)) ∈ (0...(#‘𝑊)))
2726adantl 481 . . . . . . . . . . . . . . . . . . . 20 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (𝑁 mod (#‘𝑊)) ∈ (0...(#‘𝑊)))
28 nn0fz0 12476 . . . . . . . . . . . . . . . . . . . . . 22 ((#‘𝑊) ∈ ℕ0 ↔ (#‘𝑊) ∈ (0...(#‘𝑊)))
299, 28sylib 208 . . . . . . . . . . . . . . . . . . . . 21 (𝑊 ∈ Word 𝑉 → (#‘𝑊) ∈ (0...(#‘𝑊)))
3029adantr 480 . . . . . . . . . . . . . . . . . . . 20 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (#‘𝑊) ∈ (0...(#‘𝑊)))
31 swrdlen 13468 . . . . . . . . . . . . . . . . . . . 20 ((𝑊 ∈ Word 𝑉 ∧ (𝑁 mod (#‘𝑊)) ∈ (0...(#‘𝑊)) ∧ (#‘𝑊) ∈ (0...(#‘𝑊))) → (#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)) = ((#‘𝑊) − (𝑁 mod (#‘𝑊))))
3222, 27, 30, 31syl3anc 1366 . . . . . . . . . . . . . . . . . . 19 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)) = ((#‘𝑊) − (𝑁 mod (#‘𝑊))))
3332eqcomd 2657 . . . . . . . . . . . . . . . . . 18 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → ((#‘𝑊) − (𝑁 mod (#‘𝑊))) = (#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)))
34 swrd0len 13467 . . . . . . . . . . . . . . . . . . . . 21 ((𝑊 ∈ Word 𝑉 ∧ (𝑁 mod (#‘𝑊)) ∈ (0...(#‘𝑊))) → (#‘(𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩)) = (𝑁 mod (#‘𝑊)))
3526, 34sylan2 490 . . . . . . . . . . . . . . . . . . . 20 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (#‘(𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩)) = (𝑁 mod (#‘𝑊)))
3635eqcomd 2657 . . . . . . . . . . . . . . . . . . 19 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (𝑁 mod (#‘𝑊)) = (#‘(𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩)))
3733, 36oveq12d 6708 . . . . . . . . . . . . . . . . . 18 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊))) = ((#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)) + (#‘(𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))))
3833, 37oveq12d 6708 . . . . . . . . . . . . . . . . 17 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) = ((#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩))..^((#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)) + (#‘(𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩)))))
3938eleq2d 2716 . . . . . . . . . . . . . . . 16 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) ↔ 𝐼 ∈ ((#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩))..^((#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)) + (#‘(𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))))))
4039biimpac 502 . . . . . . . . . . . . . . 15 ((𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) ∧ (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))))) → 𝐼 ∈ ((#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩))..^((#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)) + (#‘(𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩)))))
41 ccatval2 13396 . . . . . . . . . . . . . . 15 (((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ∈ Word 𝑉 ∧ (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩) ∈ Word 𝑉𝐼 ∈ ((#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩))..^((#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)) + (#‘(𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))))) → (((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ++ (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))‘𝐼) = ((𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩)‘(𝐼 − (#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)))))
4218, 21, 40, 41syl3anc 1366 . . . . . . . . . . . . . 14 ((𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) ∧ (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))))) → (((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ++ (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))‘𝐼) = ((𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩)‘(𝐼 − (#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)))))
4322adantl 481 . . . . . . . . . . . . . . . . 17 ((𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) ∧ (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))))) → 𝑊 ∈ Word 𝑉)
4427adantl 481 . . . . . . . . . . . . . . . . 17 ((𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) ∧ (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))))) → (𝑁 mod (#‘𝑊)) ∈ (0...(#‘𝑊)))
4530adantl 481 . . . . . . . . . . . . . . . . 17 ((𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) ∧ (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))))) → (#‘𝑊) ∈ (0...(#‘𝑊)))
4643, 44, 45, 31syl3anc 1366 . . . . . . . . . . . . . . . 16 ((𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) ∧ (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))))) → (#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)) = ((#‘𝑊) − (𝑁 mod (#‘𝑊))))
4746oveq2d 6706 . . . . . . . . . . . . . . 15 ((𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) ∧ (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))))) → (𝐼 − (#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩))) = (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))))
4847fveq2d 6233 . . . . . . . . . . . . . 14 ((𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) ∧ (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))))) → ((𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩)‘(𝐼 − (#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)))) = ((𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩)‘(𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊))))))
49 elfzo2 12512 . . . . . . . . . . . . . . . . . . . . . . 23 (𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) ↔ (𝐼 ∈ (ℤ‘((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∧ (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊))) ∈ ℤ ∧ 𝐼 < (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))))
50 eluz2 11731 . . . . . . . . . . . . . . . . . . . . . . . . . 26 (𝐼 ∈ (ℤ‘((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ↔ (((#‘𝑊) − (𝑁 mod (#‘𝑊))) ∈ ℤ ∧ 𝐼 ∈ ℤ ∧ ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ≤ 𝐼))
51 simpl 472 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 ((𝐼 ∈ ℤ ∧ (𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ)) → 𝐼 ∈ ℤ)
52 nnz 11437 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 ((#‘𝑊) ∈ ℕ → (#‘𝑊) ∈ ℤ)
5352adantl 481 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → (#‘𝑊) ∈ ℤ)
54 zmodcl 12730 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → (𝑁 mod (#‘𝑊)) ∈ ℕ0)
5554nn0zd 11518 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → (𝑁 mod (#‘𝑊)) ∈ ℤ)
5653, 55zsubcld 11525 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ∈ ℤ)
5756adantl 481 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 ((𝐼 ∈ ℤ ∧ (𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ)) → ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ∈ ℤ)
5851, 57zsubcld 11525 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 ((𝐼 ∈ ℤ ∧ (𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ)) → (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∈ ℤ)
5958adantlr 751 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 (((𝐼 ∈ ℤ ∧ ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ≤ 𝐼) ∧ (𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ)) → (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∈ ℤ)
60 zre 11419 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 (𝐼 ∈ ℤ → 𝐼 ∈ ℝ)
61 nnre 11065 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 ((#‘𝑊) ∈ ℕ → (#‘𝑊) ∈ ℝ)
6261adantl 481 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → (#‘𝑊) ∈ ℝ)
6354nn0red 11390 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → (𝑁 mod (#‘𝑊)) ∈ ℝ)
6462, 63resubcld 10496 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ∈ ℝ)
65 subge0 10579 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 ((𝐼 ∈ ℝ ∧ ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ∈ ℝ) → (0 ≤ (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ↔ ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ≤ 𝐼))
6660, 64, 65syl2an 493 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 ((𝐼 ∈ ℤ ∧ (𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ)) → (0 ≤ (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ↔ ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ≤ 𝐼))
6766exbiri 651 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 (𝐼 ∈ ℤ → ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → (((#‘𝑊) − (𝑁 mod (#‘𝑊))) ≤ 𝐼 → 0 ≤ (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))))))
6867com23 86 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 (𝐼 ∈ ℤ → (((#‘𝑊) − (𝑁 mod (#‘𝑊))) ≤ 𝐼 → ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → 0 ≤ (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))))))
6968imp31 447 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 (((𝐼 ∈ ℤ ∧ ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ≤ 𝐼) ∧ (𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ)) → 0 ≤ (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))))
70 elnn0uz 11763 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 ((𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∈ ℕ0 ↔ (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∈ (ℤ‘0))
71 elnn0z 11428 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 ((𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∈ ℕ0 ↔ ((𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∈ ℤ ∧ 0 ≤ (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊))))))
7270, 71bitr3i 266 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 ((𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∈ (ℤ‘0) ↔ ((𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∈ ℤ ∧ 0 ≤ (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊))))))
7359, 69, 72sylanbrc 699 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 (((𝐼 ∈ ℤ ∧ ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ≤ 𝐼) ∧ (𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ)) → (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∈ (ℤ‘0))
7473adantlr 751 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 ((((𝐼 ∈ ℤ ∧ ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ≤ 𝐼) ∧ 𝐼 < (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) ∧ (𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ)) → (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∈ (ℤ‘0))
7555adantl 481 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 ((((𝐼 ∈ ℤ ∧ ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ≤ 𝐼) ∧ 𝐼 < (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) ∧ (𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ)) → (𝑁 mod (#‘𝑊)) ∈ ℤ)
7660adantr 480 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 ((𝐼 ∈ ℤ ∧ (𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ)) → 𝐼 ∈ ℝ)
7764adantl 481 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 ((𝐼 ∈ ℤ ∧ (𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ)) → ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ∈ ℝ)
7863adantl 481 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 ((𝐼 ∈ ℤ ∧ (𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ)) → (𝑁 mod (#‘𝑊)) ∈ ℝ)
7976, 77, 783jca 1261 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 ((𝐼 ∈ ℤ ∧ (𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ)) → (𝐼 ∈ ℝ ∧ ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ∈ ℝ ∧ (𝑁 mod (#‘𝑊)) ∈ ℝ))
8079adantlr 751 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 (((𝐼 ∈ ℤ ∧ ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ≤ 𝐼) ∧ (𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ)) → (𝐼 ∈ ℝ ∧ ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ∈ ℝ ∧ (𝑁 mod (#‘𝑊)) ∈ ℝ))
81 ltsubadd2 10537 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 ((𝐼 ∈ ℝ ∧ ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ∈ ℝ ∧ (𝑁 mod (#‘𝑊)) ∈ ℝ) → ((𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) < (𝑁 mod (#‘𝑊)) ↔ 𝐼 < (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))))
8280, 81syl 17 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 (((𝐼 ∈ ℤ ∧ ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ≤ 𝐼) ∧ (𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ)) → ((𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) < (𝑁 mod (#‘𝑊)) ↔ 𝐼 < (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))))
8382exbiri 651 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 ((𝐼 ∈ ℤ ∧ ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ≤ 𝐼) → ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → (𝐼 < (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊))) → (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) < (𝑁 mod (#‘𝑊)))))
8483com23 86 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 ((𝐼 ∈ ℤ ∧ ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ≤ 𝐼) → (𝐼 < (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊))) → ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) < (𝑁 mod (#‘𝑊)))))
8584imp31 447 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 ((((𝐼 ∈ ℤ ∧ ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ≤ 𝐼) ∧ 𝐼 < (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) ∧ (𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ)) → (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) < (𝑁 mod (#‘𝑊)))
86 elfzo2 12512 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 ((𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∈ (0..^(𝑁 mod (#‘𝑊))) ↔ ((𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∈ (ℤ‘0) ∧ (𝑁 mod (#‘𝑊)) ∈ ℤ ∧ (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) < (𝑁 mod (#‘𝑊))))
8774, 75, 85, 86syl3anbrc 1265 . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 ((((𝐼 ∈ ℤ ∧ ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ≤ 𝐼) ∧ 𝐼 < (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) ∧ (𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ)) → (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∈ (0..^(𝑁 mod (#‘𝑊))))
8887exp31 629 . . . . . . . . . . . . . . . . . . . . . . . . . . 27 ((𝐼 ∈ ℤ ∧ ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ≤ 𝐼) → (𝐼 < (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊))) → ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∈ (0..^(𝑁 mod (#‘𝑊))))))
89883adant1 1099 . . . . . . . . . . . . . . . . . . . . . . . . . 26 ((((#‘𝑊) − (𝑁 mod (#‘𝑊))) ∈ ℤ ∧ 𝐼 ∈ ℤ ∧ ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ≤ 𝐼) → (𝐼 < (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊))) → ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∈ (0..^(𝑁 mod (#‘𝑊))))))
9050, 89sylbi 207 . . . . . . . . . . . . . . . . . . . . . . . . 25 (𝐼 ∈ (ℤ‘((#‘𝑊) − (𝑁 mod (#‘𝑊)))) → (𝐼 < (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊))) → ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∈ (0..^(𝑁 mod (#‘𝑊))))))
9190imp 444 . . . . . . . . . . . . . . . . . . . . . . . 24 ((𝐼 ∈ (ℤ‘((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∧ 𝐼 < (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) → ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∈ (0..^(𝑁 mod (#‘𝑊)))))
92913adant2 1100 . . . . . . . . . . . . . . . . . . . . . . 23 ((𝐼 ∈ (ℤ‘((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∧ (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊))) ∈ ℤ ∧ 𝐼 < (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) → ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∈ (0..^(𝑁 mod (#‘𝑊)))))
9349, 92sylbi 207 . . . . . . . . . . . . . . . . . . . . . 22 (𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) → ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∈ (0..^(𝑁 mod (#‘𝑊)))))
9493com12 32 . . . . . . . . . . . . . . . . . . . . 21 ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → (𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) → (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∈ (0..^(𝑁 mod (#‘𝑊)))))
9594ex 449 . . . . . . . . . . . . . . . . . . . 20 (𝑁 ∈ ℤ → ((#‘𝑊) ∈ ℕ → (𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) → (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∈ (0..^(𝑁 mod (#‘𝑊))))))
9695adantr 480 . . . . . . . . . . . . . . . . . . 19 ((𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))) → ((#‘𝑊) ∈ ℕ → (𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) → (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∈ (0..^(𝑁 mod (#‘𝑊))))))
9796impcom 445 . . . . . . . . . . . . . . . . . 18 (((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))) → (𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) → (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∈ (0..^(𝑁 mod (#‘𝑊)))))
9897adantl 481 . . . . . . . . . . . . . . . . 17 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) → (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∈ (0..^(𝑁 mod (#‘𝑊)))))
9998impcom 445 . . . . . . . . . . . . . . . 16 ((𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) ∧ (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))))) → (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∈ (0..^(𝑁 mod (#‘𝑊))))
100 swrd0fv 13485 . . . . . . . . . . . . . . . 16 ((𝑊 ∈ Word 𝑉 ∧ (𝑁 mod (#‘𝑊)) ∈ (0...(#‘𝑊)) ∧ (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∈ (0..^(𝑁 mod (#‘𝑊)))) → ((𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩)‘(𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊))))) = (𝑊‘(𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊))))))
10143, 44, 99, 100syl3anc 1366 . . . . . . . . . . . . . . 15 ((𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) ∧ (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))))) → ((𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩)‘(𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊))))) = (𝑊‘(𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊))))))
102 elfzoelz 12509 . . . . . . . . . . . . . . . . . . . . . . . 24 (𝐼 ∈ (0..^(#‘𝑊)) → 𝐼 ∈ ℤ)
103102zcnd 11521 . . . . . . . . . . . . . . . . . . . . . . 23 (𝐼 ∈ (0..^(#‘𝑊)) → 𝐼 ∈ ℂ)
104103adantl 481 . . . . . . . . . . . . . . . . . . . . . 22 ((𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))) → 𝐼 ∈ ℂ)
105104adantl 481 . . . . . . . . . . . . . . . . . . . . 21 (((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))) → 𝐼 ∈ ℂ)
106 nncn 11066 . . . . . . . . . . . . . . . . . . . . . 22 ((#‘𝑊) ∈ ℕ → (#‘𝑊) ∈ ℂ)
107106adantr 480 . . . . . . . . . . . . . . . . . . . . 21 (((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))) → (#‘𝑊) ∈ ℂ)
10824, 54syl 17 . . . . . . . . . . . . . . . . . . . . . 22 (((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))) → (𝑁 mod (#‘𝑊)) ∈ ℕ0)
109108nn0cnd 11391 . . . . . . . . . . . . . . . . . . . . 21 (((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))) → (𝑁 mod (#‘𝑊)) ∈ ℂ)
110105, 107, 1093jca 1261 . . . . . . . . . . . . . . . . . . . 20 (((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))) → (𝐼 ∈ ℂ ∧ (#‘𝑊) ∈ ℂ ∧ (𝑁 mod (#‘𝑊)) ∈ ℂ))
111110adantl 481 . . . . . . . . . . . . . . . . . . 19 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (𝐼 ∈ ℂ ∧ (#‘𝑊) ∈ ℂ ∧ (𝑁 mod (#‘𝑊)) ∈ ℂ))
112111adantl 481 . . . . . . . . . . . . . . . . . 18 ((𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) ∧ (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))))) → (𝐼 ∈ ℂ ∧ (#‘𝑊) ∈ ℂ ∧ (𝑁 mod (#‘𝑊)) ∈ ℂ))
113 subsub3 10351 . . . . . . . . . . . . . . . . . 18 ((𝐼 ∈ ℂ ∧ (#‘𝑊) ∈ ℂ ∧ (𝑁 mod (#‘𝑊)) ∈ ℂ) → (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) = ((𝐼 + (𝑁 mod (#‘𝑊))) − (#‘𝑊)))
114112, 113syl 17 . . . . . . . . . . . . . . . . 17 ((𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) ∧ (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))))) → (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) = ((𝐼 + (𝑁 mod (#‘𝑊))) − (#‘𝑊)))
11524adantl 481 . . . . . . . . . . . . . . . . . . 19 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ))
116115adantl 481 . . . . . . . . . . . . . . . . . 18 ((𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) ∧ (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))))) → (𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ))
117107, 109jca 553 . . . . . . . . . . . . . . . . . . . . . . 23 (((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))) → ((#‘𝑊) ∈ ℂ ∧ (𝑁 mod (#‘𝑊)) ∈ ℂ))
118117adantl 481 . . . . . . . . . . . . . . . . . . . . . 22 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → ((#‘𝑊) ∈ ℂ ∧ (𝑁 mod (#‘𝑊)) ∈ ℂ))
119 npcan 10328 . . . . . . . . . . . . . . . . . . . . . 22 (((#‘𝑊) ∈ ℂ ∧ (𝑁 mod (#‘𝑊)) ∈ ℂ) → (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊))) = (#‘𝑊))
120118, 119syl 17 . . . . . . . . . . . . . . . . . . . . 21 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊))) = (#‘𝑊))
121120oveq2d 6706 . . . . . . . . . . . . . . . . . . . 20 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) = (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊)))
122121eleq2d 2716 . . . . . . . . . . . . . . . . . . 19 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) ↔ 𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊))))
123122biimpac 502 . . . . . . . . . . . . . . . . . 18 ((𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) ∧ (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))))) → 𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊)))
124 modaddmodup 12773 . . . . . . . . . . . . . . . . . 18 ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → (𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊)) → ((𝐼 + (𝑁 mod (#‘𝑊))) − (#‘𝑊)) = ((𝐼 + 𝑁) mod (#‘𝑊))))
125116, 123, 124sylc 65 . . . . . . . . . . . . . . . . 17 ((𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) ∧ (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))))) → ((𝐼 + (𝑁 mod (#‘𝑊))) − (#‘𝑊)) = ((𝐼 + 𝑁) mod (#‘𝑊)))
126114, 125eqtrd 2685 . . . . . . . . . . . . . . . 16 ((𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) ∧ (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))))) → (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) = ((𝐼 + 𝑁) mod (#‘𝑊)))
127126fveq2d 6233 . . . . . . . . . . . . . . 15 ((𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) ∧ (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))))) → (𝑊‘(𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊))))) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊))))
128101, 127eqtrd 2685 . . . . . . . . . . . . . 14 ((𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) ∧ (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))))) → ((𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩)‘(𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊))))) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊))))
12942, 48, 1283eqtrd 2689 . . . . . . . . . . . . 13 ((𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) ∧ (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))))) → (((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ++ (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))‘𝐼) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊))))
130129ex 449 . . . . . . . . . . . 12 (𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) → ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ++ (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))‘𝐼) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊)))))
131106adantl 481 . . . . . . . . . . . . . . . . . . . . . 22 ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → (#‘𝑊) ∈ ℂ)
13254nn0cnd 11391 . . . . . . . . . . . . . . . . . . . . . 22 ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → (𝑁 mod (#‘𝑊)) ∈ ℂ)
133131, 132npcand 10434 . . . . . . . . . . . . . . . . . . . . 21 ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊))) = (#‘𝑊))
134133ex 449 . . . . . . . . . . . . . . . . . . . 20 (𝑁 ∈ ℤ → ((#‘𝑊) ∈ ℕ → (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊))) = (#‘𝑊)))
135134adantr 480 . . . . . . . . . . . . . . . . . . 19 ((𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))) → ((#‘𝑊) ∈ ℕ → (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊))) = (#‘𝑊)))
136135impcom 445 . . . . . . . . . . . . . . . . . 18 (((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))) → (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊))) = (#‘𝑊))
137136adantl 481 . . . . . . . . . . . . . . . . 17 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊))) = (#‘𝑊))
138137oveq2d 6706 . . . . . . . . . . . . . . . 16 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) = (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊)))
139138eleq2d 2716 . . . . . . . . . . . . . . 15 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) ↔ 𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊))))
140139notbid 307 . . . . . . . . . . . . . 14 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (¬ 𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) ↔ ¬ 𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊))))
14117adantr 480 . . . . . . . . . . . . . . . . 17 (((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) ∧ ¬ 𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊))) → (𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ∈ Word 𝑉)
14220adantr 480 . . . . . . . . . . . . . . . . 17 (((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) ∧ ¬ 𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊))) → (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩) ∈ Word 𝑉)
143108nn0zd 11518 . . . . . . . . . . . . . . . . . . . . 21 (((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))) → (𝑁 mod (#‘𝑊)) ∈ ℤ)
144143adantl 481 . . . . . . . . . . . . . . . . . . . 20 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (𝑁 mod (#‘𝑊)) ∈ ℤ)
145 zre 11419 . . . . . . . . . . . . . . . . . . . . . . 23 (𝑁 ∈ ℤ → 𝑁 ∈ ℝ)
146145adantr 480 . . . . . . . . . . . . . . . . . . . . . 22 ((𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))) → 𝑁 ∈ ℝ)
147 nnrp 11880 . . . . . . . . . . . . . . . . . . . . . 22 ((#‘𝑊) ∈ ℕ → (#‘𝑊) ∈ ℝ+)
148 modlt 12719 . . . . . . . . . . . . . . . . . . . . . 22 ((𝑁 ∈ ℝ ∧ (#‘𝑊) ∈ ℝ+) → (𝑁 mod (#‘𝑊)) < (#‘𝑊))
149146, 147, 148syl2anr 494 . . . . . . . . . . . . . . . . . . . . 21 (((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))) → (𝑁 mod (#‘𝑊)) < (#‘𝑊))
150149adantl 481 . . . . . . . . . . . . . . . . . . . 20 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (𝑁 mod (#‘𝑊)) < (#‘𝑊))
151 simprrr 822 . . . . . . . . . . . . . . . . . . . 20 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → 𝐼 ∈ (0..^(#‘𝑊)))
152 fzonfzoufzol 12611 . . . . . . . . . . . . . . . . . . . 20 (((𝑁 mod (#‘𝑊)) ∈ ℤ ∧ (𝑁 mod (#‘𝑊)) < (#‘𝑊) ∧ 𝐼 ∈ (0..^(#‘𝑊))) → (¬ 𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊)) → 𝐼 ∈ (0..^((#‘𝑊) − (𝑁 mod (#‘𝑊))))))
153144, 150, 151, 152syl3anc 1366 . . . . . . . . . . . . . . . . . . 19 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (¬ 𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊)) → 𝐼 ∈ (0..^((#‘𝑊) − (𝑁 mod (#‘𝑊))))))
154153imp 444 . . . . . . . . . . . . . . . . . 18 (((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) ∧ ¬ 𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊))) → 𝐼 ∈ (0..^((#‘𝑊) − (𝑁 mod (#‘𝑊)))))
15522adantr 480 . . . . . . . . . . . . . . . . . . . 20 (((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) ∧ ¬ 𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊))) → 𝑊 ∈ Word 𝑉)
15627adantr 480 . . . . . . . . . . . . . . . . . . . 20 (((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) ∧ ¬ 𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊))) → (𝑁 mod (#‘𝑊)) ∈ (0...(#‘𝑊)))
15730adantr 480 . . . . . . . . . . . . . . . . . . . 20 (((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) ∧ ¬ 𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊))) → (#‘𝑊) ∈ (0...(#‘𝑊)))
158155, 156, 157, 31syl3anc 1366 . . . . . . . . . . . . . . . . . . 19 (((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) ∧ ¬ 𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊))) → (#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)) = ((#‘𝑊) − (𝑁 mod (#‘𝑊))))
159158oveq2d 6706 . . . . . . . . . . . . . . . . . 18 (((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) ∧ ¬ 𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊))) → (0..^(#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩))) = (0..^((#‘𝑊) − (𝑁 mod (#‘𝑊)))))
160154, 159eleqtrrd 2733 . . . . . . . . . . . . . . . . 17 (((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) ∧ ¬ 𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊))) → 𝐼 ∈ (0..^(#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩))))
161 ccatval1 13395 . . . . . . . . . . . . . . . . 17 (((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ∈ Word 𝑉 ∧ (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩) ∈ Word 𝑉𝐼 ∈ (0..^(#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)))) → (((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ++ (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))‘𝐼) = ((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)‘𝐼))
162141, 142, 160, 161syl3anc 1366 . . . . . . . . . . . . . . . 16 (((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) ∧ ¬ 𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊))) → (((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ++ (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))‘𝐼) = ((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)‘𝐼))
16323adantl 481 . . . . . . . . . . . . . . . . . . . 20 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ))
164163ancomd 466 . . . . . . . . . . . . . . . . . . 19 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ))
165164, 25syl 17 . . . . . . . . . . . . . . . . . 18 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (𝑁 mod (#‘𝑊)) ∈ (0...(#‘𝑊)))
166165adantr 480 . . . . . . . . . . . . . . . . 17 (((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) ∧ ¬ 𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊))) → (𝑁 mod (#‘𝑊)) ∈ (0...(#‘𝑊)))
167 swrdfv 13469 . . . . . . . . . . . . . . . . 17 (((𝑊 ∈ Word 𝑉 ∧ (𝑁 mod (#‘𝑊)) ∈ (0...(#‘𝑊)) ∧ (#‘𝑊) ∈ (0...(#‘𝑊))) ∧ 𝐼 ∈ (0..^((#‘𝑊) − (𝑁 mod (#‘𝑊))))) → ((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)‘𝐼) = (𝑊‘(𝐼 + (𝑁 mod (#‘𝑊)))))
168155, 166, 157, 154, 167syl31anc 1369 . . . . . . . . . . . . . . . 16 (((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) ∧ ¬ 𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊))) → ((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)‘𝐼) = (𝑊‘(𝐼 + (𝑁 mod (#‘𝑊)))))
169115adantr 480 . . . . . . . . . . . . . . . . . 18 (((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) ∧ ¬ 𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊))) → (𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ))
17054ancoms 468 . . . . . . . . . . . . . . . . . . . . . . 23 (((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ) → (𝑁 mod (#‘𝑊)) ∈ ℕ0)
171170nn0zd 11518 . . . . . . . . . . . . . . . . . . . . . 22 (((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ) → (𝑁 mod (#‘𝑊)) ∈ ℤ)
172171adantrr 753 . . . . . . . . . . . . . . . . . . . . 21 (((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))) → (𝑁 mod (#‘𝑊)) ∈ ℤ)
173172adantl 481 . . . . . . . . . . . . . . . . . . . 20 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (𝑁 mod (#‘𝑊)) ∈ ℤ)
174173, 150, 151, 152syl3anc 1366 . . . . . . . . . . . . . . . . . . 19 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (¬ 𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊)) → 𝐼 ∈ (0..^((#‘𝑊) − (𝑁 mod (#‘𝑊))))))
175174imp 444 . . . . . . . . . . . . . . . . . 18 (((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) ∧ ¬ 𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊))) → 𝐼 ∈ (0..^((#‘𝑊) − (𝑁 mod (#‘𝑊)))))
176 modaddmodlo 12774 . . . . . . . . . . . . . . . . . 18 ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → (𝐼 ∈ (0..^((#‘𝑊) − (𝑁 mod (#‘𝑊)))) → (𝐼 + (𝑁 mod (#‘𝑊))) = ((𝐼 + 𝑁) mod (#‘𝑊))))
177169, 175, 176sylc 65 . . . . . . . . . . . . . . . . 17 (((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) ∧ ¬ 𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊))) → (𝐼 + (𝑁 mod (#‘𝑊))) = ((𝐼 + 𝑁) mod (#‘𝑊)))
178177fveq2d 6233 . . . . . . . . . . . . . . . 16 (((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) ∧ ¬ 𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊))) → (𝑊‘(𝐼 + (𝑁 mod (#‘𝑊)))) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊))))
179162, 168, 1783eqtrd 2689 . . . . . . . . . . . . . . 15 (((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) ∧ ¬ 𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊))) → (((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ++ (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))‘𝐼) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊))))
180179ex 449 . . . . . . . . . . . . . 14 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (¬ 𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊)) → (((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ++ (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))‘𝐼) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊)))))
181140, 180sylbid 230 . . . . . . . . . . . . 13 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (¬ 𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) → (((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ++ (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))‘𝐼) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊)))))
182181com12 32 . . . . . . . . . . . 12 𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) → ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ++ (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))‘𝐼) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊)))))
183130, 182pm2.61i 176 . . . . . . . . . . 11 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ++ (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))‘𝐼) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊))))
18415, 183eqtrd 2685 . . . . . . . . . 10 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → ((𝑊 cyclShift 𝑁)‘𝐼) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊))))
185184exp32 630 . . . . . . . . 9 (𝑊 ∈ Word 𝑉 → ((#‘𝑊) ∈ ℕ → ((𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))) → ((𝑊 cyclShift 𝑁)‘𝐼) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊))))))
186185com12 32 . . . . . . . 8 ((#‘𝑊) ∈ ℕ → (𝑊 ∈ Word 𝑉 → ((𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))) → ((𝑊 cyclShift 𝑁)‘𝐼) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊))))))
18710, 186sylbir 225 . . . . . . 7 (((#‘𝑊) ∈ ℕ0 ∧ (#‘𝑊) ≠ 0) → (𝑊 ∈ Word 𝑉 → ((𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))) → ((𝑊 cyclShift 𝑁)‘𝐼) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊))))))
188187ex 449 . . . . . 6 ((#‘𝑊) ∈ ℕ0 → ((#‘𝑊) ≠ 0 → (𝑊 ∈ Word 𝑉 → ((𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))) → ((𝑊 cyclShift 𝑁)‘𝐼) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊)))))))
189188com23 86 . . . . 5 ((#‘𝑊) ∈ ℕ0 → (𝑊 ∈ Word 𝑉 → ((#‘𝑊) ≠ 0 → ((𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))) → ((𝑊 cyclShift 𝑁)‘𝐼) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊)))))))
1909, 189mpcom 38 . . . 4 (𝑊 ∈ Word 𝑉 → ((#‘𝑊) ≠ 0 → ((𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))) → ((𝑊 cyclShift 𝑁)‘𝐼) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊))))))
191190com23 86 . . 3 (𝑊 ∈ Word 𝑉 → ((𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))) → ((#‘𝑊) ≠ 0 → ((𝑊 cyclShift 𝑁)‘𝐼) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊))))))
1921913impib 1281 . 2 ((𝑊 ∈ Word 𝑉𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))) → ((#‘𝑊) ≠ 0 → ((𝑊 cyclShift 𝑁)‘𝐼) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊)))))
1938, 192pm2.61dne 2909 1 ((𝑊 ∈ Word 𝑉𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))) → ((𝑊 cyclShift 𝑁)‘𝐼) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊))))
 Colors of variables: wff setvar class Syntax hints:  ¬ wn 3   → wi 4   ↔ wb 196   ∧ wa 383   ∧ w3a 1054   = wceq 1523   ∈ wcel 2030   ≠ wne 2823  ⟨cop 4216   class class class wbr 4685  ‘cfv 5926  (class class class)co 6690  ℂcc 9972  ℝcr 9973  0cc0 9974   + caddc 9977   < clt 10112   ≤ cle 10113   − cmin 10304  ℕcn 11058  ℕ0cn0 11330  ℤcz 11415  ℤ≥cuz 11725  ℝ+crp 11870  ...cfz 12364  ..^cfzo 12504   mod cmo 12708  #chash 13157  Word cword 13323   ++ cconcat 13325   substr csubstr 13327   cyclShift ccsh 13580 This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1762  ax-4 1777  ax-5 1879  ax-6 1945  ax-7 1981  ax-8 2032  ax-9 2039  ax-10 2059  ax-11 2074  ax-12 2087  ax-13 2282  ax-ext 2631  ax-rep 4804  ax-sep 4814  ax-nul 4822  ax-pow 4873  ax-pr 4936  ax-un 6991  ax-cnex 10030  ax-resscn 10031  ax-1cn 10032  ax-icn 10033  ax-addcl 10034  ax-addrcl 10035  ax-mulcl 10036  ax-mulrcl 10037  ax-mulcom 10038  ax-addass 10039  ax-mulass 10040  ax-distr 10041  ax-i2m1 10042  ax-1ne0 10043  ax-1rid 10044  ax-rnegex 10045  ax-rrecex 10046  ax-cnre 10047  ax-pre-lttri 10048  ax-pre-lttrn 10049  ax-pre-ltadd 10050  ax-pre-mulgt0 10051  ax-pre-sup 10052 This theorem depends on definitions:  df-bi 197  df-or 384  df-an 385  df-3or 1055  df-3an 1056  df-tru 1526  df-ex 1745  df-nf 1750  df-sb 1938  df-eu 2502  df-mo 2503  df-clab 2638  df-cleq 2644  df-clel 2647  df-nfc 2782  df-ne 2824  df-nel 2927  df-ral 2946  df-rex 2947  df-reu 2948  df-rmo 2949  df-rab 2950  df-v 3233  df-sbc 3469  df-csb 3567  df-dif 3610  df-un 3612  df-in 3614  df-ss 3621  df-pss 3623  df-nul 3949  df-if 4120  df-pw 4193  df-sn 4211  df-pr 4213  df-tp 4215  df-op 4217  df-uni 4469  df-int 4508  df-iun 4554  df-br 4686  df-opab 4746  df-mpt 4763  df-tr 4786  df-id 5053  df-eprel 5058  df-po 5064  df-so 5065  df-fr 5102  df-we 5104  df-xp 5149  df-rel 5150  df-cnv 5151  df-co 5152  df-dm 5153  df-rn 5154  df-res 5155  df-ima 5156  df-pred 5718  df-ord 5764  df-on 5765  df-lim 5766  df-suc 5767  df-iota 5889  df-fun 5928  df-fn 5929  df-f 5930  df-f1 5931  df-fo 5932  df-f1o 5933  df-fv 5934  df-riota 6651  df-ov 6693  df-oprab 6694  df-mpt2 6695  df-om 7108  df-1st 7210  df-2nd 7211  df-wrecs 7452  df-recs 7513  df-rdg 7551  df-1o 7605  df-oadd 7609  df-er 7787  df-en 7998  df-dom 7999  df-sdom 8000  df-fin 8001  df-sup 8389  df-inf 8390  df-card 8803  df-pnf 10114  df-mnf 10115  df-xr 10116  df-ltxr 10117  df-le 10118  df-sub 10306  df-neg 10307  df-div 10723  df-nn 11059  df-2 11117  df-n0 11331  df-z 11416  df-uz 11726  df-rp 11871  df-fz 12365  df-fzo 12505  df-fl 12633  df-mod 12709  df-hash 13158  df-word 13331  df-concat 13333  df-substr 13335  df-csh 13581 This theorem is referenced by:  cshwidxmodr  13596  cshwidx0mod  13597  cshwidxm1  13599  cshwidxm  13600  cshwidxn  13601  cshf1  13602  2cshw  13605  cshweqrep  13613  cshimadifsn  13621  cshimadifsn0  13622  cshco  13628  crctcshwlkn0lem4  26761  crctcshwlkn0lem5  26762  crctcshwlkn0lem6  26763  clwwisshclwwslem  26971  eucrctshift  27221
 Copyright terms: Public domain W3C validator