reserve Y for non empty set;

theorem Th14:
  for a,b,c being Function of Y,BOOLEAN st (a 'imp' b)=I_el(
  Y) holds (b 'imp' c) 'imp' (a 'imp' c)=I_el(Y)
proof
  let a,b,c be Function of Y,BOOLEAN;
  assume
A1: a 'imp' b=I_el(Y);
  for x being Element of Y holds ((b 'imp' c) 'imp' (a 'imp' c)).x=TRUE
  proof
    let x be Element of Y;
A2: ((b 'imp' c) 'imp' (a 'imp' c)).x =('not' (b 'imp' c).x) 'or' (a 'imp'
    c).x by BVFUNC_1:def 8
      .='not' ('not' b.x 'or' c.x) 'or' (a 'imp' c).x by BVFUNC_1:def 8
      .=('not' a.x 'or' c.x) 'or' (b.x '&' 'not' c.x) by BVFUNC_1:def 8;
A3: now
      per cases by XBOOLEAN:def 3;
      case
        c.x=TRUE;
        hence ('not' c.x 'or' c.x)=TRUE by BINARITH:10;
      end;
      case
        c.x=FALSE;
        then 'not' c.x 'or' c.x =TRUE 'or' FALSE by MARGREL1:11
          .=TRUE by BINARITH:10;
        hence ('not' c.x 'or' c.x)=TRUE;
      end;
    end;
    (a 'imp' b).x=TRUE by A1,BVFUNC_1:def 11;
    then
A4: 'not' a.x 'or' b.x=TRUE by BVFUNC_1:def 8;
A5: 'not' a.x=TRUE or 'not' a.x=FALSE by XBOOLEAN:def 3;
    now
      per cases by A4,A5,BINARITH:3;
      case
        'not' a.x=TRUE;
        then ((b 'imp' c) 'imp' (a 'imp' c)).x =TRUE 'or' (b.x '&' 'not' c.x)
        by A2,BINARITH:10
          .=TRUE by BINARITH:10;
        hence thesis;
      end;
      case
        b.x=TRUE;
        then ((b 'imp' c) 'imp' (a 'imp' c)).x =('not' a.x 'or' c.x) 'or'
        'not' c.x by A2,MARGREL1:14
          .='not' a.x 'or' TRUE by A3,BINARITH:11
          .=TRUE by BINARITH:10;
        hence thesis;
      end;
    end;
    hence thesis;
  end;
  hence thesis by BVFUNC_1:def 11;
end;
