| Step |
Hyp |
Ref |
Expression |
| 1 |
|
ovex |
⊢ ( 𝑆 substr 〈 𝑋 , 𝑌 〉 ) ∈ V |
| 2 |
|
splval |
⊢ ( ( 𝑆 ∈ Word 𝐴 ∧ ( 𝑋 ∈ ( 0 ... 𝑌 ) ∧ 𝑌 ∈ ( 0 ... ( ♯ ‘ 𝑆 ) ) ∧ ( 𝑆 substr 〈 𝑋 , 𝑌 〉 ) ∈ V ) ) → ( 𝑆 splice 〈 𝑋 , 𝑌 , ( 𝑆 substr 〈 𝑋 , 𝑌 〉 ) 〉 ) = ( ( ( 𝑆 prefix 𝑋 ) ++ ( 𝑆 substr 〈 𝑋 , 𝑌 〉 ) ) ++ ( 𝑆 substr 〈 𝑌 , ( ♯ ‘ 𝑆 ) 〉 ) ) ) |
| 3 |
1 2
|
mp3anr3 |
⊢ ( ( 𝑆 ∈ Word 𝐴 ∧ ( 𝑋 ∈ ( 0 ... 𝑌 ) ∧ 𝑌 ∈ ( 0 ... ( ♯ ‘ 𝑆 ) ) ) ) → ( 𝑆 splice 〈 𝑋 , 𝑌 , ( 𝑆 substr 〈 𝑋 , 𝑌 〉 ) 〉 ) = ( ( ( 𝑆 prefix 𝑋 ) ++ ( 𝑆 substr 〈 𝑋 , 𝑌 〉 ) ) ++ ( 𝑆 substr 〈 𝑌 , ( ♯ ‘ 𝑆 ) 〉 ) ) ) |
| 4 |
|
ccatpfx |
⊢ ( ( 𝑆 ∈ Word 𝐴 ∧ 𝑋 ∈ ( 0 ... 𝑌 ) ∧ 𝑌 ∈ ( 0 ... ( ♯ ‘ 𝑆 ) ) ) → ( ( 𝑆 prefix 𝑋 ) ++ ( 𝑆 substr 〈 𝑋 , 𝑌 〉 ) ) = ( 𝑆 prefix 𝑌 ) ) |
| 5 |
4
|
3expb |
⊢ ( ( 𝑆 ∈ Word 𝐴 ∧ ( 𝑋 ∈ ( 0 ... 𝑌 ) ∧ 𝑌 ∈ ( 0 ... ( ♯ ‘ 𝑆 ) ) ) ) → ( ( 𝑆 prefix 𝑋 ) ++ ( 𝑆 substr 〈 𝑋 , 𝑌 〉 ) ) = ( 𝑆 prefix 𝑌 ) ) |
| 6 |
5
|
oveq1d |
⊢ ( ( 𝑆 ∈ Word 𝐴 ∧ ( 𝑋 ∈ ( 0 ... 𝑌 ) ∧ 𝑌 ∈ ( 0 ... ( ♯ ‘ 𝑆 ) ) ) ) → ( ( ( 𝑆 prefix 𝑋 ) ++ ( 𝑆 substr 〈 𝑋 , 𝑌 〉 ) ) ++ ( 𝑆 substr 〈 𝑌 , ( ♯ ‘ 𝑆 ) 〉 ) ) = ( ( 𝑆 prefix 𝑌 ) ++ ( 𝑆 substr 〈 𝑌 , ( ♯ ‘ 𝑆 ) 〉 ) ) ) |
| 7 |
|
simpl |
⊢ ( ( 𝑆 ∈ Word 𝐴 ∧ ( 𝑋 ∈ ( 0 ... 𝑌 ) ∧ 𝑌 ∈ ( 0 ... ( ♯ ‘ 𝑆 ) ) ) ) → 𝑆 ∈ Word 𝐴 ) |
| 8 |
|
simprr |
⊢ ( ( 𝑆 ∈ Word 𝐴 ∧ ( 𝑋 ∈ ( 0 ... 𝑌 ) ∧ 𝑌 ∈ ( 0 ... ( ♯ ‘ 𝑆 ) ) ) ) → 𝑌 ∈ ( 0 ... ( ♯ ‘ 𝑆 ) ) ) |
| 9 |
|
elfzuz2 |
⊢ ( 𝑌 ∈ ( 0 ... ( ♯ ‘ 𝑆 ) ) → ( ♯ ‘ 𝑆 ) ∈ ( ℤ≥ ‘ 0 ) ) |
| 10 |
9
|
ad2antll |
⊢ ( ( 𝑆 ∈ Word 𝐴 ∧ ( 𝑋 ∈ ( 0 ... 𝑌 ) ∧ 𝑌 ∈ ( 0 ... ( ♯ ‘ 𝑆 ) ) ) ) → ( ♯ ‘ 𝑆 ) ∈ ( ℤ≥ ‘ 0 ) ) |
| 11 |
|
eluzfz2 |
⊢ ( ( ♯ ‘ 𝑆 ) ∈ ( ℤ≥ ‘ 0 ) → ( ♯ ‘ 𝑆 ) ∈ ( 0 ... ( ♯ ‘ 𝑆 ) ) ) |
| 12 |
10 11
|
syl |
⊢ ( ( 𝑆 ∈ Word 𝐴 ∧ ( 𝑋 ∈ ( 0 ... 𝑌 ) ∧ 𝑌 ∈ ( 0 ... ( ♯ ‘ 𝑆 ) ) ) ) → ( ♯ ‘ 𝑆 ) ∈ ( 0 ... ( ♯ ‘ 𝑆 ) ) ) |
| 13 |
|
ccatpfx |
⊢ ( ( 𝑆 ∈ Word 𝐴 ∧ 𝑌 ∈ ( 0 ... ( ♯ ‘ 𝑆 ) ) ∧ ( ♯ ‘ 𝑆 ) ∈ ( 0 ... ( ♯ ‘ 𝑆 ) ) ) → ( ( 𝑆 prefix 𝑌 ) ++ ( 𝑆 substr 〈 𝑌 , ( ♯ ‘ 𝑆 ) 〉 ) ) = ( 𝑆 prefix ( ♯ ‘ 𝑆 ) ) ) |
| 14 |
7 8 12 13
|
syl3anc |
⊢ ( ( 𝑆 ∈ Word 𝐴 ∧ ( 𝑋 ∈ ( 0 ... 𝑌 ) ∧ 𝑌 ∈ ( 0 ... ( ♯ ‘ 𝑆 ) ) ) ) → ( ( 𝑆 prefix 𝑌 ) ++ ( 𝑆 substr 〈 𝑌 , ( ♯ ‘ 𝑆 ) 〉 ) ) = ( 𝑆 prefix ( ♯ ‘ 𝑆 ) ) ) |
| 15 |
|
pfxid |
⊢ ( 𝑆 ∈ Word 𝐴 → ( 𝑆 prefix ( ♯ ‘ 𝑆 ) ) = 𝑆 ) |
| 16 |
15
|
adantr |
⊢ ( ( 𝑆 ∈ Word 𝐴 ∧ ( 𝑋 ∈ ( 0 ... 𝑌 ) ∧ 𝑌 ∈ ( 0 ... ( ♯ ‘ 𝑆 ) ) ) ) → ( 𝑆 prefix ( ♯ ‘ 𝑆 ) ) = 𝑆 ) |
| 17 |
14 16
|
eqtrd |
⊢ ( ( 𝑆 ∈ Word 𝐴 ∧ ( 𝑋 ∈ ( 0 ... 𝑌 ) ∧ 𝑌 ∈ ( 0 ... ( ♯ ‘ 𝑆 ) ) ) ) → ( ( 𝑆 prefix 𝑌 ) ++ ( 𝑆 substr 〈 𝑌 , ( ♯ ‘ 𝑆 ) 〉 ) ) = 𝑆 ) |
| 18 |
6 17
|
eqtrd |
⊢ ( ( 𝑆 ∈ Word 𝐴 ∧ ( 𝑋 ∈ ( 0 ... 𝑌 ) ∧ 𝑌 ∈ ( 0 ... ( ♯ ‘ 𝑆 ) ) ) ) → ( ( ( 𝑆 prefix 𝑋 ) ++ ( 𝑆 substr 〈 𝑋 , 𝑌 〉 ) ) ++ ( 𝑆 substr 〈 𝑌 , ( ♯ ‘ 𝑆 ) 〉 ) ) = 𝑆 ) |
| 19 |
3 18
|
eqtrd |
⊢ ( ( 𝑆 ∈ Word 𝐴 ∧ ( 𝑋 ∈ ( 0 ... 𝑌 ) ∧ 𝑌 ∈ ( 0 ... ( ♯ ‘ 𝑆 ) ) ) ) → ( 𝑆 splice 〈 𝑋 , 𝑌 , ( 𝑆 substr 〈 𝑋 , 𝑌 〉 ) 〉 ) = 𝑆 ) |