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 'imp' b) '&' (b
  'imp' c) '<' ((a 'or' b) 'imp' c)
proof
  let a,b,c be Function of Y,BOOLEAN;
  let z be Element of Y;
A1: ((a 'imp' b) '&' (b 'imp' c)).z =(a 'imp' b).z '&' (b 'imp' c).z by
MARGREL1:def 20
    .=('not' a 'or' b).z '&' (b 'imp' c).z by BVFUNC_4:8
    .=('not' a 'or' b).z '&' ('not' b 'or' c).z by BVFUNC_4:8
    .=(('not' a).z 'or' b.z) '&' ('not' b 'or' c).z by BVFUNC_1:def 4
    .=(('not' a).z 'or' b.z) '&' (('not' b).z 'or' c.z) by BVFUNC_1:def 4;
  assume
A2: ((a 'imp' b) '&' (b 'imp' c)).z=TRUE;
  now
A3: c.z=TRUE or c.z=FALSE by XBOOLEAN:def 3;
    assume
A4: ((a 'or' b) 'imp' c).z<>TRUE;
A5: ((a 'or' b) 'imp' c).z =('not'( a 'or' b) 'or' c).z by BVFUNC_4:8
      .=(('not' a '&' 'not' b) 'or' c).z by BVFUNC_1:13
      .=('not' a '&' 'not' b).z 'or' c.z by BVFUNC_1:def 4
      .=(('not' a).z '&' ('not' b).z) 'or' c.z by MARGREL1:def 20;
A6: (('not' a).z '&' ('not' b).z)=TRUE or (('not' a).z '&' ('not' b).z)=
    FALSE by XBOOLEAN:def 3;
    now
      per cases by A4,A5,A6,MARGREL1:12;
      case
        ('not' a).z=FALSE;
        then (('not' a).z 'or' b.z) '&' (('not' b).z 'or' c.z) =b.z '&'
        'not' b.z by A4,A5,A3,MARGREL1:def 19
          .=FALSE by XBOOLEAN:138;
        hence thesis by A2,A1;
      end;
      case
        ('not' b).z=FALSE;
        then
        (('not' a).z 'or' b.z) '&' (('not' b).z 'or' c.z) =(('not' a)
        .z 'or' b.z) '&' FALSE by A4,A5,XBOOLEAN:def 3
          .=FALSE;
        hence thesis by A2,A1;
      end;
    end;
    hence thesis;
  end;
  hence thesis;
end;
