reserve Y for non empty set;

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