reserve A for non empty closed_interval Subset of REAL;

theorem
for a,b,c,d,r,s be Real st
a < b & b < c & c < d & r >= 0 & s >= 0 & r = s holds
for x be Real holds
( r (#) TrapezoidalFS (a,b,c,d) ).x
= max+ ((AffineMap(r/(b - a),-a*r/(b - a)) | ].-infty,b.]
+* AffineMap((s - r)/(c - b),s-c*(s - r)/(c - b)) | [.b,c.]
+* AffineMap((-s)/(d - c),-d*(-s)/(d - c)) | [.c,+infty.[).x)
proof
 let a,b,c,d,r,s be Real;
 assume A1:a < b & b < c & c < d;
 assume A2: r >= 0 & s >= 0;
 assume A3: r = s;
 set fab = AffineMap(r/(b - a),-a*r/(b - a));
 set fbc = AffineMap((s - r)/(c - b),s-c*(s - r)/(c - b));
 set fcd = AffineMap((-s)/(d - c),-d*(-s)/(d - c));
 set T = TrapezoidalFS (a,b,c,d);
 A5: AffineMap(r/(b - a),-a*r/(b - a))
 = AffineMap(r * (1 / (b - a)),-a*r/(b - a)) by XCMPLX_1:99
 .= AffineMap (r * (1 / (b - a)),(-r*a)/(b - a) ) by XCMPLX_1:187
 .= AffineMap (r * (1 / (b - a)),(r*(-a))/(b - a))
 .= AffineMap (r * (1 / (b - a)),r*((-a)/(b - a))) by XCMPLX_1:74
 .= AffineMap (r * (1 / (b - a)),r * (- (a /(b-a)))) by XCMPLX_1:187
 .= r (#) AffineMap (1 / (b - a),- (a /(b-a))) by FUZZY_7:13;
 A7: AffineMap((-s)/(d - c),-d*(-s)/(d - c))
 = AffineMap((-r)/(d - c),(-d*(-r))/(d - c)) by XCMPLX_1:187,A3
 .= AffineMap(r/(-(d - c)),(d*r)/(d - c)) by XCMPLX_1:192
 .= AffineMap(r*(1/(-(d - c))),(d*r)/(d - c)) by XCMPLX_1:99
 .= AffineMap(r*((-1)/(d - c)),(d*r)/(d - c)) by XCMPLX_1:192
 .= AffineMap (r * (- 1 / (d - c)),(d*r)/(d - c)) by XCMPLX_1:187
 .= AffineMap (r * (- 1 / (d - c)), r* (d / (d - c))) by XCMPLX_1:74
 .= r (#) AffineMap (- 1 / (d - c),d / (d - c)) by FUZZY_7:13;
 A6: AffineMap((s - r)/(c - b),s-c*(s - r)/(c - b))
 = AffineMap(r*0,r*1) by A3
  .= r (#) AffineMap (0,1) by FUZZY_7:13;
 for x be Real holds
 ( r (#) T ).x
 = max+ ((AffineMap(r/(b - a),-a*r/(b - a)) | ].-infty,b.]
  +* AffineMap((s - r)/(c - b),s-c*(s - r)/(c - b)) | [.b,c.]
  +* AffineMap((-s)/(d - c),-d*(-s)/(d - c)) | [.c,+infty.[).x)
 proof
  let x be Real;
  A4: ( r (#) T ).x
   = r * T.x by VALUED_1:6
  .= r * ((AffineMap (0,0) | (REAL \ ].a,d.[)) +* T | [.a,d.]).x
     by FUZZY_7:45,A1;
  per cases;
  suppose B1: x in [.a,d.]; then
  XX:x in dom (T | [.a,d.]) by FUNCT_2:def 1;
  B11:(AffineMap(r/(b - a),-a*r/(b - a)) | ].-infty,b.]
   +* AffineMap((s - r)/(c - b),s-c*(s - r)/(c - b)) | [.b,c.]
   +* AffineMap((-s)/(d - c),-d*(-s)/(d - c)) | [.c,+infty.[).x >= 0
         by Lm2,A1,B1,A2;
  B12: max+ ((AffineMap(r/(b - a),-a*r/(b - a)) | ].-infty,b.]
    +* AffineMap((s - r)/(c - b),s-c*(s - r)/(c - b)) | [.b,c.]
    +* AffineMap((-s)/(d - c),-d*(-s)/(d - c)) | [.c,+infty.[).x)
   = max(0, (AffineMap(r/(b - a),-a*r/(b - a)) | ].-infty,b.]
     +* AffineMap((s - r)/(c - b),s-c*(s - r)/(c - b)) | [.b,c.]
     +* AffineMap((-s)/(d - c),-d*(-s)/(d - c)) | [.c,+infty.[).x)
       by RFUNCT_3:def 1
   .= (AffineMap(r/(b - a),-a*r/(b - a)) | ].-infty,b.]
     +* AffineMap((s - r)/(c - b),s-c*(s - r)/(c - b)) | [.b,c.]
     +* AffineMap((-s)/(d - c),-d*(-s)/(d - c)) | [.c,+infty.[).x
    by XXREAL_0:def 10,B11;
   per cases;
   suppose D1: x < b; then ::[a,b]
    Dc1: x < c by XXREAL_0:2,A1; then
    D12: not x in dom (AffineMap (- (1 / (d - c)), d / (d - c)) | [.c,d.])
         by XXREAL_1:1;
    D14: not x in dom ( AffineMap (0,1) | [.b,c.] ) by XXREAL_1:1,D1;
    a <= x by B1,XXREAL_1:1; then
    x in [.a,b.] by D1; then
    D15: x in dom ( AffineMap (1 / (b - a),(- (a / (b - a)))) | [.a,b.] )
        by FUNCT_2:def 1;
    D13: r*(T | [.a,d.]).x
     = r*((((AffineMap ((1 / (b - a)),(- (a / (b - a))))) | [.a,b.])) +*
       ((AffineMap (0,1)) | [.b,c.]) +*
       ((AffineMap ((- (1 / (d - c))),(d / (d - c)))) | [.c,d.])).x
           by FUZZY_7:44,A1
    .= r*((((AffineMap ((1 / (b - a)),(- (a / (b - a))))) | [.a,b.])) +*
       ((AffineMap (0,1)) | [.b,c.]) ).x
           by FUNCT_4:11,D12
    .= r*((((AffineMap ((1 / (b - a)),(- (a / (b - a))))) | [.a,b.])) ).x
        by FUNCT_4:11,D14
    .= r*(((AffineMap ((1 / (b - a)),(- (a / (b - a))))) )).x
        by FUNCT_1:47,D15
    .= fab.x by A5,VALUED_1:6;
    D16: not x in dom (fcd | [.c,+infty.[) by XXREAL_1:236,Dc1;
    D17: not x in dom( fbc | [.b,c.] ) by XXREAL_1:1,D1;
    x in ].-infty,b.] by D1,XXREAL_1:234; then
    D18: x in dom(fab | ].-infty,b.]) by FUNCT_2:def 1;
    (fab | ].-infty,b.] +* fbc | [.b,c.] +* fcd | [.c,+infty.[).x
     = (fab | ].-infty,b.] +* fbc | [.b,c.] ).x by FUNCT_4:11,D16
    .= (fab | ].-infty,b.] ).x by FUNCT_4:11,D17
    .= fab.x by FUNCT_1:47,D18;
    hence thesis by D13,B12,FUNCT_4:13,A4,XX;
   end;
   suppose D2: b <= x;
    per cases;
    suppose D3: x < c; then ::::[b,c]
     D33: not x in dom (AffineMap (- (1 / (d - c)), d / (d - c)) | [.c,d.])
       by XXREAL_1:1;
     D39:x in [.b,c.] by D3,D2; then
     D32: x in dom ( AffineMap (0,1) | [.b,c.] ) by FUNCT_2:def 1;
     D31: r*(T | [.a,d.]).x
      = r*((((AffineMap ((1 / (b - a)),(- (a / (b - a))))) | [.a,b.])) +*
       ((AffineMap (0,1)) | [.b,c.]) +*
       ((AffineMap ((- (1 / (d - c))),(d / (d - c)))) | [.c,d.])).x
           by FUZZY_7:44,A1
     .= r*((((AffineMap ((1 / (b - a)),(- (a / (b - a))))) | [.a,b.])) +*
       ((AffineMap (0,1)) | [.b,c.]) ).x
           by FUNCT_4:11,D33
     .= r * ( AffineMap (0,1) | [.b,c.] ).x by FUNCT_4:13,D32
     .= r * ( AffineMap (0,1)).x by FUNCT_1:47,D32
     .= (fbc.x) by A6,VALUED_1:6;
     D34: not x in dom (fcd | [.c,+infty.[) by D3,XXREAL_1:236;
     D35:  x in dom( fbc | [.b,c.] ) by FUNCT_2:def 1,D39;
     (fab | ].-infty,b.] +* fbc | [.b,c.] +* fcd | [.c,+infty.[).x
      = (fab | ].-infty,b.] +* fbc | [.b,c.] ).x by FUNCT_4:11,D34
     .= (fbc | [.b,c.]).x by FUNCT_4:13,D35
     .= fbc.x by FUNCT_1:47,D35;
     hence thesis by D31,FUNCT_4:13,A4,XX,B12;
    end;
    suppose D4: c <= x; :::[c,d]
     x <= d by B1,XXREAL_1:1; then
     x in [.c,d.] by D4; then
     D42: x in dom (AffineMap (- (1 / (d - c)), d / (d - c)) | [.c,d.])
          by FUNCT_2:def 1;
     D41: r*(T | [.a,d.]).x
      = r*((((AffineMap ((1 / (b - a)),(- (a / (b - a))))) | [.a,b.])) +*
       ((AffineMap (0,1)) | [.b,c.]) +*
       ((AffineMap ((- (1 / (d - c))),(d / (d - c)))) | [.c,d.])).x
           by FUZZY_7:44,A1
      .= r*(AffineMap (- (1 / (d - c)), d / (d - c)) | [.c,d.]).x
         by FUNCT_4:13,D42
      .= r*(AffineMap (- (1 / (d - c)), d / (d - c)) ).x by FUNCT_1:47,D42
     .= (fcd.x) by A7,VALUED_1:6;
     x in [.c,+infty.[ by D4,XXREAL_1:236; then
     D43: x in dom (fcd | [.c,+infty.[) by FUNCT_2:def 1;
     (fab | ].-infty,b.] +* fbc | [.b,c.] +* fcd | [.c,+infty.[).x
     = (fcd | [.c,+infty.[).x by FUNCT_4:13,D43
     .= (fcd ).x by FUNCT_1:47,D43;
     hence thesis by D41,FUNCT_4:13,A4,XX,B12;
    end;
   end;
  end;
  suppose C1: not x in [.a,d.]; then
   C2:x < a or d < x; then
   C3:(AffineMap(r/(b - a),-a*r/(b - a)) | ].-infty,b.]
   +* AffineMap((s - r)/(c - b),s-c*(s - r)/(c - b)) | [.b,c.]
   +* AffineMap((-s)/(d - c),-d*(-s)/(d - c)) | [.c,+infty.[).x <= 0
         by Lm1,A1,A2;
   C6: max+ ((AffineMap(r/(b - a),-a*r/(b - a)) | ].-infty,b.]
    +* AffineMap((s - r)/(c - b),s-c*(s - r)/(c - b)) | [.b,c.]
    +* AffineMap((-s)/(d - c),-d*(-s)/(d - c)) | [.c,+infty.[).x)
   = max(0, (AffineMap(r/(b - a),-a*r/(b - a)) | ].-infty,b.]
     +* AffineMap((s - r)/(c - b),s-c*(s - r)/(c - b)) | [.b,c.]
     +* AffineMap((-s)/(d - c),-d*(-s)/(d - c)) | [.c,+infty.[).x)
       by RFUNCT_3:def 1
   .= 0 by XXREAL_0:def 10,C3;
   C4: not x in dom(T | [.a,d.]) by C1;
   C8: x in REAL by XREAL_0:def 1;
   not x in ].a,d.[ by XXREAL_1:4,C2; then
   C5: x in (REAL \ ].a,d.[) by XBOOLE_0:def 5,C8;
   ( r (#) TrapezoidalFS (a,b,c,d) ).x
    = r * (AffineMap (0,0) | (REAL \ ].a,d.[)).x by C4,FUNCT_4:11,A4
   .= r * (AffineMap (0,0) ).x by FUNCT_1:49,C5
   .= r*(0*x + 0) by FCONT_1:def 4;
   hence thesis by C6;
  end;
 end;
 hence thesis;
end;
