Metamath Proof Explorer


Theorem ccatswrd

Description: Joining two adjacent subwords makes a longer subword. (Contributed by Stefan O'Rear, 20-Aug-2015)

Ref Expression
Assertion ccatswrd S Word A X 0 Y Y 0 Z Z 0 S S substr X Y ++ S substr Y Z = S substr X Z

Proof

Step Hyp Ref Expression
1 swrdcl S Word A S substr X Y Word A
2 1 adantr S Word A X 0 Y Y 0 Z Z 0 S S substr X Y Word A
3 swrdcl S Word A S substr Y Z Word A
4 3 adantr S Word A X 0 Y Y 0 Z Z 0 S S substr Y Z Word A
5 ccatcl S substr X Y Word A S substr Y Z Word A S substr X Y ++ S substr Y Z Word A
6 2 4 5 syl2anc S Word A X 0 Y Y 0 Z Z 0 S S substr X Y ++ S substr Y Z Word A
7 wrdfn S substr X Y ++ S substr Y Z Word A S substr X Y ++ S substr Y Z Fn 0 ..^ S substr X Y ++ S substr Y Z
8 6 7 syl S Word A X 0 Y Y 0 Z Z 0 S S substr X Y ++ S substr Y Z Fn 0 ..^ S substr X Y ++ S substr Y Z
9 ccatlen S substr X Y Word A S substr Y Z Word A S substr X Y ++ S substr Y Z = S substr X Y + S substr Y Z
10 2 4 9 syl2anc S Word A X 0 Y Y 0 Z Z 0 S S substr X Y ++ S substr Y Z = S substr X Y + S substr Y Z
11 simpl S Word A X 0 Y Y 0 Z Z 0 S S Word A
12 simpr1 S Word A X 0 Y Y 0 Z Z 0 S X 0 Y
13 simpr2 S Word A X 0 Y Y 0 Z Z 0 S Y 0 Z
14 simpr3 S Word A X 0 Y Y 0 Z Z 0 S Z 0 S
15 fzass4 Y 0 S Z Y S Y 0 Z Z 0 S
16 15 biimpri Y 0 Z Z 0 S Y 0 S Z Y S
17 16 simpld Y 0 Z Z 0 S Y 0 S
18 13 14 17 syl2anc S Word A X 0 Y Y 0 Z Z 0 S Y 0 S
19 swrdlen S Word A X 0 Y Y 0 S S substr X Y = Y X
20 11 12 18 19 syl3anc S Word A X 0 Y Y 0 Z Z 0 S S substr X Y = Y X
21 swrdlen S Word A Y 0 Z Z 0 S S substr Y Z = Z Y
22 21 3adant3r1 S Word A X 0 Y Y 0 Z Z 0 S S substr Y Z = Z Y
23 20 22 oveq12d S Word A X 0 Y Y 0 Z Z 0 S S substr X Y + S substr Y Z = Y X + Z - Y
24 13 elfzelzd S Word A X 0 Y Y 0 Z Z 0 S Y
25 24 zcnd S Word A X 0 Y Y 0 Z Z 0 S Y
26 12 elfzelzd S Word A X 0 Y Y 0 Z Z 0 S X
27 26 zcnd S Word A X 0 Y Y 0 Z Z 0 S X
28 14 elfzelzd S Word A X 0 Y Y 0 Z Z 0 S Z
29 28 zcnd S Word A X 0 Y Y 0 Z Z 0 S Z
30 25 27 29 npncan3d S Word A X 0 Y Y 0 Z Z 0 S Y X + Z - Y = Z X
31 10 23 30 3eqtrd S Word A X 0 Y Y 0 Z Z 0 S S substr X Y ++ S substr Y Z = Z X
32 31 oveq2d S Word A X 0 Y Y 0 Z Z 0 S 0 ..^ S substr X Y ++ S substr Y Z = 0 ..^ Z X
33 32 fneq2d S Word A X 0 Y Y 0 Z Z 0 S S substr X Y ++ S substr Y Z Fn 0 ..^ S substr X Y ++ S substr Y Z S substr X Y ++ S substr Y Z Fn 0 ..^ Z X
34 8 33 mpbid S Word A X 0 Y Y 0 Z Z 0 S S substr X Y ++ S substr Y Z Fn 0 ..^ Z X
35 swrdcl S Word A S substr X Z Word A
36 35 adantr S Word A X 0 Y Y 0 Z Z 0 S S substr X Z Word A
37 wrdfn S substr X Z Word A S substr X Z Fn 0 ..^ S substr X Z
38 36 37 syl S Word A X 0 Y Y 0 Z Z 0 S S substr X Z Fn 0 ..^ S substr X Z
39 fzass4 X 0 Z Y X Z X 0 Y Y 0 Z
40 39 biimpri X 0 Y Y 0 Z X 0 Z Y X Z
41 40 simpld X 0 Y Y 0 Z X 0 Z
42 12 13 41 syl2anc S Word A X 0 Y Y 0 Z Z 0 S X 0 Z
43 swrdlen S Word A X 0 Z Z 0 S S substr X Z = Z X
44 11 42 14 43 syl3anc S Word A X 0 Y Y 0 Z Z 0 S S substr X Z = Z X
45 44 oveq2d S Word A X 0 Y Y 0 Z Z 0 S 0 ..^ S substr X Z = 0 ..^ Z X
46 45 fneq2d S Word A X 0 Y Y 0 Z Z 0 S S substr X Z Fn 0 ..^ S substr X Z S substr X Z Fn 0 ..^ Z X
47 38 46 mpbid S Word A X 0 Y Y 0 Z Z 0 S S substr X Z Fn 0 ..^ Z X
48 24 26 zsubcld S Word A X 0 Y Y 0 Z Z 0 S Y X
49 48 anim1ci S Word A X 0 Y Y 0 Z Z 0 S x 0 ..^ Z X x 0 ..^ Z X Y X
50 fzospliti x 0 ..^ Z X Y X x 0 ..^ Y X x Y X ..^ Z X
51 49 50 syl S Word A X 0 Y Y 0 Z Z 0 S x 0 ..^ Z X x 0 ..^ Y X x Y X ..^ Z X
52 1 ad2antrr S Word A X 0 Y Y 0 Z Z 0 S x 0 ..^ Y X S substr X Y Word A
53 3 ad2antrr S Word A X 0 Y Y 0 Z Z 0 S x 0 ..^ Y X S substr Y Z Word A
54 20 oveq2d S Word A X 0 Y Y 0 Z Z 0 S 0 ..^ S substr X Y = 0 ..^ Y X
55 54 eleq2d S Word A X 0 Y Y 0 Z Z 0 S x 0 ..^ S substr X Y x 0 ..^ Y X
56 55 biimpar S Word A X 0 Y Y 0 Z Z 0 S x 0 ..^ Y X x 0 ..^ S substr X Y
57 ccatval1 S substr X Y Word A S substr Y Z Word A x 0 ..^ S substr X Y S substr X Y ++ S substr Y Z x = S substr X Y x
58 52 53 56 57 syl3anc S Word A X 0 Y Y 0 Z Z 0 S x 0 ..^ Y X S substr X Y ++ S substr Y Z x = S substr X Y x
59 simpll S Word A X 0 Y Y 0 Z Z 0 S x 0 ..^ Y X S Word A
60 simplr1 S Word A X 0 Y Y 0 Z Z 0 S x 0 ..^ Y X X 0 Y
61 18 adantr S Word A X 0 Y Y 0 Z Z 0 S x 0 ..^ Y X Y 0 S
62 simpr S Word A X 0 Y Y 0 Z Z 0 S x 0 ..^ Y X x 0 ..^ Y X
63 swrdfv S Word A X 0 Y Y 0 S x 0 ..^ Y X S substr X Y x = S x + X
64 59 60 61 62 63 syl31anc S Word A X 0 Y Y 0 Z Z 0 S x 0 ..^ Y X S substr X Y x = S x + X
65 58 64 eqtrd S Word A X 0 Y Y 0 Z Z 0 S x 0 ..^ Y X S substr X Y ++ S substr Y Z x = S x + X
66 1 ad2antrr S Word A X 0 Y Y 0 Z Z 0 S x Y X ..^ Z X S substr X Y Word A
67 3 ad2antrr S Word A X 0 Y Y 0 Z Z 0 S x Y X ..^ Z X S substr Y Z Word A
68 23 30 eqtrd S Word A X 0 Y Y 0 Z Z 0 S S substr X Y + S substr Y Z = Z X
69 20 68 oveq12d S Word A X 0 Y Y 0 Z Z 0 S S substr X Y ..^ S substr X Y + S substr Y Z = Y X ..^ Z X
70 69 eleq2d S Word A X 0 Y Y 0 Z Z 0 S x S substr X Y ..^ S substr X Y + S substr Y Z x Y X ..^ Z X
71 70 biimpar S Word A X 0 Y Y 0 Z Z 0 S x Y X ..^ Z X x S substr X Y ..^ S substr X Y + S substr Y Z
72 ccatval2 S substr X Y Word A S substr Y Z Word A x S substr X Y ..^ S substr X Y + S substr Y Z S substr X Y ++ S substr Y Z x = S substr Y Z x S substr X Y
73 66 67 71 72 syl3anc S Word A X 0 Y Y 0 Z Z 0 S x Y X ..^ Z X S substr X Y ++ S substr Y Z x = S substr Y Z x S substr X Y
74 simpll S Word A X 0 Y Y 0 Z Z 0 S x Y X ..^ Z X S Word A
75 simplr2 S Word A X 0 Y Y 0 Z Z 0 S x Y X ..^ Z X Y 0 Z
76 simplr3 S Word A X 0 Y Y 0 Z Z 0 S x Y X ..^ Z X Z 0 S
77 20 oveq2d S Word A X 0 Y Y 0 Z Z 0 S x S substr X Y = x Y X
78 77 adantr S Word A X 0 Y Y 0 Z Z 0 S x Y X ..^ Z X x S substr X Y = x Y X
79 30 oveq2d S Word A X 0 Y Y 0 Z Z 0 S Y X ..^ Y X + Z - Y = Y X ..^ Z X
80 79 eleq2d S Word A X 0 Y Y 0 Z Z 0 S x Y X ..^ Y X + Z - Y x Y X ..^ Z X
81 80 biimpar S Word A X 0 Y Y 0 Z Z 0 S x Y X ..^ Z X x Y X ..^ Y X + Z - Y
82 28 24 zsubcld S Word A X 0 Y Y 0 Z Z 0 S Z Y
83 82 adantr S Word A X 0 Y Y 0 Z Z 0 S x Y X ..^ Z X Z Y
84 fzosubel3 x Y X ..^ Y X + Z - Y Z Y x Y X 0 ..^ Z Y
85 81 83 84 syl2anc S Word A X 0 Y Y 0 Z Z 0 S x Y X ..^ Z X x Y X 0 ..^ Z Y
86 78 85 eqeltrd S Word A X 0 Y Y 0 Z Z 0 S x Y X ..^ Z X x S substr X Y 0 ..^ Z Y
87 swrdfv S Word A Y 0 Z Z 0 S x S substr X Y 0 ..^ Z Y S substr Y Z x S substr X Y = S x - S substr X Y + Y
88 74 75 76 86 87 syl31anc S Word A X 0 Y Y 0 Z Z 0 S x Y X ..^ Z X S substr Y Z x S substr X Y = S x - S substr X Y + Y
89 77 oveq1d S Word A X 0 Y Y 0 Z Z 0 S x - S substr X Y + Y = x - Y X + Y
90 89 adantr S Word A X 0 Y Y 0 Z Z 0 S x Y X ..^ Z X x - S substr X Y + Y = x - Y X + Y
91 elfzoelz x Y X ..^ Z X x
92 91 zcnd x Y X ..^ Z X x
93 92 adantl S Word A X 0 Y Y 0 Z Z 0 S x Y X ..^ Z X x
94 25 27 subcld S Word A X 0 Y Y 0 Z Z 0 S Y X
95 94 adantr S Word A X 0 Y Y 0 Z Z 0 S x Y X ..^ Z X Y X
96 25 adantr S Word A X 0 Y Y 0 Z Z 0 S x Y X ..^ Z X Y
97 93 95 96 subadd23d S Word A X 0 Y Y 0 Z Z 0 S x Y X ..^ Z X x - Y X + Y = x + Y - Y X
98 25 27 nncand S Word A X 0 Y Y 0 Z Z 0 S Y Y X = X
99 98 oveq2d S Word A X 0 Y Y 0 Z Z 0 S x + Y - Y X = x + X
100 99 adantr S Word A X 0 Y Y 0 Z Z 0 S x Y X ..^ Z X x + Y - Y X = x + X
101 90 97 100 3eqtrd S Word A X 0 Y Y 0 Z Z 0 S x Y X ..^ Z X x - S substr X Y + Y = x + X
102 101 fveq2d S Word A X 0 Y Y 0 Z Z 0 S x Y X ..^ Z X S x - S substr X Y + Y = S x + X
103 73 88 102 3eqtrd S Word A X 0 Y Y 0 Z Z 0 S x Y X ..^ Z X S substr X Y ++ S substr Y Z x = S x + X
104 65 103 jaodan S Word A X 0 Y Y 0 Z Z 0 S x 0 ..^ Y X x Y X ..^ Z X S substr X Y ++ S substr Y Z x = S x + X
105 51 104 syldan S Word A X 0 Y Y 0 Z Z 0 S x 0 ..^ Z X S substr X Y ++ S substr Y Z x = S x + X
106 simpll S Word A X 0 Y Y 0 Z Z 0 S x 0 ..^ Z X S Word A
107 42 adantr S Word A X 0 Y Y 0 Z Z 0 S x 0 ..^ Z X X 0 Z
108 simplr3 S Word A X 0 Y Y 0 Z Z 0 S x 0 ..^ Z X Z 0 S
109 simpr S Word A X 0 Y Y 0 Z Z 0 S x 0 ..^ Z X x 0 ..^ Z X
110 swrdfv S Word A X 0 Z Z 0 S x 0 ..^ Z X S substr X Z x = S x + X
111 106 107 108 109 110 syl31anc S Word A X 0 Y Y 0 Z Z 0 S x 0 ..^ Z X S substr X Z x = S x + X
112 105 111 eqtr4d S Word A X 0 Y Y 0 Z Z 0 S x 0 ..^ Z X S substr X Y ++ S substr Y Z x = S substr X Z x
113 34 47 112 eqfnfvd S Word A X 0 Y Y 0 Z Z 0 S S substr X Y ++ S substr Y Z = S substr X Z