let D be non empty set ; :: thesis: for CR, r1, r2 being File of D st r1 is_terminated_by CR & r2 is_terminated_by CR holds
CR ^ r2 is_substring_of addcr (r1 ^ r2),CR,1

let CR, r1, r2 be File of D; :: thesis: ( r1 is_terminated_by CR & r2 is_terminated_by CR implies CR ^ r2 is_substring_of addcr (r1 ^ r2),CR,1 )
assume A1: ( r1 is_terminated_by CR & r2 is_terminated_by CR ) ; :: thesis: CR ^ r2 is_substring_of addcr (r1 ^ r2),CR,1
then r1 = addcr r1,CR by Th29;
then A2: r1 = ovlcon r1,CR by FINSEQ_8:def 11;
r2 = addcr r2,CR by A1, Th29;
then r2 = ovlcon r2,CR by FINSEQ_8:def 11;
then r2 = r2 ^ (CR /^ (len (ovlpart r2,CR))) by FINSEQ_8:def 3;
then A3: r1 ^ r2 = ((r1 | ((len r1) -' (len (ovlpart r1,CR)))) ^ CR) ^ (r2 ^ (CR /^ (len (ovlpart r2,CR)))) by A2, FINSEQ_8:11;
addcr (r1 ^ r2),CR = ovlcon (r1 ^ r2),CR by FINSEQ_8:def 11
.= (r1 ^ r2) ^ (CR /^ (len (ovlpart (r1 ^ r2),CR))) by FINSEQ_8:def 3
.= (((r1 | ((len r1) -' (len (ovlpart r1,CR)))) ^ (CR ^ r2)) ^ (CR /^ (len (ovlpart r2,CR)))) ^ (CR /^ (len (ovlpart (r1 ^ r2),CR))) by A3, Th1
.= ((r1 | ((len r1) -' (len (ovlpart r1,CR)))) ^ (CR ^ r2)) ^ ((CR /^ (len (ovlpart r2,CR))) ^ (CR /^ (len (ovlpart (r1 ^ r2),CR)))) by FINSEQ_1:45 ;
hence CR ^ r2 is_substring_of addcr (r1 ^ r2),CR,1 by Th36; :: thesis: verum