reserve Y for non empty set;

theorem
  for a,b,c being Function of Y,BOOLEAN holds (a 'imp' b) 'imp' (
  'not' (b '&' c) 'imp' 'not' (a '&' c)) =I_el(Y)
proof
  let a,b,c be Function of Y,BOOLEAN;
    let x be Element of Y;
A1: ((a 'imp' b) 'imp' ('not' (b '&' c) 'imp' 'not' (a '&' c))).x = 'not'
(a 'imp' b).x 'or' ('not' (b '&' c) 'imp' 'not' (a '&' c)).x by BVFUNC_1:def 8
      .= 'not' (a 'imp' b).x 'or' (('not' ('not' (b '&' c)).x) 'or' ('not' (
    a '&' c)).x) by BVFUNC_1:def 8;
A2: ('not' (a '&' c)).x =(('not' a) 'or' ('not' c)).x by BVFUNC_1:14
      .=('not' a).x 'or' ('not' c).x by BVFUNC_1:def 4
      .='not' a.x 'or' ('not' c).x by MARGREL1:def 19
      .='not' a.x 'or' 'not' c.x by MARGREL1:def 19;
    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;
    then ('not' a.x 'or' ('not' c.x 'or' c.x)) =TRUE by BINARITH:10;
    then
A3: (('not' a.x 'or' 'not' c.x) 'or' b.x) '&' ('not' a.x 'or' ('not' c.x
    'or' c.x)) = (('not' a.x 'or' 'not' c.x) 'or' b.x) by MARGREL1:14;
A4: 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;
A5: now
      per cases by XBOOLEAN:def 3;
      case
        b.x=TRUE;
        hence ('not' b.x 'or' b.x)=TRUE by BINARITH:10;
      end;
      case
        b.x=FALSE;
        then 'not' b.x 'or' b.x =TRUE 'or' FALSE by MARGREL1:11
          .=TRUE by BINARITH:10;
        hence ('not' b.x 'or' b.x)=TRUE;
      end;
    end;
    'not' ('not' (b '&' c)).x ='not' 'not' (b '&' c).x by MARGREL1:def 19
      .=b.x '&' c.x by MARGREL1:def 20;
    then
A6: ('not' ('not' (b '&' c)).x) 'or' ('not' (a '&' c)).x =(('not' a.x 'or'
    'not' c.x) 'or' b.x) '&' (('not' a.x 'or' 'not' c.x) 'or' c.x) by A2,
XBOOLEAN:9
      .=(('not' a.x 'or' 'not' c.x) 'or' b.x) '&' ('not' a.x 'or' ('not' c.x
    'or' c.x)) by BINARITH:11;
    'not' (a 'imp' b).x ='not' (('not' a.x) 'or' b.x) by BVFUNC_1:def 8
      .=a.x '&' 'not' b.x;
    then 'not' (a 'imp' b).x 'or' (('not' ('not' (b '&' c)).x) 'or' ('not' (a
'&' c)).x) =((('not' a.x 'or' 'not' c.x) 'or' b.x) 'or' a.x) '&' ((('not' a.x
    'or' 'not' c.x) 'or' b.x) 'or' 'not' b.x) by A6,A3,XBOOLEAN:9
      .=((('not' a.x 'or' 'not' c.x) 'or' b.x) 'or' a.x) '&' (('not' a.x
    'or' 'not' c.x) 'or' (b.x 'or' 'not' b.x)) by BINARITH:11
      .=((('not' c.x 'or' 'not' a.x) 'or' a.x) 'or' b.x) '&' (('not' a.x
    'or' 'not' c.x) 'or' (b.x 'or' 'not' b.x)) by BINARITH:11
      .=(('not' c.x 'or' ('not' a.x 'or' a.x)) 'or' b.x) '&' (('not' a.x
    'or' 'not' c.x) 'or' (b.x 'or' 'not' b.x)) by BINARITH:11;
    then 'not' (a 'imp' b).x 'or' (('not' ('not' (b '&' c)).x) 'or' ('not' (a
    '&' c)).x) =(TRUE 'or' b.x) '&' (('not' a.x 'or' 'not' c.x) 'or' TRUE) by
A4,A5,BINARITH:10
      .=TRUE '&' (('not' a.x 'or' 'not' c.x) 'or' TRUE) by BINARITH:10
      .=TRUE '&' TRUE by BINARITH:10
      .=TRUE;
    hence thesis by A1,BVFUNC_1:def 11;
end;
