Proof of Theorem splval2OLD
Step | Hyp | Ref
| Expression |
1 | | splval2.s |
. . . 4
⊢ (𝜑 → 𝑆 = ((𝐴 ++ 𝐵) ++ 𝐶)) |
2 | | splval2.a |
. . . . . 6
⊢ (𝜑 → 𝐴 ∈ Word 𝑋) |
3 | | splval2.b |
. . . . . 6
⊢ (𝜑 → 𝐵 ∈ Word 𝑋) |
4 | | ccatcl 13635 |
. . . . . 6
⊢ ((𝐴 ∈ Word 𝑋 ∧ 𝐵 ∈ Word 𝑋) → (𝐴 ++ 𝐵) ∈ Word 𝑋) |
5 | 2, 3, 4 | syl2anc 581 |
. . . . 5
⊢ (𝜑 → (𝐴 ++ 𝐵) ∈ Word 𝑋) |
6 | | splval2.c |
. . . . 5
⊢ (𝜑 → 𝐶 ∈ Word 𝑋) |
7 | | ccatcl 13635 |
. . . . 5
⊢ (((𝐴 ++ 𝐵) ∈ Word 𝑋 ∧ 𝐶 ∈ Word 𝑋) → ((𝐴 ++ 𝐵) ++ 𝐶) ∈ Word 𝑋) |
8 | 5, 6, 7 | syl2anc 581 |
. . . 4
⊢ (𝜑 → ((𝐴 ++ 𝐵) ++ 𝐶) ∈ Word 𝑋) |
9 | 1, 8 | eqeltrd 2907 |
. . 3
⊢ (𝜑 → 𝑆 ∈ Word 𝑋) |
10 | | splval2.f |
. . . 4
⊢ (𝜑 → 𝐹 = (♯‘𝐴)) |
11 | | lencl 13594 |
. . . . 5
⊢ (𝐴 ∈ Word 𝑋 → (♯‘𝐴) ∈
ℕ0) |
12 | 2, 11 | syl 17 |
. . . 4
⊢ (𝜑 → (♯‘𝐴) ∈
ℕ0) |
13 | 10, 12 | eqeltrd 2907 |
. . 3
⊢ (𝜑 → 𝐹 ∈
ℕ0) |
14 | | splval2.t |
. . . 4
⊢ (𝜑 → 𝑇 = (𝐹 + (♯‘𝐵))) |
15 | | lencl 13594 |
. . . . . 6
⊢ (𝐵 ∈ Word 𝑋 → (♯‘𝐵) ∈
ℕ0) |
16 | 3, 15 | syl 17 |
. . . . 5
⊢ (𝜑 → (♯‘𝐵) ∈
ℕ0) |
17 | 13, 16 | nn0addcld 11683 |
. . . 4
⊢ (𝜑 → (𝐹 + (♯‘𝐵)) ∈
ℕ0) |
18 | 14, 17 | eqeltrd 2907 |
. . 3
⊢ (𝜑 → 𝑇 ∈
ℕ0) |
19 | | splval2.r |
. . 3
⊢ (𝜑 → 𝑅 ∈ Word 𝑋) |
20 | | splvalOLD 13862 |
. . 3
⊢ ((𝑆 ∈ Word 𝑋 ∧ (𝐹 ∈ ℕ0 ∧ 𝑇 ∈ ℕ0
∧ 𝑅 ∈ Word 𝑋)) → (𝑆 spliceOLD 〈𝐹, 𝑇, 𝑅〉) = (((𝑆 substr 〈0, 𝐹〉) ++ 𝑅) ++ (𝑆 substr 〈𝑇, (♯‘𝑆)〉))) |
21 | 9, 13, 18, 19, 20 | syl13anc 1497 |
. 2
⊢ (𝜑 → (𝑆 spliceOLD 〈𝐹, 𝑇, 𝑅〉) = (((𝑆 substr 〈0, 𝐹〉) ++ 𝑅) ++ (𝑆 substr 〈𝑇, (♯‘𝑆)〉))) |
22 | | nn0uz 12005 |
. . . . . . . . . 10
⊢
ℕ0 = (ℤ≥‘0) |
23 | 13, 22 | syl6eleq 2917 |
. . . . . . . . 9
⊢ (𝜑 → 𝐹 ∈
(ℤ≥‘0)) |
24 | | eluzfz1 12642 |
. . . . . . . . 9
⊢ (𝐹 ∈
(ℤ≥‘0) → 0 ∈ (0...𝐹)) |
25 | 23, 24 | syl 17 |
. . . . . . . 8
⊢ (𝜑 → 0 ∈ (0...𝐹)) |
26 | 13 | nn0zd 11809 |
. . . . . . . . . . . 12
⊢ (𝜑 → 𝐹 ∈ ℤ) |
27 | | uzid 11984 |
. . . . . . . . . . . 12
⊢ (𝐹 ∈ ℤ → 𝐹 ∈
(ℤ≥‘𝐹)) |
28 | 26, 27 | syl 17 |
. . . . . . . . . . 11
⊢ (𝜑 → 𝐹 ∈ (ℤ≥‘𝐹)) |
29 | | uzaddcl 12027 |
. . . . . . . . . . 11
⊢ ((𝐹 ∈
(ℤ≥‘𝐹) ∧ (♯‘𝐵) ∈ ℕ0) → (𝐹 + (♯‘𝐵)) ∈
(ℤ≥‘𝐹)) |
30 | 28, 16, 29 | syl2anc 581 |
. . . . . . . . . 10
⊢ (𝜑 → (𝐹 + (♯‘𝐵)) ∈
(ℤ≥‘𝐹)) |
31 | 14, 30 | eqeltrd 2907 |
. . . . . . . . 9
⊢ (𝜑 → 𝑇 ∈ (ℤ≥‘𝐹)) |
32 | | elfzuzb 12630 |
. . . . . . . . 9
⊢ (𝐹 ∈ (0...𝑇) ↔ (𝐹 ∈ (ℤ≥‘0)
∧ 𝑇 ∈
(ℤ≥‘𝐹))) |
33 | 23, 31, 32 | sylanbrc 580 |
. . . . . . . 8
⊢ (𝜑 → 𝐹 ∈ (0...𝑇)) |
34 | 18, 22 | syl6eleq 2917 |
. . . . . . . . 9
⊢ (𝜑 → 𝑇 ∈
(ℤ≥‘0)) |
35 | | ccatlen 13636 |
. . . . . . . . . . . 12
⊢ (((𝐴 ++ 𝐵) ∈ Word 𝑋 ∧ 𝐶 ∈ Word 𝑋) → (♯‘((𝐴 ++ 𝐵) ++ 𝐶)) = ((♯‘(𝐴 ++ 𝐵)) + (♯‘𝐶))) |
36 | 5, 6, 35 | syl2anc 581 |
. . . . . . . . . . 11
⊢ (𝜑 → (♯‘((𝐴 ++ 𝐵) ++ 𝐶)) = ((♯‘(𝐴 ++ 𝐵)) + (♯‘𝐶))) |
37 | 1 | fveq2d 6438 |
. . . . . . . . . . 11
⊢ (𝜑 → (♯‘𝑆) = (♯‘((𝐴 ++ 𝐵) ++ 𝐶))) |
38 | 10 | oveq1d 6921 |
. . . . . . . . . . . . 13
⊢ (𝜑 → (𝐹 + (♯‘𝐵)) = ((♯‘𝐴) + (♯‘𝐵))) |
39 | | ccatlen 13636 |
. . . . . . . . . . . . . 14
⊢ ((𝐴 ∈ Word 𝑋 ∧ 𝐵 ∈ Word 𝑋) → (♯‘(𝐴 ++ 𝐵)) = ((♯‘𝐴) + (♯‘𝐵))) |
40 | 2, 3, 39 | syl2anc 581 |
. . . . . . . . . . . . 13
⊢ (𝜑 → (♯‘(𝐴 ++ 𝐵)) = ((♯‘𝐴) + (♯‘𝐵))) |
41 | 38, 14, 40 | 3eqtr4d 2872 |
. . . . . . . . . . . 12
⊢ (𝜑 → 𝑇 = (♯‘(𝐴 ++ 𝐵))) |
42 | 41 | oveq1d 6921 |
. . . . . . . . . . 11
⊢ (𝜑 → (𝑇 + (♯‘𝐶)) = ((♯‘(𝐴 ++ 𝐵)) + (♯‘𝐶))) |
43 | 36, 37, 42 | 3eqtr4d 2872 |
. . . . . . . . . 10
⊢ (𝜑 → (♯‘𝑆) = (𝑇 + (♯‘𝐶))) |
44 | 18 | nn0zd 11809 |
. . . . . . . . . . . 12
⊢ (𝜑 → 𝑇 ∈ ℤ) |
45 | | uzid 11984 |
. . . . . . . . . . . 12
⊢ (𝑇 ∈ ℤ → 𝑇 ∈
(ℤ≥‘𝑇)) |
46 | 44, 45 | syl 17 |
. . . . . . . . . . 11
⊢ (𝜑 → 𝑇 ∈ (ℤ≥‘𝑇)) |
47 | | lencl 13594 |
. . . . . . . . . . . 12
⊢ (𝐶 ∈ Word 𝑋 → (♯‘𝐶) ∈
ℕ0) |
48 | 6, 47 | syl 17 |
. . . . . . . . . . 11
⊢ (𝜑 → (♯‘𝐶) ∈
ℕ0) |
49 | | uzaddcl 12027 |
. . . . . . . . . . 11
⊢ ((𝑇 ∈
(ℤ≥‘𝑇) ∧ (♯‘𝐶) ∈ ℕ0) → (𝑇 + (♯‘𝐶)) ∈
(ℤ≥‘𝑇)) |
50 | 46, 48, 49 | syl2anc 581 |
. . . . . . . . . 10
⊢ (𝜑 → (𝑇 + (♯‘𝐶)) ∈
(ℤ≥‘𝑇)) |
51 | 43, 50 | eqeltrd 2907 |
. . . . . . . . 9
⊢ (𝜑 → (♯‘𝑆) ∈
(ℤ≥‘𝑇)) |
52 | | elfzuzb 12630 |
. . . . . . . . 9
⊢ (𝑇 ∈
(0...(♯‘𝑆))
↔ (𝑇 ∈
(ℤ≥‘0) ∧ (♯‘𝑆) ∈ (ℤ≥‘𝑇))) |
53 | 34, 51, 52 | sylanbrc 580 |
. . . . . . . 8
⊢ (𝜑 → 𝑇 ∈ (0...(♯‘𝑆))) |
54 | | ccatswrd 13747 |
. . . . . . . 8
⊢ ((𝑆 ∈ Word 𝑋 ∧ (0 ∈ (0...𝐹) ∧ 𝐹 ∈ (0...𝑇) ∧ 𝑇 ∈ (0...(♯‘𝑆)))) → ((𝑆 substr 〈0, 𝐹〉) ++ (𝑆 substr 〈𝐹, 𝑇〉)) = (𝑆 substr 〈0, 𝑇〉)) |
55 | 9, 25, 33, 53, 54 | syl13anc 1497 |
. . . . . . 7
⊢ (𝜑 → ((𝑆 substr 〈0, 𝐹〉) ++ (𝑆 substr 〈𝐹, 𝑇〉)) = (𝑆 substr 〈0, 𝑇〉)) |
56 | | eluzfz1 12642 |
. . . . . . . . . . . 12
⊢ (𝑇 ∈
(ℤ≥‘0) → 0 ∈ (0...𝑇)) |
57 | 34, 56 | syl 17 |
. . . . . . . . . . 11
⊢ (𝜑 → 0 ∈ (0...𝑇)) |
58 | | lencl 13594 |
. . . . . . . . . . . . . 14
⊢ (𝑆 ∈ Word 𝑋 → (♯‘𝑆) ∈
ℕ0) |
59 | 9, 58 | syl 17 |
. . . . . . . . . . . . 13
⊢ (𝜑 → (♯‘𝑆) ∈
ℕ0) |
60 | 59, 22 | syl6eleq 2917 |
. . . . . . . . . . . 12
⊢ (𝜑 → (♯‘𝑆) ∈
(ℤ≥‘0)) |
61 | | eluzfz2 12643 |
. . . . . . . . . . . 12
⊢
((♯‘𝑆)
∈ (ℤ≥‘0) → (♯‘𝑆) ∈ (0...(♯‘𝑆))) |
62 | 60, 61 | syl 17 |
. . . . . . . . . . 11
⊢ (𝜑 → (♯‘𝑆) ∈
(0...(♯‘𝑆))) |
63 | | ccatswrd 13747 |
. . . . . . . . . . 11
⊢ ((𝑆 ∈ Word 𝑋 ∧ (0 ∈ (0...𝑇) ∧ 𝑇 ∈ (0...(♯‘𝑆)) ∧ (♯‘𝑆) ∈
(0...(♯‘𝑆))))
→ ((𝑆 substr 〈0,
𝑇〉) ++ (𝑆 substr 〈𝑇, (♯‘𝑆)〉)) = (𝑆 substr 〈0, (♯‘𝑆)〉)) |
64 | 9, 57, 53, 62, 63 | syl13anc 1497 |
. . . . . . . . . 10
⊢ (𝜑 → ((𝑆 substr 〈0, 𝑇〉) ++ (𝑆 substr 〈𝑇, (♯‘𝑆)〉)) = (𝑆 substr 〈0, (♯‘𝑆)〉)) |
65 | | swrdidOLD 13716 |
. . . . . . . . . . 11
⊢ (𝑆 ∈ Word 𝑋 → (𝑆 substr 〈0, (♯‘𝑆)〉) = 𝑆) |
66 | 9, 65 | syl 17 |
. . . . . . . . . 10
⊢ (𝜑 → (𝑆 substr 〈0, (♯‘𝑆)〉) = 𝑆) |
67 | 64, 66, 1 | 3eqtrd 2866 |
. . . . . . . . 9
⊢ (𝜑 → ((𝑆 substr 〈0, 𝑇〉) ++ (𝑆 substr 〈𝑇, (♯‘𝑆)〉)) = ((𝐴 ++ 𝐵) ++ 𝐶)) |
68 | | swrdcl 13706 |
. . . . . . . . . . 11
⊢ (𝑆 ∈ Word 𝑋 → (𝑆 substr 〈0, 𝑇〉) ∈ Word 𝑋) |
69 | 9, 68 | syl 17 |
. . . . . . . . . 10
⊢ (𝜑 → (𝑆 substr 〈0, 𝑇〉) ∈ Word 𝑋) |
70 | | swrdcl 13706 |
. . . . . . . . . . 11
⊢ (𝑆 ∈ Word 𝑋 → (𝑆 substr 〈𝑇, (♯‘𝑆)〉) ∈ Word 𝑋) |
71 | 9, 70 | syl 17 |
. . . . . . . . . 10
⊢ (𝜑 → (𝑆 substr 〈𝑇, (♯‘𝑆)〉) ∈ Word 𝑋) |
72 | | swrd0lenOLD 13709 |
. . . . . . . . . . . 12
⊢ ((𝑆 ∈ Word 𝑋 ∧ 𝑇 ∈ (0...(♯‘𝑆))) → (♯‘(𝑆 substr 〈0, 𝑇〉)) = 𝑇) |
73 | 9, 53, 72 | syl2anc 581 |
. . . . . . . . . . 11
⊢ (𝜑 → (♯‘(𝑆 substr 〈0, 𝑇〉)) = 𝑇) |
74 | 73, 41 | eqtrd 2862 |
. . . . . . . . . 10
⊢ (𝜑 → (♯‘(𝑆 substr 〈0, 𝑇〉)) = (♯‘(𝐴 ++ 𝐵))) |
75 | | ccatopth 13805 |
. . . . . . . . . 10
⊢ ((((𝑆 substr 〈0, 𝑇〉) ∈ Word 𝑋 ∧ (𝑆 substr 〈𝑇, (♯‘𝑆)〉) ∈ Word 𝑋) ∧ ((𝐴 ++ 𝐵) ∈ Word 𝑋 ∧ 𝐶 ∈ Word 𝑋) ∧ (♯‘(𝑆 substr 〈0, 𝑇〉)) = (♯‘(𝐴 ++ 𝐵))) → (((𝑆 substr 〈0, 𝑇〉) ++ (𝑆 substr 〈𝑇, (♯‘𝑆)〉)) = ((𝐴 ++ 𝐵) ++ 𝐶) ↔ ((𝑆 substr 〈0, 𝑇〉) = (𝐴 ++ 𝐵) ∧ (𝑆 substr 〈𝑇, (♯‘𝑆)〉) = 𝐶))) |
76 | 69, 71, 5, 6, 74, 75 | syl221anc 1506 |
. . . . . . . . 9
⊢ (𝜑 → (((𝑆 substr 〈0, 𝑇〉) ++ (𝑆 substr 〈𝑇, (♯‘𝑆)〉)) = ((𝐴 ++ 𝐵) ++ 𝐶) ↔ ((𝑆 substr 〈0, 𝑇〉) = (𝐴 ++ 𝐵) ∧ (𝑆 substr 〈𝑇, (♯‘𝑆)〉) = 𝐶))) |
77 | 67, 76 | mpbid 224 |
. . . . . . . 8
⊢ (𝜑 → ((𝑆 substr 〈0, 𝑇〉) = (𝐴 ++ 𝐵) ∧ (𝑆 substr 〈𝑇, (♯‘𝑆)〉) = 𝐶)) |
78 | 77 | simpld 490 |
. . . . . . 7
⊢ (𝜑 → (𝑆 substr 〈0, 𝑇〉) = (𝐴 ++ 𝐵)) |
79 | 55, 78 | eqtrd 2862 |
. . . . . 6
⊢ (𝜑 → ((𝑆 substr 〈0, 𝐹〉) ++ (𝑆 substr 〈𝐹, 𝑇〉)) = (𝐴 ++ 𝐵)) |
80 | | swrdcl 13706 |
. . . . . . . 8
⊢ (𝑆 ∈ Word 𝑋 → (𝑆 substr 〈0, 𝐹〉) ∈ Word 𝑋) |
81 | 9, 80 | syl 17 |
. . . . . . 7
⊢ (𝜑 → (𝑆 substr 〈0, 𝐹〉) ∈ Word 𝑋) |
82 | | swrdcl 13706 |
. . . . . . . 8
⊢ (𝑆 ∈ Word 𝑋 → (𝑆 substr 〈𝐹, 𝑇〉) ∈ Word 𝑋) |
83 | 9, 82 | syl 17 |
. . . . . . 7
⊢ (𝜑 → (𝑆 substr 〈𝐹, 𝑇〉) ∈ Word 𝑋) |
84 | | uztrn 11986 |
. . . . . . . . . . 11
⊢
(((♯‘𝑆)
∈ (ℤ≥‘𝑇) ∧ 𝑇 ∈ (ℤ≥‘𝐹)) → (♯‘𝑆) ∈
(ℤ≥‘𝐹)) |
85 | 51, 31, 84 | syl2anc 581 |
. . . . . . . . . 10
⊢ (𝜑 → (♯‘𝑆) ∈
(ℤ≥‘𝐹)) |
86 | | elfzuzb 12630 |
. . . . . . . . . 10
⊢ (𝐹 ∈
(0...(♯‘𝑆))
↔ (𝐹 ∈
(ℤ≥‘0) ∧ (♯‘𝑆) ∈ (ℤ≥‘𝐹))) |
87 | 23, 85, 86 | sylanbrc 580 |
. . . . . . . . 9
⊢ (𝜑 → 𝐹 ∈ (0...(♯‘𝑆))) |
88 | | swrd0lenOLD 13709 |
. . . . . . . . 9
⊢ ((𝑆 ∈ Word 𝑋 ∧ 𝐹 ∈ (0...(♯‘𝑆))) → (♯‘(𝑆 substr 〈0, 𝐹〉)) = 𝐹) |
89 | 9, 87, 88 | syl2anc 581 |
. . . . . . . 8
⊢ (𝜑 → (♯‘(𝑆 substr 〈0, 𝐹〉)) = 𝐹) |
90 | 89, 10 | eqtrd 2862 |
. . . . . . 7
⊢ (𝜑 → (♯‘(𝑆 substr 〈0, 𝐹〉)) = (♯‘𝐴)) |
91 | | ccatopth 13805 |
. . . . . . 7
⊢ ((((𝑆 substr 〈0, 𝐹〉) ∈ Word 𝑋 ∧ (𝑆 substr 〈𝐹, 𝑇〉) ∈ Word 𝑋) ∧ (𝐴 ∈ Word 𝑋 ∧ 𝐵 ∈ Word 𝑋) ∧ (♯‘(𝑆 substr 〈0, 𝐹〉)) = (♯‘𝐴)) → (((𝑆 substr 〈0, 𝐹〉) ++ (𝑆 substr 〈𝐹, 𝑇〉)) = (𝐴 ++ 𝐵) ↔ ((𝑆 substr 〈0, 𝐹〉) = 𝐴 ∧ (𝑆 substr 〈𝐹, 𝑇〉) = 𝐵))) |
92 | 81, 83, 2, 3, 90, 91 | syl221anc 1506 |
. . . . . 6
⊢ (𝜑 → (((𝑆 substr 〈0, 𝐹〉) ++ (𝑆 substr 〈𝐹, 𝑇〉)) = (𝐴 ++ 𝐵) ↔ ((𝑆 substr 〈0, 𝐹〉) = 𝐴 ∧ (𝑆 substr 〈𝐹, 𝑇〉) = 𝐵))) |
93 | 79, 92 | mpbid 224 |
. . . . 5
⊢ (𝜑 → ((𝑆 substr 〈0, 𝐹〉) = 𝐴 ∧ (𝑆 substr 〈𝐹, 𝑇〉) = 𝐵)) |
94 | 93 | simpld 490 |
. . . 4
⊢ (𝜑 → (𝑆 substr 〈0, 𝐹〉) = 𝐴) |
95 | 94 | oveq1d 6921 |
. . 3
⊢ (𝜑 → ((𝑆 substr 〈0, 𝐹〉) ++ 𝑅) = (𝐴 ++ 𝑅)) |
96 | 77 | simprd 491 |
. . 3
⊢ (𝜑 → (𝑆 substr 〈𝑇, (♯‘𝑆)〉) = 𝐶) |
97 | 95, 96 | oveq12d 6924 |
. 2
⊢ (𝜑 → (((𝑆 substr 〈0, 𝐹〉) ++ 𝑅) ++ (𝑆 substr 〈𝑇, (♯‘𝑆)〉)) = ((𝐴 ++ 𝑅) ++ 𝐶)) |
98 | 21, 97 | eqtrd 2862 |
1
⊢ (𝜑 → (𝑆 spliceOLD 〈𝐹, 𝑇, 𝑅〉) = ((𝐴 ++ 𝑅) ++ 𝐶)) |