Metamath Proof Explorer


Theorem lpadright

Description: The suffix of a left-padded word the original word W . (Contributed by Thierry Arnoux, 7-Aug-2023)

Ref Expression
Hypotheses lpadlen.1 ( 𝜑𝐿 ∈ ℕ0 )
lpadlen.2 ( 𝜑𝑊 ∈ Word 𝑆 )
lpadlen.3 ( 𝜑𝐶𝑆 )
lpadright.1 ( 𝜑𝑀 = if ( 𝐿 ≤ ( ♯ ‘ 𝑊 ) , 0 , ( 𝐿 − ( ♯ ‘ 𝑊 ) ) ) )
lpadright.2 ( 𝜑𝑁 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) )
Assertion lpadright ( 𝜑 → ( ( ( 𝐶 leftpad 𝑊 ) ‘ 𝐿 ) ‘ ( 𝑁 + 𝑀 ) ) = ( 𝑊𝑁 ) )

Proof

Step Hyp Ref Expression
1 lpadlen.1 ( 𝜑𝐿 ∈ ℕ0 )
2 lpadlen.2 ( 𝜑𝑊 ∈ Word 𝑆 )
3 lpadlen.3 ( 𝜑𝐶𝑆 )
4 lpadright.1 ( 𝜑𝑀 = if ( 𝐿 ≤ ( ♯ ‘ 𝑊 ) , 0 , ( 𝐿 − ( ♯ ‘ 𝑊 ) ) ) )
5 lpadright.2 ( 𝜑𝑁 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) )
6 1 2 3 lpadval ( 𝜑 → ( ( 𝐶 leftpad 𝑊 ) ‘ 𝐿 ) = ( ( ( 0 ..^ ( 𝐿 − ( ♯ ‘ 𝑊 ) ) ) × { 𝐶 } ) ++ 𝑊 ) )
7 6 fveq1d ( 𝜑 → ( ( ( 𝐶 leftpad 𝑊 ) ‘ 𝐿 ) ‘ ( 𝑁 + 𝑀 ) ) = ( ( ( ( 0 ..^ ( 𝐿 − ( ♯ ‘ 𝑊 ) ) ) × { 𝐶 } ) ++ 𝑊 ) ‘ ( 𝑁 + 𝑀 ) ) )
8 eqeq2 ( 0 = if ( 𝐿 ≤ ( ♯ ‘ 𝑊 ) , 0 , ( 𝐿 − ( ♯ ‘ 𝑊 ) ) ) → ( ( ♯ ‘ ( ( 0 ..^ ( 𝐿 − ( ♯ ‘ 𝑊 ) ) ) × { 𝐶 } ) ) = 0 ↔ ( ♯ ‘ ( ( 0 ..^ ( 𝐿 − ( ♯ ‘ 𝑊 ) ) ) × { 𝐶 } ) ) = if ( 𝐿 ≤ ( ♯ ‘ 𝑊 ) , 0 , ( 𝐿 − ( ♯ ‘ 𝑊 ) ) ) ) )
9 eqeq2 ( ( 𝐿 − ( ♯ ‘ 𝑊 ) ) = if ( 𝐿 ≤ ( ♯ ‘ 𝑊 ) , 0 , ( 𝐿 − ( ♯ ‘ 𝑊 ) ) ) → ( ( ♯ ‘ ( ( 0 ..^ ( 𝐿 − ( ♯ ‘ 𝑊 ) ) ) × { 𝐶 } ) ) = ( 𝐿 − ( ♯ ‘ 𝑊 ) ) ↔ ( ♯ ‘ ( ( 0 ..^ ( 𝐿 − ( ♯ ‘ 𝑊 ) ) ) × { 𝐶 } ) ) = if ( 𝐿 ≤ ( ♯ ‘ 𝑊 ) , 0 , ( 𝐿 − ( ♯ ‘ 𝑊 ) ) ) ) )
10 1 adantr ( ( 𝜑𝐿 ≤ ( ♯ ‘ 𝑊 ) ) → 𝐿 ∈ ℕ0 )
11 2 adantr ( ( 𝜑𝐿 ≤ ( ♯ ‘ 𝑊 ) ) → 𝑊 ∈ Word 𝑆 )
12 3 adantr ( ( 𝜑𝐿 ≤ ( ♯ ‘ 𝑊 ) ) → 𝐶𝑆 )
13 simpr ( ( 𝜑𝐿 ≤ ( ♯ ‘ 𝑊 ) ) → 𝐿 ≤ ( ♯ ‘ 𝑊 ) )
14 10 11 12 13 lpadlem3 ( ( 𝜑𝐿 ≤ ( ♯ ‘ 𝑊 ) ) → ( ( 0 ..^ ( 𝐿 − ( ♯ ‘ 𝑊 ) ) ) × { 𝐶 } ) = ∅ )
15 14 fveq2d ( ( 𝜑𝐿 ≤ ( ♯ ‘ 𝑊 ) ) → ( ♯ ‘ ( ( 0 ..^ ( 𝐿 − ( ♯ ‘ 𝑊 ) ) ) × { 𝐶 } ) ) = ( ♯ ‘ ∅ ) )
16 hash0 ( ♯ ‘ ∅ ) = 0
17 15 16 eqtrdi ( ( 𝜑𝐿 ≤ ( ♯ ‘ 𝑊 ) ) → ( ♯ ‘ ( ( 0 ..^ ( 𝐿 − ( ♯ ‘ 𝑊 ) ) ) × { 𝐶 } ) ) = 0 )
18 1 adantr ( ( 𝜑 ∧ ¬ 𝐿 ≤ ( ♯ ‘ 𝑊 ) ) → 𝐿 ∈ ℕ0 )
19 2 adantr ( ( 𝜑 ∧ ¬ 𝐿 ≤ ( ♯ ‘ 𝑊 ) ) → 𝑊 ∈ Word 𝑆 )
20 3 adantr ( ( 𝜑 ∧ ¬ 𝐿 ≤ ( ♯ ‘ 𝑊 ) ) → 𝐶𝑆 )
21 lencl ( 𝑊 ∈ Word 𝑆 → ( ♯ ‘ 𝑊 ) ∈ ℕ0 )
22 2 21 syl ( 𝜑 → ( ♯ ‘ 𝑊 ) ∈ ℕ0 )
23 22 nn0red ( 𝜑 → ( ♯ ‘ 𝑊 ) ∈ ℝ )
24 23 adantr ( ( 𝜑 ∧ ¬ 𝐿 ≤ ( ♯ ‘ 𝑊 ) ) → ( ♯ ‘ 𝑊 ) ∈ ℝ )
25 1 nn0red ( 𝜑𝐿 ∈ ℝ )
26 25 adantr ( ( 𝜑 ∧ ¬ 𝐿 ≤ ( ♯ ‘ 𝑊 ) ) → 𝐿 ∈ ℝ )
27 23 25 ltnled ( 𝜑 → ( ( ♯ ‘ 𝑊 ) < 𝐿 ↔ ¬ 𝐿 ≤ ( ♯ ‘ 𝑊 ) ) )
28 27 biimpar ( ( 𝜑 ∧ ¬ 𝐿 ≤ ( ♯ ‘ 𝑊 ) ) → ( ♯ ‘ 𝑊 ) < 𝐿 )
29 24 26 28 ltled ( ( 𝜑 ∧ ¬ 𝐿 ≤ ( ♯ ‘ 𝑊 ) ) → ( ♯ ‘ 𝑊 ) ≤ 𝐿 )
30 18 19 20 29 lpadlem2 ( ( 𝜑 ∧ ¬ 𝐿 ≤ ( ♯ ‘ 𝑊 ) ) → ( ♯ ‘ ( ( 0 ..^ ( 𝐿 − ( ♯ ‘ 𝑊 ) ) ) × { 𝐶 } ) ) = ( 𝐿 − ( ♯ ‘ 𝑊 ) ) )
31 8 9 17 30 ifbothda ( 𝜑 → ( ♯ ‘ ( ( 0 ..^ ( 𝐿 − ( ♯ ‘ 𝑊 ) ) ) × { 𝐶 } ) ) = if ( 𝐿 ≤ ( ♯ ‘ 𝑊 ) , 0 , ( 𝐿 − ( ♯ ‘ 𝑊 ) ) ) )
32 31 4 eqtr4d ( 𝜑 → ( ♯ ‘ ( ( 0 ..^ ( 𝐿 − ( ♯ ‘ 𝑊 ) ) ) × { 𝐶 } ) ) = 𝑀 )
33 32 oveq2d ( 𝜑 → ( 𝑁 + ( ♯ ‘ ( ( 0 ..^ ( 𝐿 − ( ♯ ‘ 𝑊 ) ) ) × { 𝐶 } ) ) ) = ( 𝑁 + 𝑀 ) )
34 33 fveq2d ( 𝜑 → ( ( ( ( 0 ..^ ( 𝐿 − ( ♯ ‘ 𝑊 ) ) ) × { 𝐶 } ) ++ 𝑊 ) ‘ ( 𝑁 + ( ♯ ‘ ( ( 0 ..^ ( 𝐿 − ( ♯ ‘ 𝑊 ) ) ) × { 𝐶 } ) ) ) ) = ( ( ( ( 0 ..^ ( 𝐿 − ( ♯ ‘ 𝑊 ) ) ) × { 𝐶 } ) ++ 𝑊 ) ‘ ( 𝑁 + 𝑀 ) ) )
35 3 lpadlem1 ( 𝜑 → ( ( 0 ..^ ( 𝐿 − ( ♯ ‘ 𝑊 ) ) ) × { 𝐶 } ) ∈ Word 𝑆 )
36 ccatval3 ( ( ( ( 0 ..^ ( 𝐿 − ( ♯ ‘ 𝑊 ) ) ) × { 𝐶 } ) ∈ Word 𝑆𝑊 ∈ Word 𝑆𝑁 ∈ ( 0 ..^ ( ♯ ‘ 𝑊 ) ) ) → ( ( ( ( 0 ..^ ( 𝐿 − ( ♯ ‘ 𝑊 ) ) ) × { 𝐶 } ) ++ 𝑊 ) ‘ ( 𝑁 + ( ♯ ‘ ( ( 0 ..^ ( 𝐿 − ( ♯ ‘ 𝑊 ) ) ) × { 𝐶 } ) ) ) ) = ( 𝑊𝑁 ) )
37 35 2 5 36 syl3anc ( 𝜑 → ( ( ( ( 0 ..^ ( 𝐿 − ( ♯ ‘ 𝑊 ) ) ) × { 𝐶 } ) ++ 𝑊 ) ‘ ( 𝑁 + ( ♯ ‘ ( ( 0 ..^ ( 𝐿 − ( ♯ ‘ 𝑊 ) ) ) × { 𝐶 } ) ) ) ) = ( 𝑊𝑁 ) )
38 7 34 37 3eqtr2d ( 𝜑 → ( ( ( 𝐶 leftpad 𝑊 ) ‘ 𝐿 ) ‘ ( 𝑁 + 𝑀 ) ) = ( 𝑊𝑁 ) )