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,d being Function of Y,BOOLEAN holds (a 'imp' c) '&' (b
  'imp' d) '&' (a 'or' b) '<' (c 'or' d)
proof
  let a,b,c,d be Function of Y,BOOLEAN;
  let z be Element of Y;
A1: ((a 'imp' c) '&' (b 'imp' d) '&' (a 'or' b)).z =((a 'imp' c) '&' (b
  'imp' d)).z '&' (a 'or' b).z by MARGREL1:def 20
    .=(a 'imp' c).z '&' (b 'imp' d).z '&' (a 'or' b).z by MARGREL1:def 20
    .=('not' a 'or' c).z '&' (b 'imp' d).z '&' (a 'or' b).z by BVFUNC_4:8
    .=('not' a 'or' c).z '&' ('not' b 'or' d).z '&' (a 'or' b).z by BVFUNC_4:8
    .=(('not' a).z 'or' c.z) '&' ('not' b 'or' d).z '&' (a 'or' b).z by
BVFUNC_1:def 4
    .=(('not' a).z 'or' c.z) '&' (('not' b).z 'or' (d).z) '&' (a 'or' b).z
  by BVFUNC_1:def 4
    .=(('not' a).z 'or' c.z) '&' (('not' b).z 'or' (d).z) '&' (a.z 'or'
  b.z) by BVFUNC_1:def 4
    .=('not' a.z 'or' c.z) '&' (('not' b).z 'or' (d).z) '&' (a.z 'or'
  b.z) by MARGREL1:def 19
    .=('not' a.z 'or' c.z) '&' ('not' b.z 'or' (d).z) '&' (a.z 'or'
  b.z) by MARGREL1:def 19;
  reconsider bz = b.z as boolean object;
  reconsider az = a.z as boolean object;
  assume
A2: ((a 'imp' c) '&' (b 'imp' d) '&' (a 'or' b)).z=TRUE;
  now
    assume (c 'or' d).z<>TRUE;
    then (c 'or' d).z=FALSE by XBOOLEAN:def 3;
    then
A3: c.z 'or' (d).z=FALSE by BVFUNC_1:def 4;
    (d).z=TRUE or (d).z=FALSE by XBOOLEAN:def 3;
    then
    ('not' a.z 'or' c.z) '&' ('not' b.z 'or' (d).z) '&' (a.z 'or'
    b.z) ='not' a.z '&' ('not' b.z '&' (b.z 'or' a.z)) by A3
      .='not' a.z '&' ( ('not' bz '&' bz 'or' 'not' b.z '&' a.z)) by
XBOOLEAN:8
      .='not' a.z '&' ( (FALSE 'or' 'not' b.z '&' a.z)) by XBOOLEAN:138
      .='not' a.z '&' (a.z '&' 'not' b.z)
      .='not' az '&' az '&' 'not' b.z
      .=FALSE '&' 'not' b.z by XBOOLEAN:138
      .=FALSE;
    hence thesis by A2,A1;
  end;
  hence thesis;
end;
