let f be non constant standard special_circular_sequence; :: thesis: for i1, i2 being Element of NAT st 1 <= i2 & i1 > i2 & i1 < len f holds
(mid f,i1,((len f) -' 1)) ^ (mid f,1,i2) is_a_part>_of f,i1,i2
let i1, i2 be Element of NAT ; :: thesis: ( 1 <= i2 & i1 > i2 & i1 < len f implies (mid f,i1,((len f) -' 1)) ^ (mid f,1,i2) is_a_part>_of f,i1,i2 )
assume A1:
( 1 <= i2 & i1 > i2 & i1 < len f )
; :: thesis: (mid f,i1,((len f) -' 1)) ^ (mid f,1,i2) is_a_part>_of f,i1,i2
then A2:
1 <= i1
by XXREAL_0:2;
A3:
i2 < len f
by A1, XXREAL_0:2;
then A4:
i2 + 1 <= len f
by NAT_1:13;
A5:
i1 + 1 <= len f
by A1, NAT_1:13;
then
(i1 + 1) - 1 <= (len f) - 1
by XREAL_1:11;
then A6:
i1 <= (len f) -' 1
by A1, A2, XREAL_1:235, XXREAL_0:2;
then A7:
1 <= (len f) -' 1
by A2, XXREAL_0:2;
(i2 + 1) - 1 <= (len f) - 1
by A4, XREAL_1:11;
then A8:
i2 <= (len f) -' 1
by A1, A2, XREAL_1:235, XXREAL_0:2;
len f < (len f) + 1
by NAT_1:13;
then
(len f) - 1 < ((len f) + 1) - 1
by XREAL_1:11;
then A9:
(len f) -' 1 < len f
by A1, A2, XREAL_1:235, XXREAL_0:2;
A10:
len ((mid f,i1,((len f) -' 1)) ^ (mid f,1,i2)) = (len (mid f,i1,((len f) -' 1))) + (len (mid f,1,i2))
by FINSEQ_1:35;
A11: len (mid f,1,i2) =
len (f | i2)
by A1, JORDAN3:25
.=
i2
by A1, FINSEQ_1:80, XXREAL_0:2
;
then
len (mid f,i1,((len f) -' 1)) < (len (mid f,i1,((len f) -' 1))) + (len (mid f,1,i2))
by A1, XREAL_1:31;
then A12: ((mid f,i1,((len f) -' 1)) ^ (mid f,1,i2)) . (len ((mid f,i1,((len f) -' 1)) ^ (mid f,1,i2))) =
(mid f,1,i2) . (((len (mid f,i1,((len f) -' 1))) + (len (mid f,1,i2))) - (len (mid f,i1,((len f) -' 1))))
by A10, JORDAN3:15
.=
f . i2
by A1, A3, Th22
;
len (mid f,1,i2) <= len ((mid f,i1,((len f) -' 1)) ^ (mid f,1,i2))
by A10, NAT_1:11;
then A13:
1 <= len ((mid f,i1,((len f) -' 1)) ^ (mid f,1,i2))
by A1, A11, XXREAL_0:2;
len (mid f,i1,((len f) -' 1)) =
(((len f) -' 1) -' i1) + 1
by A1, A2, A6, A7, A9, JORDAN3:27
.=
(((len f) -' 1) - i1) + 1
by A6, XREAL_1:235
.=
(((len f) - 1) - i1) + 1
by A1, A2, XREAL_1:235, XXREAL_0:2
.=
(len f) - i1
;
then A14: len ((mid f,i1,((len f) -' 1)) ^ (mid f,1,i2)) =
((len f) - i1) + i2
by A11, FINSEQ_1:35
.=
(len f) - (i1 - i2)
;
i1 - i2 > 0
by A1, XREAL_1:52;
then
len f < (len f) + (i1 - i2)
by XREAL_1:31;
then A15:
(len f) - (i1 - i2) < ((len f) + (i1 - i2)) - (i1 - i2)
by XREAL_1:11;
for i being Nat st 1 <= i & i <= len ((mid f,i1,((len f) -' 1)) ^ (mid f,1,i2)) holds
((mid f,i1,((len f) -' 1)) ^ (mid f,1,i2)) . i = f . (S_Drop ((i1 + i) -' 1),f)
proof
let i be
Nat;
:: thesis: ( 1 <= i & i <= len ((mid f,i1,((len f) -' 1)) ^ (mid f,1,i2)) implies ((mid f,i1,((len f) -' 1)) ^ (mid f,1,i2)) . i = f . (S_Drop ((i1 + i) -' 1),f) )
assume A16:
( 1
<= i &
i <= len ((mid f,i1,((len f) -' 1)) ^ (mid f,1,i2)) )
;
:: thesis: ((mid f,i1,((len f) -' 1)) ^ (mid f,1,i2)) . i = f . (S_Drop ((i1 + i) -' 1),f)
A17:
len (mid f,i1,((len f) -' 1)) = (((len f) -' 1) -' i1) + 1
by A1, A2, A6, A7, A9, JORDAN3:27;
A18:
(((len f) -' 1) -' i1) + 1 =
(((len f) -' 1) - i1) + 1
by A6, XREAL_1:235
.=
(((len f) - 1) - i1) + 1
by A1, A2, XREAL_1:235, XXREAL_0:2
.=
(len f) - i1
;
A19:
(len f) - i1 = (len f) -' i1
by A1, XREAL_1:235;
A20:
(i1 + i) -' 1
= (i1 + i) - 1
by A16, NAT_D:37;
A21:
i in NAT
by ORDINAL1:def 13;
now per cases
( i <= len (mid f,i1,((len f) -' 1)) or i > len (mid f,i1,((len f) -' 1)) )
;
case A22:
i <= len (mid f,i1,((len f) -' 1))
;
:: thesis: ((mid f,i1,((len f) -' 1)) ^ (mid f,1,i2)) . i = f . (S_Drop ((i1 + i) -' 1),f)then
i in dom (mid f,i1,((len f) -' 1))
by A16, FINSEQ_3:27;
then A23:
((mid f,i1,((len f) -' 1)) ^ (mid f,1,i2)) . i = (mid f,i1,((len f) -' 1)) . i
by FINSEQ_1:def 7;
A24:
(mid f,i1,((len f) -' 1)) . i = f . ((i1 + i) -' 1)
by A1, A2, A6, A7, A9, A16, A21, A22, JORDAN3:27;
0 <= i - 1
by A16, XREAL_1:50;
then A25:
1
+ 0 <= i1 + (i - 1)
by A2, XREAL_1:9;
i1 + i <= i1 + ((((len f) -' 1) -' i1) + 1)
by A17, A22, XREAL_1:8;
then
i1 + i <= ((((len f) -' 1) - i1) + 1) + i1
by A6, XREAL_1:235;
then
i1 + i <= ((len f) -' 1) + 1
;
then
i1 + i <= len f
by A1, A2, XREAL_1:237, XXREAL_0:2;
then
(i1 + i) -' 1
<= (len f) - 1
by A20, XREAL_1:11;
then
( 1
<= (i1 + i) -' 1 &
(i1 + i) -' 1
<= (len f) -' 1 )
by A1, A2, A20, A25, XREAL_1:235, XXREAL_0:2;
hence
((mid f,i1,((len f) -' 1)) ^ (mid f,1,i2)) . i = f . (S_Drop ((i1 + i) -' 1),f)
by A23, A24, Th34;
:: thesis: verum end; case A26:
i > len (mid f,i1,((len f) -' 1))
;
:: thesis: ((mid f,i1,((len f) -' 1)) ^ (mid f,1,i2)) . i = f . (S_Drop ((i1 + i) -' 1),f)A27:
(len f) - i1 = (len f) -' i1
by A1, XREAL_1:235;
i >= ((len f) -' i1) + 1
by A17, A18, A19, A26, NAT_1:13;
then A28:
i - ((len f) -' i1) >= (((len f) -' i1) + 1) - ((len f) -' i1)
by XREAL_1:11;
i - ((len f) - i1) <= (((len f) - i1) + i2) - ((len f) - i1)
by A14, A16, XREAL_1:11;
then A29:
( 1
<= i -' ((len f) -' i1) &
i -' ((len f) -' i1) <= i2 )
by A27, A28, NAT_D:39;
then A30:
i -' ((len f) -' i1) <= (len f) -' 1
by A8, XXREAL_0:2;
A31:
((mid f,i1,((len f) -' 1)) ^ (mid f,1,i2)) . i =
(mid f,1,i2) . (i - (len (mid f,i1,((len f) -' 1))))
by A16, A26, JORDAN3:15
.=
(mid f,1,i2) . (i -' ((len f) -' i1))
by A17, A18, A19, A26, XREAL_1:235
.=
f . (i -' ((len f) -' i1))
by A3, A29, JORDAN3:32
;
((len f) -' 1) + (i -' ((len f) -' i1)) =
((len f) -' 1) + (i - ((len f) -' i1))
by A17, A18, A19, A26, XREAL_1:235
.=
(((len f) -' 1) + i) - ((len f) -' i1)
.=
(((len f) - 1) + i) - ((len f) -' i1)
by A1, A2, XREAL_1:235, XXREAL_0:2
.=
(((len f) - 1) + i) - ((len f) - i1)
by A1, XREAL_1:235
.=
(i + i1) - 1
.=
(i1 + i) -' 1
by A16, NAT_D:37
;
then S_Drop ((i1 + i) -' 1),
f =
S_Drop (i -' ((len f) -' i1)),
f
by Th35
.=
i -' ((len f) -' i1)
by A29, A30, Th34
;
hence
((mid f,i1,((len f) -' 1)) ^ (mid f,1,i2)) . i = f . (S_Drop ((i1 + i) -' 1),f)
by A31;
:: thesis: verum end; end; end;
hence
((mid f,i1,((len f) -' 1)) ^ (mid f,1,i2)) . i = f . (S_Drop ((i1 + i) -' 1),f)
;
:: thesis: verum
end;
hence
(mid f,i1,((len f) -' 1)) ^ (mid f,1,i2) is_a_part>_of f,i1,i2
by A1, A2, A4, A5, A12, A13, A14, A15, Def2; :: thesis: verum