let D be non empty set ; :: thesis: for f1 being FinSequence of D
for i1, i2 being Element of NAT holds mid f1,i1,i2 = Rev (mid f1,i2,i1)

let f1 be FinSequence of D; :: thesis: for i1, i2 being Element of NAT holds mid f1,i1,i2 = Rev (mid f1,i2,i1)
let k1, k2 be Element of NAT ; :: thesis: mid f1,k1,k2 = Rev (mid f1,k2,k1)
now
per cases ( k1 <= k2 or k1 > k2 ) ;
case A1: k1 <= k2 ; :: thesis: mid f1,k1,k2 = Rev (mid f1,k2,k1)
then A2: mid f1,k1,k2 = (f1 /^ (k1 -' 1)) | ((k2 -' k1) + 1) by JORDAN3:def 1;
now
per cases ( k1 < k2 or k1 = k2 ) by A1, XXREAL_0:1;
case k1 < k2 ; :: thesis: mid f1,k1,k2 = Rev (mid f1,k2,k1)
then mid f1,k2,k1 = Rev (mid f1,k1,k2) by A2, JORDAN3:def 1;
hence mid f1,k1,k2 = Rev (mid f1,k2,k1) by FINSEQ_6:29; :: thesis: verum
end;
case A3: k1 = k2 ; :: thesis: mid f1,k1,k2 = Rev (mid f1,k2,k1)
A4: ( k1 = 0 or 0 + 1 <= k1 ) by NAT_1:13;
now
per cases ( k1 = 0 or ( 1 <= k1 & k1 <= len f1 ) or len f1 < k1 ) by A4;
case k1 = 0 ; :: thesis: mid f1,k1,k2 = Rev (mid f1,k2,k1)
then A5: mid f1,k1,k2 = f1 | 1 by A3, Th28;
now
per cases ( len f1 = 0 or len f1 <> 0 ) ;
case len f1 = 0 ; :: thesis: mid f1,k1,k2 = Rev (mid f1,k2,k1)
then f1 = <*> D by FINSEQ_1:32;
then f1 | 1 = <*> D by FINSEQ_5:81;
hence mid f1,k1,k2 = Rev (mid f1,k2,k1) by A3, A5, FINSEQ_5:82; :: thesis: verum
end;
case len f1 <> 0 ; :: thesis: mid f1,k1,k2 = Rev (mid f1,k2,k1)
then f1 <> <*> D by FINSEQ_1:32;
then f1 | 1 = <*(f1 /. 1)*> by FINSEQ_5:23;
hence mid f1,k1,k2 = Rev (mid f1,k2,k1) by A3, A5, FINSEQ_5:63; :: thesis: verum
end;
end;
end;
hence mid f1,k1,k2 = Rev (mid f1,k2,k1) ; :: thesis: verum
end;
case ( 1 <= k1 & k1 <= len f1 ) ; :: thesis: mid f1,k1,k2 = Rev (mid f1,k2,k1)
then mid f1,k1,k1 = <*(f1 /. k1)*> by Th27;
hence mid f1,k1,k2 = Rev (mid f1,k2,k1) by A3, FINSEQ_5:63; :: thesis: verum
end;
case len f1 < k1 ; :: thesis: mid f1,k1,k2 = Rev (mid f1,k2,k1)
then mid f1,k1,k1 = <*> D by Th29;
hence mid f1,k1,k2 = Rev (mid f1,k2,k1) by A3, FINSEQ_5:82; :: thesis: verum
end;
end;
end;
hence mid f1,k1,k2 = Rev (mid f1,k2,k1) ; :: thesis: verum
end;
end;
end;
hence mid f1,k1,k2 = Rev (mid f1,k2,k1) ; :: thesis: verum
end;
case A6: k1 > k2 ; :: thesis: mid f1,k1,k2 = Rev (mid f1,k2,k1)
then mid f1,k1,k2 = Rev ((f1 /^ (k2 -' 1)) | ((k1 -' k2) + 1)) by JORDAN3:def 1;
hence mid f1,k1,k2 = Rev (mid f1,k2,k1) by A6, JORDAN3:def 1; :: thesis: verum
end;
end;
end;
hence mid f1,k1,k2 = Rev (mid f1,k2,k1) ; :: thesis: verum