let D be non empty set ; :: thesis: for r being FinSequence of D
for i being Element of NAT st i <= len r holds
Rev (r /^ i) = (Rev r) | ((len r) -' i)

let r be FinSequence of D; :: thesis: for i being Element of NAT st i <= len r holds
Rev (r /^ i) = (Rev r) | ((len r) -' i)

let i be Element of NAT ; :: thesis: ( i <= len r implies Rev (r /^ i) = (Rev r) | ((len r) -' i) )
assume A1: i <= len r ; :: thesis: Rev (r /^ i) = (Rev r) | ((len r) -' i)
then (len r) - i >= 0 by XREAL_1:50;
then A2: (len r) - i = (len r) -' i by XREAL_0:def 2;
set s = Rev r;
(len r) -' i <= len r by NAT_D:50;
then (len r) -' i <= len (Rev r) by FINSEQ_5:def 3;
then A3: (len (Rev r)) -' i <= len (Rev r) by FINSEQ_5:def 3;
A4: len ((Rev r) | ((len r) -' i)) = len ((Rev r) | ((len (Rev r)) -' i)) by FINSEQ_5:def 3
.= (len (Rev r)) -' i by A3, FINSEQ_1:80 ;
A5: len (Rev (r /^ i)) = len (r /^ i) by FINSEQ_5:def 3
.= (len r) -' i by JORDAN3:19
.= len ((Rev r) | ((len r) -' i)) by A4, FINSEQ_5:def 3 ;
for k being Nat st 1 <= k & k <= len (Rev (r /^ i)) holds
(Rev (r /^ i)) . k = ((Rev r) | ((len r) -' i)) . k
proof
let k be Nat; :: thesis: ( 1 <= k & k <= len (Rev (r /^ i)) implies (Rev (r /^ i)) . k = ((Rev r) | ((len r) -' i)) . k )
assume A6: ( 1 <= k & k <= len (Rev (r /^ i)) ) ; :: thesis: (Rev (r /^ i)) . k = ((Rev r) | ((len r) -' i)) . k
then k in dom (Rev (r /^ i)) by FINSEQ_3:27;
then A7: (Rev (r /^ i)) . k = (r /^ i) . (((len (r /^ i)) - k) + 1) by FINSEQ_5:def 3
.= (r /^ i) . ((((len r) - i) - k) + 1) by A1, RFINSEQ:def 2 ;
( 1 <= k & k <= len (r /^ i) ) by A6, FINSEQ_5:def 3;
then A8: ( 1 <= k & k <= (len r) - i ) by A1, RFINSEQ:def 2;
then A9: ((len r) -' i) - k >= 0 by A2, XREAL_1:50;
then A10: ((len r) -' i) -' k = ((len r) -' i) - k by XREAL_0:def 2;
A11: (((len r) -' i) -' k) + 1 >= 0 + 1 by XREAL_1:9;
k - 1 >= 0 by A6, XREAL_1:50;
then ((len r) - i) + 0 <= ((len r) - i) + (k - 1) by XREAL_1:9;
then ((len r) - i) - (k - 1) <= (((len r) - i) + (k - 1)) - (k - 1) by XREAL_1:11;
then (((len r) -' i) -' k) + 1 <= len (r /^ i) by A1, A2, A10, RFINSEQ:def 2;
then (((len r) - i) - k) + 1 in Seg (len (r /^ i)) by A2, A10, A11, FINSEQ_1:3;
then A12: (((len r) - i) - k) + 1 in dom (r /^ i) by FINSEQ_1:def 3;
A13: i + ((((len r) -' i) -' k) + 1) = i + ((((len r) - i) - k) + 1) by A2, A9, XREAL_0:def 2
.= ((((len r) - i) + i) - k) + 1 ;
0 <= i by NAT_1:2;
then (len r) + 0 <= (len r) + i by XREAL_1:9;
then (len r) - i <= ((len r) + i) - i by XREAL_1:11;
then len (r /^ i) <= len r by A1, RFINSEQ:def 2;
then len (Rev (r /^ i)) <= len r by FINSEQ_5:def 3;
then A14: k <= len r by A6, XXREAL_0:2;
then A15: (len r) - k >= 0 by XREAL_1:50;
then A16: (len r) - k = (len r) -' k by XREAL_0:def 2;
((len r) -' k) + 1 > 0 ;
then A17: ((len r) - k) + 1 >= 0 + 1 by A16, NAT_1:13;
k - 1 >= 0 by A6, XREAL_1:50;
then (len r) + 0 <= (len r) + (k - 1) by XREAL_1:9;
then (len r) - (k - 1) <= ((len r) + (k - 1)) - (k - 1) by XREAL_1:11;
then ((len r) - k) + 1 <= len r ;
then ((len r) -' k) + 1 <= len r by A15, XREAL_0:def 2;
then A18: ((len r) - k) + 1 in dom r by A16, A17, FINSEQ_3:27;
A19: r = r /^ 0 by FINSEQ_5:31;
A20: (r /^ i) . ((((len r) - i) - k) + 1) = (r /^ i) /. ((((len r) -' i) -' k) + 1) by A2, A10, A12, PARTFUN1:def 8
.= (r /^ 0 ) /. (i + ((((len r) -' i) -' k) + 1)) by A2, A10, A12, A19, FINSEQ_5:30
.= r . (((len r) - k) + 1) by A13, A18, A19, PARTFUN1:def 8 ;
k in dom r by A6, A14, FINSEQ_3:27;
then A21: k in dom (Rev r) by FINSEQ_5:60;
k <= (len r) -' i by A8, XREAL_0:def 2;
then ((Rev r) | ((len r) -' i)) . k = (Rev r) . k by FINSEQ_3:121
.= r . (((len r) - k) + 1) by A21, FINSEQ_5:def 3 ;
hence (Rev (r /^ i)) . k = ((Rev r) | ((len r) -' i)) . k by A7, A20; :: thesis: verum
end;
hence Rev (r /^ i) = (Rev r) | ((len r) -' i) by A5, FINSEQ_1:18; :: thesis: verum