| Step | Hyp | Ref | Expression | 
						
							| 1 |  | ovex |  |-  ( S substr <. X , Y >. ) e. _V | 
						
							| 2 |  | splval |  |-  ( ( S e. Word A /\ ( X e. ( 0 ... Y ) /\ Y e. ( 0 ... ( # ` S ) ) /\ ( S substr <. X , Y >. ) e. _V ) ) -> ( S splice <. X , Y , ( S substr <. X , Y >. ) >. ) = ( ( ( S prefix X ) ++ ( S substr <. X , Y >. ) ) ++ ( S substr <. Y , ( # ` S ) >. ) ) ) | 
						
							| 3 | 1 2 | mp3anr3 |  |-  ( ( S e. Word A /\ ( X e. ( 0 ... Y ) /\ Y e. ( 0 ... ( # ` S ) ) ) ) -> ( S splice <. X , Y , ( S substr <. X , Y >. ) >. ) = ( ( ( S prefix X ) ++ ( S substr <. X , Y >. ) ) ++ ( S substr <. Y , ( # ` S ) >. ) ) ) | 
						
							| 4 |  | ccatpfx |  |-  ( ( S e. Word A /\ X e. ( 0 ... Y ) /\ Y e. ( 0 ... ( # ` S ) ) ) -> ( ( S prefix X ) ++ ( S substr <. X , Y >. ) ) = ( S prefix Y ) ) | 
						
							| 5 | 4 | 3expb |  |-  ( ( S e. Word A /\ ( X e. ( 0 ... Y ) /\ Y e. ( 0 ... ( # ` S ) ) ) ) -> ( ( S prefix X ) ++ ( S substr <. X , Y >. ) ) = ( S prefix Y ) ) | 
						
							| 6 | 5 | oveq1d |  |-  ( ( S e. Word A /\ ( X e. ( 0 ... Y ) /\ Y e. ( 0 ... ( # ` S ) ) ) ) -> ( ( ( S prefix X ) ++ ( S substr <. X , Y >. ) ) ++ ( S substr <. Y , ( # ` S ) >. ) ) = ( ( S prefix Y ) ++ ( S substr <. Y , ( # ` S ) >. ) ) ) | 
						
							| 7 |  | simpl |  |-  ( ( S e. Word A /\ ( X e. ( 0 ... Y ) /\ Y e. ( 0 ... ( # ` S ) ) ) ) -> S e. Word A ) | 
						
							| 8 |  | simprr |  |-  ( ( S e. Word A /\ ( X e. ( 0 ... Y ) /\ Y e. ( 0 ... ( # ` S ) ) ) ) -> Y e. ( 0 ... ( # ` S ) ) ) | 
						
							| 9 |  | elfzuz2 |  |-  ( Y e. ( 0 ... ( # ` S ) ) -> ( # ` S ) e. ( ZZ>= ` 0 ) ) | 
						
							| 10 | 9 | ad2antll |  |-  ( ( S e. Word A /\ ( X e. ( 0 ... Y ) /\ Y e. ( 0 ... ( # ` S ) ) ) ) -> ( # ` S ) e. ( ZZ>= ` 0 ) ) | 
						
							| 11 |  | eluzfz2 |  |-  ( ( # ` S ) e. ( ZZ>= ` 0 ) -> ( # ` S ) e. ( 0 ... ( # ` S ) ) ) | 
						
							| 12 | 10 11 | syl |  |-  ( ( S e. Word A /\ ( X e. ( 0 ... Y ) /\ Y e. ( 0 ... ( # ` S ) ) ) ) -> ( # ` S ) e. ( 0 ... ( # ` S ) ) ) | 
						
							| 13 |  | ccatpfx |  |-  ( ( S e. Word A /\ Y e. ( 0 ... ( # ` S ) ) /\ ( # ` S ) e. ( 0 ... ( # ` S ) ) ) -> ( ( S prefix Y ) ++ ( S substr <. Y , ( # ` S ) >. ) ) = ( S prefix ( # ` S ) ) ) | 
						
							| 14 | 7 8 12 13 | syl3anc |  |-  ( ( S e. Word A /\ ( X e. ( 0 ... Y ) /\ Y e. ( 0 ... ( # ` S ) ) ) ) -> ( ( S prefix Y ) ++ ( S substr <. Y , ( # ` S ) >. ) ) = ( S prefix ( # ` S ) ) ) | 
						
							| 15 |  | pfxid |  |-  ( S e. Word A -> ( S prefix ( # ` S ) ) = S ) | 
						
							| 16 | 15 | adantr |  |-  ( ( S e. Word A /\ ( X e. ( 0 ... Y ) /\ Y e. ( 0 ... ( # ` S ) ) ) ) -> ( S prefix ( # ` S ) ) = S ) | 
						
							| 17 | 14 16 | eqtrd |  |-  ( ( S e. Word A /\ ( X e. ( 0 ... Y ) /\ Y e. ( 0 ... ( # ` S ) ) ) ) -> ( ( S prefix Y ) ++ ( S substr <. Y , ( # ` S ) >. ) ) = S ) | 
						
							| 18 | 6 17 | eqtrd |  |-  ( ( S e. Word A /\ ( X e. ( 0 ... Y ) /\ Y e. ( 0 ... ( # ` S ) ) ) ) -> ( ( ( S prefix X ) ++ ( S substr <. X , Y >. ) ) ++ ( S substr <. Y , ( # ` S ) >. ) ) = S ) | 
						
							| 19 | 3 18 | eqtrd |  |-  ( ( S e. Word A /\ ( X e. ( 0 ... Y ) /\ Y e. ( 0 ... ( # ` S ) ) ) ) -> ( S splice <. X , Y , ( S substr <. X , Y >. ) >. ) = S ) |