reserve Y for non empty set;
reserve Y for non empty set;

theorem
  for a,b,c being Function of Y,BOOLEAN holds (a 'eqv' b) '<' (a
  'imp' c) 'eqv' (b 'imp' c)
proof
  let a,b,c be Function of Y,BOOLEAN;
  let z be Element of Y;
A1: (a 'eqv' b).z =((a 'imp' b) '&' (b 'imp' a)).z by BVFUNC_4:7
    .=(a 'imp' b).z '&' (b 'imp' a).z by MARGREL1:def 20;
  assume
A2: (a 'eqv' b).z=TRUE;
  then (a 'imp' b).z=TRUE by A1,MARGREL1:12;
  then
A3: 'not' a.z 'or' b.z = TRUE by BVFUNC_1:def 8;
  (b 'imp' a).z=TRUE by A2,A1,MARGREL1:12;
  then
A4: 'not' b.z 'or' a.z = TRUE by BVFUNC_1:def 8;
A5: ((a 'imp' c) 'eqv' (b 'imp' c)).z =(((a 'imp' c) 'imp' (b 'imp' c)) '&'
  ((b 'imp' c) 'imp' (a 'imp' c))).z by BVFUNC_4:7
    .=((a 'imp' c) 'imp' (b 'imp' c)).z '&' ((b 'imp' c) 'imp' (a 'imp' c)).
  z by MARGREL1:def 20
    .=('not' (a 'imp' c).z 'or' (b 'imp' c).z) '&' ((b 'imp' c) 'imp' (a
  'imp' c)).z by BVFUNC_1:def 8
    .=('not' (a 'imp' c).z 'or' (b 'imp' c).z) '&' ('not' (b 'imp' c).z 'or'
  (a 'imp' c).z) by BVFUNC_1:def 8
    .=('not'( 'not' a.z 'or' c.z) 'or' (b 'imp' c).z) '&' ('not' (b
  'imp' c).z 'or' (a 'imp' c).z) by BVFUNC_1:def 8
    .=('not'( 'not' a.z 'or' c.z) 'or' ('not' b.z 'or' c.z)) '&' (
  'not' (b 'imp' c).z 'or' (a 'imp' c).z) by BVFUNC_1:def 8
    .=('not'( 'not' a.z 'or' c.z) 'or' ('not' b.z 'or' c.z)) '&' (
  'not'( 'not' b.z 'or' c.z) 'or' (a 'imp' c).z) by BVFUNC_1:def 8
    .=((a.z '&' 'not' c.z) 'or' ('not' b.z 'or' c.z)) '&' ((b.z
  '&' 'not' c.z) 'or' ('not' a.z 'or' c.z)) by BVFUNC_1:def 8;
A6: a.z=TRUE or a.z=FALSE by XBOOLEAN:def 3;
A7: (b 'imp' a).z = 'not' b.z 'or' a.z by BVFUNC_1:def 8;
A8: b.z=TRUE or b.z=FALSE by XBOOLEAN:def 3;
  now
    per cases by A3,A8;
    case
A9:   'not' a.z=TRUE;
      then
       a.z=FALSE;
      then 'not' b.z=TRUE by A4;
      then ((a 'imp' c) 'eqv' (b 'imp' c)).z =(FALSE 'or' (TRUE 'or' c.z))
      '&' (FALSE 'or' (TRUE 'or' c.z)) by A5,A9
        .=(TRUE 'or' c.z) '&' (TRUE 'or' c.z)
        .=TRUE;
      hence thesis;
    end;
    case
      b.z=TRUE;
      then 'not' b.z=FALSE;
      then
      ((a 'imp' c) 'eqv' (b 'imp' c)).z =('not' c.z 'or' (FALSE 'or' (c
      ).z)) '&' ('not' c.z 'or' (FALSE 'or' c.z)) by A2,A1,A7,A6,A5
        .=('not' c.z 'or' c.z) '&' ('not' c.z 'or' c.z)
        .=TRUE by XBOOLEAN:102;
      hence thesis;
    end;
  end;
  hence thesis;
end;
