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

Theorem cshwidxmod 13400
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 12376 . . . 4 (𝐼 ∈ (0..^(#‘𝑊)) ↔ (𝐼 ∈ ℕ0 ∧ (#‘𝑊) ∈ ℕ ∧ 𝐼 < (#‘𝑊)))
2 nnne0 10930 . . . . . 6 ((#‘𝑊) ∈ ℕ → (#‘𝑊) ≠ 0)
3 eqneqall 2793 . . . . . . 7 ((#‘𝑊) = 0 → ((#‘𝑊) ≠ 0 → ((𝑊 cyclShift 𝑁)‘𝐼) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊)))))
43com12 32 . . . . . 6 ((#‘𝑊) ≠ 0 → ((#‘𝑊) = 0 → ((𝑊 cyclShift 𝑁)‘𝐼) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊)))))
52, 4syl 17 . . . . 5 ((#‘𝑊) ∈ ℕ → ((#‘𝑊) = 0 → ((𝑊 cyclShift 𝑁)‘𝐼) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊)))))
653ad2ant2 1076 . . . 4 ((𝐼 ∈ ℕ0 ∧ (#‘𝑊) ∈ ℕ ∧ 𝐼 < (#‘𝑊)) → ((#‘𝑊) = 0 → ((𝑊 cyclShift 𝑁)‘𝐼) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊)))))
71, 6sylbi 206 . . 3 (𝐼 ∈ (0..^(#‘𝑊)) → ((#‘𝑊) = 0 → ((𝑊 cyclShift 𝑁)‘𝐼) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊)))))
873ad2ant3 1077 . 2 ((𝑊 ∈ Word 𝑉𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))) → ((#‘𝑊) = 0 → ((𝑊 cyclShift 𝑁)‘𝐼) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊)))))
9 lencl 13179 . . . . 5 (𝑊 ∈ Word 𝑉 → (#‘𝑊) ∈ ℕ0)
10 elnnne0 11183 . . . . . . . 8 ((#‘𝑊) ∈ ℕ ↔ ((#‘𝑊) ∈ ℕ0 ∧ (#‘𝑊) ≠ 0))
11 simpl 472 . . . . . . . . . . . . . 14 ((𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))) → 𝑁 ∈ ℤ)
1211adantl 481 . . . . . . . . . . . . 13 (((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))) → 𝑁 ∈ ℤ)
13 cshword 13388 . . . . . . . . . . . . 13 ((𝑊 ∈ Word 𝑉𝑁 ∈ ℤ) → (𝑊 cyclShift 𝑁) = ((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ++ (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩)))
1412, 13sylan2 490 . . . . . . . . . . . 12 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (𝑊 cyclShift 𝑁) = ((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ++ (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩)))
1514fveq1d 6105 . . . . . . . . . . 11 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → ((𝑊 cyclShift 𝑁)‘𝐼) = (((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ++ (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))‘𝐼))
16 swrdcl 13271 . . . . . . . . . . . . . . . . 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 13271 . . . . . . . . . . . . . . . . 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 591 . . . . . . . . . . . . . . . . . . . . . . 23 (((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))) → ((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ))
2423ancomd 466 . . . . . . . . . . . . . . . . . . . . . 22 (((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))) → (𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ))
25 zmodfzp1 12556 . . . . . . . . . . . . . . . . . . . . . 22 ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → (𝑁 mod (#‘𝑊)) ∈ (0...(#‘𝑊)))
2624, 25syl 17 . . . . . . . . . . . . . . . . . . . . 21 (((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))) → (𝑁 mod (#‘𝑊)) ∈ (0...(#‘𝑊)))
2726adantl 481 . . . . . . . . . . . . . . . . . . . 20 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (𝑁 mod (#‘𝑊)) ∈ (0...(#‘𝑊)))
28 nn0fz0 12306 . . . . . . . . . . . . . . . . . . . . . 22 ((#‘𝑊) ∈ ℕ0 ↔ (#‘𝑊) ∈ (0...(#‘𝑊)))
299, 28sylib 207 . . . . . . . . . . . . . . . . . . . . 21 (𝑊 ∈ Word 𝑉 → (#‘𝑊) ∈ (0...(#‘𝑊)))
3029adantr 480 . . . . . . . . . . . . . . . . . . . 20 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (#‘𝑊) ∈ (0...(#‘𝑊)))
31 swrdlen 13275 . . . . . . . . . . . . . . . . . . . 20 ((𝑊 ∈ Word 𝑉 ∧ (𝑁 mod (#‘𝑊)) ∈ (0...(#‘𝑊)) ∧ (#‘𝑊) ∈ (0...(#‘𝑊))) → (#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)) = ((#‘𝑊) − (𝑁 mod (#‘𝑊))))
3222, 27, 30, 31syl3anc 1318 . . . . . . . . . . . . . . . . . . 19 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)) = ((#‘𝑊) − (𝑁 mod (#‘𝑊))))
3332eqcomd 2616 . . . . . . . . . . . . . . . . . 18 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → ((#‘𝑊) − (𝑁 mod (#‘𝑊))) = (#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)))
34 swrd0len 13274 . . . . . . . . . . . . . . . . . . . . 21 ((𝑊 ∈ Word 𝑉 ∧ (𝑁 mod (#‘𝑊)) ∈ (0...(#‘𝑊))) → (#‘(𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩)) = (𝑁 mod (#‘𝑊)))
3526, 34sylan2 490 . . . . . . . . . . . . . . . . . . . 20 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (#‘(𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩)) = (𝑁 mod (#‘𝑊)))
3635eqcomd 2616 . . . . . . . . . . . . . . . . . . 19 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (𝑁 mod (#‘𝑊)) = (#‘(𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩)))
3733, 36oveq12d 6567 . . . . . . . . . . . . . . . . . 18 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊))) = ((#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)) + (#‘(𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))))
3833, 37oveq12d 6567 . . . . . . . . . . . . . . . . 17 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) = ((#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩))..^((#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)) + (#‘(𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩)))))
3938eleq2d 2673 . . . . . . . . . . . . . . . 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 13215 . . . . . . . . . . . . . . 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 1318 . . . . . . . . . . . . . 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 1318 . . . . . . . . . . . . . . . 16 ((𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) ∧ (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))))) → (#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)) = ((#‘𝑊) − (𝑁 mod (#‘𝑊))))
4746oveq2d 6565 . . . . . . . . . . . . . . 15 ((𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) ∧ (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))))) → (𝐼 − (#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩))) = (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))))
4847fveq2d 6107 . . . . . . . . . . . . . 14 ((𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) ∧ (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))))) → ((𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩)‘(𝐼 − (#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)))) = ((𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩)‘(𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊))))))
49 elfzo2 12342 . . . . . . . . . . . . . . . . . . . . . . 23 (𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) ↔ (𝐼 ∈ (ℤ‘((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∧ (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊))) ∈ ℤ ∧ 𝐼 < (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))))
50 eluz2 11569 . . . . . . . . . . . . . . . . . . . . . . . . . 26 (𝐼 ∈ (ℤ‘((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ↔ (((#‘𝑊) − (𝑁 mod (#‘𝑊))) ∈ ℤ ∧ 𝐼 ∈ ℤ ∧ ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ≤ 𝐼))
51 simpl 472 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 ((𝐼 ∈ ℤ ∧ (𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ)) → 𝐼 ∈ ℤ)
52 nnz 11276 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 ((#‘𝑊) ∈ ℕ → (#‘𝑊) ∈ ℤ)
5352adantl 481 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → (#‘𝑊) ∈ ℤ)
54 zmodcl 12552 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → (𝑁 mod (#‘𝑊)) ∈ ℕ0)
5554nn0zd 11356 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → (𝑁 mod (#‘𝑊)) ∈ ℤ)
5653, 55zsubcld 11363 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ∈ ℤ)
5756adantl 481 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 ((𝐼 ∈ ℤ ∧ (𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ)) → ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ∈ ℤ)
5851, 57zsubcld 11363 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 ((𝐼 ∈ ℤ ∧ (𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ)) → (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∈ ℤ)
5958adantlr 747 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 (((𝐼 ∈ ℤ ∧ ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ≤ 𝐼) ∧ (𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ)) → (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∈ ℤ)
60 zre 11258 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 (𝐼 ∈ ℤ → 𝐼 ∈ ℝ)
61 nnre 10904 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 ((#‘𝑊) ∈ ℕ → (#‘𝑊) ∈ ℝ)
6261adantl 481 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → (#‘𝑊) ∈ ℝ)
6354nn0red 11229 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → (𝑁 mod (#‘𝑊)) ∈ ℝ)
6462, 63resubcld 10337 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ∈ ℝ)
65 subge0 10420 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 ((𝐼 ∈ ℝ ∧ ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ∈ ℝ) → (0 ≤ (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ↔ ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ≤ 𝐼))
6660, 64, 65syl2an 493 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 ((𝐼 ∈ ℤ ∧ (𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ)) → (0 ≤ (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ↔ ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ≤ 𝐼))
6766exbiri 650 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 (𝐼 ∈ ℤ → ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → (((#‘𝑊) − (𝑁 mod (#‘𝑊))) ≤ 𝐼 → 0 ≤ (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))))))
6867com23 84 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 (𝐼 ∈ ℤ → (((#‘𝑊) − (𝑁 mod (#‘𝑊))) ≤ 𝐼 → ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → 0 ≤ (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))))))
6968imp31 447 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 (((𝐼 ∈ ℤ ∧ ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ≤ 𝐼) ∧ (𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ)) → 0 ≤ (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))))
70 elnn0uz 11601 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 ((𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∈ ℕ0 ↔ (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∈ (ℤ‘0))
71 elnn0z 11267 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 ((𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∈ ℕ0 ↔ ((𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∈ ℤ ∧ 0 ≤ (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊))))))
7270, 71bitr3i 265 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 ((𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∈ (ℤ‘0) ↔ ((𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∈ ℤ ∧ 0 ≤ (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊))))))
7359, 69, 72sylanbrc 695 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 (((𝐼 ∈ ℤ ∧ ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ≤ 𝐼) ∧ (𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ)) → (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∈ (ℤ‘0))
7473adantlr 747 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 1235 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 ((𝐼 ∈ ℤ ∧ (𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ)) → (𝐼 ∈ ℝ ∧ ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ∈ ℝ ∧ (𝑁 mod (#‘𝑊)) ∈ ℝ))
8079adantlr 747 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 (((𝐼 ∈ ℤ ∧ ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ≤ 𝐼) ∧ (𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ)) → (𝐼 ∈ ℝ ∧ ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ∈ ℝ ∧ (𝑁 mod (#‘𝑊)) ∈ ℝ))
81 ltsubadd2 10378 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 ((𝐼 ∈ ℝ ∧ ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ∈ ℝ ∧ (𝑁 mod (#‘𝑊)) ∈ ℝ) → ((𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) < (𝑁 mod (#‘𝑊)) ↔ 𝐼 < (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))))
8280, 81syl 17 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 (((𝐼 ∈ ℤ ∧ ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ≤ 𝐼) ∧ (𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ)) → ((𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) < (𝑁 mod (#‘𝑊)) ↔ 𝐼 < (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))))
8382exbiri 650 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 ((𝐼 ∈ ℤ ∧ ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ≤ 𝐼) → ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → (𝐼 < (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊))) → (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) < (𝑁 mod (#‘𝑊)))))
8483com23 84 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 ((𝐼 ∈ ℤ ∧ ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ≤ 𝐼) → (𝐼 < (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊))) → ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) < (𝑁 mod (#‘𝑊)))))
8584imp31 447 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 ((((𝐼 ∈ ℤ ∧ ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ≤ 𝐼) ∧ 𝐼 < (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) ∧ (𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ)) → (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) < (𝑁 mod (#‘𝑊)))
86 elfzo2 12342 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 ((𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∈ (0..^(𝑁 mod (#‘𝑊))) ↔ ((𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∈ (ℤ‘0) ∧ (𝑁 mod (#‘𝑊)) ∈ ℤ ∧ (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) < (𝑁 mod (#‘𝑊))))
8774, 75, 85, 86syl3anbrc 1239 . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 ((((𝐼 ∈ ℤ ∧ ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ≤ 𝐼) ∧ 𝐼 < (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) ∧ (𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ)) → (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∈ (0..^(𝑁 mod (#‘𝑊))))
8887exp31 628 . . . . . . . . . . . . . . . . . . . . . . . . . . 27 ((𝐼 ∈ ℤ ∧ ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ≤ 𝐼) → (𝐼 < (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊))) → ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∈ (0..^(𝑁 mod (#‘𝑊))))))
89883adant1 1072 . . . . . . . . . . . . . . . . . . . . . . . . . 26 ((((#‘𝑊) − (𝑁 mod (#‘𝑊))) ∈ ℤ ∧ 𝐼 ∈ ℤ ∧ ((#‘𝑊) − (𝑁 mod (#‘𝑊))) ≤ 𝐼) → (𝐼 < (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊))) → ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∈ (0..^(𝑁 mod (#‘𝑊))))))
9050, 89sylbi 206 . . . . . . . . . . . . . . . . . . . . . . . . 25 (𝐼 ∈ (ℤ‘((#‘𝑊) − (𝑁 mod (#‘𝑊)))) → (𝐼 < (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊))) → ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∈ (0..^(𝑁 mod (#‘𝑊))))))
9190imp 444 . . . . . . . . . . . . . . . . . . . . . . . 24 ((𝐼 ∈ (ℤ‘((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∧ 𝐼 < (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) → ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∈ (0..^(𝑁 mod (#‘𝑊)))))
92913adant2 1073 . . . . . . . . . . . . . . . . . . . . . . 23 ((𝐼 ∈ (ℤ‘((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∧ (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊))) ∈ ℤ ∧ 𝐼 < (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) → ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∈ (0..^(𝑁 mod (#‘𝑊)))))
9349, 92sylbi 206 . . . . . . . . . . . . . . . . . . . . . 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 13291 . . . . . . . . . . . . . . . 16 ((𝑊 ∈ Word 𝑉 ∧ (𝑁 mod (#‘𝑊)) ∈ (0...(#‘𝑊)) ∧ (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) ∈ (0..^(𝑁 mod (#‘𝑊)))) → ((𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩)‘(𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊))))) = (𝑊‘(𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊))))))
10143, 44, 99, 100syl3anc 1318 . . . . . . . . . . . . . . 15 ((𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) ∧ (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))))) → ((𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩)‘(𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊))))) = (𝑊‘(𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊))))))
102 elfzoelz 12339 . . . . . . . . . . . . . . . . . . . . . . . 24 (𝐼 ∈ (0..^(#‘𝑊)) → 𝐼 ∈ ℤ)
103102zcnd 11359 . . . . . . . . . . . . . . . . . . . . . . 23 (𝐼 ∈ (0..^(#‘𝑊)) → 𝐼 ∈ ℂ)
104103adantl 481 . . . . . . . . . . . . . . . . . . . . . 22 ((𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))) → 𝐼 ∈ ℂ)
105104adantl 481 . . . . . . . . . . . . . . . . . . . . 21 (((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))) → 𝐼 ∈ ℂ)
106 nncn 10905 . . . . . . . . . . . . . . . . . . . . . 22 ((#‘𝑊) ∈ ℕ → (#‘𝑊) ∈ ℂ)
107106adantr 480 . . . . . . . . . . . . . . . . . . . . 21 (((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))) → (#‘𝑊) ∈ ℂ)
10824, 54syl 17 . . . . . . . . . . . . . . . . . . . . . 22 (((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))) → (𝑁 mod (#‘𝑊)) ∈ ℕ0)
109108nn0cnd 11230 . . . . . . . . . . . . . . . . . . . . 21 (((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))) → (𝑁 mod (#‘𝑊)) ∈ ℂ)
110105, 107, 1093jca 1235 . . . . . . . . . . . . . . . . . . . 20 (((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))) → (𝐼 ∈ ℂ ∧ (#‘𝑊) ∈ ℂ ∧ (𝑁 mod (#‘𝑊)) ∈ ℂ))
111110adantl 481 . . . . . . . . . . . . . . . . . . 19 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (𝐼 ∈ ℂ ∧ (#‘𝑊) ∈ ℂ ∧ (𝑁 mod (#‘𝑊)) ∈ ℂ))
112111adantl 481 . . . . . . . . . . . . . . . . . 18 ((𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) ∧ (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))))) → (𝐼 ∈ ℂ ∧ (#‘𝑊) ∈ ℂ ∧ (𝑁 mod (#‘𝑊)) ∈ ℂ))
113 subsub3 10192 . . . . . . . . . . . . . . . . . 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 10169 . . . . . . . . . . . . . . . . . . . . . 22 (((#‘𝑊) ∈ ℂ ∧ (𝑁 mod (#‘𝑊)) ∈ ℂ) → (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊))) = (#‘𝑊))
120118, 119syl 17 . . . . . . . . . . . . . . . . . . . . 21 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊))) = (#‘𝑊))
121120oveq2d 6565 . . . . . . . . . . . . . . . . . . . 20 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) = (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊)))
122121eleq2d 2673 . . . . . . . . . . . . . . . . . . 19 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) ↔ 𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊))))
123122biimpac 502 . . . . . . . . . . . . . . . . . 18 ((𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) ∧ (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))))) → 𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊)))
124 modaddmodup 12595 . . . . . . . . . . . . . . . . . 18 ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → (𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊)) → ((𝐼 + (𝑁 mod (#‘𝑊))) − (#‘𝑊)) = ((𝐼 + 𝑁) mod (#‘𝑊))))
125116, 123, 124sylc 63 . . . . . . . . . . . . . . . . 17 ((𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) ∧ (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))))) → ((𝐼 + (𝑁 mod (#‘𝑊))) − (#‘𝑊)) = ((𝐼 + 𝑁) mod (#‘𝑊)))
126114, 125eqtrd 2644 . . . . . . . . . . . . . . . 16 ((𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) ∧ (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))))) → (𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊)))) = ((𝐼 + 𝑁) mod (#‘𝑊)))
127126fveq2d 6107 . . . . . . . . . . . . . . 15 ((𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) ∧ (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))))) → (𝑊‘(𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊))))) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊))))
128101, 127eqtrd 2644 . . . . . . . . . . . . . 14 ((𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) ∧ (𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))))) → ((𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩)‘(𝐼 − ((#‘𝑊) − (𝑁 mod (#‘𝑊))))) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊))))
12942, 48, 1283eqtrd 2648 . . . . . . . . . . . . 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 11230 . . . . . . . . . . . . . . . . . . . . . 22 ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → (𝑁 mod (#‘𝑊)) ∈ ℂ)
133131, 132npcand 10275 . . . . . . . . . . . . . . . . . . . . 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 6565 . . . . . . . . . . . . . . . 16 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(((#‘𝑊) − (𝑁 mod (#‘𝑊))) + (𝑁 mod (#‘𝑊)))) = (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊)))
139138eleq2d 2673 . . . . . . . . . . . . . . 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 11356 . . . . . . . . . . . . . . . . . . . . 21 (((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))) → (𝑁 mod (#‘𝑊)) ∈ ℤ)
144143adantl 481 . . . . . . . . . . . . . . . . . . . 20 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (𝑁 mod (#‘𝑊)) ∈ ℤ)
145 zre 11258 . . . . . . . . . . . . . . . . . . . . . . 23 (𝑁 ∈ ℤ → 𝑁 ∈ ℝ)
146145adantr 480 . . . . . . . . . . . . . . . . . . . . . 22 ((𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))) → 𝑁 ∈ ℝ)
147 nnrp 11718 . . . . . . . . . . . . . . . . . . . . . 22 ((#‘𝑊) ∈ ℕ → (#‘𝑊) ∈ ℝ+)
148 modlt 12541 . . . . . . . . . . . . . . . . . . . . . 22 ((𝑁 ∈ ℝ ∧ (#‘𝑊) ∈ ℝ+) → (𝑁 mod (#‘𝑊)) < (#‘𝑊))
149146, 147, 148syl2anr 494 . . . . . . . . . . . . . . . . . . . . 21 (((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))) → (𝑁 mod (#‘𝑊)) < (#‘𝑊))
150149adantl 481 . . . . . . . . . . . . . . . . . . . 20 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (𝑁 mod (#‘𝑊)) < (#‘𝑊))
151 simprrr 801 . . . . . . . . . . . . . . . . . . . 20 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → 𝐼 ∈ (0..^(#‘𝑊)))
152 fzonfzoufzol 12437 . . . . . . . . . . . . . . . . . . . 20 (((𝑁 mod (#‘𝑊)) ∈ ℤ ∧ (𝑁 mod (#‘𝑊)) < (#‘𝑊) ∧ 𝐼 ∈ (0..^(#‘𝑊))) → (¬ 𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊)) → 𝐼 ∈ (0..^((#‘𝑊) − (𝑁 mod (#‘𝑊))))))
153144, 150, 151, 152syl3anc 1318 . . . . . . . . . . . . . . . . . . 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 1318 . . . . . . . . . . . . . . . . . . 19 (((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) ∧ ¬ 𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊))) → (#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)) = ((#‘𝑊) − (𝑁 mod (#‘𝑊))))
159158oveq2d 6565 . . . . . . . . . . . . . . . . . 18 (((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) ∧ ¬ 𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊))) → (0..^(#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩))) = (0..^((#‘𝑊) − (𝑁 mod (#‘𝑊)))))
160154, 159eleqtrrd 2691 . . . . . . . . . . . . . . . . 17 (((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) ∧ ¬ 𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊))) → 𝐼 ∈ (0..^(#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩))))
161 ccatval1 13214 . . . . . . . . . . . . . . . . 17 (((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ∈ Word 𝑉 ∧ (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩) ∈ Word 𝑉𝐼 ∈ (0..^(#‘(𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)))) → (((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ++ (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))‘𝐼) = ((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)‘𝐼))
162141, 142, 160, 161syl3anc 1318 . . . . . . . . . . . . . . . 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 13276 . . . . . . . . . . . . . . . . 17 (((𝑊 ∈ Word 𝑉 ∧ (𝑁 mod (#‘𝑊)) ∈ (0...(#‘𝑊)) ∧ (#‘𝑊) ∈ (0...(#‘𝑊))) ∧ 𝐼 ∈ (0..^((#‘𝑊) − (𝑁 mod (#‘𝑊))))) → ((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)‘𝐼) = (𝑊‘(𝐼 + (𝑁 mod (#‘𝑊)))))
168155, 166, 157, 154, 167syl31anc 1321 . . . . . . . . . . . . . . . 16 (((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) ∧ ¬ 𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊))) → ((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩)‘𝐼) = (𝑊‘(𝐼 + (𝑁 mod (#‘𝑊)))))
169115adantr 480 . . . . . . . . . . . . . . . . . 18 (((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) ∧ ¬ 𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊))) → (𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ))
17054ancoms 468 . . . . . . . . . . . . . . . . . . . . . . 23 (((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ) → (𝑁 mod (#‘𝑊)) ∈ ℕ0)
171170nn0zd 11356 . . . . . . . . . . . . . . . . . . . . . 22 (((#‘𝑊) ∈ ℕ ∧ 𝑁 ∈ ℤ) → (𝑁 mod (#‘𝑊)) ∈ ℤ)
172171adantrr 749 . . . . . . . . . . . . . . . . . . . . 21 (((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊)))) → (𝑁 mod (#‘𝑊)) ∈ ℤ)
173172adantl 481 . . . . . . . . . . . . . . . . . . . 20 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (𝑁 mod (#‘𝑊)) ∈ ℤ)
174173, 150, 151, 152syl3anc 1318 . . . . . . . . . . . . . . . . . . 19 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (¬ 𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊)) → 𝐼 ∈ (0..^((#‘𝑊) − (𝑁 mod (#‘𝑊))))))
175174imp 444 . . . . . . . . . . . . . . . . . 18 (((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) ∧ ¬ 𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊))) → 𝐼 ∈ (0..^((#‘𝑊) − (𝑁 mod (#‘𝑊)))))
176 modaddmodlo 12596 . . . . . . . . . . . . . . . . . 18 ((𝑁 ∈ ℤ ∧ (#‘𝑊) ∈ ℕ) → (𝐼 ∈ (0..^((#‘𝑊) − (𝑁 mod (#‘𝑊)))) → (𝐼 + (𝑁 mod (#‘𝑊))) = ((𝐼 + 𝑁) mod (#‘𝑊))))
177169, 175, 176sylc 63 . . . . . . . . . . . . . . . . 17 (((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) ∧ ¬ 𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊))) → (𝐼 + (𝑁 mod (#‘𝑊))) = ((𝐼 + 𝑁) mod (#‘𝑊)))
178177fveq2d 6107 . . . . . . . . . . . . . . . 16 (((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) ∧ ¬ 𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊))) → (𝑊‘(𝐼 + (𝑁 mod (#‘𝑊)))) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊))))
179162, 168, 1783eqtrd 2648 . . . . . . . . . . . . . . 15 (((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) ∧ ¬ 𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊))) → (((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ++ (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))‘𝐼) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊))))
180179ex 449 . . . . . . . . . . . . . 14 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (¬ 𝐼 ∈ (((#‘𝑊) − (𝑁 mod (#‘𝑊)))..^(#‘𝑊)) → (((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ++ (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))‘𝐼) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊)))))
181140, 180sylbid 229 . . . . . . . . . . . . 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 175 . . . . . . . . . . 11 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → (((𝑊 substr ⟨(𝑁 mod (#‘𝑊)), (#‘𝑊)⟩) ++ (𝑊 substr ⟨0, (𝑁 mod (#‘𝑊))⟩))‘𝐼) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊))))
18415, 183eqtrd 2644 . . . . . . . . . 10 ((𝑊 ∈ Word 𝑉 ∧ ((#‘𝑊) ∈ ℕ ∧ (𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))))) → ((𝑊 cyclShift 𝑁)‘𝐼) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊))))
185184exp32 629 . . . . . . . . 9 (𝑊 ∈ Word 𝑉 → ((#‘𝑊) ∈ ℕ → ((𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))) → ((𝑊 cyclShift 𝑁)‘𝐼) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊))))))
186185com12 32 . . . . . . . 8 ((#‘𝑊) ∈ ℕ → (𝑊 ∈ Word 𝑉 → ((𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))) → ((𝑊 cyclShift 𝑁)‘𝐼) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊))))))
18710, 186sylbir 224 . . . . . . 7 (((#‘𝑊) ∈ ℕ0 ∧ (#‘𝑊) ≠ 0) → (𝑊 ∈ Word 𝑉 → ((𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))) → ((𝑊 cyclShift 𝑁)‘𝐼) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊))))))
188187ex 449 . . . . . 6 ((#‘𝑊) ∈ ℕ0 → ((#‘𝑊) ≠ 0 → (𝑊 ∈ Word 𝑉 → ((𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))) → ((𝑊 cyclShift 𝑁)‘𝐼) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊)))))))
189188com23 84 . . . . 5 ((#‘𝑊) ∈ ℕ0 → (𝑊 ∈ Word 𝑉 → ((#‘𝑊) ≠ 0 → ((𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))) → ((𝑊 cyclShift 𝑁)‘𝐼) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊)))))))
1909, 189mpcom 37 . . . 4 (𝑊 ∈ Word 𝑉 → ((#‘𝑊) ≠ 0 → ((𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))) → ((𝑊 cyclShift 𝑁)‘𝐼) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊))))))
191190com23 84 . . 3 (𝑊 ∈ Word 𝑉 → ((𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))) → ((#‘𝑊) ≠ 0 → ((𝑊 cyclShift 𝑁)‘𝐼) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊))))))
1921913impib 1254 . 2 ((𝑊 ∈ Word 𝑉𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))) → ((#‘𝑊) ≠ 0 → ((𝑊 cyclShift 𝑁)‘𝐼) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊)))))
1938, 192pm2.61dne 2868 1 ((𝑊 ∈ Word 𝑉𝑁 ∈ ℤ ∧ 𝐼 ∈ (0..^(#‘𝑊))) → ((𝑊 cyclShift 𝑁)‘𝐼) = (𝑊‘((𝐼 + 𝑁) mod (#‘𝑊))))
Colors of variables: wff setvar class
Syntax hints:  ¬ wn 3  wi 4  wb 195  wa 383  w3a 1031   = wceq 1475  wcel 1977  wne 2780  cop 4131   class class class wbr 4583  cfv 5804  (class class class)co 6549  cc 9813  cr 9814  0cc0 9815   + caddc 9818   < clt 9953  cle 9954  cmin 10145  cn 10897  0cn0 11169  cz 11254  cuz 11563  +crp 11708  ...cfz 12197  ..^cfzo 12334   mod cmo 12530  #chash 12979  Word cword 13146   ++ cconcat 13148   substr csubstr 13150   cyclShift ccsh 13385
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1713  ax-4 1728  ax-5 1827  ax-6 1875  ax-7 1922  ax-8 1979  ax-9 1986  ax-10 2006  ax-11 2021  ax-12 2034  ax-13 2234  ax-ext 2590  ax-rep 4699  ax-sep 4709  ax-nul 4717  ax-pow 4769  ax-pr 4833  ax-un 6847  ax-cnex 9871  ax-resscn 9872  ax-1cn 9873  ax-icn 9874  ax-addcl 9875  ax-addrcl 9876  ax-mulcl 9877  ax-mulrcl 9878  ax-mulcom 9879  ax-addass 9880  ax-mulass 9881  ax-distr 9882  ax-i2m1 9883  ax-1ne0 9884  ax-1rid 9885  ax-rnegex 9886  ax-rrecex 9887  ax-cnre 9888  ax-pre-lttri 9889  ax-pre-lttrn 9890  ax-pre-ltadd 9891  ax-pre-mulgt0 9892  ax-pre-sup 9893
This theorem depends on definitions:  df-bi 196  df-or 384  df-an 385  df-3or 1032  df-3an 1033  df-tru 1478  df-ex 1696  df-nf 1701  df-sb 1868  df-eu 2462  df-mo 2463  df-clab 2597  df-cleq 2603  df-clel 2606  df-nfc 2740  df-ne 2782  df-nel 2783  df-ral 2901  df-rex 2902  df-reu 2903  df-rmo 2904  df-rab 2905  df-v 3175  df-sbc 3403  df-csb 3500  df-dif 3543  df-un 3545  df-in 3547  df-ss 3554  df-pss 3556  df-nul 3875  df-if 4037  df-pw 4110  df-sn 4126  df-pr 4128  df-tp 4130  df-op 4132  df-uni 4373  df-int 4411  df-iun 4457  df-br 4584  df-opab 4644  df-mpt 4645  df-tr 4681  df-eprel 4949  df-id 4953  df-po 4959  df-so 4960  df-fr 4997  df-we 4999  df-xp 5044  df-rel 5045  df-cnv 5046  df-co 5047  df-dm 5048  df-rn 5049  df-res 5050  df-ima 5051  df-pred 5597  df-ord 5643  df-on 5644  df-lim 5645  df-suc 5646  df-iota 5768  df-fun 5806  df-fn 5807  df-f 5808  df-f1 5809  df-fo 5810  df-f1o 5811  df-fv 5812  df-riota 6511  df-ov 6552  df-oprab 6553  df-mpt2 6554  df-om 6958  df-1st 7059  df-2nd 7060  df-wrecs 7294  df-recs 7355  df-rdg 7393  df-1o 7447  df-oadd 7451  df-er 7629  df-en 7842  df-dom 7843  df-sdom 7844  df-fin 7845  df-sup 8231  df-inf 8232  df-card 8648  df-pnf 9955  df-mnf 9956  df-xr 9957  df-ltxr 9958  df-le 9959  df-sub 10147  df-neg 10148  df-div 10564  df-nn 10898  df-2 10956  df-n0 11170  df-z 11255  df-uz 11564  df-rp 11709  df-fz 12198  df-fzo 12335  df-fl 12455  df-mod 12531  df-hash 12980  df-word 13154  df-concat 13156  df-substr 13158  df-csh 13386
This theorem is referenced by:  cshwidxmodr  13401  cshwidx0mod  13402  cshwidxm1  13404  cshwidxm  13405  cshwidxn  13406  cshf1  13407  2cshw  13410  cshweqrep  13418  cshimadifsn  13426  cshimadifsn0  13427  cshco  13433  clwwisshclwwlem  26334  crctcsh1wlkn0lem4  41016  crctcsh1wlkn0lem5  41017  crctcsh1wlkn0lem6  41018  clwwisshclwwslem  41234  eucrctshift  41411
  Copyright terms: Public domain W3C validator