reserve Y for non empty set;
reserve Y for non empty set;
reserve Y for non empty set;
reserve Y for non empty set,
  a,b,c,d,e,f,g for Function of Y,BOOLEAN;
reserve Y for non empty set;

theorem
  for a,b,c being Function of Y,BOOLEAN holds ((a '&' b) 'imp'
  'not' c) '&' a '&' c '<' 'not' b
proof
  let a,b,c be Function of Y,BOOLEAN;
  let z be Element of Y;
A1: (((a '&' b) 'imp' 'not' c) '&' a '&' c).z =(((a '&' b) 'imp' 'not' c)
  '&' a).z '&' c.z by MARGREL1:def 20
    .=((a '&' b) 'imp' 'not' c).z '&' a.z '&' c.z by MARGREL1:def 20
    .=('not'( a '&' b) 'or' 'not' c).z '&' a.z '&' c.z by BVFUNC_4:8
    .=(('not' a 'or' 'not' b) 'or' 'not' c).z '&' a.z '&' c.z by
BVFUNC_1:14
    .=(('not' a 'or' 'not' b).z 'or' ('not' c).z) '&' a.z '&' c.z by
BVFUNC_1:def 4
    .=((('not' a).z 'or' ('not' b).z) 'or' ('not' c).z) '&' a.z '&' c.z
  by BVFUNC_1:def 4;
  reconsider cz = c.z as boolean object;
  assume
A2: (((a '&' b) 'imp' 'not' c) '&' a '&' c).z=TRUE;
  now
    assume ('not' b).z<>TRUE;
    then ('not' b).z=FALSE by XBOOLEAN:def 3;
    then
    ((('not' a).z 'or' ('not' b).z) 'or' ('not' c).z) '&' a.z '&' c.z
    =('not' a.z 'or' ('not' c).z) '&' a.z '&' c.z by MARGREL1:def 19
      .=a.z '&' ('not' a.z 'or' 'not' c.z) '&' c.z by MARGREL1:def 19
      .=(a.z '&' 'not' a.z 'or' a.z '&' 'not' c.z) '&' c.z by
XBOOLEAN:8
      .=(FALSE 'or' a.z '&' 'not' c.z) '&' c.z by XBOOLEAN:138
      .=(a.z '&' 'not' c.z) '&' c.z
      .=a.z '&' ('not' cz '&' cz)
      .=FALSE '&' a.z by XBOOLEAN:138
      .=FALSE;
    hence thesis by A2,A1;
  end;
  hence thesis;
end;
