Proof of Theorem swrdccat3b
| Step | Hyp | Ref
| Expression |
| 1 | | simpl 109 |
. . . 4
⊢ (((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ 𝑀 ∈ (0...(𝐿 + (♯‘𝐵)))) → (𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉)) |
| 2 | | simpr 110 |
. . . 4
⊢ (((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ 𝑀 ∈ (0...(𝐿 + (♯‘𝐵)))) → 𝑀 ∈ (0...(𝐿 + (♯‘𝐵)))) |
| 3 | | elfzubelfz 10193 |
. . . . 5
⊢ (𝑀 ∈ (0...(𝐿 + (♯‘𝐵))) → (𝐿 + (♯‘𝐵)) ∈ (0...(𝐿 + (♯‘𝐵)))) |
| 4 | 3 | adantl 277 |
. . . 4
⊢ (((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ 𝑀 ∈ (0...(𝐿 + (♯‘𝐵)))) → (𝐿 + (♯‘𝐵)) ∈ (0...(𝐿 + (♯‘𝐵)))) |
| 5 | | swrdccatin2.l |
. . . . . 6
⊢ 𝐿 = (♯‘𝐴) |
| 6 | 5 | pfxccat3 11225 |
. . . . 5
⊢ ((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) → ((𝑀 ∈ (0...(𝐿 + (♯‘𝐵))) ∧ (𝐿 + (♯‘𝐵)) ∈ (0...(𝐿 + (♯‘𝐵)))) → ((𝐴 ++ 𝐵) substr 〈𝑀, (𝐿 + (♯‘𝐵))〉) = if((𝐿 + (♯‘𝐵)) ≤ 𝐿, (𝐴 substr 〈𝑀, (𝐿 + (♯‘𝐵))〉), if(𝐿 ≤ 𝑀, (𝐵 substr 〈(𝑀 − 𝐿), ((𝐿 + (♯‘𝐵)) − 𝐿)〉), ((𝐴 substr 〈𝑀, 𝐿〉) ++ (𝐵 prefix ((𝐿 + (♯‘𝐵)) − 𝐿))))))) |
| 7 | 6 | imp 124 |
. . . 4
⊢ (((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ (𝑀 ∈ (0...(𝐿 + (♯‘𝐵))) ∧ (𝐿 + (♯‘𝐵)) ∈ (0...(𝐿 + (♯‘𝐵))))) → ((𝐴 ++ 𝐵) substr 〈𝑀, (𝐿 + (♯‘𝐵))〉) = if((𝐿 + (♯‘𝐵)) ≤ 𝐿, (𝐴 substr 〈𝑀, (𝐿 + (♯‘𝐵))〉), if(𝐿 ≤ 𝑀, (𝐵 substr 〈(𝑀 − 𝐿), ((𝐿 + (♯‘𝐵)) − 𝐿)〉), ((𝐴 substr 〈𝑀, 𝐿〉) ++ (𝐵 prefix ((𝐿 + (♯‘𝐵)) − 𝐿)))))) |
| 8 | 1, 2, 4, 7 | syl12anc 1248 |
. . 3
⊢ (((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ 𝑀 ∈ (0...(𝐿 + (♯‘𝐵)))) → ((𝐴 ++ 𝐵) substr 〈𝑀, (𝐿 + (♯‘𝐵))〉) = if((𝐿 + (♯‘𝐵)) ≤ 𝐿, (𝐴 substr 〈𝑀, (𝐿 + (♯‘𝐵))〉), if(𝐿 ≤ 𝑀, (𝐵 substr 〈(𝑀 − 𝐿), ((𝐿 + (♯‘𝐵)) − 𝐿)〉), ((𝐴 substr 〈𝑀, 𝐿〉) ++ (𝐵 prefix ((𝐿 + (♯‘𝐵)) − 𝐿)))))) |
| 9 | 5 | swrdccat3blem 11230 |
. . . 4
⊢ ((((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ 𝑀 ∈ (0...(𝐿 + (♯‘𝐵)))) ∧ (𝐿 + (♯‘𝐵)) ≤ 𝐿) → if(𝐿 ≤ 𝑀, (𝐵 substr 〈(𝑀 − 𝐿), (♯‘𝐵)〉), ((𝐴 substr 〈𝑀, 𝐿〉) ++ 𝐵)) = (𝐴 substr 〈𝑀, (𝐿 + (♯‘𝐵))〉)) |
| 10 | | iftrue 3584 |
. . . . . 6
⊢ (𝐿 ≤ 𝑀 → if(𝐿 ≤ 𝑀, (𝐵 substr 〈(𝑀 − 𝐿), (♯‘𝐵)〉), ((𝐴 substr 〈𝑀, 𝐿〉) ++ 𝐵)) = (𝐵 substr 〈(𝑀 − 𝐿), (♯‘𝐵)〉)) |
| 11 | 10 | 3ad2ant3 1023 |
. . . . 5
⊢ ((((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ 𝑀 ∈ (0...(𝐿 + (♯‘𝐵)))) ∧ ¬ (𝐿 + (♯‘𝐵)) ≤ 𝐿 ∧ 𝐿 ≤ 𝑀) → if(𝐿 ≤ 𝑀, (𝐵 substr 〈(𝑀 − 𝐿), (♯‘𝐵)〉), ((𝐴 substr 〈𝑀, 𝐿〉) ++ 𝐵)) = (𝐵 substr 〈(𝑀 − 𝐿), (♯‘𝐵)〉)) |
| 12 | | lencl 11035 |
. . . . . . . . . . . 12
⊢ (𝐴 ∈ Word 𝑉 → (♯‘𝐴) ∈
ℕ0) |
| 13 | 12 | nn0cnd 9385 |
. . . . . . . . . . 11
⊢ (𝐴 ∈ Word 𝑉 → (♯‘𝐴) ∈ ℂ) |
| 14 | | lencl 11035 |
. . . . . . . . . . . 12
⊢ (𝐵 ∈ Word 𝑉 → (♯‘𝐵) ∈
ℕ0) |
| 15 | 14 | nn0cnd 9385 |
. . . . . . . . . . 11
⊢ (𝐵 ∈ Word 𝑉 → (♯‘𝐵) ∈ ℂ) |
| 16 | 5 | eqcomi 2211 |
. . . . . . . . . . . . 13
⊢
(♯‘𝐴) =
𝐿 |
| 17 | 16 | eleq1i 2273 |
. . . . . . . . . . . 12
⊢
((♯‘𝐴)
∈ ℂ ↔ 𝐿
∈ ℂ) |
| 18 | | pncan2 8314 |
. . . . . . . . . . . 12
⊢ ((𝐿 ∈ ℂ ∧
(♯‘𝐵) ∈
ℂ) → ((𝐿 +
(♯‘𝐵)) −
𝐿) = (♯‘𝐵)) |
| 19 | 17, 18 | sylanb 284 |
. . . . . . . . . . 11
⊢
(((♯‘𝐴)
∈ ℂ ∧ (♯‘𝐵) ∈ ℂ) → ((𝐿 + (♯‘𝐵)) − 𝐿) = (♯‘𝐵)) |
| 20 | 13, 15, 19 | syl2an 289 |
. . . . . . . . . 10
⊢ ((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) → ((𝐿 + (♯‘𝐵)) − 𝐿) = (♯‘𝐵)) |
| 21 | 20 | eqcomd 2213 |
. . . . . . . . 9
⊢ ((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) → (♯‘𝐵) = ((𝐿 + (♯‘𝐵)) − 𝐿)) |
| 22 | 21 | adantr 276 |
. . . . . . . 8
⊢ (((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ 𝑀 ∈ (0...(𝐿 + (♯‘𝐵)))) → (♯‘𝐵) = ((𝐿 + (♯‘𝐵)) − 𝐿)) |
| 23 | 22 | 3ad2ant1 1021 |
. . . . . . 7
⊢ ((((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ 𝑀 ∈ (0...(𝐿 + (♯‘𝐵)))) ∧ ¬ (𝐿 + (♯‘𝐵)) ≤ 𝐿 ∧ 𝐿 ≤ 𝑀) → (♯‘𝐵) = ((𝐿 + (♯‘𝐵)) − 𝐿)) |
| 24 | 23 | opeq2d 3840 |
. . . . . 6
⊢ ((((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ 𝑀 ∈ (0...(𝐿 + (♯‘𝐵)))) ∧ ¬ (𝐿 + (♯‘𝐵)) ≤ 𝐿 ∧ 𝐿 ≤ 𝑀) → 〈(𝑀 − 𝐿), (♯‘𝐵)〉 = 〈(𝑀 − 𝐿), ((𝐿 + (♯‘𝐵)) − 𝐿)〉) |
| 25 | 24 | oveq2d 5983 |
. . . . 5
⊢ ((((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ 𝑀 ∈ (0...(𝐿 + (♯‘𝐵)))) ∧ ¬ (𝐿 + (♯‘𝐵)) ≤ 𝐿 ∧ 𝐿 ≤ 𝑀) → (𝐵 substr 〈(𝑀 − 𝐿), (♯‘𝐵)〉) = (𝐵 substr 〈(𝑀 − 𝐿), ((𝐿 + (♯‘𝐵)) − 𝐿)〉)) |
| 26 | 11, 25 | eqtrd 2240 |
. . . 4
⊢ ((((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ 𝑀 ∈ (0...(𝐿 + (♯‘𝐵)))) ∧ ¬ (𝐿 + (♯‘𝐵)) ≤ 𝐿 ∧ 𝐿 ≤ 𝑀) → if(𝐿 ≤ 𝑀, (𝐵 substr 〈(𝑀 − 𝐿), (♯‘𝐵)〉), ((𝐴 substr 〈𝑀, 𝐿〉) ++ 𝐵)) = (𝐵 substr 〈(𝑀 − 𝐿), ((𝐿 + (♯‘𝐵)) − 𝐿)〉)) |
| 27 | | iffalse 3587 |
. . . . . 6
⊢ (¬
𝐿 ≤ 𝑀 → if(𝐿 ≤ 𝑀, (𝐵 substr 〈(𝑀 − 𝐿), (♯‘𝐵)〉), ((𝐴 substr 〈𝑀, 𝐿〉) ++ 𝐵)) = ((𝐴 substr 〈𝑀, 𝐿〉) ++ 𝐵)) |
| 28 | 27 | 3ad2ant3 1023 |
. . . . 5
⊢ ((((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ 𝑀 ∈ (0...(𝐿 + (♯‘𝐵)))) ∧ ¬ (𝐿 + (♯‘𝐵)) ≤ 𝐿 ∧ ¬ 𝐿 ≤ 𝑀) → if(𝐿 ≤ 𝑀, (𝐵 substr 〈(𝑀 − 𝐿), (♯‘𝐵)〉), ((𝐴 substr 〈𝑀, 𝐿〉) ++ 𝐵)) = ((𝐴 substr 〈𝑀, 𝐿〉) ++ 𝐵)) |
| 29 | 20 | adantr 276 |
. . . . . . . . 9
⊢ (((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ 𝑀 ∈ (0...(𝐿 + (♯‘𝐵)))) → ((𝐿 + (♯‘𝐵)) − 𝐿) = (♯‘𝐵)) |
| 30 | 29 | 3ad2ant1 1021 |
. . . . . . . 8
⊢ ((((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ 𝑀 ∈ (0...(𝐿 + (♯‘𝐵)))) ∧ ¬ (𝐿 + (♯‘𝐵)) ≤ 𝐿 ∧ ¬ 𝐿 ≤ 𝑀) → ((𝐿 + (♯‘𝐵)) − 𝐿) = (♯‘𝐵)) |
| 31 | 30 | oveq2d 5983 |
. . . . . . 7
⊢ ((((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ 𝑀 ∈ (0...(𝐿 + (♯‘𝐵)))) ∧ ¬ (𝐿 + (♯‘𝐵)) ≤ 𝐿 ∧ ¬ 𝐿 ≤ 𝑀) → (𝐵 prefix ((𝐿 + (♯‘𝐵)) − 𝐿)) = (𝐵 prefix (♯‘𝐵))) |
| 32 | | pfxid 11177 |
. . . . . . . . 9
⊢ (𝐵 ∈ Word 𝑉 → (𝐵 prefix (♯‘𝐵)) = 𝐵) |
| 33 | 32 | ad2antlr 489 |
. . . . . . . 8
⊢ (((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ 𝑀 ∈ (0...(𝐿 + (♯‘𝐵)))) → (𝐵 prefix (♯‘𝐵)) = 𝐵) |
| 34 | 33 | 3ad2ant1 1021 |
. . . . . . 7
⊢ ((((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ 𝑀 ∈ (0...(𝐿 + (♯‘𝐵)))) ∧ ¬ (𝐿 + (♯‘𝐵)) ≤ 𝐿 ∧ ¬ 𝐿 ≤ 𝑀) → (𝐵 prefix (♯‘𝐵)) = 𝐵) |
| 35 | 31, 34 | eqtr2d 2241 |
. . . . . 6
⊢ ((((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ 𝑀 ∈ (0...(𝐿 + (♯‘𝐵)))) ∧ ¬ (𝐿 + (♯‘𝐵)) ≤ 𝐿 ∧ ¬ 𝐿 ≤ 𝑀) → 𝐵 = (𝐵 prefix ((𝐿 + (♯‘𝐵)) − 𝐿))) |
| 36 | 35 | oveq2d 5983 |
. . . . 5
⊢ ((((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ 𝑀 ∈ (0...(𝐿 + (♯‘𝐵)))) ∧ ¬ (𝐿 + (♯‘𝐵)) ≤ 𝐿 ∧ ¬ 𝐿 ≤ 𝑀) → ((𝐴 substr 〈𝑀, 𝐿〉) ++ 𝐵) = ((𝐴 substr 〈𝑀, 𝐿〉) ++ (𝐵 prefix ((𝐿 + (♯‘𝐵)) − 𝐿)))) |
| 37 | 28, 36 | eqtrd 2240 |
. . . 4
⊢ ((((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ 𝑀 ∈ (0...(𝐿 + (♯‘𝐵)))) ∧ ¬ (𝐿 + (♯‘𝐵)) ≤ 𝐿 ∧ ¬ 𝐿 ≤ 𝑀) → if(𝐿 ≤ 𝑀, (𝐵 substr 〈(𝑀 − 𝐿), (♯‘𝐵)〉), ((𝐴 substr 〈𝑀, 𝐿〉) ++ 𝐵)) = ((𝐴 substr 〈𝑀, 𝐿〉) ++ (𝐵 prefix ((𝐿 + (♯‘𝐵)) − 𝐿)))) |
| 38 | 4 | elfzelzd 10183 |
. . . . 5
⊢ (((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ 𝑀 ∈ (0...(𝐿 + (♯‘𝐵)))) → (𝐿 + (♯‘𝐵)) ∈ ℤ) |
| 39 | 5, 12 | eqeltrid 2294 |
. . . . . . 7
⊢ (𝐴 ∈ Word 𝑉 → 𝐿 ∈
ℕ0) |
| 40 | 39 | ad2antrr 488 |
. . . . . 6
⊢ (((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ 𝑀 ∈ (0...(𝐿 + (♯‘𝐵)))) → 𝐿 ∈
ℕ0) |
| 41 | 40 | nn0zd 9528 |
. . . . 5
⊢ (((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ 𝑀 ∈ (0...(𝐿 + (♯‘𝐵)))) → 𝐿 ∈ ℤ) |
| 42 | | zdcle 9484 |
. . . . 5
⊢ (((𝐿 + (♯‘𝐵)) ∈ ℤ ∧ 𝐿 ∈ ℤ) →
DECID (𝐿 +
(♯‘𝐵)) ≤
𝐿) |
| 43 | 38, 41, 42 | syl2anc 411 |
. . . 4
⊢ (((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ 𝑀 ∈ (0...(𝐿 + (♯‘𝐵)))) → DECID (𝐿 + (♯‘𝐵)) ≤ 𝐿) |
| 44 | 41 | adantr 276 |
. . . . 5
⊢ ((((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ 𝑀 ∈ (0...(𝐿 + (♯‘𝐵)))) ∧ ¬ (𝐿 + (♯‘𝐵)) ≤ 𝐿) → 𝐿 ∈ ℤ) |
| 45 | | elfznn0 10271 |
. . . . . . 7
⊢ (𝑀 ∈ (0...(𝐿 + (♯‘𝐵))) → 𝑀 ∈
ℕ0) |
| 46 | 45 | ad2antlr 489 |
. . . . . 6
⊢ ((((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ 𝑀 ∈ (0...(𝐿 + (♯‘𝐵)))) ∧ ¬ (𝐿 + (♯‘𝐵)) ≤ 𝐿) → 𝑀 ∈
ℕ0) |
| 47 | 46 | nn0zd 9528 |
. . . . 5
⊢ ((((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ 𝑀 ∈ (0...(𝐿 + (♯‘𝐵)))) ∧ ¬ (𝐿 + (♯‘𝐵)) ≤ 𝐿) → 𝑀 ∈ ℤ) |
| 48 | | zdcle 9484 |
. . . . 5
⊢ ((𝐿 ∈ ℤ ∧ 𝑀 ∈ ℤ) →
DECID 𝐿 ≤
𝑀) |
| 49 | 44, 47, 48 | syl2anc 411 |
. . . 4
⊢ ((((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ 𝑀 ∈ (0...(𝐿 + (♯‘𝐵)))) ∧ ¬ (𝐿 + (♯‘𝐵)) ≤ 𝐿) → DECID 𝐿 ≤ 𝑀) |
| 50 | 9, 26, 37, 43, 49 | 2if2dc 3619 |
. . 3
⊢ (((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ 𝑀 ∈ (0...(𝐿 + (♯‘𝐵)))) → if(𝐿 ≤ 𝑀, (𝐵 substr 〈(𝑀 − 𝐿), (♯‘𝐵)〉), ((𝐴 substr 〈𝑀, 𝐿〉) ++ 𝐵)) = if((𝐿 + (♯‘𝐵)) ≤ 𝐿, (𝐴 substr 〈𝑀, (𝐿 + (♯‘𝐵))〉), if(𝐿 ≤ 𝑀, (𝐵 substr 〈(𝑀 − 𝐿), ((𝐿 + (♯‘𝐵)) − 𝐿)〉), ((𝐴 substr 〈𝑀, 𝐿〉) ++ (𝐵 prefix ((𝐿 + (♯‘𝐵)) − 𝐿)))))) |
| 51 | 8, 50 | eqtr4d 2243 |
. 2
⊢ (((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) ∧ 𝑀 ∈ (0...(𝐿 + (♯‘𝐵)))) → ((𝐴 ++ 𝐵) substr 〈𝑀, (𝐿 + (♯‘𝐵))〉) = if(𝐿 ≤ 𝑀, (𝐵 substr 〈(𝑀 − 𝐿), (♯‘𝐵)〉), ((𝐴 substr 〈𝑀, 𝐿〉) ++ 𝐵))) |
| 52 | 51 | ex 115 |
1
⊢ ((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) → (𝑀 ∈ (0...(𝐿 + (♯‘𝐵))) → ((𝐴 ++ 𝐵) substr 〈𝑀, (𝐿 + (♯‘𝐵))〉) = if(𝐿 ≤ 𝑀, (𝐵 substr 〈(𝑀 − 𝐿), (♯‘𝐵)〉), ((𝐴 substr 〈𝑀, 𝐿〉) ++ 𝐵)))) |