Proof of Theorem splval2
| Step | Hyp | Ref
| Expression |
| 1 | | splval2.s |
. . . 4
⊢ (𝜑 → 𝑆 = ((𝐴 ++ 𝐵) ++ 𝐶)) |
| 2 | | splval2.a |
. . . . . 6
⊢ (𝜑 → 𝐴 ∈ Word 𝑋) |
| 3 | | splval2.b |
. . . . . 6
⊢ (𝜑 → 𝐵 ∈ Word 𝑋) |
| 4 | | ccatcl 13359 |
. . . . . 6
⊢ ((𝐴 ∈ Word 𝑋 ∧ 𝐵 ∈ Word 𝑋) → (𝐴 ++ 𝐵) ∈ Word 𝑋) |
| 5 | 2, 3, 4 | syl2anc 693 |
. . . . 5
⊢ (𝜑 → (𝐴 ++ 𝐵) ∈ Word 𝑋) |
| 6 | | splval2.c |
. . . . 5
⊢ (𝜑 → 𝐶 ∈ Word 𝑋) |
| 7 | | ccatcl 13359 |
. . . . 5
⊢ (((𝐴 ++ 𝐵) ∈ Word 𝑋 ∧ 𝐶 ∈ Word 𝑋) → ((𝐴 ++ 𝐵) ++ 𝐶) ∈ Word 𝑋) |
| 8 | 5, 6, 7 | syl2anc 693 |
. . . 4
⊢ (𝜑 → ((𝐴 ++ 𝐵) ++ 𝐶) ∈ Word 𝑋) |
| 9 | 1, 8 | eqeltrd 2701 |
. . 3
⊢ (𝜑 → 𝑆 ∈ Word 𝑋) |
| 10 | | splval2.f |
. . . 4
⊢ (𝜑 → 𝐹 = (#‘𝐴)) |
| 11 | | lencl 13324 |
. . . . 5
⊢ (𝐴 ∈ Word 𝑋 → (#‘𝐴) ∈
ℕ0) |
| 12 | 2, 11 | syl 17 |
. . . 4
⊢ (𝜑 → (#‘𝐴) ∈
ℕ0) |
| 13 | 10, 12 | eqeltrd 2701 |
. . 3
⊢ (𝜑 → 𝐹 ∈
ℕ0) |
| 14 | | splval2.t |
. . . 4
⊢ (𝜑 → 𝑇 = (𝐹 + (#‘𝐵))) |
| 15 | | lencl 13324 |
. . . . . 6
⊢ (𝐵 ∈ Word 𝑋 → (#‘𝐵) ∈
ℕ0) |
| 16 | 3, 15 | syl 17 |
. . . . 5
⊢ (𝜑 → (#‘𝐵) ∈
ℕ0) |
| 17 | 13, 16 | nn0addcld 11355 |
. . . 4
⊢ (𝜑 → (𝐹 + (#‘𝐵)) ∈
ℕ0) |
| 18 | 14, 17 | eqeltrd 2701 |
. . 3
⊢ (𝜑 → 𝑇 ∈
ℕ0) |
| 19 | | splval2.r |
. . 3
⊢ (𝜑 → 𝑅 ∈ Word 𝑋) |
| 20 | | splval 13502 |
. . 3
⊢ ((𝑆 ∈ Word 𝑋 ∧ (𝐹 ∈ ℕ0 ∧ 𝑇 ∈ ℕ0
∧ 𝑅 ∈ Word 𝑋)) → (𝑆 splice 〈𝐹, 𝑇, 𝑅〉) = (((𝑆 substr 〈0, 𝐹〉) ++ 𝑅) ++ (𝑆 substr 〈𝑇, (#‘𝑆)〉))) |
| 21 | 9, 13, 18, 19, 20 | syl13anc 1328 |
. 2
⊢ (𝜑 → (𝑆 splice 〈𝐹, 𝑇, 𝑅〉) = (((𝑆 substr 〈0, 𝐹〉) ++ 𝑅) ++ (𝑆 substr 〈𝑇, (#‘𝑆)〉))) |
| 22 | | nn0uz 11722 |
. . . . . . . . . 10
⊢
ℕ0 = (ℤ≥‘0) |
| 23 | 13, 22 | syl6eleq 2711 |
. . . . . . . . 9
⊢ (𝜑 → 𝐹 ∈
(ℤ≥‘0)) |
| 24 | | eluzfz1 12348 |
. . . . . . . . 9
⊢ (𝐹 ∈
(ℤ≥‘0) → 0 ∈ (0...𝐹)) |
| 25 | 23, 24 | syl 17 |
. . . . . . . 8
⊢ (𝜑 → 0 ∈ (0...𝐹)) |
| 26 | 13 | nn0zd 11480 |
. . . . . . . . . . . 12
⊢ (𝜑 → 𝐹 ∈ ℤ) |
| 27 | | uzid 11702 |
. . . . . . . . . . . 12
⊢ (𝐹 ∈ ℤ → 𝐹 ∈
(ℤ≥‘𝐹)) |
| 28 | 26, 27 | syl 17 |
. . . . . . . . . . 11
⊢ (𝜑 → 𝐹 ∈ (ℤ≥‘𝐹)) |
| 29 | | uzaddcl 11744 |
. . . . . . . . . . 11
⊢ ((𝐹 ∈
(ℤ≥‘𝐹) ∧ (#‘𝐵) ∈ ℕ0) → (𝐹 + (#‘𝐵)) ∈
(ℤ≥‘𝐹)) |
| 30 | 28, 16, 29 | syl2anc 693 |
. . . . . . . . . 10
⊢ (𝜑 → (𝐹 + (#‘𝐵)) ∈
(ℤ≥‘𝐹)) |
| 31 | 14, 30 | eqeltrd 2701 |
. . . . . . . . 9
⊢ (𝜑 → 𝑇 ∈ (ℤ≥‘𝐹)) |
| 32 | | elfzuzb 12336 |
. . . . . . . . 9
⊢ (𝐹 ∈ (0...𝑇) ↔ (𝐹 ∈ (ℤ≥‘0)
∧ 𝑇 ∈
(ℤ≥‘𝐹))) |
| 33 | 23, 31, 32 | sylanbrc 698 |
. . . . . . . 8
⊢ (𝜑 → 𝐹 ∈ (0...𝑇)) |
| 34 | 18, 22 | syl6eleq 2711 |
. . . . . . . . 9
⊢ (𝜑 → 𝑇 ∈
(ℤ≥‘0)) |
| 35 | | ccatlen 13360 |
. . . . . . . . . . . 12
⊢ (((𝐴 ++ 𝐵) ∈ Word 𝑋 ∧ 𝐶 ∈ Word 𝑋) → (#‘((𝐴 ++ 𝐵) ++ 𝐶)) = ((#‘(𝐴 ++ 𝐵)) + (#‘𝐶))) |
| 36 | 5, 6, 35 | syl2anc 693 |
. . . . . . . . . . 11
⊢ (𝜑 → (#‘((𝐴 ++ 𝐵) ++ 𝐶)) = ((#‘(𝐴 ++ 𝐵)) + (#‘𝐶))) |
| 37 | 1 | fveq2d 6195 |
. . . . . . . . . . 11
⊢ (𝜑 → (#‘𝑆) = (#‘((𝐴 ++ 𝐵) ++ 𝐶))) |
| 38 | 10 | oveq1d 6665 |
. . . . . . . . . . . . 13
⊢ (𝜑 → (𝐹 + (#‘𝐵)) = ((#‘𝐴) + (#‘𝐵))) |
| 39 | | ccatlen 13360 |
. . . . . . . . . . . . . 14
⊢ ((𝐴 ∈ Word 𝑋 ∧ 𝐵 ∈ Word 𝑋) → (#‘(𝐴 ++ 𝐵)) = ((#‘𝐴) + (#‘𝐵))) |
| 40 | 2, 3, 39 | syl2anc 693 |
. . . . . . . . . . . . 13
⊢ (𝜑 → (#‘(𝐴 ++ 𝐵)) = ((#‘𝐴) + (#‘𝐵))) |
| 41 | 38, 14, 40 | 3eqtr4d 2666 |
. . . . . . . . . . . 12
⊢ (𝜑 → 𝑇 = (#‘(𝐴 ++ 𝐵))) |
| 42 | 41 | oveq1d 6665 |
. . . . . . . . . . 11
⊢ (𝜑 → (𝑇 + (#‘𝐶)) = ((#‘(𝐴 ++ 𝐵)) + (#‘𝐶))) |
| 43 | 36, 37, 42 | 3eqtr4d 2666 |
. . . . . . . . . 10
⊢ (𝜑 → (#‘𝑆) = (𝑇 + (#‘𝐶))) |
| 44 | 18 | nn0zd 11480 |
. . . . . . . . . . . 12
⊢ (𝜑 → 𝑇 ∈ ℤ) |
| 45 | | uzid 11702 |
. . . . . . . . . . . 12
⊢ (𝑇 ∈ ℤ → 𝑇 ∈
(ℤ≥‘𝑇)) |
| 46 | 44, 45 | syl 17 |
. . . . . . . . . . 11
⊢ (𝜑 → 𝑇 ∈ (ℤ≥‘𝑇)) |
| 47 | | lencl 13324 |
. . . . . . . . . . . 12
⊢ (𝐶 ∈ Word 𝑋 → (#‘𝐶) ∈
ℕ0) |
| 48 | 6, 47 | syl 17 |
. . . . . . . . . . 11
⊢ (𝜑 → (#‘𝐶) ∈
ℕ0) |
| 49 | | uzaddcl 11744 |
. . . . . . . . . . 11
⊢ ((𝑇 ∈
(ℤ≥‘𝑇) ∧ (#‘𝐶) ∈ ℕ0) → (𝑇 + (#‘𝐶)) ∈
(ℤ≥‘𝑇)) |
| 50 | 46, 48, 49 | syl2anc 693 |
. . . . . . . . . 10
⊢ (𝜑 → (𝑇 + (#‘𝐶)) ∈
(ℤ≥‘𝑇)) |
| 51 | 43, 50 | eqeltrd 2701 |
. . . . . . . . 9
⊢ (𝜑 → (#‘𝑆) ∈ (ℤ≥‘𝑇)) |
| 52 | | elfzuzb 12336 |
. . . . . . . . 9
⊢ (𝑇 ∈ (0...(#‘𝑆)) ↔ (𝑇 ∈ (ℤ≥‘0)
∧ (#‘𝑆) ∈
(ℤ≥‘𝑇))) |
| 53 | 34, 51, 52 | sylanbrc 698 |
. . . . . . . 8
⊢ (𝜑 → 𝑇 ∈ (0...(#‘𝑆))) |
| 54 | | ccatswrd 13456 |
. . . . . . . 8
⊢ ((𝑆 ∈ Word 𝑋 ∧ (0 ∈ (0...𝐹) ∧ 𝐹 ∈ (0...𝑇) ∧ 𝑇 ∈ (0...(#‘𝑆)))) → ((𝑆 substr 〈0, 𝐹〉) ++ (𝑆 substr 〈𝐹, 𝑇〉)) = (𝑆 substr 〈0, 𝑇〉)) |
| 55 | 9, 25, 33, 53, 54 | syl13anc 1328 |
. . . . . . 7
⊢ (𝜑 → ((𝑆 substr 〈0, 𝐹〉) ++ (𝑆 substr 〈𝐹, 𝑇〉)) = (𝑆 substr 〈0, 𝑇〉)) |
| 56 | | eluzfz1 12348 |
. . . . . . . . . . . 12
⊢ (𝑇 ∈
(ℤ≥‘0) → 0 ∈ (0...𝑇)) |
| 57 | 34, 56 | syl 17 |
. . . . . . . . . . 11
⊢ (𝜑 → 0 ∈ (0...𝑇)) |
| 58 | | lencl 13324 |
. . . . . . . . . . . . . 14
⊢ (𝑆 ∈ Word 𝑋 → (#‘𝑆) ∈
ℕ0) |
| 59 | 9, 58 | syl 17 |
. . . . . . . . . . . . 13
⊢ (𝜑 → (#‘𝑆) ∈
ℕ0) |
| 60 | 59, 22 | syl6eleq 2711 |
. . . . . . . . . . . 12
⊢ (𝜑 → (#‘𝑆) ∈
(ℤ≥‘0)) |
| 61 | | eluzfz2 12349 |
. . . . . . . . . . . 12
⊢
((#‘𝑆) ∈
(ℤ≥‘0) → (#‘𝑆) ∈ (0...(#‘𝑆))) |
| 62 | 60, 61 | syl 17 |
. . . . . . . . . . 11
⊢ (𝜑 → (#‘𝑆) ∈ (0...(#‘𝑆))) |
| 63 | | ccatswrd 13456 |
. . . . . . . . . . 11
⊢ ((𝑆 ∈ Word 𝑋 ∧ (0 ∈ (0...𝑇) ∧ 𝑇 ∈ (0...(#‘𝑆)) ∧ (#‘𝑆) ∈ (0...(#‘𝑆)))) → ((𝑆 substr 〈0, 𝑇〉) ++ (𝑆 substr 〈𝑇, (#‘𝑆)〉)) = (𝑆 substr 〈0, (#‘𝑆)〉)) |
| 64 | 9, 57, 53, 62, 63 | syl13anc 1328 |
. . . . . . . . . 10
⊢ (𝜑 → ((𝑆 substr 〈0, 𝑇〉) ++ (𝑆 substr 〈𝑇, (#‘𝑆)〉)) = (𝑆 substr 〈0, (#‘𝑆)〉)) |
| 65 | | swrdid 13428 |
. . . . . . . . . . 11
⊢ (𝑆 ∈ Word 𝑋 → (𝑆 substr 〈0, (#‘𝑆)〉) = 𝑆) |
| 66 | 9, 65 | syl 17 |
. . . . . . . . . 10
⊢ (𝜑 → (𝑆 substr 〈0, (#‘𝑆)〉) = 𝑆) |
| 67 | 64, 66, 1 | 3eqtrd 2660 |
. . . . . . . . 9
⊢ (𝜑 → ((𝑆 substr 〈0, 𝑇〉) ++ (𝑆 substr 〈𝑇, (#‘𝑆)〉)) = ((𝐴 ++ 𝐵) ++ 𝐶)) |
| 68 | | swrdcl 13419 |
. . . . . . . . . . 11
⊢ (𝑆 ∈ Word 𝑋 → (𝑆 substr 〈0, 𝑇〉) ∈ Word 𝑋) |
| 69 | 9, 68 | syl 17 |
. . . . . . . . . 10
⊢ (𝜑 → (𝑆 substr 〈0, 𝑇〉) ∈ Word 𝑋) |
| 70 | | swrdcl 13419 |
. . . . . . . . . . 11
⊢ (𝑆 ∈ Word 𝑋 → (𝑆 substr 〈𝑇, (#‘𝑆)〉) ∈ Word 𝑋) |
| 71 | 9, 70 | syl 17 |
. . . . . . . . . 10
⊢ (𝜑 → (𝑆 substr 〈𝑇, (#‘𝑆)〉) ∈ Word 𝑋) |
| 72 | | swrd0len 13422 |
. . . . . . . . . . . 12
⊢ ((𝑆 ∈ Word 𝑋 ∧ 𝑇 ∈ (0...(#‘𝑆))) → (#‘(𝑆 substr 〈0, 𝑇〉)) = 𝑇) |
| 73 | 9, 53, 72 | syl2anc 693 |
. . . . . . . . . . 11
⊢ (𝜑 → (#‘(𝑆 substr 〈0, 𝑇〉)) = 𝑇) |
| 74 | 73, 41 | eqtrd 2656 |
. . . . . . . . . 10
⊢ (𝜑 → (#‘(𝑆 substr 〈0, 𝑇〉)) = (#‘(𝐴 ++ 𝐵))) |
| 75 | | ccatopth 13470 |
. . . . . . . . . 10
⊢ ((((𝑆 substr 〈0, 𝑇〉) ∈ Word 𝑋 ∧ (𝑆 substr 〈𝑇, (#‘𝑆)〉) ∈ Word 𝑋) ∧ ((𝐴 ++ 𝐵) ∈ Word 𝑋 ∧ 𝐶 ∈ Word 𝑋) ∧ (#‘(𝑆 substr 〈0, 𝑇〉)) = (#‘(𝐴 ++ 𝐵))) → (((𝑆 substr 〈0, 𝑇〉) ++ (𝑆 substr 〈𝑇, (#‘𝑆)〉)) = ((𝐴 ++ 𝐵) ++ 𝐶) ↔ ((𝑆 substr 〈0, 𝑇〉) = (𝐴 ++ 𝐵) ∧ (𝑆 substr 〈𝑇, (#‘𝑆)〉) = 𝐶))) |
| 76 | 69, 71, 5, 6, 74, 75 | syl221anc 1337 |
. . . . . . . . 9
⊢ (𝜑 → (((𝑆 substr 〈0, 𝑇〉) ++ (𝑆 substr 〈𝑇, (#‘𝑆)〉)) = ((𝐴 ++ 𝐵) ++ 𝐶) ↔ ((𝑆 substr 〈0, 𝑇〉) = (𝐴 ++ 𝐵) ∧ (𝑆 substr 〈𝑇, (#‘𝑆)〉) = 𝐶))) |
| 77 | 67, 76 | mpbid 222 |
. . . . . . . 8
⊢ (𝜑 → ((𝑆 substr 〈0, 𝑇〉) = (𝐴 ++ 𝐵) ∧ (𝑆 substr 〈𝑇, (#‘𝑆)〉) = 𝐶)) |
| 78 | 77 | simpld 475 |
. . . . . . 7
⊢ (𝜑 → (𝑆 substr 〈0, 𝑇〉) = (𝐴 ++ 𝐵)) |
| 79 | 55, 78 | eqtrd 2656 |
. . . . . 6
⊢ (𝜑 → ((𝑆 substr 〈0, 𝐹〉) ++ (𝑆 substr 〈𝐹, 𝑇〉)) = (𝐴 ++ 𝐵)) |
| 80 | | swrdcl 13419 |
. . . . . . . 8
⊢ (𝑆 ∈ Word 𝑋 → (𝑆 substr 〈0, 𝐹〉) ∈ Word 𝑋) |
| 81 | 9, 80 | syl 17 |
. . . . . . 7
⊢ (𝜑 → (𝑆 substr 〈0, 𝐹〉) ∈ Word 𝑋) |
| 82 | | swrdcl 13419 |
. . . . . . . 8
⊢ (𝑆 ∈ Word 𝑋 → (𝑆 substr 〈𝐹, 𝑇〉) ∈ Word 𝑋) |
| 83 | 9, 82 | syl 17 |
. . . . . . 7
⊢ (𝜑 → (𝑆 substr 〈𝐹, 𝑇〉) ∈ Word 𝑋) |
| 84 | | uztrn 11704 |
. . . . . . . . . . 11
⊢
(((#‘𝑆) ∈
(ℤ≥‘𝑇) ∧ 𝑇 ∈ (ℤ≥‘𝐹)) → (#‘𝑆) ∈
(ℤ≥‘𝐹)) |
| 85 | 51, 31, 84 | syl2anc 693 |
. . . . . . . . . 10
⊢ (𝜑 → (#‘𝑆) ∈ (ℤ≥‘𝐹)) |
| 86 | | elfzuzb 12336 |
. . . . . . . . . 10
⊢ (𝐹 ∈ (0...(#‘𝑆)) ↔ (𝐹 ∈ (ℤ≥‘0)
∧ (#‘𝑆) ∈
(ℤ≥‘𝐹))) |
| 87 | 23, 85, 86 | sylanbrc 698 |
. . . . . . . . 9
⊢ (𝜑 → 𝐹 ∈ (0...(#‘𝑆))) |
| 88 | | swrd0len 13422 |
. . . . . . . . 9
⊢ ((𝑆 ∈ Word 𝑋 ∧ 𝐹 ∈ (0...(#‘𝑆))) → (#‘(𝑆 substr 〈0, 𝐹〉)) = 𝐹) |
| 89 | 9, 87, 88 | syl2anc 693 |
. . . . . . . 8
⊢ (𝜑 → (#‘(𝑆 substr 〈0, 𝐹〉)) = 𝐹) |
| 90 | 89, 10 | eqtrd 2656 |
. . . . . . 7
⊢ (𝜑 → (#‘(𝑆 substr 〈0, 𝐹〉)) = (#‘𝐴)) |
| 91 | | ccatopth 13470 |
. . . . . . 7
⊢ ((((𝑆 substr 〈0, 𝐹〉) ∈ Word 𝑋 ∧ (𝑆 substr 〈𝐹, 𝑇〉) ∈ Word 𝑋) ∧ (𝐴 ∈ Word 𝑋 ∧ 𝐵 ∈ Word 𝑋) ∧ (#‘(𝑆 substr 〈0, 𝐹〉)) = (#‘𝐴)) → (((𝑆 substr 〈0, 𝐹〉) ++ (𝑆 substr 〈𝐹, 𝑇〉)) = (𝐴 ++ 𝐵) ↔ ((𝑆 substr 〈0, 𝐹〉) = 𝐴 ∧ (𝑆 substr 〈𝐹, 𝑇〉) = 𝐵))) |
| 92 | 81, 83, 2, 3, 90, 91 | syl221anc 1337 |
. . . . . 6
⊢ (𝜑 → (((𝑆 substr 〈0, 𝐹〉) ++ (𝑆 substr 〈𝐹, 𝑇〉)) = (𝐴 ++ 𝐵) ↔ ((𝑆 substr 〈0, 𝐹〉) = 𝐴 ∧ (𝑆 substr 〈𝐹, 𝑇〉) = 𝐵))) |
| 93 | 79, 92 | mpbid 222 |
. . . . 5
⊢ (𝜑 → ((𝑆 substr 〈0, 𝐹〉) = 𝐴 ∧ (𝑆 substr 〈𝐹, 𝑇〉) = 𝐵)) |
| 94 | 93 | simpld 475 |
. . . 4
⊢ (𝜑 → (𝑆 substr 〈0, 𝐹〉) = 𝐴) |
| 95 | 94 | oveq1d 6665 |
. . 3
⊢ (𝜑 → ((𝑆 substr 〈0, 𝐹〉) ++ 𝑅) = (𝐴 ++ 𝑅)) |
| 96 | 77 | simprd 479 |
. . 3
⊢ (𝜑 → (𝑆 substr 〈𝑇, (#‘𝑆)〉) = 𝐶) |
| 97 | 95, 96 | oveq12d 6668 |
. 2
⊢ (𝜑 → (((𝑆 substr 〈0, 𝐹〉) ++ 𝑅) ++ (𝑆 substr 〈𝑇, (#‘𝑆)〉)) = ((𝐴 ++ 𝑅) ++ 𝐶)) |
| 98 | 21, 97 | eqtrd 2656 |
1
⊢ (𝜑 → (𝑆 splice 〈𝐹, 𝑇, 𝑅〉) = ((𝐴 ++ 𝑅) ++ 𝐶)) |