let D be non empty set ; 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; ( f = r1 ^ r2 implies ( r1 is_substring_of f,1 & r2 is_substring_of f,1 ) )
A1:
len (r1 ^ r2) = (len r1) + (len r2)
by FINSEQ_1:22;
assume A2:
f = r1 ^ r2
; ( r1 is_substring_of f,1 & r2 is_substring_of f,1 )
A3:
now r2 is_substring_of f,1per cases
( len r2 > 0 or len r2 <= 0 )
;
suppose A4:
len r2 > 0
;
r2 is_substring_of f,1then A5:
(len r1) + (len r2) > (len r1) + 0
by XREAL_1:8;
A6:
r2 | (len r2) = r2 | (Seg (len r2))
by FINSEQ_1:def 16;
A7:
((len r1) + (len r2)) -' (len r1) =
((len r1) + (len r2)) - (len r1)
by XREAL_0:def 2
.=
len r2
;
A8:
len r2 >= 0 + 1
by A4, NAT_1:13;
then
(len r1) + 1
<= len (r1 ^ r2)
by A1, XREAL_1:6;
then A9:
mid (
(r1 ^ r2),
((len r1) + 1),
(len (r1 ^ r2))) =
((r1 ^ r2) /^ (((len r1) + 1) -' 1)) | (((len (r1 ^ r2)) -' ((len r1) + 1)) + 1)
by FINSEQ_6:def 3
.=
((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:22
.=
((r1 ^ r2) /^ (len r1)) | (((len r1) + (len r2)) -' (len r1))
by A5, NAT_2:7
.=
r2 | (len r2)
by A7
.=
r2
by A6, FINSEQ_2:20
;
(
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 ) )
proof
consider i being
Element of
NAT such that A10:
i = (len r1) + 1
;
A11:
i <= len (r1 ^ r2)
by A1, A8, A10, XREAL_1:6;
A12:
(((len r1) + 1) -' 1) + (len r2) =
(len r1) + (len r2)
by NAT_D:34
.=
len (r1 ^ r2)
by FINSEQ_1:22
;
1
<= i
by A8, A10, XREAL_1:6;
hence
(
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 ) )
by A9, A10, A12, A11;
verum
end; hence
r2 is_substring_of f,1
by A2, FINSEQ_8:def 7;
verum end; end; end;
A13:
( len r2 >= 0 & len (r1 ^ r2) = (len r1) + (len r2) )
by FINSEQ_1:22;
hence
( r1 is_substring_of f,1 & r2 is_substring_of f,1 )
by A3; verum