Metamath Proof Explorer


Theorem ccatpfx

Description: Concatenating a prefix with an adjacent subword makes a longer prefix. (Contributed by AV, 7-May-2020)

Ref Expression
Assertion ccatpfx S Word A Y 0 Z Z 0 S S prefix Y ++ S substr Y Z = S prefix Z

Proof

Step Hyp Ref Expression
1 pfxcl S Word A S prefix Y Word A
2 swrdcl S Word A S substr Y Z Word A
3 ccatcl S prefix Y Word A S substr Y Z Word A S prefix Y ++ S substr Y Z Word A
4 1 2 3 syl2anc S Word A S prefix Y ++ S substr Y Z Word A
5 wrdfn S prefix Y ++ S substr Y Z Word A S prefix Y ++ S substr Y Z Fn 0 ..^ S prefix Y ++ S substr Y Z
6 4 5 syl S Word A S prefix Y ++ S substr Y Z Fn 0 ..^ S prefix Y ++ S substr Y Z
7 6 adantr S Word A Y 0 Z Z 0 S S prefix Y ++ S substr Y Z Fn 0 ..^ S prefix Y ++ S substr Y Z
8 ccatlen S prefix Y Word A S substr Y Z Word A S prefix Y ++ S substr Y Z = S prefix Y + S substr Y Z
9 1 2 8 syl2anc S Word A S prefix Y ++ S substr Y Z = S prefix Y + S substr Y Z
10 9 adantr S Word A Y 0 Z Z 0 S S prefix Y ++ S substr Y Z = S prefix Y + S substr Y Z
11 fzass4 Y 0 S Z Y S Y 0 Z Z 0 S
12 11 biimpri Y 0 Z Z 0 S Y 0 S Z Y S
13 12 simpld Y 0 Z Z 0 S Y 0 S
14 pfxlen S Word A Y 0 S S prefix Y = Y
15 13 14 sylan2 S Word A Y 0 Z Z 0 S S prefix Y = Y
16 swrdlen S Word A Y 0 Z Z 0 S S substr Y Z = Z Y
17 16 3expb S Word A Y 0 Z Z 0 S S substr Y Z = Z Y
18 15 17 oveq12d S Word A Y 0 Z Z 0 S S prefix Y + S substr Y Z = Y + Z - Y
19 elfzelz Y 0 Z Y
20 19 zcnd Y 0 Z Y
21 elfzelz Z 0 S Z
22 21 zcnd Z 0 S Z
23 pncan3 Y Z Y + Z - Y = Z
24 20 22 23 syl2an Y 0 Z Z 0 S Y + Z - Y = Z
25 24 adantl S Word A Y 0 Z Z 0 S Y + Z - Y = Z
26 10 18 25 3eqtrd S Word A Y 0 Z Z 0 S S prefix Y ++ S substr Y Z = Z
27 26 oveq2d S Word A Y 0 Z Z 0 S 0 ..^ S prefix Y ++ S substr Y Z = 0 ..^ Z
28 27 fneq2d S Word A Y 0 Z Z 0 S S prefix Y ++ S substr Y Z Fn 0 ..^ S prefix Y ++ S substr Y Z S prefix Y ++ S substr Y Z Fn 0 ..^ Z
29 7 28 mpbid S Word A Y 0 Z Z 0 S S prefix Y ++ S substr Y Z Fn 0 ..^ Z
30 pfxfn S Word A Z 0 S S prefix Z Fn 0 ..^ Z
31 30 adantrl S Word A Y 0 Z Z 0 S S prefix Z Fn 0 ..^ Z
32 id x 0 ..^ Z x 0 ..^ Z
33 19 ad2antrl S Word A Y 0 Z Z 0 S Y
34 fzospliti x 0 ..^ Z Y x 0 ..^ Y x Y ..^ Z
35 32 33 34 syl2anr S Word A Y 0 Z Z 0 S x 0 ..^ Z x 0 ..^ Y x Y ..^ Z
36 1 ad2antrr S Word A Y 0 Z Z 0 S x 0 ..^ Y S prefix Y Word A
37 2 ad2antrr S Word A Y 0 Z Z 0 S x 0 ..^ Y S substr Y Z Word A
38 15 oveq2d S Word A Y 0 Z Z 0 S 0 ..^ S prefix Y = 0 ..^ Y
39 38 eleq2d S Word A Y 0 Z Z 0 S x 0 ..^ S prefix Y x 0 ..^ Y
40 39 biimpar S Word A Y 0 Z Z 0 S x 0 ..^ Y x 0 ..^ S prefix Y
41 ccatval1 S prefix Y Word A S substr Y Z Word A x 0 ..^ S prefix Y S prefix Y ++ S substr Y Z x = S prefix Y x
42 36 37 40 41 syl3anc S Word A Y 0 Z Z 0 S x 0 ..^ Y S prefix Y ++ S substr Y Z x = S prefix Y x
43 simpl S Word A Y 0 Z Z 0 S S Word A
44 13 adantl S Word A Y 0 Z Z 0 S Y 0 S
45 id x 0 ..^ Y x 0 ..^ Y
46 pfxfv S Word A Y 0 S x 0 ..^ Y S prefix Y x = S x
47 43 44 45 46 syl2an3an S Word A Y 0 Z Z 0 S x 0 ..^ Y S prefix Y x = S x
48 42 47 eqtrd S Word A Y 0 Z Z 0 S x 0 ..^ Y S prefix Y ++ S substr Y Z x = S x
49 1 ad2antrr S Word A Y 0 Z Z 0 S x Y ..^ Z S prefix Y Word A
50 2 ad2antrr S Word A Y 0 Z Z 0 S x Y ..^ Z S substr Y Z Word A
51 18 25 eqtrd S Word A Y 0 Z Z 0 S S prefix Y + S substr Y Z = Z
52 15 51 oveq12d S Word A Y 0 Z Z 0 S S prefix Y ..^ S prefix Y + S substr Y Z = Y ..^ Z
53 52 eleq2d S Word A Y 0 Z Z 0 S x S prefix Y ..^ S prefix Y + S substr Y Z x Y ..^ Z
54 53 biimpar S Word A Y 0 Z Z 0 S x Y ..^ Z x S prefix Y ..^ S prefix Y + S substr Y Z
55 ccatval2 S prefix Y Word A S substr Y Z Word A x S prefix Y ..^ S prefix Y + S substr Y Z S prefix Y ++ S substr Y Z x = S substr Y Z x S prefix Y
56 49 50 54 55 syl3anc S Word A Y 0 Z Z 0 S x Y ..^ Z S prefix Y ++ S substr Y Z x = S substr Y Z x S prefix Y
57 id S Word A Y 0 Z Z 0 S S Word A Y 0 Z Z 0 S
58 57 3expb S Word A Y 0 Z Z 0 S S Word A Y 0 Z Z 0 S
59 15 oveq2d S Word A Y 0 Z Z 0 S x S prefix Y = x Y
60 59 adantr S Word A Y 0 Z Z 0 S x Y ..^ Z x S prefix Y = x Y
61 id x Y ..^ Z x Y ..^ Z
62 fzosubel x Y ..^ Z Y x Y Y Y ..^ Z Y
63 61 33 62 syl2anr S Word A Y 0 Z Z 0 S x Y ..^ Z x Y Y Y ..^ Z Y
64 20 subidd Y 0 Z Y Y = 0
65 64 oveq1d Y 0 Z Y Y ..^ Z Y = 0 ..^ Z Y
66 65 eleq2d Y 0 Z x Y Y Y ..^ Z Y x Y 0 ..^ Z Y
67 66 ad2antrl S Word A Y 0 Z Z 0 S x Y Y Y ..^ Z Y x Y 0 ..^ Z Y
68 67 adantr S Word A Y 0 Z Z 0 S x Y ..^ Z x Y Y Y ..^ Z Y x Y 0 ..^ Z Y
69 63 68 mpbid S Word A Y 0 Z Z 0 S x Y ..^ Z x Y 0 ..^ Z Y
70 60 69 eqeltrd S Word A Y 0 Z Z 0 S x Y ..^ Z x S prefix Y 0 ..^ Z Y
71 swrdfv S Word A Y 0 Z Z 0 S x S prefix Y 0 ..^ Z Y S substr Y Z x S prefix Y = S x - S prefix Y + Y
72 58 70 71 syl2an2r S Word A Y 0 Z Z 0 S x Y ..^ Z S substr Y Z x S prefix Y = S x - S prefix Y + Y
73 59 oveq1d S Word A Y 0 Z Z 0 S x - S prefix Y + Y = x - Y + Y
74 73 adantr S Word A Y 0 Z Z 0 S x Y ..^ Z x - S prefix Y + Y = x - Y + Y
75 elfzoelz x Y ..^ Z x
76 75 zcnd x Y ..^ Z x
77 20 ad2antrl S Word A Y 0 Z Z 0 S Y
78 npcan x Y x - Y + Y = x
79 76 77 78 syl2anr S Word A Y 0 Z Z 0 S x Y ..^ Z x - Y + Y = x
80 74 79 eqtrd S Word A Y 0 Z Z 0 S x Y ..^ Z x - S prefix Y + Y = x
81 80 fveq2d S Word A Y 0 Z Z 0 S x Y ..^ Z S x - S prefix Y + Y = S x
82 56 72 81 3eqtrd S Word A Y 0 Z Z 0 S x Y ..^ Z S prefix Y ++ S substr Y Z x = S x
83 48 82 jaodan S Word A Y 0 Z Z 0 S x 0 ..^ Y x Y ..^ Z S prefix Y ++ S substr Y Z x = S x
84 35 83 syldan S Word A Y 0 Z Z 0 S x 0 ..^ Z S prefix Y ++ S substr Y Z x = S x
85 pfxfv S Word A Z 0 S x 0 ..^ Z S prefix Z x = S x
86 85 3expa S Word A Z 0 S x 0 ..^ Z S prefix Z x = S x
87 86 adantlrl S Word A Y 0 Z Z 0 S x 0 ..^ Z S prefix Z x = S x
88 84 87 eqtr4d S Word A Y 0 Z Z 0 S x 0 ..^ Z S prefix Y ++ S substr Y Z x = S prefix Z x
89 29 31 88 eqfnfvd S Word A Y 0 Z Z 0 S S prefix Y ++ S substr Y Z = S prefix Z
90 89 3impb S Word A Y 0 Z Z 0 S S prefix Y ++ S substr Y Z = S prefix Z