let D be non empty set ; :: thesis: for r1, r2, f being File of D st f = r1 ^ r2 holds
( r1 is_substring_of f,1 & r2 is_substring_of f,1 )
let r1, r2, f be File of D; :: thesis: ( f = r1 ^ r2 implies ( r1 is_substring_of f,1 & r2 is_substring_of f,1 ) )
assume A1:
f = r1 ^ r2
; :: thesis: ( r1 is_substring_of f,1 & r2 is_substring_of f,1 )
A3:
len r2 >= 0
by NAT_1:2;
A4:
len (r1 ^ r2) = (len r1) + (len r2)
by FINSEQ_1:35;
A5:
len (r1 ^ r2) = (len r1) + (len r2)
by FINSEQ_1:35;
now per cases
( len r2 > 0 or len r2 <= 0 )
;
suppose A9:
len r2 > 0
;
:: thesis: r2 is_substring_of f,1then A10:
len r2 >= 0 + 1
by NAT_1:13;
then A11:
(len r1) + 1
<= len (r1 ^ r2)
by A4, XREAL_1:8;
A12:
(len r1) + (len r2) > (len r1) + 0
by A9, XREAL_1:10;
A13:
((len r1) + (len r2)) -' (len r1) =
((len r1) + (len r2)) - (len r1)
by A9, XREAL_0:def 2
.=
len r2
;
A14:
r2 | (len r2) = r2 | (Seg (len r2))
by FINSEQ_1:def 15;
A15:
mid (r1 ^ r2),
((len r1) + 1),
(len (r1 ^ r2)) =
((r1 ^ r2) /^ (((len r1) + 1) -' 1)) | (((len (r1 ^ r2)) -' ((len r1) + 1)) + 1)
by A11, JORDAN3:def 1
.=
((r1 ^ r2) /^ (len r1)) | (((len (r1 ^ r2)) -' ((len r1) + 1)) + 1)
by NAT_D:34
.=
((r1 ^ r2) /^ (len r1)) | ((((len r1) + (len r2)) -' ((len r1) + 1)) + 1)
by FINSEQ_1:35
.=
((r1 ^ r2) /^ (len r1)) | (((len r1) + (len r2)) -' (len r1))
by A12, NAT_2:9
.=
r2 | (len r2)
by A13, FINSEQ_5:40
.=
r2
by A14, FINSEQ_2:23
;
(
len r2 > 0 implies ex
i being
Element of
NAT st
( 1
<= i &
i <= len (r1 ^ r2) &
mid (r1 ^ r2),
i,
((i -' 1) + (len r2)) = r2 ) )
hence
r2 is_substring_of f,1
by A1, FINSEQ_8:def 7;
:: thesis: verum end; end; end;
hence
( r1 is_substring_of f,1 & r2 is_substring_of f,1 )
by A6; :: thesis: verum