| Step | Hyp | Ref | Expression | 
						
							| 1 |  | swrdccatin2.l |  |-  L = ( # ` A ) | 
						
							| 2 | 1 | pfxccat3 |  |-  ( ( A e. Word V /\ B e. Word V ) -> ( ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( L + ( # ` B ) ) ) ) -> ( ( A ++ B ) substr <. M , N >. ) = if ( N <_ L , ( A substr <. M , N >. ) , if ( L <_ M , ( B substr <. ( M - L ) , ( N - L ) >. ) , ( ( A substr <. M , L >. ) ++ ( B prefix ( N - L ) ) ) ) ) ) ) | 
						
							| 3 | 2 | imp |  |-  ( ( ( A e. Word V /\ B e. Word V ) /\ ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( L + ( # ` B ) ) ) ) ) -> ( ( A ++ B ) substr <. M , N >. ) = if ( N <_ L , ( A substr <. M , N >. ) , if ( L <_ M , ( B substr <. ( M - L ) , ( N - L ) >. ) , ( ( A substr <. M , L >. ) ++ ( B prefix ( N - L ) ) ) ) ) ) | 
						
							| 4 |  | lencl |  |-  ( A e. Word V -> ( # ` A ) e. NN0 ) | 
						
							| 5 | 4 | adantr |  |-  ( ( A e. Word V /\ B e. Word V ) -> ( # ` A ) e. NN0 ) | 
						
							| 6 | 1 | eqcomi |  |-  ( # ` A ) = L | 
						
							| 7 | 6 | eleq1i |  |-  ( ( # ` A ) e. NN0 <-> L e. NN0 ) | 
						
							| 8 |  | elfz2nn0 |  |-  ( M e. ( 0 ... N ) <-> ( M e. NN0 /\ N e. NN0 /\ M <_ N ) ) | 
						
							| 9 |  | iftrue |  |-  ( N <_ L -> if ( N <_ L , N , L ) = N ) | 
						
							| 10 | 9 | adantl |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) -> if ( N <_ L , N , L ) = N ) | 
						
							| 11 | 10 | opeq2d |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) -> <. M , if ( N <_ L , N , L ) >. = <. M , N >. ) | 
						
							| 12 | 11 | oveq2d |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) -> ( A substr <. M , if ( N <_ L , N , L ) >. ) = ( A substr <. M , N >. ) ) | 
						
							| 13 |  | iftrue |  |-  ( 0 <_ ( M - L ) -> if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) = ( M - L ) ) | 
						
							| 14 | 13 | opeq1d |  |-  ( 0 <_ ( M - L ) -> <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. = <. ( M - L ) , ( N - L ) >. ) | 
						
							| 15 | 14 | oveq2d |  |-  ( 0 <_ ( M - L ) -> ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) = ( B substr <. ( M - L ) , ( N - L ) >. ) ) | 
						
							| 16 | 15 | adantr |  |-  ( ( 0 <_ ( M - L ) /\ ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) ) -> ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) = ( B substr <. ( M - L ) , ( N - L ) >. ) ) | 
						
							| 17 |  | simpr |  |-  ( ( A e. Word V /\ B e. Word V ) -> B e. Word V ) | 
						
							| 18 |  | nn0z |  |-  ( L e. NN0 -> L e. ZZ ) | 
						
							| 19 |  | nn0z |  |-  ( M e. NN0 -> M e. ZZ ) | 
						
							| 20 | 19 | adantr |  |-  ( ( M e. NN0 /\ N e. NN0 ) -> M e. ZZ ) | 
						
							| 21 |  | zsubcl |  |-  ( ( M e. ZZ /\ L e. ZZ ) -> ( M - L ) e. ZZ ) | 
						
							| 22 | 20 21 | sylan |  |-  ( ( ( M e. NN0 /\ N e. NN0 ) /\ L e. ZZ ) -> ( M - L ) e. ZZ ) | 
						
							| 23 |  | nn0z |  |-  ( N e. NN0 -> N e. ZZ ) | 
						
							| 24 | 23 | adantl |  |-  ( ( M e. NN0 /\ N e. NN0 ) -> N e. ZZ ) | 
						
							| 25 |  | zsubcl |  |-  ( ( N e. ZZ /\ L e. ZZ ) -> ( N - L ) e. ZZ ) | 
						
							| 26 | 24 25 | sylan |  |-  ( ( ( M e. NN0 /\ N e. NN0 ) /\ L e. ZZ ) -> ( N - L ) e. ZZ ) | 
						
							| 27 | 22 26 | jca |  |-  ( ( ( M e. NN0 /\ N e. NN0 ) /\ L e. ZZ ) -> ( ( M - L ) e. ZZ /\ ( N - L ) e. ZZ ) ) | 
						
							| 28 | 18 27 | sylan2 |  |-  ( ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) -> ( ( M - L ) e. ZZ /\ ( N - L ) e. ZZ ) ) | 
						
							| 29 | 17 28 | anim12i |  |-  ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) -> ( B e. Word V /\ ( ( M - L ) e. ZZ /\ ( N - L ) e. ZZ ) ) ) | 
						
							| 30 |  | 3anass |  |-  ( ( B e. Word V /\ ( M - L ) e. ZZ /\ ( N - L ) e. ZZ ) <-> ( B e. Word V /\ ( ( M - L ) e. ZZ /\ ( N - L ) e. ZZ ) ) ) | 
						
							| 31 | 29 30 | sylibr |  |-  ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) -> ( B e. Word V /\ ( M - L ) e. ZZ /\ ( N - L ) e. ZZ ) ) | 
						
							| 32 | 31 | ad2antrl |  |-  ( ( 0 <_ ( M - L ) /\ ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) ) -> ( B e. Word V /\ ( M - L ) e. ZZ /\ ( N - L ) e. ZZ ) ) | 
						
							| 33 |  | nn0re |  |-  ( M e. NN0 -> M e. RR ) | 
						
							| 34 |  | nn0re |  |-  ( N e. NN0 -> N e. RR ) | 
						
							| 35 | 33 34 | anim12i |  |-  ( ( M e. NN0 /\ N e. NN0 ) -> ( M e. RR /\ N e. RR ) ) | 
						
							| 36 |  | nn0re |  |-  ( L e. NN0 -> L e. RR ) | 
						
							| 37 |  | subge0 |  |-  ( ( M e. RR /\ L e. RR ) -> ( 0 <_ ( M - L ) <-> L <_ M ) ) | 
						
							| 38 | 37 | adantlr |  |-  ( ( ( M e. RR /\ N e. RR ) /\ L e. RR ) -> ( 0 <_ ( M - L ) <-> L <_ M ) ) | 
						
							| 39 |  | simpr |  |-  ( ( M e. RR /\ N e. RR ) -> N e. RR ) | 
						
							| 40 | 39 | adantr |  |-  ( ( ( M e. RR /\ N e. RR ) /\ L e. RR ) -> N e. RR ) | 
						
							| 41 |  | simpr |  |-  ( ( ( M e. RR /\ N e. RR ) /\ L e. RR ) -> L e. RR ) | 
						
							| 42 |  | simpl |  |-  ( ( M e. RR /\ N e. RR ) -> M e. RR ) | 
						
							| 43 | 42 | adantr |  |-  ( ( ( M e. RR /\ N e. RR ) /\ L e. RR ) -> M e. RR ) | 
						
							| 44 |  | letr |  |-  ( ( N e. RR /\ L e. RR /\ M e. RR ) -> ( ( N <_ L /\ L <_ M ) -> N <_ M ) ) | 
						
							| 45 | 40 41 43 44 | syl3anc |  |-  ( ( ( M e. RR /\ N e. RR ) /\ L e. RR ) -> ( ( N <_ L /\ L <_ M ) -> N <_ M ) ) | 
						
							| 46 | 45 | expcomd |  |-  ( ( ( M e. RR /\ N e. RR ) /\ L e. RR ) -> ( L <_ M -> ( N <_ L -> N <_ M ) ) ) | 
						
							| 47 | 38 46 | sylbid |  |-  ( ( ( M e. RR /\ N e. RR ) /\ L e. RR ) -> ( 0 <_ ( M - L ) -> ( N <_ L -> N <_ M ) ) ) | 
						
							| 48 | 47 | com23 |  |-  ( ( ( M e. RR /\ N e. RR ) /\ L e. RR ) -> ( N <_ L -> ( 0 <_ ( M - L ) -> N <_ M ) ) ) | 
						
							| 49 | 35 36 48 | syl2an |  |-  ( ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) -> ( N <_ L -> ( 0 <_ ( M - L ) -> N <_ M ) ) ) | 
						
							| 50 | 49 | adantl |  |-  ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) -> ( N <_ L -> ( 0 <_ ( M - L ) -> N <_ M ) ) ) | 
						
							| 51 | 50 | imp |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) -> ( 0 <_ ( M - L ) -> N <_ M ) ) | 
						
							| 52 | 51 | impcom |  |-  ( ( 0 <_ ( M - L ) /\ ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) ) -> N <_ M ) | 
						
							| 53 | 34 | adantl |  |-  ( ( M e. NN0 /\ N e. NN0 ) -> N e. RR ) | 
						
							| 54 | 53 | adantr |  |-  ( ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) -> N e. RR ) | 
						
							| 55 | 33 | adantr |  |-  ( ( M e. NN0 /\ N e. NN0 ) -> M e. RR ) | 
						
							| 56 | 55 | adantr |  |-  ( ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) -> M e. RR ) | 
						
							| 57 | 36 | adantl |  |-  ( ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) -> L e. RR ) | 
						
							| 58 | 54 56 57 | 3jca |  |-  ( ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) -> ( N e. RR /\ M e. RR /\ L e. RR ) ) | 
						
							| 59 | 58 | adantl |  |-  ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) -> ( N e. RR /\ M e. RR /\ L e. RR ) ) | 
						
							| 60 | 59 | ad2antrl |  |-  ( ( 0 <_ ( M - L ) /\ ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) ) -> ( N e. RR /\ M e. RR /\ L e. RR ) ) | 
						
							| 61 |  | lesub1 |  |-  ( ( N e. RR /\ M e. RR /\ L e. RR ) -> ( N <_ M <-> ( N - L ) <_ ( M - L ) ) ) | 
						
							| 62 | 60 61 | syl |  |-  ( ( 0 <_ ( M - L ) /\ ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) ) -> ( N <_ M <-> ( N - L ) <_ ( M - L ) ) ) | 
						
							| 63 | 52 62 | mpbid |  |-  ( ( 0 <_ ( M - L ) /\ ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) ) -> ( N - L ) <_ ( M - L ) ) | 
						
							| 64 |  | swrdlend |  |-  ( ( B e. Word V /\ ( M - L ) e. ZZ /\ ( N - L ) e. ZZ ) -> ( ( N - L ) <_ ( M - L ) -> ( B substr <. ( M - L ) , ( N - L ) >. ) = (/) ) ) | 
						
							| 65 | 32 63 64 | sylc |  |-  ( ( 0 <_ ( M - L ) /\ ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) ) -> ( B substr <. ( M - L ) , ( N - L ) >. ) = (/) ) | 
						
							| 66 | 16 65 | eqtrd |  |-  ( ( 0 <_ ( M - L ) /\ ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) ) -> ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) = (/) ) | 
						
							| 67 |  | iffalse |  |-  ( -. 0 <_ ( M - L ) -> if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) = 0 ) | 
						
							| 68 | 67 | opeq1d |  |-  ( -. 0 <_ ( M - L ) -> <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. = <. 0 , ( N - L ) >. ) | 
						
							| 69 | 68 | oveq2d |  |-  ( -. 0 <_ ( M - L ) -> ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) = ( B substr <. 0 , ( N - L ) >. ) ) | 
						
							| 70 | 17 | adantr |  |-  ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) -> B e. Word V ) | 
						
							| 71 | 70 | adantr |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) -> B e. Word V ) | 
						
							| 72 |  | 0zd |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) -> 0 e. ZZ ) | 
						
							| 73 | 24 18 25 | syl2an |  |-  ( ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) -> ( N - L ) e. ZZ ) | 
						
							| 74 | 73 | adantl |  |-  ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) -> ( N - L ) e. ZZ ) | 
						
							| 75 | 74 | adantr |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) -> ( N - L ) e. ZZ ) | 
						
							| 76 | 71 72 75 | 3jca |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) -> ( B e. Word V /\ 0 e. ZZ /\ ( N - L ) e. ZZ ) ) | 
						
							| 77 | 53 36 | anim12i |  |-  ( ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) -> ( N e. RR /\ L e. RR ) ) | 
						
							| 78 | 77 | adantl |  |-  ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) -> ( N e. RR /\ L e. RR ) ) | 
						
							| 79 |  | suble0 |  |-  ( ( N e. RR /\ L e. RR ) -> ( ( N - L ) <_ 0 <-> N <_ L ) ) | 
						
							| 80 | 78 79 | syl |  |-  ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) -> ( ( N - L ) <_ 0 <-> N <_ L ) ) | 
						
							| 81 | 80 | biimpar |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) -> ( N - L ) <_ 0 ) | 
						
							| 82 |  | swrdlend |  |-  ( ( B e. Word V /\ 0 e. ZZ /\ ( N - L ) e. ZZ ) -> ( ( N - L ) <_ 0 -> ( B substr <. 0 , ( N - L ) >. ) = (/) ) ) | 
						
							| 83 | 76 81 82 | sylc |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) -> ( B substr <. 0 , ( N - L ) >. ) = (/) ) | 
						
							| 84 | 69 83 | sylan9eq |  |-  ( ( -. 0 <_ ( M - L ) /\ ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) ) -> ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) = (/) ) | 
						
							| 85 | 66 84 | pm2.61ian |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) -> ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) = (/) ) | 
						
							| 86 | 12 85 | oveq12d |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) -> ( ( A substr <. M , if ( N <_ L , N , L ) >. ) ++ ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) ) = ( ( A substr <. M , N >. ) ++ (/) ) ) | 
						
							| 87 |  | swrdcl |  |-  ( A e. Word V -> ( A substr <. M , N >. ) e. Word V ) | 
						
							| 88 |  | ccatrid |  |-  ( ( A substr <. M , N >. ) e. Word V -> ( ( A substr <. M , N >. ) ++ (/) ) = ( A substr <. M , N >. ) ) | 
						
							| 89 | 87 88 | syl |  |-  ( A e. Word V -> ( ( A substr <. M , N >. ) ++ (/) ) = ( A substr <. M , N >. ) ) | 
						
							| 90 | 89 | adantr |  |-  ( ( A e. Word V /\ B e. Word V ) -> ( ( A substr <. M , N >. ) ++ (/) ) = ( A substr <. M , N >. ) ) | 
						
							| 91 | 90 | adantr |  |-  ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) -> ( ( A substr <. M , N >. ) ++ (/) ) = ( A substr <. M , N >. ) ) | 
						
							| 92 | 91 | adantr |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) -> ( ( A substr <. M , N >. ) ++ (/) ) = ( A substr <. M , N >. ) ) | 
						
							| 93 | 86 92 | eqtrd |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) -> ( ( A substr <. M , if ( N <_ L , N , L ) >. ) ++ ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) ) = ( A substr <. M , N >. ) ) | 
						
							| 94 |  | iffalse |  |-  ( -. N <_ L -> if ( N <_ L , N , L ) = L ) | 
						
							| 95 | 94 | 3ad2ant2 |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ L <_ M ) -> if ( N <_ L , N , L ) = L ) | 
						
							| 96 | 95 | opeq2d |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ L <_ M ) -> <. M , if ( N <_ L , N , L ) >. = <. M , L >. ) | 
						
							| 97 | 96 | oveq2d |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ L <_ M ) -> ( A substr <. M , if ( N <_ L , N , L ) >. ) = ( A substr <. M , L >. ) ) | 
						
							| 98 |  | simpl |  |-  ( ( A e. Word V /\ B e. Word V ) -> A e. Word V ) | 
						
							| 99 | 98 20 18 | 3anim123i |  |-  ( ( ( A e. Word V /\ B e. Word V ) /\ ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) -> ( A e. Word V /\ M e. ZZ /\ L e. ZZ ) ) | 
						
							| 100 | 99 | 3expb |  |-  ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) -> ( A e. Word V /\ M e. ZZ /\ L e. ZZ ) ) | 
						
							| 101 |  | swrdlend |  |-  ( ( A e. Word V /\ M e. ZZ /\ L e. ZZ ) -> ( L <_ M -> ( A substr <. M , L >. ) = (/) ) ) | 
						
							| 102 | 100 101 | syl |  |-  ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) -> ( L <_ M -> ( A substr <. M , L >. ) = (/) ) ) | 
						
							| 103 | 102 | imp |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ L <_ M ) -> ( A substr <. M , L >. ) = (/) ) | 
						
							| 104 | 103 | 3adant2 |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ L <_ M ) -> ( A substr <. M , L >. ) = (/) ) | 
						
							| 105 | 97 104 | eqtrd |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ L <_ M ) -> ( A substr <. M , if ( N <_ L , N , L ) >. ) = (/) ) | 
						
							| 106 | 55 36 37 | syl2an |  |-  ( ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) -> ( 0 <_ ( M - L ) <-> L <_ M ) ) | 
						
							| 107 | 106 | biimprd |  |-  ( ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) -> ( L <_ M -> 0 <_ ( M - L ) ) ) | 
						
							| 108 | 107 | adantl |  |-  ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) -> ( L <_ M -> 0 <_ ( M - L ) ) ) | 
						
							| 109 | 108 | imp |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ L <_ M ) -> 0 <_ ( M - L ) ) | 
						
							| 110 | 109 | 3adant2 |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ L <_ M ) -> 0 <_ ( M - L ) ) | 
						
							| 111 | 110 14 | syl |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ L <_ M ) -> <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. = <. ( M - L ) , ( N - L ) >. ) | 
						
							| 112 | 111 | oveq2d |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ L <_ M ) -> ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) = ( B substr <. ( M - L ) , ( N - L ) >. ) ) | 
						
							| 113 | 105 112 | oveq12d |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ L <_ M ) -> ( ( A substr <. M , if ( N <_ L , N , L ) >. ) ++ ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) ) = ( (/) ++ ( B substr <. ( M - L ) , ( N - L ) >. ) ) ) | 
						
							| 114 |  | swrdcl |  |-  ( B e. Word V -> ( B substr <. ( M - L ) , ( N - L ) >. ) e. Word V ) | 
						
							| 115 | 114 | adantl |  |-  ( ( A e. Word V /\ B e. Word V ) -> ( B substr <. ( M - L ) , ( N - L ) >. ) e. Word V ) | 
						
							| 116 |  | ccatlid |  |-  ( ( B substr <. ( M - L ) , ( N - L ) >. ) e. Word V -> ( (/) ++ ( B substr <. ( M - L ) , ( N - L ) >. ) ) = ( B substr <. ( M - L ) , ( N - L ) >. ) ) | 
						
							| 117 | 115 116 | syl |  |-  ( ( A e. Word V /\ B e. Word V ) -> ( (/) ++ ( B substr <. ( M - L ) , ( N - L ) >. ) ) = ( B substr <. ( M - L ) , ( N - L ) >. ) ) | 
						
							| 118 | 117 | adantr |  |-  ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) -> ( (/) ++ ( B substr <. ( M - L ) , ( N - L ) >. ) ) = ( B substr <. ( M - L ) , ( N - L ) >. ) ) | 
						
							| 119 | 118 | 3ad2ant1 |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ L <_ M ) -> ( (/) ++ ( B substr <. ( M - L ) , ( N - L ) >. ) ) = ( B substr <. ( M - L ) , ( N - L ) >. ) ) | 
						
							| 120 | 113 119 | eqtrd |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ L <_ M ) -> ( ( A substr <. M , if ( N <_ L , N , L ) >. ) ++ ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) ) = ( B substr <. ( M - L ) , ( N - L ) >. ) ) | 
						
							| 121 | 94 | 3ad2ant2 |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ -. L <_ M ) -> if ( N <_ L , N , L ) = L ) | 
						
							| 122 | 121 | opeq2d |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ -. L <_ M ) -> <. M , if ( N <_ L , N , L ) >. = <. M , L >. ) | 
						
							| 123 | 122 | oveq2d |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ -. L <_ M ) -> ( A substr <. M , if ( N <_ L , N , L ) >. ) = ( A substr <. M , L >. ) ) | 
						
							| 124 | 33 36 37 | syl2an |  |-  ( ( M e. NN0 /\ L e. NN0 ) -> ( 0 <_ ( M - L ) <-> L <_ M ) ) | 
						
							| 125 | 124 | adantlr |  |-  ( ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) -> ( 0 <_ ( M - L ) <-> L <_ M ) ) | 
						
							| 126 | 125 | adantl |  |-  ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) -> ( 0 <_ ( M - L ) <-> L <_ M ) ) | 
						
							| 127 | 126 | biimpd |  |-  ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) -> ( 0 <_ ( M - L ) -> L <_ M ) ) | 
						
							| 128 | 127 | con3dimp |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. L <_ M ) -> -. 0 <_ ( M - L ) ) | 
						
							| 129 | 128 | 3adant2 |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ -. L <_ M ) -> -. 0 <_ ( M - L ) ) | 
						
							| 130 | 129 67 | syl |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ -. L <_ M ) -> if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) = 0 ) | 
						
							| 131 | 130 | opeq1d |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ -. L <_ M ) -> <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. = <. 0 , ( N - L ) >. ) | 
						
							| 132 | 131 | oveq2d |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ -. L <_ M ) -> ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) = ( B substr <. 0 , ( N - L ) >. ) ) | 
						
							| 133 | 70 | 3ad2ant1 |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ -. L <_ M ) -> B e. Word V ) | 
						
							| 134 |  | simplrr |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L ) -> L e. NN0 ) | 
						
							| 135 |  | simprlr |  |-  ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) -> N e. NN0 ) | 
						
							| 136 | 135 | adantr |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L ) -> N e. NN0 ) | 
						
							| 137 |  | ltnle |  |-  ( ( L e. RR /\ N e. RR ) -> ( L < N <-> -. N <_ L ) ) | 
						
							| 138 |  | ltle |  |-  ( ( L e. RR /\ N e. RR ) -> ( L < N -> L <_ N ) ) | 
						
							| 139 | 137 138 | sylbird |  |-  ( ( L e. RR /\ N e. RR ) -> ( -. N <_ L -> L <_ N ) ) | 
						
							| 140 | 36 53 139 | syl2anr |  |-  ( ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) -> ( -. N <_ L -> L <_ N ) ) | 
						
							| 141 | 140 | adantl |  |-  ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) -> ( -. N <_ L -> L <_ N ) ) | 
						
							| 142 | 141 | imp |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L ) -> L <_ N ) | 
						
							| 143 |  | nn0sub2 |  |-  ( ( L e. NN0 /\ N e. NN0 /\ L <_ N ) -> ( N - L ) e. NN0 ) | 
						
							| 144 | 134 136 142 143 | syl3anc |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L ) -> ( N - L ) e. NN0 ) | 
						
							| 145 | 144 | 3adant3 |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ -. L <_ M ) -> ( N - L ) e. NN0 ) | 
						
							| 146 | 133 145 | jca |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ -. L <_ M ) -> ( B e. Word V /\ ( N - L ) e. NN0 ) ) | 
						
							| 147 |  | pfxval |  |-  ( ( B e. Word V /\ ( N - L ) e. NN0 ) -> ( B prefix ( N - L ) ) = ( B substr <. 0 , ( N - L ) >. ) ) | 
						
							| 148 | 146 147 | syl |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ -. L <_ M ) -> ( B prefix ( N - L ) ) = ( B substr <. 0 , ( N - L ) >. ) ) | 
						
							| 149 | 132 148 | eqtr4d |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ -. L <_ M ) -> ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) = ( B prefix ( N - L ) ) ) | 
						
							| 150 | 123 149 | oveq12d |  |-  ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ -. L <_ M ) -> ( ( A substr <. M , if ( N <_ L , N , L ) >. ) ++ ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) ) = ( ( A substr <. M , L >. ) ++ ( B prefix ( N - L ) ) ) ) | 
						
							| 151 | 93 120 150 | 2if2 |  |-  ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) -> ( ( A substr <. M , if ( N <_ L , N , L ) >. ) ++ ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) ) = if ( N <_ L , ( A substr <. M , N >. ) , if ( L <_ M , ( B substr <. ( M - L ) , ( N - L ) >. ) , ( ( A substr <. M , L >. ) ++ ( B prefix ( N - L ) ) ) ) ) ) | 
						
							| 152 | 151 | exp32 |  |-  ( ( A e. Word V /\ B e. Word V ) -> ( ( M e. NN0 /\ N e. NN0 ) -> ( L e. NN0 -> ( ( A substr <. M , if ( N <_ L , N , L ) >. ) ++ ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) ) = if ( N <_ L , ( A substr <. M , N >. ) , if ( L <_ M , ( B substr <. ( M - L ) , ( N - L ) >. ) , ( ( A substr <. M , L >. ) ++ ( B prefix ( N - L ) ) ) ) ) ) ) ) | 
						
							| 153 | 152 | com12 |  |-  ( ( M e. NN0 /\ N e. NN0 ) -> ( ( A e. Word V /\ B e. Word V ) -> ( L e. NN0 -> ( ( A substr <. M , if ( N <_ L , N , L ) >. ) ++ ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) ) = if ( N <_ L , ( A substr <. M , N >. ) , if ( L <_ M , ( B substr <. ( M - L ) , ( N - L ) >. ) , ( ( A substr <. M , L >. ) ++ ( B prefix ( N - L ) ) ) ) ) ) ) ) | 
						
							| 154 | 153 | 3adant3 |  |-  ( ( M e. NN0 /\ N e. NN0 /\ M <_ N ) -> ( ( A e. Word V /\ B e. Word V ) -> ( L e. NN0 -> ( ( A substr <. M , if ( N <_ L , N , L ) >. ) ++ ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) ) = if ( N <_ L , ( A substr <. M , N >. ) , if ( L <_ M , ( B substr <. ( M - L ) , ( N - L ) >. ) , ( ( A substr <. M , L >. ) ++ ( B prefix ( N - L ) ) ) ) ) ) ) ) | 
						
							| 155 | 8 154 | sylbi |  |-  ( M e. ( 0 ... N ) -> ( ( A e. Word V /\ B e. Word V ) -> ( L e. NN0 -> ( ( A substr <. M , if ( N <_ L , N , L ) >. ) ++ ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) ) = if ( N <_ L , ( A substr <. M , N >. ) , if ( L <_ M , ( B substr <. ( M - L ) , ( N - L ) >. ) , ( ( A substr <. M , L >. ) ++ ( B prefix ( N - L ) ) ) ) ) ) ) ) | 
						
							| 156 | 155 | adantr |  |-  ( ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( L + ( # ` B ) ) ) ) -> ( ( A e. Word V /\ B e. Word V ) -> ( L e. NN0 -> ( ( A substr <. M , if ( N <_ L , N , L ) >. ) ++ ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) ) = if ( N <_ L , ( A substr <. M , N >. ) , if ( L <_ M , ( B substr <. ( M - L ) , ( N - L ) >. ) , ( ( A substr <. M , L >. ) ++ ( B prefix ( N - L ) ) ) ) ) ) ) ) | 
						
							| 157 | 156 | com13 |  |-  ( L e. NN0 -> ( ( A e. Word V /\ B e. Word V ) -> ( ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( L + ( # ` B ) ) ) ) -> ( ( A substr <. M , if ( N <_ L , N , L ) >. ) ++ ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) ) = if ( N <_ L , ( A substr <. M , N >. ) , if ( L <_ M , ( B substr <. ( M - L ) , ( N - L ) >. ) , ( ( A substr <. M , L >. ) ++ ( B prefix ( N - L ) ) ) ) ) ) ) ) | 
						
							| 158 | 7 157 | sylbi |  |-  ( ( # ` A ) e. NN0 -> ( ( A e. Word V /\ B e. Word V ) -> ( ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( L + ( # ` B ) ) ) ) -> ( ( A substr <. M , if ( N <_ L , N , L ) >. ) ++ ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) ) = if ( N <_ L , ( A substr <. M , N >. ) , if ( L <_ M , ( B substr <. ( M - L ) , ( N - L ) >. ) , ( ( A substr <. M , L >. ) ++ ( B prefix ( N - L ) ) ) ) ) ) ) ) | 
						
							| 159 | 5 158 | mpcom |  |-  ( ( A e. Word V /\ B e. Word V ) -> ( ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( L + ( # ` B ) ) ) ) -> ( ( A substr <. M , if ( N <_ L , N , L ) >. ) ++ ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) ) = if ( N <_ L , ( A substr <. M , N >. ) , if ( L <_ M , ( B substr <. ( M - L ) , ( N - L ) >. ) , ( ( A substr <. M , L >. ) ++ ( B prefix ( N - L ) ) ) ) ) ) ) | 
						
							| 160 | 159 | imp |  |-  ( ( ( A e. Word V /\ B e. Word V ) /\ ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( L + ( # ` B ) ) ) ) ) -> ( ( A substr <. M , if ( N <_ L , N , L ) >. ) ++ ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) ) = if ( N <_ L , ( A substr <. M , N >. ) , if ( L <_ M , ( B substr <. ( M - L ) , ( N - L ) >. ) , ( ( A substr <. M , L >. ) ++ ( B prefix ( N - L ) ) ) ) ) ) | 
						
							| 161 | 3 160 | eqtr4d |  |-  ( ( ( A e. Word V /\ B e. Word V ) /\ ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( L + ( # ` B ) ) ) ) ) -> ( ( A ++ B ) substr <. M , N >. ) = ( ( A substr <. M , if ( N <_ L , N , L ) >. ) ++ ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) ) ) | 
						
							| 162 | 161 | ex |  |-  ( ( A e. Word V /\ B e. Word V ) -> ( ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( L + ( # ` B ) ) ) ) -> ( ( A ++ B ) substr <. M , N >. ) = ( ( A substr <. M , if ( N <_ L , N , L ) >. ) ++ ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) ) ) ) |