Proof of Theorem ccatopth
| Step | Hyp | Ref
| Expression |
| 1 | | oveq1 6001 |
. . . . 5
⊢ ((𝐴 ++ 𝐵) = (𝐶 ++ 𝐷) → ((𝐴 ++ 𝐵) prefix (♯‘𝐴)) = ((𝐶 ++ 𝐷) prefix (♯‘𝐴))) |
| 2 | | pfxccat1 11220 |
. . . . . 6
⊢ ((𝐴 ∈ Word 𝑋 ∧ 𝐵 ∈ Word 𝑋) → ((𝐴 ++ 𝐵) prefix (♯‘𝐴)) = 𝐴) |
| 3 | | oveq2 6002 |
. . . . . . 7
⊢
((♯‘𝐴) =
(♯‘𝐶) →
((𝐶 ++ 𝐷) prefix (♯‘𝐴)) = ((𝐶 ++ 𝐷) prefix (♯‘𝐶))) |
| 4 | | pfxccat1 11220 |
. . . . . . 7
⊢ ((𝐶 ∈ Word 𝑋 ∧ 𝐷 ∈ Word 𝑋) → ((𝐶 ++ 𝐷) prefix (♯‘𝐶)) = 𝐶) |
| 5 | 3, 4 | sylan9eqr 2284 |
. . . . . 6
⊢ (((𝐶 ∈ Word 𝑋 ∧ 𝐷 ∈ Word 𝑋) ∧ (♯‘𝐴) = (♯‘𝐶)) → ((𝐶 ++ 𝐷) prefix (♯‘𝐴)) = 𝐶) |
| 6 | 2, 5 | eqeqan12d 2245 |
. . . . 5
⊢ (((𝐴 ∈ Word 𝑋 ∧ 𝐵 ∈ Word 𝑋) ∧ ((𝐶 ∈ Word 𝑋 ∧ 𝐷 ∈ Word 𝑋) ∧ (♯‘𝐴) = (♯‘𝐶))) → (((𝐴 ++ 𝐵) prefix (♯‘𝐴)) = ((𝐶 ++ 𝐷) prefix (♯‘𝐴)) ↔ 𝐴 = 𝐶)) |
| 7 | 1, 6 | imbitrid 154 |
. . . 4
⊢ (((𝐴 ∈ Word 𝑋 ∧ 𝐵 ∈ Word 𝑋) ∧ ((𝐶 ∈ Word 𝑋 ∧ 𝐷 ∈ Word 𝑋) ∧ (♯‘𝐴) = (♯‘𝐶))) → ((𝐴 ++ 𝐵) = (𝐶 ++ 𝐷) → 𝐴 = 𝐶)) |
| 8 | 7 | 3impb 1223 |
. . 3
⊢ (((𝐴 ∈ Word 𝑋 ∧ 𝐵 ∈ Word 𝑋) ∧ (𝐶 ∈ Word 𝑋 ∧ 𝐷 ∈ Word 𝑋) ∧ (♯‘𝐴) = (♯‘𝐶)) → ((𝐴 ++ 𝐵) = (𝐶 ++ 𝐷) → 𝐴 = 𝐶)) |
| 9 | | simpr 110 |
. . . . . 6
⊢ ((((𝐴 ∈ Word 𝑋 ∧ 𝐵 ∈ Word 𝑋) ∧ (𝐶 ∈ Word 𝑋 ∧ 𝐷 ∈ Word 𝑋) ∧ (♯‘𝐴) = (♯‘𝐶)) ∧ (𝐴 ++ 𝐵) = (𝐶 ++ 𝐷)) → (𝐴 ++ 𝐵) = (𝐶 ++ 𝐷)) |
| 10 | | simpl3 1026 |
. . . . . . 7
⊢ ((((𝐴 ∈ Word 𝑋 ∧ 𝐵 ∈ Word 𝑋) ∧ (𝐶 ∈ Word 𝑋 ∧ 𝐷 ∈ Word 𝑋) ∧ (♯‘𝐴) = (♯‘𝐶)) ∧ (𝐴 ++ 𝐵) = (𝐶 ++ 𝐷)) → (♯‘𝐴) = (♯‘𝐶)) |
| 11 | 9 | fveq2d 5627 |
. . . . . . . 8
⊢ ((((𝐴 ∈ Word 𝑋 ∧ 𝐵 ∈ Word 𝑋) ∧ (𝐶 ∈ Word 𝑋 ∧ 𝐷 ∈ Word 𝑋) ∧ (♯‘𝐴) = (♯‘𝐶)) ∧ (𝐴 ++ 𝐵) = (𝐶 ++ 𝐷)) → (♯‘(𝐴 ++ 𝐵)) = (♯‘(𝐶 ++ 𝐷))) |
| 12 | | simpl1 1024 |
. . . . . . . . 9
⊢ ((((𝐴 ∈ Word 𝑋 ∧ 𝐵 ∈ Word 𝑋) ∧ (𝐶 ∈ Word 𝑋 ∧ 𝐷 ∈ Word 𝑋) ∧ (♯‘𝐴) = (♯‘𝐶)) ∧ (𝐴 ++ 𝐵) = (𝐶 ++ 𝐷)) → (𝐴 ∈ Word 𝑋 ∧ 𝐵 ∈ Word 𝑋)) |
| 13 | | ccatlen 11116 |
. . . . . . . . 9
⊢ ((𝐴 ∈ Word 𝑋 ∧ 𝐵 ∈ Word 𝑋) → (♯‘(𝐴 ++ 𝐵)) = ((♯‘𝐴) + (♯‘𝐵))) |
| 14 | 12, 13 | syl 14 |
. . . . . . . 8
⊢ ((((𝐴 ∈ Word 𝑋 ∧ 𝐵 ∈ Word 𝑋) ∧ (𝐶 ∈ Word 𝑋 ∧ 𝐷 ∈ Word 𝑋) ∧ (♯‘𝐴) = (♯‘𝐶)) ∧ (𝐴 ++ 𝐵) = (𝐶 ++ 𝐷)) → (♯‘(𝐴 ++ 𝐵)) = ((♯‘𝐴) + (♯‘𝐵))) |
| 15 | | simpl2 1025 |
. . . . . . . . 9
⊢ ((((𝐴 ∈ Word 𝑋 ∧ 𝐵 ∈ Word 𝑋) ∧ (𝐶 ∈ Word 𝑋 ∧ 𝐷 ∈ Word 𝑋) ∧ (♯‘𝐴) = (♯‘𝐶)) ∧ (𝐴 ++ 𝐵) = (𝐶 ++ 𝐷)) → (𝐶 ∈ Word 𝑋 ∧ 𝐷 ∈ Word 𝑋)) |
| 16 | | ccatlen 11116 |
. . . . . . . . 9
⊢ ((𝐶 ∈ Word 𝑋 ∧ 𝐷 ∈ Word 𝑋) → (♯‘(𝐶 ++ 𝐷)) = ((♯‘𝐶) + (♯‘𝐷))) |
| 17 | 15, 16 | syl 14 |
. . . . . . . 8
⊢ ((((𝐴 ∈ Word 𝑋 ∧ 𝐵 ∈ Word 𝑋) ∧ (𝐶 ∈ Word 𝑋 ∧ 𝐷 ∈ Word 𝑋) ∧ (♯‘𝐴) = (♯‘𝐶)) ∧ (𝐴 ++ 𝐵) = (𝐶 ++ 𝐷)) → (♯‘(𝐶 ++ 𝐷)) = ((♯‘𝐶) + (♯‘𝐷))) |
| 18 | 11, 14, 17 | 3eqtr3d 2270 |
. . . . . . 7
⊢ ((((𝐴 ∈ Word 𝑋 ∧ 𝐵 ∈ Word 𝑋) ∧ (𝐶 ∈ Word 𝑋 ∧ 𝐷 ∈ Word 𝑋) ∧ (♯‘𝐴) = (♯‘𝐶)) ∧ (𝐴 ++ 𝐵) = (𝐶 ++ 𝐷)) → ((♯‘𝐴) + (♯‘𝐵)) = ((♯‘𝐶) + (♯‘𝐷))) |
| 19 | 10, 18 | opeq12d 3864 |
. . . . . 6
⊢ ((((𝐴 ∈ Word 𝑋 ∧ 𝐵 ∈ Word 𝑋) ∧ (𝐶 ∈ Word 𝑋 ∧ 𝐷 ∈ Word 𝑋) ∧ (♯‘𝐴) = (♯‘𝐶)) ∧ (𝐴 ++ 𝐵) = (𝐶 ++ 𝐷)) → 〈(♯‘𝐴), ((♯‘𝐴) + (♯‘𝐵))〉 =
〈(♯‘𝐶),
((♯‘𝐶) +
(♯‘𝐷))〉) |
| 20 | 9, 19 | oveq12d 6012 |
. . . . 5
⊢ ((((𝐴 ∈ Word 𝑋 ∧ 𝐵 ∈ Word 𝑋) ∧ (𝐶 ∈ Word 𝑋 ∧ 𝐷 ∈ Word 𝑋) ∧ (♯‘𝐴) = (♯‘𝐶)) ∧ (𝐴 ++ 𝐵) = (𝐶 ++ 𝐷)) → ((𝐴 ++ 𝐵) substr 〈(♯‘𝐴), ((♯‘𝐴) + (♯‘𝐵))〉) = ((𝐶 ++ 𝐷) substr 〈(♯‘𝐶), ((♯‘𝐶) + (♯‘𝐷))〉)) |
| 21 | | swrdccat2 11189 |
. . . . . 6
⊢ ((𝐴 ∈ Word 𝑋 ∧ 𝐵 ∈ Word 𝑋) → ((𝐴 ++ 𝐵) substr 〈(♯‘𝐴), ((♯‘𝐴) + (♯‘𝐵))〉) = 𝐵) |
| 22 | 12, 21 | syl 14 |
. . . . 5
⊢ ((((𝐴 ∈ Word 𝑋 ∧ 𝐵 ∈ Word 𝑋) ∧ (𝐶 ∈ Word 𝑋 ∧ 𝐷 ∈ Word 𝑋) ∧ (♯‘𝐴) = (♯‘𝐶)) ∧ (𝐴 ++ 𝐵) = (𝐶 ++ 𝐷)) → ((𝐴 ++ 𝐵) substr 〈(♯‘𝐴), ((♯‘𝐴) + (♯‘𝐵))〉) = 𝐵) |
| 23 | | swrdccat2 11189 |
. . . . . 6
⊢ ((𝐶 ∈ Word 𝑋 ∧ 𝐷 ∈ Word 𝑋) → ((𝐶 ++ 𝐷) substr 〈(♯‘𝐶), ((♯‘𝐶) + (♯‘𝐷))〉) = 𝐷) |
| 24 | 15, 23 | syl 14 |
. . . . 5
⊢ ((((𝐴 ∈ Word 𝑋 ∧ 𝐵 ∈ Word 𝑋) ∧ (𝐶 ∈ Word 𝑋 ∧ 𝐷 ∈ Word 𝑋) ∧ (♯‘𝐴) = (♯‘𝐶)) ∧ (𝐴 ++ 𝐵) = (𝐶 ++ 𝐷)) → ((𝐶 ++ 𝐷) substr 〈(♯‘𝐶), ((♯‘𝐶) + (♯‘𝐷))〉) = 𝐷) |
| 25 | 20, 22, 24 | 3eqtr3d 2270 |
. . . 4
⊢ ((((𝐴 ∈ Word 𝑋 ∧ 𝐵 ∈ Word 𝑋) ∧ (𝐶 ∈ Word 𝑋 ∧ 𝐷 ∈ Word 𝑋) ∧ (♯‘𝐴) = (♯‘𝐶)) ∧ (𝐴 ++ 𝐵) = (𝐶 ++ 𝐷)) → 𝐵 = 𝐷) |
| 26 | 25 | ex 115 |
. . 3
⊢ (((𝐴 ∈ Word 𝑋 ∧ 𝐵 ∈ Word 𝑋) ∧ (𝐶 ∈ Word 𝑋 ∧ 𝐷 ∈ Word 𝑋) ∧ (♯‘𝐴) = (♯‘𝐶)) → ((𝐴 ++ 𝐵) = (𝐶 ++ 𝐷) → 𝐵 = 𝐷)) |
| 27 | 8, 26 | jcad 307 |
. 2
⊢ (((𝐴 ∈ Word 𝑋 ∧ 𝐵 ∈ Word 𝑋) ∧ (𝐶 ∈ Word 𝑋 ∧ 𝐷 ∈ Word 𝑋) ∧ (♯‘𝐴) = (♯‘𝐶)) → ((𝐴 ++ 𝐵) = (𝐶 ++ 𝐷) → (𝐴 = 𝐶 ∧ 𝐵 = 𝐷))) |
| 28 | | oveq12 6003 |
. 2
⊢ ((𝐴 = 𝐶 ∧ 𝐵 = 𝐷) → (𝐴 ++ 𝐵) = (𝐶 ++ 𝐷)) |
| 29 | 27, 28 | impbid1 142 |
1
⊢ (((𝐴 ∈ Word 𝑋 ∧ 𝐵 ∈ Word 𝑋) ∧ (𝐶 ∈ Word 𝑋 ∧ 𝐷 ∈ Word 𝑋) ∧ (♯‘𝐴) = (♯‘𝐶)) → ((𝐴 ++ 𝐵) = (𝐶 ++ 𝐷) ↔ (𝐴 = 𝐶 ∧ 𝐵 = 𝐷))) |