let i1, i2 be Nat; :: thesis: for f1 being FinSequence holds mid (f1,i1,i2) = Rev (mid (f1,i2,i1))
let f1 be FinSequence; :: thesis: mid (f1,i1,i2) = Rev (mid (f1,i2,i1))
set k1 = i1;
set k2 = i2;
now :: thesis: ( ( i1 <= i2 & mid (f1,i1,i2) = Rev (mid (f1,i2,i1)) ) or ( i1 > i2 & mid (f1,i1,i2) = Rev (mid (f1,i2,i1)) ) )
per cases ( i1 <= i2 or i1 > i2 ) ;
case A1: i1 <= i2 ; :: thesis: mid (f1,i1,i2) = Rev (mid (f1,i2,i1))
then A2: mid (f1,i1,i2) = (f1 /^ (i1 -' 1)) | ((i2 -' i1) + 1) by Def3;
now :: thesis: ( ( i1 < i2 & mid (f1,i1,i2) = Rev (mid (f1,i2,i1)) ) or ( i1 = i2 & mid (f1,i1,i2) = Rev (mid (f1,i2,i1)) ) )
per cases ( i1 < i2 or i1 = i2 ) by A1, XXREAL_0:1;
case i1 < i2 ; :: thesis: mid (f1,i1,i2) = Rev (mid (f1,i2,i1))
then mid (f1,i2,i1) = Rev (mid (f1,i1,i2)) by A2, Def3;
hence mid (f1,i1,i2) = Rev (mid (f1,i2,i1)) ; :: thesis: verum
end;
case A3: i1 = i2 ; :: thesis: mid (f1,i1,i2) = Rev (mid (f1,i2,i1))
A4: ( i1 = 0 or 0 + 1 <= i1 ) by NAT_1:13;
now :: thesis: ( ( i1 = 0 & mid (f1,i1,i2) = Rev (mid (f1,i2,i1)) ) or ( 1 <= i1 & i1 <= len f1 & mid (f1,i1,i2) = Rev (mid (f1,i2,i1)) ) or ( len f1 < i1 & mid (f1,i1,i2) = Rev (mid (f1,i2,i1)) ) )
per cases ( i1 = 0 or ( 1 <= i1 & i1 <= len f1 ) or len f1 < i1 ) by A4;
case i1 = 0 ; :: thesis: mid (f1,i1,i2) = Rev (mid (f1,i2,i1))
then A5: mid (f1,i1,i2) = f1 | 1 by A3, Th16;
now :: thesis: ( ( len f1 = 0 & mid (f1,i1,i2) = Rev (mid (f1,i2,i1)) ) or ( len f1 <> 0 & mid (f1,i1,i2) = Rev (mid (f1,i2,i1)) ) )
per cases ( len f1 = 0 or len f1 <> 0 ) ;
case len f1 = 0 ; :: thesis: mid (f1,i1,i2) = Rev (mid (f1,i2,i1))
then f1 = {} ;
then f1 | 1 = {} ;
hence mid (f1,i1,i2) = Rev (mid (f1,i2,i1)) by A3, A5; :: thesis: verum
end;
case len f1 <> 0 ; :: thesis: mid (f1,i1,i2) = Rev (mid (f1,i2,i1))
then f1 <> {} ;
then f1 | 1 = <*(f1 . 1)*> by FINSEQ_5:20;
hence mid (f1,i1,i2) = Rev (mid (f1,i2,i1)) by A3, A5, FINSEQ_5:60; :: thesis: verum
end;
end;
end;
hence mid (f1,i1,i2) = Rev (mid (f1,i2,i1)) ; :: thesis: verum
end;
case ( 1 <= i1 & i1 <= len f1 ) ; :: thesis: mid (f1,i1,i2) = Rev (mid (f1,i2,i1))
then i1 in dom f1 by FINSEQ_3:25;
then mid (f1,i1,i1) = <*(f1 . i1)*> by Th15;
hence mid (f1,i1,i2) = Rev (mid (f1,i2,i1)) by A3, FINSEQ_5:60; :: thesis: verum
end;
case len f1 < i1 ; :: thesis: mid (f1,i1,i2) = Rev (mid (f1,i2,i1))
then mid (f1,i1,i1) = {} by Th17;
hence mid (f1,i1,i2) = Rev (mid (f1,i2,i1)) by A3; :: thesis: verum
end;
end;
end;
hence mid (f1,i1,i2) = Rev (mid (f1,i2,i1)) ; :: thesis: verum
end;
end;
end;
hence mid (f1,i1,i2) = Rev (mid (f1,i2,i1)) ; :: thesis: verum
end;
case A6: i1 > i2 ; :: thesis: mid (f1,i1,i2) = Rev (mid (f1,i2,i1))
then mid (f1,i1,i2) = Rev ((f1 /^ (i2 -' 1)) | ((i1 -' i2) + 1)) by Def3;
hence mid (f1,i1,i2) = Rev (mid (f1,i2,i1)) by A6, Def3; :: thesis: verum
end;
end;
end;
hence mid (f1,i1,i2) = Rev (mid (f1,i2,i1)) ; :: thesis: verum