Proof of Theorem pfxsuff1eqwrdeq
| Step | Hyp | Ref
| Expression |
| 1 | | wrdfin 11015 |
. . . . . . . 8
⊢ (𝑊 ∈ Word 𝑉 → 𝑊 ∈ Fin) |
| 2 | | fihashneq0 10941 |
. . . . . . . 8
⊢ (𝑊 ∈ Fin → (0 <
(♯‘𝑊) ↔
𝑊 ≠
∅)) |
| 3 | 1, 2 | syl 14 |
. . . . . . 7
⊢ (𝑊 ∈ Word 𝑉 → (0 < (♯‘𝑊) ↔ 𝑊 ≠ ∅)) |
| 4 | 3 | biimpa 296 |
. . . . . 6
⊢ ((𝑊 ∈ Word 𝑉 ∧ 0 < (♯‘𝑊)) → 𝑊 ≠ ∅) |
| 5 | | lennncl 11016 |
. . . . . 6
⊢ ((𝑊 ∈ Word 𝑉 ∧ 𝑊 ≠ ∅) → (♯‘𝑊) ∈
ℕ) |
| 6 | 4, 5 | syldan 282 |
. . . . 5
⊢ ((𝑊 ∈ Word 𝑉 ∧ 0 < (♯‘𝑊)) → (♯‘𝑊) ∈
ℕ) |
| 7 | 6 | 3adant2 1019 |
. . . 4
⊢ ((𝑊 ∈ Word 𝑉 ∧ 𝑈 ∈ Word 𝑉 ∧ 0 < (♯‘𝑊)) → (♯‘𝑊) ∈
ℕ) |
| 8 | | fzo0end 10354 |
. . . 4
⊢
((♯‘𝑊)
∈ ℕ → ((♯‘𝑊) − 1) ∈
(0..^(♯‘𝑊))) |
| 9 | 7, 8 | syl 14 |
. . 3
⊢ ((𝑊 ∈ Word 𝑉 ∧ 𝑈 ∈ Word 𝑉 ∧ 0 < (♯‘𝑊)) → ((♯‘𝑊) − 1) ∈
(0..^(♯‘𝑊))) |
| 10 | | pfxsuffeqwrdeq 11152 |
. . 3
⊢ ((𝑊 ∈ Word 𝑉 ∧ 𝑈 ∈ Word 𝑉 ∧ ((♯‘𝑊) − 1) ∈
(0..^(♯‘𝑊)))
→ (𝑊 = 𝑈 ↔ ((♯‘𝑊) = (♯‘𝑈) ∧ ((𝑊 prefix ((♯‘𝑊) − 1)) = (𝑈 prefix ((♯‘𝑊) − 1)) ∧ (𝑊 substr 〈((♯‘𝑊) − 1),
(♯‘𝑊)〉) =
(𝑈 substr
〈((♯‘𝑊)
− 1), (♯‘𝑊)〉))))) |
| 11 | 9, 10 | syld3an3 1295 |
. 2
⊢ ((𝑊 ∈ Word 𝑉 ∧ 𝑈 ∈ Word 𝑉 ∧ 0 < (♯‘𝑊)) → (𝑊 = 𝑈 ↔ ((♯‘𝑊) = (♯‘𝑈) ∧ ((𝑊 prefix ((♯‘𝑊) − 1)) = (𝑈 prefix ((♯‘𝑊) − 1)) ∧ (𝑊 substr 〈((♯‘𝑊) − 1),
(♯‘𝑊)〉) =
(𝑈 substr
〈((♯‘𝑊)
− 1), (♯‘𝑊)〉))))) |
| 12 | 3 | biimpd 144 |
. . . . . . . . . 10
⊢ (𝑊 ∈ Word 𝑉 → (0 < (♯‘𝑊) → 𝑊 ≠ ∅)) |
| 13 | 12 | imdistani 445 |
. . . . . . . . 9
⊢ ((𝑊 ∈ Word 𝑉 ∧ 0 < (♯‘𝑊)) → (𝑊 ∈ Word 𝑉 ∧ 𝑊 ≠ ∅)) |
| 14 | 13 | 3adant2 1019 |
. . . . . . . 8
⊢ ((𝑊 ∈ Word 𝑉 ∧ 𝑈 ∈ Word 𝑉 ∧ 0 < (♯‘𝑊)) → (𝑊 ∈ Word 𝑉 ∧ 𝑊 ≠ ∅)) |
| 15 | 14 | adantr 276 |
. . . . . . 7
⊢ (((𝑊 ∈ Word 𝑉 ∧ 𝑈 ∈ Word 𝑉 ∧ 0 < (♯‘𝑊)) ∧ (♯‘𝑊) = (♯‘𝑈)) → (𝑊 ∈ Word 𝑉 ∧ 𝑊 ≠ ∅)) |
| 16 | | swrdlsw 11125 |
. . . . . . 7
⊢ ((𝑊 ∈ Word 𝑉 ∧ 𝑊 ≠ ∅) → (𝑊 substr 〈((♯‘𝑊) − 1),
(♯‘𝑊)〉) =
〈“(lastS‘𝑊)”〉) |
| 17 | 15, 16 | syl 14 |
. . . . . 6
⊢ (((𝑊 ∈ Word 𝑉 ∧ 𝑈 ∈ Word 𝑉 ∧ 0 < (♯‘𝑊)) ∧ (♯‘𝑊) = (♯‘𝑈)) → (𝑊 substr 〈((♯‘𝑊) − 1),
(♯‘𝑊)〉) =
〈“(lastS‘𝑊)”〉) |
| 18 | | breq2 4049 |
. . . . . . . . . 10
⊢
((♯‘𝑊) =
(♯‘𝑈) → (0
< (♯‘𝑊)
↔ 0 < (♯‘𝑈))) |
| 19 | 18 | 3anbi3d 1331 |
. . . . . . . . 9
⊢
((♯‘𝑊) =
(♯‘𝑈) →
((𝑊 ∈ Word 𝑉 ∧ 𝑈 ∈ Word 𝑉 ∧ 0 < (♯‘𝑊)) ↔ (𝑊 ∈ Word 𝑉 ∧ 𝑈 ∈ Word 𝑉 ∧ 0 < (♯‘𝑈)))) |
| 20 | | wrdfin 11015 |
. . . . . . . . . . . . . 14
⊢ (𝑈 ∈ Word 𝑉 → 𝑈 ∈ Fin) |
| 21 | | fihashneq0 10941 |
. . . . . . . . . . . . . 14
⊢ (𝑈 ∈ Fin → (0 <
(♯‘𝑈) ↔
𝑈 ≠
∅)) |
| 22 | 20, 21 | syl 14 |
. . . . . . . . . . . . 13
⊢ (𝑈 ∈ Word 𝑉 → (0 < (♯‘𝑈) ↔ 𝑈 ≠ ∅)) |
| 23 | 22 | biimpd 144 |
. . . . . . . . . . . 12
⊢ (𝑈 ∈ Word 𝑉 → (0 < (♯‘𝑈) → 𝑈 ≠ ∅)) |
| 24 | 23 | imdistani 445 |
. . . . . . . . . . 11
⊢ ((𝑈 ∈ Word 𝑉 ∧ 0 < (♯‘𝑈)) → (𝑈 ∈ Word 𝑉 ∧ 𝑈 ≠ ∅)) |
| 25 | 24 | 3adant1 1018 |
. . . . . . . . . 10
⊢ ((𝑊 ∈ Word 𝑉 ∧ 𝑈 ∈ Word 𝑉 ∧ 0 < (♯‘𝑈)) → (𝑈 ∈ Word 𝑉 ∧ 𝑈 ≠ ∅)) |
| 26 | | swrdlsw 11125 |
. . . . . . . . . 10
⊢ ((𝑈 ∈ Word 𝑉 ∧ 𝑈 ≠ ∅) → (𝑈 substr 〈((♯‘𝑈) − 1),
(♯‘𝑈)〉) =
〈“(lastS‘𝑈)”〉) |
| 27 | 25, 26 | syl 14 |
. . . . . . . . 9
⊢ ((𝑊 ∈ Word 𝑉 ∧ 𝑈 ∈ Word 𝑉 ∧ 0 < (♯‘𝑈)) → (𝑈 substr 〈((♯‘𝑈) − 1),
(♯‘𝑈)〉) =
〈“(lastS‘𝑈)”〉) |
| 28 | 19, 27 | biimtrdi 163 |
. . . . . . . 8
⊢
((♯‘𝑊) =
(♯‘𝑈) →
((𝑊 ∈ Word 𝑉 ∧ 𝑈 ∈ Word 𝑉 ∧ 0 < (♯‘𝑊)) → (𝑈 substr 〈((♯‘𝑈) − 1),
(♯‘𝑈)〉) =
〈“(lastS‘𝑈)”〉)) |
| 29 | 28 | impcom 125 |
. . . . . . 7
⊢ (((𝑊 ∈ Word 𝑉 ∧ 𝑈 ∈ Word 𝑉 ∧ 0 < (♯‘𝑊)) ∧ (♯‘𝑊) = (♯‘𝑈)) → (𝑈 substr 〈((♯‘𝑈) − 1),
(♯‘𝑈)〉) =
〈“(lastS‘𝑈)”〉) |
| 30 | | oveq1 5953 |
. . . . . . . . . . 11
⊢
((♯‘𝑊) =
(♯‘𝑈) →
((♯‘𝑊) −
1) = ((♯‘𝑈)
− 1)) |
| 31 | | id 19 |
. . . . . . . . . . 11
⊢
((♯‘𝑊) =
(♯‘𝑈) →
(♯‘𝑊) =
(♯‘𝑈)) |
| 32 | 30, 31 | opeq12d 3827 |
. . . . . . . . . 10
⊢
((♯‘𝑊) =
(♯‘𝑈) →
〈((♯‘𝑊)
− 1), (♯‘𝑊)〉 = 〈((♯‘𝑈) − 1),
(♯‘𝑈)〉) |
| 33 | 32 | oveq2d 5962 |
. . . . . . . . 9
⊢
((♯‘𝑊) =
(♯‘𝑈) →
(𝑈 substr
〈((♯‘𝑊)
− 1), (♯‘𝑊)〉) = (𝑈 substr 〈((♯‘𝑈) − 1),
(♯‘𝑈)〉)) |
| 34 | 33 | eqeq1d 2214 |
. . . . . . . 8
⊢
((♯‘𝑊) =
(♯‘𝑈) →
((𝑈 substr
〈((♯‘𝑊)
− 1), (♯‘𝑊)〉) = 〈“(lastS‘𝑈)”〉 ↔ (𝑈 substr
〈((♯‘𝑈)
− 1), (♯‘𝑈)〉) = 〈“(lastS‘𝑈)”〉)) |
| 35 | 34 | adantl 277 |
. . . . . . 7
⊢ (((𝑊 ∈ Word 𝑉 ∧ 𝑈 ∈ Word 𝑉 ∧ 0 < (♯‘𝑊)) ∧ (♯‘𝑊) = (♯‘𝑈)) → ((𝑈 substr 〈((♯‘𝑊) − 1),
(♯‘𝑊)〉) =
〈“(lastS‘𝑈)”〉 ↔ (𝑈 substr 〈((♯‘𝑈) − 1),
(♯‘𝑈)〉) =
〈“(lastS‘𝑈)”〉)) |
| 36 | 29, 35 | mpbird 167 |
. . . . . 6
⊢ (((𝑊 ∈ Word 𝑉 ∧ 𝑈 ∈ Word 𝑉 ∧ 0 < (♯‘𝑊)) ∧ (♯‘𝑊) = (♯‘𝑈)) → (𝑈 substr 〈((♯‘𝑊) − 1),
(♯‘𝑊)〉) =
〈“(lastS‘𝑈)”〉) |
| 37 | 17, 36 | eqeq12d 2220 |
. . . . 5
⊢ (((𝑊 ∈ Word 𝑉 ∧ 𝑈 ∈ Word 𝑉 ∧ 0 < (♯‘𝑊)) ∧ (♯‘𝑊) = (♯‘𝑈)) → ((𝑊 substr 〈((♯‘𝑊) − 1),
(♯‘𝑊)〉) =
(𝑈 substr
〈((♯‘𝑊)
− 1), (♯‘𝑊)〉) ↔
〈“(lastS‘𝑊)”〉 =
〈“(lastS‘𝑈)”〉)) |
| 38 | | lswex 11047 |
. . . . . . 7
⊢ (𝑊 ∈ Word 𝑉 → (lastS‘𝑊) ∈ V) |
| 39 | 38 | 3ad2ant1 1021 |
. . . . . 6
⊢ ((𝑊 ∈ Word 𝑉 ∧ 𝑈 ∈ Word 𝑉 ∧ 0 < (♯‘𝑊)) → (lastS‘𝑊) ∈ V) |
| 40 | | lswex 11047 |
. . . . . . . 8
⊢ (𝑈 ∈ Word 𝑉 → (lastS‘𝑈) ∈ V) |
| 41 | 40 | 3ad2ant2 1022 |
. . . . . . 7
⊢ ((𝑊 ∈ Word 𝑉 ∧ 𝑈 ∈ Word 𝑉 ∧ 0 < (♯‘𝑊)) → (lastS‘𝑈) ∈ V) |
| 42 | 41 | adantr 276 |
. . . . . 6
⊢ (((𝑊 ∈ Word 𝑉 ∧ 𝑈 ∈ Word 𝑉 ∧ 0 < (♯‘𝑊)) ∧ (♯‘𝑊) = (♯‘𝑈)) → (lastS‘𝑈) ∈ V) |
| 43 | | s111 11088 |
. . . . . 6
⊢
(((lastS‘𝑊)
∈ V ∧ (lastS‘𝑈) ∈ V) →
(〈“(lastS‘𝑊)”〉 =
〈“(lastS‘𝑈)”〉 ↔ (lastS‘𝑊) = (lastS‘𝑈))) |
| 44 | 39, 42, 43 | syl2an2r 595 |
. . . . 5
⊢ (((𝑊 ∈ Word 𝑉 ∧ 𝑈 ∈ Word 𝑉 ∧ 0 < (♯‘𝑊)) ∧ (♯‘𝑊) = (♯‘𝑈)) →
(〈“(lastS‘𝑊)”〉 =
〈“(lastS‘𝑈)”〉 ↔ (lastS‘𝑊) = (lastS‘𝑈))) |
| 45 | 37, 44 | bitrd 188 |
. . . 4
⊢ (((𝑊 ∈ Word 𝑉 ∧ 𝑈 ∈ Word 𝑉 ∧ 0 < (♯‘𝑊)) ∧ (♯‘𝑊) = (♯‘𝑈)) → ((𝑊 substr 〈((♯‘𝑊) − 1),
(♯‘𝑊)〉) =
(𝑈 substr
〈((♯‘𝑊)
− 1), (♯‘𝑊)〉) ↔ (lastS‘𝑊) = (lastS‘𝑈))) |
| 46 | 45 | anbi2d 464 |
. . 3
⊢ (((𝑊 ∈ Word 𝑉 ∧ 𝑈 ∈ Word 𝑉 ∧ 0 < (♯‘𝑊)) ∧ (♯‘𝑊) = (♯‘𝑈)) → (((𝑊 prefix ((♯‘𝑊) − 1)) = (𝑈 prefix ((♯‘𝑊) − 1)) ∧ (𝑊 substr 〈((♯‘𝑊) − 1),
(♯‘𝑊)〉) =
(𝑈 substr
〈((♯‘𝑊)
− 1), (♯‘𝑊)〉)) ↔ ((𝑊 prefix ((♯‘𝑊) − 1)) = (𝑈 prefix ((♯‘𝑊) − 1)) ∧ (lastS‘𝑊) = (lastS‘𝑈)))) |
| 47 | 46 | pm5.32da 452 |
. 2
⊢ ((𝑊 ∈ Word 𝑉 ∧ 𝑈 ∈ Word 𝑉 ∧ 0 < (♯‘𝑊)) → (((♯‘𝑊) = (♯‘𝑈) ∧ ((𝑊 prefix ((♯‘𝑊) − 1)) = (𝑈 prefix ((♯‘𝑊) − 1)) ∧ (𝑊 substr 〈((♯‘𝑊) − 1),
(♯‘𝑊)〉) =
(𝑈 substr
〈((♯‘𝑊)
− 1), (♯‘𝑊)〉))) ↔ ((♯‘𝑊) = (♯‘𝑈) ∧ ((𝑊 prefix ((♯‘𝑊) − 1)) = (𝑈 prefix ((♯‘𝑊) − 1)) ∧ (lastS‘𝑊) = (lastS‘𝑈))))) |
| 48 | 11, 47 | bitrd 188 |
1
⊢ ((𝑊 ∈ Word 𝑉 ∧ 𝑈 ∈ Word 𝑉 ∧ 0 < (♯‘𝑊)) → (𝑊 = 𝑈 ↔ ((♯‘𝑊) = (♯‘𝑈) ∧ ((𝑊 prefix ((♯‘𝑊) − 1)) = (𝑈 prefix ((♯‘𝑊) − 1)) ∧ (lastS‘𝑊) = (lastS‘𝑈))))) |