ILE Home Intuitionistic Logic Explorer < Previous   Next >
Nearby theorems
Mirrors  >  Home  >  ILE Home  >  Th. List  >  swrdccatin1 GIF version

Theorem swrdccatin1 11519
Description: The subword of a concatenation of two words within the first of the concatenated words. (Contributed by Alexander van der Vekens, 28-Mar-2018.)
Assertion
Ref Expression
swrdccatin1 ((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) → ((𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝐴))) → ((𝐴 ++ 𝐵) substr ⟨𝑀, 𝑁⟩) = (𝐴 substr ⟨𝑀, 𝑁⟩)))

Proof of Theorem swrdccatin1
Dummy variable 𝑘 is distinct from all other variables.
StepHypRef Expression
1 oveq2 6096 . . . . . 6 ((♯‘𝐴) = 0 → (0...(♯‘𝐴)) = (0...0))
21eleq2d 2308 . . . . 5 ((♯‘𝐴) = 0 → (𝑁 ∈ (0...(♯‘𝐴)) ↔ 𝑁 ∈ (0...0)))
32adantl 277 . . . 4 (((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ (♯‘𝐴) = 0) → (𝑁 ∈ (0...(♯‘𝐴)) ↔ 𝑁 ∈ (0...0)))
4 elfz1eq 10456 . . . . . . 7 (𝑁 ∈ (0...0) → 𝑁 = 0)
5 elfz1eq 10456 . . . . . . . . . . 11 (𝑀 ∈ (0...0) → 𝑀 = 0)
6 ccatcl 11383 . . . . . . . . . . . . . . 15 ((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) → (𝐴 ++ 𝐵) ∈ Word 𝑉)
7 0z 9666 . . . . . . . . . . . . . . 15 0 ∈ ℤ
8 swrd00g 11443 . . . . . . . . . . . . . . 15 (((𝐴 ++ 𝐵) ∈ Word 𝑉 ∧ 0 ∈ ℤ) → ((𝐴 ++ 𝐵) substr ⟨0, 0⟩) = ∅)
96, 7, 8sylancl 417 . . . . . . . . . . . . . 14 ((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) → ((𝐴 ++ 𝐵) substr ⟨0, 0⟩) = ∅)
10 simpl 109 . . . . . . . . . . . . . . 15 ((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) → 𝐴 ∈ Word 𝑉)
11 swrd00g 11443 . . . . . . . . . . . . . . 15 ((𝐴 ∈ Word 𝑉 ∧ 0 ∈ ℤ) → (𝐴 substr ⟨0, 0⟩) = ∅)
1210, 7, 11sylancl 417 . . . . . . . . . . . . . 14 ((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) → (𝐴 substr ⟨0, 0⟩) = ∅)
139, 12eqtr4d 2274 . . . . . . . . . . . . 13 ((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) → ((𝐴 ++ 𝐵) substr ⟨0, 0⟩) = (𝐴 substr ⟨0, 0⟩))
1413adantr 276 . . . . . . . . . . . 12 (((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ 𝑀 = 0) → ((𝐴 ++ 𝐵) substr ⟨0, 0⟩) = (𝐴 substr ⟨0, 0⟩))
15 opeq1 3904 . . . . . . . . . . . . . 14 (𝑀 = 0 → ⟨𝑀, 0⟩ = ⟨0, 0⟩)
1615oveq2d 6104 . . . . . . . . . . . . 13 (𝑀 = 0 → ((𝐴 ++ 𝐵) substr ⟨𝑀, 0⟩) = ((𝐴 ++ 𝐵) substr ⟨0, 0⟩))
1716adantl 277 . . . . . . . . . . . 12 (((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ 𝑀 = 0) → ((𝐴 ++ 𝐵) substr ⟨𝑀, 0⟩) = ((𝐴 ++ 𝐵) substr ⟨0, 0⟩))
1815oveq2d 6104 . . . . . . . . . . . . 13 (𝑀 = 0 → (𝐴 substr ⟨𝑀, 0⟩) = (𝐴 substr ⟨0, 0⟩))
1918adantl 277 . . . . . . . . . . . 12 (((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ 𝑀 = 0) → (𝐴 substr ⟨𝑀, 0⟩) = (𝐴 substr ⟨0, 0⟩))
2014, 17, 193eqtr4d 2281 . . . . . . . . . . 11 (((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ 𝑀 = 0) → ((𝐴 ++ 𝐵) substr ⟨𝑀, 0⟩) = (𝐴 substr ⟨𝑀, 0⟩))
215, 20sylan2 286 . . . . . . . . . 10 (((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ 𝑀 ∈ (0...0)) → ((𝐴 ++ 𝐵) substr ⟨𝑀, 0⟩) = (𝐴 substr ⟨𝑀, 0⟩))
2221ex 115 . . . . . . . . 9 ((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) → (𝑀 ∈ (0...0) → ((𝐴 ++ 𝐵) substr ⟨𝑀, 0⟩) = (𝐴 substr ⟨𝑀, 0⟩)))
2322adantr 276 . . . . . . . 8 (((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ 𝑁 = 0) → (𝑀 ∈ (0...0) → ((𝐴 ++ 𝐵) substr ⟨𝑀, 0⟩) = (𝐴 substr ⟨𝑀, 0⟩)))
24 oveq2 6096 . . . . . . . . . . 11 (𝑁 = 0 → (0...𝑁) = (0...0))
2524eleq2d 2308 . . . . . . . . . 10 (𝑁 = 0 → (𝑀 ∈ (0...𝑁) ↔ 𝑀 ∈ (0...0)))
26 opeq2 3905 . . . . . . . . . . . 12 (𝑁 = 0 → ⟨𝑀, 𝑁⟩ = ⟨𝑀, 0⟩)
2726oveq2d 6104 . . . . . . . . . . 11 (𝑁 = 0 → ((𝐴 ++ 𝐵) substr ⟨𝑀, 𝑁⟩) = ((𝐴 ++ 𝐵) substr ⟨𝑀, 0⟩))
2826oveq2d 6104 . . . . . . . . . . 11 (𝑁 = 0 → (𝐴 substr ⟨𝑀, 𝑁⟩) = (𝐴 substr ⟨𝑀, 0⟩))
2927, 28eqeq12d 2253 . . . . . . . . . 10 (𝑁 = 0 → (((𝐴 ++ 𝐵) substr ⟨𝑀, 𝑁⟩) = (𝐴 substr ⟨𝑀, 𝑁⟩) ↔ ((𝐴 ++ 𝐵) substr ⟨𝑀, 0⟩) = (𝐴 substr ⟨𝑀, 0⟩)))
3025, 29imbi12d 234 . . . . . . . . 9 (𝑁 = 0 → ((𝑀 ∈ (0...𝑁) → ((𝐴 ++ 𝐵) substr ⟨𝑀, 𝑁⟩) = (𝐴 substr ⟨𝑀, 𝑁⟩)) ↔ (𝑀 ∈ (0...0) → ((𝐴 ++ 𝐵) substr ⟨𝑀, 0⟩) = (𝐴 substr ⟨𝑀, 0⟩))))
3130adantl 277 . . . . . . . 8 (((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ 𝑁 = 0) → ((𝑀 ∈ (0...𝑁) → ((𝐴 ++ 𝐵) substr ⟨𝑀, 𝑁⟩) = (𝐴 substr ⟨𝑀, 𝑁⟩)) ↔ (𝑀 ∈ (0...0) → ((𝐴 ++ 𝐵) substr ⟨𝑀, 0⟩) = (𝐴 substr ⟨𝑀, 0⟩))))
3223, 31mpbird 167 . . . . . . 7 (((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ 𝑁 = 0) → (𝑀 ∈ (0...𝑁) → ((𝐴 ++ 𝐵) substr ⟨𝑀, 𝑁⟩) = (𝐴 substr ⟨𝑀, 𝑁⟩)))
334, 32sylan2 286 . . . . . 6 (((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ 𝑁 ∈ (0...0)) → (𝑀 ∈ (0...𝑁) → ((𝐴 ++ 𝐵) substr ⟨𝑀, 𝑁⟩) = (𝐴 substr ⟨𝑀, 𝑁⟩)))
3433ex 115 . . . . 5 ((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) → (𝑁 ∈ (0...0) → (𝑀 ∈ (0...𝑁) → ((𝐴 ++ 𝐵) substr ⟨𝑀, 𝑁⟩) = (𝐴 substr ⟨𝑀, 𝑁⟩))))
3534adantr 276 . . . 4 (((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ (♯‘𝐴) = 0) → (𝑁 ∈ (0...0) → (𝑀 ∈ (0...𝑁) → ((𝐴 ++ 𝐵) substr ⟨𝑀, 𝑁⟩) = (𝐴 substr ⟨𝑀, 𝑁⟩))))
363, 35sylbid 150 . . 3 (((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ (♯‘𝐴) = 0) → (𝑁 ∈ (0...(♯‘𝐴)) → (𝑀 ∈ (0...𝑁) → ((𝐴 ++ 𝐵) substr ⟨𝑀, 𝑁⟩) = (𝐴 substr ⟨𝑀, 𝑁⟩))))
3736impcomd 255 . 2 (((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ (♯‘𝐴) = 0) → ((𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝐴))) → ((𝐴 ++ 𝐵) substr ⟨𝑀, 𝑁⟩) = (𝐴 substr ⟨𝑀, 𝑁⟩)))
386ad2antrr 492 . . . . 5 ((((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ (♯‘𝐴) ≠ 0) ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝐴)))) → (𝐴 ++ 𝐵) ∈ Word 𝑉)
39 simprl 535 . . . . 5 ((((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ (♯‘𝐴) ≠ 0) ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝐴)))) → 𝑀 ∈ (0...𝑁))
40 elfzelfzccat 11390 . . . . . . 7 ((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) → (𝑁 ∈ (0...(♯‘𝐴)) → 𝑁 ∈ (0...(♯‘(𝐴 ++ 𝐵)))))
4140imp 124 . . . . . 6 (((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ 𝑁 ∈ (0...(♯‘𝐴))) → 𝑁 ∈ (0...(♯‘(𝐴 ++ 𝐵))))
4241ad2ant2rl 515 . . . . 5 ((((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ (♯‘𝐴) ≠ 0) ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝐴)))) → 𝑁 ∈ (0...(♯‘(𝐴 ++ 𝐵))))
43 swrdvalfn 11450 . . . . 5 (((𝐴 ++ 𝐵) ∈ Word 𝑉 ∧ 𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘(𝐴 ++ 𝐵)))) → ((𝐴 ++ 𝐵) substr ⟨𝑀, 𝑁⟩) Fn (0..^(𝑁 − 𝑀)))
4438, 39, 42, 43syl3anc 1278 . . . 4 ((((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ (♯‘𝐴) ≠ 0) ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝐴)))) → ((𝐴 ++ 𝐵) substr ⟨𝑀, 𝑁⟩) Fn (0..^(𝑁 − 𝑀)))
45 3anass 1013 . . . . . . . 8 ((𝐴 ∈ Word 𝑉 ∧ 𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝐴))) ↔ (𝐴 ∈ Word 𝑉 ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝐴)))))
4645simplbi2 385 . . . . . . 7 (𝐴 ∈ Word 𝑉 → ((𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝐴))) → (𝐴 ∈ Word 𝑉 ∧ 𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝐴)))))
4746ad2antrr 492 . . . . . 6 (((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ (♯‘𝐴) ≠ 0) → ((𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝐴))) → (𝐴 ∈ Word 𝑉 ∧ 𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝐴)))))
4847imp 124 . . . . 5 ((((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ (♯‘𝐴) ≠ 0) ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝐴)))) → (𝐴 ∈ Word 𝑉 ∧ 𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝐴))))
49 swrdvalfn 11450 . . . . 5 ((𝐴 ∈ Word 𝑉 ∧ 𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝐴))) → (𝐴 substr ⟨𝑀, 𝑁⟩) Fn (0..^(𝑁 − 𝑀)))
5048, 49syl 14 . . . 4 ((((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ (♯‘𝐴) ≠ 0) ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝐴)))) → (𝐴 substr ⟨𝑀, 𝑁⟩) Fn (0..^(𝑁 − 𝑀)))
51 simp-4l 547 . . . . . 6 (((((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ (♯‘𝐴) ≠ 0) ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝐴)))) ∧ 𝑘 ∈ (0..^(𝑁 − 𝑀))) → 𝐴 ∈ Word 𝑉)
52 simp-4r 548 . . . . . 6 (((((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ (♯‘𝐴) ≠ 0) ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝐴)))) ∧ 𝑘 ∈ (0..^(𝑁 − 𝑀))) → 𝐵 ∈ Word 𝑉)
53 elfznn0 10538 . . . . . . . . . 10 (𝑀 ∈ (0...𝑁) → 𝑀 ∈ ℕ0)
54 nn0addcl 9609 . . . . . . . . . . 11 ((𝑘 ∈ ℕ0 ∧ 𝑀 ∈ ℕ0) → (𝑘 + 𝑀) ∈ ℕ0)
5554expcom 116 . . . . . . . . . 10 (𝑀 ∈ ℕ0 → (𝑘 ∈ ℕ0 → (𝑘 + 𝑀) ∈ ℕ0))
5653, 55syl 14 . . . . . . . . 9 (𝑀 ∈ (0...𝑁) → (𝑘 ∈ ℕ0 → (𝑘 + 𝑀) ∈ ℕ0))
5756ad2antrl 494 . . . . . . . 8 ((((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ (♯‘𝐴) ≠ 0) ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝐴)))) → (𝑘 ∈ ℕ0 → (𝑘 + 𝑀) ∈ ℕ0))
58 elfzonn0 10615 . . . . . . . 8 (𝑘 ∈ (0..^(𝑁 − 𝑀)) → 𝑘 ∈ ℕ0)
5957, 58impel 280 . . . . . . 7 (((((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ (♯‘𝐴) ≠ 0) ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝐴)))) ∧ 𝑘 ∈ (0..^(𝑁 − 𝑀))) → (𝑘 + 𝑀) ∈ ℕ0)
60 lencl 11330 . . . . . . . . . . 11 (𝐴 ∈ Word 𝑉 → (♯‘𝐴) ∈ ℕ0)
61 elnnne0 9588 . . . . . . . . . . . 12 ((♯‘𝐴) ∈ ℕ ↔ ((♯‘𝐴) ∈ ℕ0 ∧ (♯‘𝐴) ≠ 0))
6261simplbi2 385 . . . . . . . . . . 11 ((♯‘𝐴) ∈ ℕ0 → ((♯‘𝐴) ≠ 0 → (♯‘𝐴) ∈ ℕ))
6360, 62syl 14 . . . . . . . . . 10 (𝐴 ∈ Word 𝑉 → ((♯‘𝐴) ≠ 0 → (♯‘𝐴) ∈ ℕ))
6463adantr 276 . . . . . . . . 9 ((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) → ((♯‘𝐴) ≠ 0 → (♯‘𝐴) ∈ ℕ))
6564imp 124 . . . . . . . 8 (((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ (♯‘𝐴) ≠ 0) → (♯‘𝐴) ∈ ℕ)
6665ad2antrr 492 . . . . . . 7 (((((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ (♯‘𝐴) ≠ 0) ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝐴)))) ∧ 𝑘 ∈ (0..^(𝑁 − 𝑀))) → (♯‘𝐴) ∈ ℕ)
67 elfzo0 10610 . . . . . . . . 9 (𝑘 ∈ (0..^(𝑁 − 𝑀)) ↔ (𝑘 ∈ ℕ0 ∧ (𝑁 − 𝑀) ∈ ℕ ∧ 𝑘 < (𝑁 − 𝑀)))
68 elfz2nn0 10536 . . . . . . . . . . . 12 (𝑁 ∈ (0...(♯‘𝐴)) ↔ (𝑁 ∈ ℕ0 ∧ (♯‘𝐴) ∈ ℕ0 ∧ 𝑁 ≤ (♯‘𝐴)))
69 nn0re 9583 . . . . . . . . . . . . . . . . . . . . . 22 (𝑘 ∈ ℕ0 → 𝑘 ∈ ℝ)
7069ad2antrl 494 . . . . . . . . . . . . . . . . . . . . 21 (((𝑁 ∈ ℕ0 ∧ (♯‘𝐴) ∈ ℕ0) ∧ (𝑘 ∈ ℕ0 ∧ 𝑀 ∈ ℕ0)) → 𝑘 ∈ ℝ)
71 nn0re 9583 . . . . . . . . . . . . . . . . . . . . . 22 (𝑀 ∈ ℕ0 → 𝑀 ∈ ℝ)
7271ad2antll 495 . . . . . . . . . . . . . . . . . . . . 21 (((𝑁 ∈ ℕ0 ∧ (♯‘𝐴) ∈ ℕ0) ∧ (𝑘 ∈ ℕ0 ∧ 𝑀 ∈ ℕ0)) → 𝑀 ∈ ℝ)
73 nn0re 9583 . . . . . . . . . . . . . . . . . . . . . 22 (𝑁 ∈ ℕ0 → 𝑁 ∈ ℝ)
7473ad2antrr 492 . . . . . . . . . . . . . . . . . . . . 21 (((𝑁 ∈ ℕ0 ∧ (♯‘𝐴) ∈ ℕ0) ∧ (𝑘 ∈ ℕ0 ∧ 𝑀 ∈ ℕ0)) → 𝑁 ∈ ℝ)
7570, 72, 74ltaddsubd 8880 . . . . . . . . . . . . . . . . . . . 20 (((𝑁 ∈ ℕ0 ∧ (♯‘𝐴) ∈ ℕ0) ∧ (𝑘 ∈ ℕ0 ∧ 𝑀 ∈ ℕ0)) → ((𝑘 + 𝑀) < 𝑁 ↔ 𝑘 < (𝑁 − 𝑀)))
76 nn0readdcl 9637 . . . . . . . . . . . . . . . . . . . . . . 23 ((𝑘 ∈ ℕ0 ∧ 𝑀 ∈ ℕ0) → (𝑘 + 𝑀) ∈ ℝ)
7776adantl 277 . . . . . . . . . . . . . . . . . . . . . 22 (((𝑁 ∈ ℕ0 ∧ (♯‘𝐴) ∈ ℕ0) ∧ (𝑘 ∈ ℕ0 ∧ 𝑀 ∈ ℕ0)) → (𝑘 + 𝑀) ∈ ℝ)
78 nn0re 9583 . . . . . . . . . . . . . . . . . . . . . . 23 ((♯‘𝐴) ∈ ℕ0 → (♯‘𝐴) ∈ ℝ)
7978ad2antlr 493 . . . . . . . . . . . . . . . . . . . . . 22 (((𝑁 ∈ ℕ0 ∧ (♯‘𝐴) ∈ ℕ0) ∧ (𝑘 ∈ ℕ0 ∧ 𝑀 ∈ ℕ0)) → (♯‘𝐴) ∈ ℝ)
80 ltletr 8421 . . . . . . . . . . . . . . . . . . . . . 22 (((𝑘 + 𝑀) ∈ ℝ ∧ 𝑁 ∈ ℝ ∧ (♯‘𝐴) ∈ ℝ) → (((𝑘 + 𝑀) < 𝑁 ∧ 𝑁 ≤ (♯‘𝐴)) → (𝑘 + 𝑀) < (♯‘𝐴)))
8177, 74, 79, 80syl3anc 1278 . . . . . . . . . . . . . . . . . . . . 21 (((𝑁 ∈ ℕ0 ∧ (♯‘𝐴) ∈ ℕ0) ∧ (𝑘 ∈ ℕ0 ∧ 𝑀 ∈ ℕ0)) → (((𝑘 + 𝑀) < 𝑁 ∧ 𝑁 ≤ (♯‘𝐴)) → (𝑘 + 𝑀) < (♯‘𝐴)))
8281expd 258 . . . . . . . . . . . . . . . . . . . 20 (((𝑁 ∈ ℕ0 ∧ (♯‘𝐴) ∈ ℕ0) ∧ (𝑘 ∈ ℕ0 ∧ 𝑀 ∈ ℕ0)) → ((𝑘 + 𝑀) < 𝑁 → (𝑁 ≤ (♯‘𝐴) → (𝑘 + 𝑀) < (♯‘𝐴))))
8375, 82sylbird 170 . . . . . . . . . . . . . . . . . . 19 (((𝑁 ∈ ℕ0 ∧ (♯‘𝐴) ∈ ℕ0) ∧ (𝑘 ∈ ℕ0 ∧ 𝑀 ∈ ℕ0)) → (𝑘 < (𝑁 − 𝑀) → (𝑁 ≤ (♯‘𝐴) → (𝑘 + 𝑀) < (♯‘𝐴))))
8483ex 115 . . . . . . . . . . . . . . . . . 18 ((𝑁 ∈ ℕ0 ∧ (♯‘𝐴) ∈ ℕ0) → ((𝑘 ∈ ℕ0 ∧ 𝑀 ∈ ℕ0) → (𝑘 < (𝑁 − 𝑀) → (𝑁 ≤ (♯‘𝐴) → (𝑘 + 𝑀) < (♯‘𝐴)))))
8584com24 87 . . . . . . . . . . . . . . . . 17 ((𝑁 ∈ ℕ0 ∧ (♯‘𝐴) ∈ ℕ0) → (𝑁 ≤ (♯‘𝐴) → (𝑘 < (𝑁 − 𝑀) → ((𝑘 ∈ ℕ0 ∧ 𝑀 ∈ ℕ0) → (𝑘 + 𝑀) < (♯‘𝐴)))))
86853impia 1231 . . . . . . . . . . . . . . . 16 ((𝑁 ∈ ℕ0 ∧ (♯‘𝐴) ∈ ℕ0 ∧ 𝑁 ≤ (♯‘𝐴)) → (𝑘 < (𝑁 − 𝑀) → ((𝑘 ∈ ℕ0 ∧ 𝑀 ∈ ℕ0) → (𝑘 + 𝑀) < (♯‘𝐴))))
8786com13 80 . . . . . . . . . . . . . . 15 ((𝑘 ∈ ℕ0 ∧ 𝑀 ∈ ℕ0) → (𝑘 < (𝑁 − 𝑀) → ((𝑁 ∈ ℕ0 ∧ (♯‘𝐴) ∈ ℕ0 ∧ 𝑁 ≤ (♯‘𝐴)) → (𝑘 + 𝑀) < (♯‘𝐴))))
8887impancom 260 . . . . . . . . . . . . . 14 ((𝑘 ∈ ℕ0 ∧ 𝑘 < (𝑁 − 𝑀)) → (𝑀 ∈ ℕ0 → ((𝑁 ∈ ℕ0 ∧ (♯‘𝐴) ∈ ℕ0 ∧ 𝑁 ≤ (♯‘𝐴)) → (𝑘 + 𝑀) < (♯‘𝐴))))
89883adant2 1047 . . . . . . . . . . . . 13 ((𝑘 ∈ ℕ0 ∧ (𝑁 − 𝑀) ∈ ℕ ∧ 𝑘 < (𝑁 − 𝑀)) → (𝑀 ∈ ℕ0 → ((𝑁 ∈ ℕ0 ∧ (♯‘𝐴) ∈ ℕ0 ∧ 𝑁 ≤ (♯‘𝐴)) → (𝑘 + 𝑀) < (♯‘𝐴))))
9089com13 80 . . . . . . . . . . . 12 ((𝑁 ∈ ℕ0 ∧ (♯‘𝐴) ∈ ℕ0 ∧ 𝑁 ≤ (♯‘𝐴)) → (𝑀 ∈ ℕ0 → ((𝑘 ∈ ℕ0 ∧ (𝑁 − 𝑀) ∈ ℕ ∧ 𝑘 < (𝑁 − 𝑀)) → (𝑘 + 𝑀) < (♯‘𝐴))))
9168, 90sylbi 121 . . . . . . . . . . 11 (𝑁 ∈ (0...(♯‘𝐴)) → (𝑀 ∈ ℕ0 → ((𝑘 ∈ ℕ0 ∧ (𝑁 − 𝑀) ∈ ℕ ∧ 𝑘 < (𝑁 − 𝑀)) → (𝑘 + 𝑀) < (♯‘𝐴))))
9253, 91mpan9 281 . . . . . . . . . 10 ((𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝐴))) → ((𝑘 ∈ ℕ0 ∧ (𝑁 − 𝑀) ∈ ℕ ∧ 𝑘 < (𝑁 − 𝑀)) → (𝑘 + 𝑀) < (♯‘𝐴)))
9392adantl 277 . . . . . . . . 9 ((((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ (♯‘𝐴) ≠ 0) ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝐴)))) → ((𝑘 ∈ ℕ0 ∧ (𝑁 − 𝑀) ∈ ℕ ∧ 𝑘 < (𝑁 − 𝑀)) → (𝑘 + 𝑀) < (♯‘𝐴)))
9467, 93biimtrid 152 . . . . . . . 8 ((((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ (♯‘𝐴) ≠ 0) ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝐴)))) → (𝑘 ∈ (0..^(𝑁 − 𝑀)) → (𝑘 + 𝑀) < (♯‘𝐴)))
9594imp 124 . . . . . . 7 (((((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ (♯‘𝐴) ≠ 0) ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝐴)))) ∧ 𝑘 ∈ (0..^(𝑁 − 𝑀))) → (𝑘 + 𝑀) < (♯‘𝐴))
96 elfzo0 10610 . . . . . . 7 ((𝑘 + 𝑀) ∈ (0..^(♯‘𝐴)) ↔ ((𝑘 + 𝑀) ∈ ℕ0 ∧ (♯‘𝐴) ∈ ℕ ∧ (𝑘 + 𝑀) < (♯‘𝐴)))
9759, 66, 95, 96syl3anbrc 1212 . . . . . 6 (((((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ (♯‘𝐴) ≠ 0) ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝐴)))) ∧ 𝑘 ∈ (0..^(𝑁 − 𝑀))) → (𝑘 + 𝑀) ∈ (0..^(♯‘𝐴)))
98 ccatval1 11387 . . . . . 6 ((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉 ∧ (𝑘 + 𝑀) ∈ (0..^(♯‘𝐴))) → ((𝐴 ++ 𝐵)‘(𝑘 + 𝑀)) = (𝐴‘(𝑘 + 𝑀)))
9951, 52, 97, 98syl3anc 1278 . . . . 5 (((((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ (♯‘𝐴) ≠ 0) ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝐴)))) ∧ 𝑘 ∈ (0..^(𝑁 − 𝑀))) → ((𝐴 ++ 𝐵)‘(𝑘 + 𝑀)) = (𝐴‘(𝑘 + 𝑀)))
1006ad3antrrr 496 . . . . . 6 (((((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ (♯‘𝐴) ≠ 0) ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝐴)))) ∧ 𝑘 ∈ (0..^(𝑁 − 𝑀))) → (𝐴 ++ 𝐵) ∈ Word 𝑉)
101 simplrl 541 . . . . . 6 (((((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ (♯‘𝐴) ≠ 0) ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝐴)))) ∧ 𝑘 ∈ (0..^(𝑁 − 𝑀))) → 𝑀 ∈ (0...𝑁))
10242adantr 276 . . . . . 6 (((((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ (♯‘𝐴) ≠ 0) ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝐴)))) ∧ 𝑘 ∈ (0..^(𝑁 − 𝑀))) → 𝑁 ∈ (0...(♯‘(𝐴 ++ 𝐵))))
103 simpr 110 . . . . . 6 (((((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ (♯‘𝐴) ≠ 0) ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝐴)))) ∧ 𝑘 ∈ (0..^(𝑁 − 𝑀))) → 𝑘 ∈ (0..^(𝑁 − 𝑀)))
104 swrdfv 11447 . . . . . 6 ((((𝐴 ++ 𝐵) ∈ Word 𝑉 ∧ 𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘(𝐴 ++ 𝐵)))) ∧ 𝑘 ∈ (0..^(𝑁 − 𝑀))) → (((𝐴 ++ 𝐵) substr ⟨𝑀, 𝑁⟩)‘𝑘) = ((𝐴 ++ 𝐵)‘(𝑘 + 𝑀)))
105100, 101, 102, 103, 104syl31anc 1281 . . . . 5 (((((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ (♯‘𝐴) ≠ 0) ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝐴)))) ∧ 𝑘 ∈ (0..^(𝑁 − 𝑀))) → (((𝐴 ++ 𝐵) substr ⟨𝑀, 𝑁⟩)‘𝑘) = ((𝐴 ++ 𝐵)‘(𝑘 + 𝑀)))
106 swrdfv 11447 . . . . . 6 (((𝐴 ∈ Word 𝑉 ∧ 𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝐴))) ∧ 𝑘 ∈ (0..^(𝑁 − 𝑀))) → ((𝐴 substr ⟨𝑀, 𝑁⟩)‘𝑘) = (𝐴‘(𝑘 + 𝑀)))
10748, 106sylan 283 . . . . 5 (((((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ (♯‘𝐴) ≠ 0) ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝐴)))) ∧ 𝑘 ∈ (0..^(𝑁 − 𝑀))) → ((𝐴 substr ⟨𝑀, 𝑁⟩)‘𝑘) = (𝐴‘(𝑘 + 𝑀)))
10899, 105, 1073eqtr4d 2281 . . . 4 (((((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ (♯‘𝐴) ≠ 0) ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝐴)))) ∧ 𝑘 ∈ (0..^(𝑁 − 𝑀))) → (((𝐴 ++ 𝐵) substr ⟨𝑀, 𝑁⟩)‘𝑘) = ((𝐴 substr ⟨𝑀, 𝑁⟩)‘𝑘))
10944, 50, 108eqfnfvd 5812 . . 3 ((((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ (♯‘𝐴) ≠ 0) ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝐴)))) → ((𝐴 ++ 𝐵) substr ⟨𝑀, 𝑁⟩) = (𝐴 substr ⟨𝑀, 𝑁⟩))
110109ex 115 . 2 (((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ (♯‘𝐴) ≠ 0) → ((𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝐴))) → ((𝐴 ++ 𝐵) substr ⟨𝑀, 𝑁⟩) = (𝐴 substr ⟨𝑀, 𝑁⟩)))
11160nn0zd 9777 . . . . 5 (𝐴 ∈ Word 𝑉 → (♯‘𝐴) ∈ ℤ)
112 zdceq 9731 . . . . 5 (((♯‘𝐴) ∈ ℤ ∧ 0 ∈ ℤ) → DECID (♯‘𝐴) = 0)
113111, 7, 112sylancl 417 . . . 4 (𝐴 ∈ Word 𝑉 → DECID (♯‘𝐴) = 0)
114 dcne 2431 . . . 4 (DECID (♯‘𝐴) = 0 ↔ ((♯‘𝐴) = 0 ∨ (♯‘𝐴) ≠ 0))
115113, 114sylib 122 . . 3 (𝐴 ∈ Word 𝑉 → ((♯‘𝐴) = 0 ∨ (♯‘𝐴) ≠ 0))
116115adantr 276 . 2 ((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) → ((♯‘𝐴) = 0 ∨ (♯‘𝐴) ≠ 0))
11737, 110, 116mpjaodan 810 1 ((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) → ((𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝐴))) → ((𝐴 ++ 𝐵) substr ⟨𝑀, 𝑁⟩) = (𝐴 substr ⟨𝑀, 𝑁⟩)))
Colors of variables:    wff set class
This proof depends on syntax axioms:   → wi 4   ∧ wa 104   ↔ wb 105   ∨ wo 720  DECID wdc 846   ∧ w3a 1009   = wceq 1402   ∈ wcel 2209   ≠ wne 2420  ∅c0 3520  ⟨cop 3712   class class class wbr 4131   Fn wfn 5375  ‘cfv 5380  (class class class)co 6088  ℝcr 8184  0cc0 8185   + caddc 8188   < clt 8366   ≤ cle 8367   − cmin 8504  ℕcn 9313  ℕ0cn0 9574  ℤcz 9655  ...cfz 10428  ..^cfzo 10566  ♯chash 11236  Word cword 11326   ++ cconcat 11380   substr csubstr 11439
This proof depends on axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-ia1 106  ax-ia2 107  ax-ia3 108  ax-in1 623  ax-in2 624  ax-io 721  ax-5 1500  ax-7 1501  ax-gen 1502  ax-ie1 1546  ax-ie2 1547  ax-8 1557  ax-10 1558  ax-11 1559  ax-i12 1560  ax-bndl 1562  ax-4 1563  ax-17 1579  ax-i9 1583  ax-ial 1587  ax-i5r 1588  ax-14 2212  ax-ext 2220  ax-coll 4248  ax-sep 4251  ax-nul 4261  ax-pow 4313  ax-pr 4348  ax-un 4580  ax-setind 4686  ax-iinf 4737  ax-cnex 8276  ax-resscn 8277  ax-1cn 8278  ax-1re 8279  ax-icn 8280  ax-addcl 8281  ax-addrcl 8282  ax-mulcl 8283  ax-addcom 8285  ax-addass 8287  ax-distr 8289  ax-i2m1 8290  ax-0lt1 8291  ax-0id 8293  ax-rnegex 8294  ax-cnre 8296  ax-pre-ltirr 8297  ax-pre-ltwlin 8298  ax-pre-lttrn 8299  ax-pre-apti 8300  ax-pre-ltadd 8301
This proof depends on definitions:  df-bi 117  df-dc 847  df-3or 1010  df-3an 1011  df-tru 1405  df-fal 1408  df-nf 1514  df-sb 1816  df-eu 2089  df-mo 2090  df-clab 2225  df-cleq 2231  df-clel 2234  df-nfc 2381  df-ne 2421  df-nel 2516  df-ral 2533  df-rex 2534  df-reu 2535  df-rab 2537  df-v 2823  df-sbc 3052  df-csb 3148  df-dif 3222  df-un 3224  df-in 3226  df-ss 3233  df-nul 3521  df-if 3639  df-pw 3690  df-sn 3715  df-pr 3716  df-op 3718  df-uni 3936  df-int 3971  df-iun 4014  df-br 4132  df-opab 4194  df-mpt 4195  df-tr 4232  df-id 4440  df-iord 4513  df-on 4515  df-ilim 4516  df-suc 4518  df-iom 4740  df-xp 4782  df-rel 4783  df-cnv 4784  df-co 4785  df-dm 4786  df-rn 4787  df-res 4788  df-ima 4789  df-iota 5340  df-fun 5382  df-fn 5383  df-f 5384  df-f1 5385  df-fo 5386  df-f1o 5387  df-fv 5388  df-riota 6041  df-ov 6091  df-oprab 6092  df-mpo 6093  df-1st 6378  df-2nd 6379  df-recs 6580  df-frec 6666  df-1o 6691  df-er 6811  df-en 7027  df-dom 7028  df-fin 7029  df-pnf 8368  df-mnf 8369  df-xr 8370  df-ltxr 8371  df-le 8372  df-sub 8506  df-neg 8507  df-inn 9314  df-n0 9575  df-z 9656  df-uz 9938  df-fz 10429  df-fzo 10567  df-ihash 11237  df-word 11327  df-concat 11381  df-substr 11440
This theorem is used by:  pfxccat3  11528  pfxccatpfx1  11530  swrdccatin1d  11537
  Copyright terms: Public domain W3C validator