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) 'or' (b
  '&' c) 'or' (c '&' a)= (a 'or' b) '&' (b 'or' c) '&' (c 'or' a)
proof
  let a,b,c be Function of Y,BOOLEAN;
  for z being Element of Y st ((a '&' b) 'or' (b '&' c) 'or' (c '&' a)).z=
  TRUE holds ((a 'or' b) '&' (b 'or' c) '&' (c 'or' a)).z=TRUE
  proof
    let z be Element of Y;
A1: ((a '&' b) 'or' (b '&' c) 'or' (c '&' a)).z =((a '&' b) 'or' (b '&' c)
    ).z 'or' (c '&' a).z by BVFUNC_1:def 4
      .=(a '&' b).z 'or' (b '&' c).z 'or' (c '&' a).z by BVFUNC_1:def 4
      .=(a.z '&' b.z) 'or' (b '&' c).z 'or' (c '&' a).z by MARGREL1:def 20
      .=(a.z '&' b.z) 'or' (b.z '&' c.z) 'or' (c '&' a).z by
MARGREL1:def 20
      .=(a.z '&' b.z) 'or' (b.z '&' c.z) 'or' (c.z '&' a.z) by
MARGREL1:def 20;
    assume
A2: ((a '&' b) 'or' (b '&' c) 'or' (c '&' a)).z=TRUE;
    now
A3:   ((a 'or' b) '&' (b 'or' c) '&' (c 'or' a)).z =((a 'or' b) '&' (b
      'or' c)).z '&' (c 'or' a).z by MARGREL1:def 20
        .=(a 'or' b).z '&' (b 'or' c).z '&' (c 'or' a).z by MARGREL1:def 20
        .=(a.z 'or' b.z) '&' (b 'or' c).z '&' (c 'or' a).z by
BVFUNC_1:def 4
        .=(a.z 'or' b.z) '&' (b.z 'or' c.z) '&' (c 'or' a).z by
BVFUNC_1:def 4
        .=(a.z 'or' b.z) '&' (b.z 'or' c.z) '&' (c.z 'or' a.z)
      by BVFUNC_1:def 4;
      assume
A4:   ((a 'or' b) '&' (b 'or' c) '&' (c 'or' a)).z<>TRUE;
      now
        per cases by A4,A3,MARGREL1:12,XBOOLEAN:def 3;
        case
A5:       (a.z 'or' b.z) '&' (b.z 'or' c.z)=FALSE;
          now
            per cases by A5,MARGREL1:12;
            case
A6:           (a.z 'or' b.z)=FALSE;
              b.z=TRUE or b.z=FALSE by XBOOLEAN:def 3;
              hence thesis by A2,A1,A6;
            end;
            case
A7:           (b.z 'or' c.z)=FALSE;
              c.z=TRUE or c.z=FALSE by XBOOLEAN:def 3;
              hence thesis by A2,A1,A7;
            end;
          end;
          hence thesis;
        end;
        case
A8:       (c.z 'or' a.z)=FALSE;
          a.z=TRUE or a.z=FALSE by XBOOLEAN:def 3;
          hence thesis by A2,A1,A8;
        end;
      end;
      hence thesis;
    end;
    hence thesis;
  end;
  then
A9: (a '&' b) 'or' (b '&' c) 'or' (c '&' a) '<' (a 'or' b) '&' (b 'or' c)
  '&' (c 'or' a);
  for z being Element of Y st ((a 'or' b) '&' (b 'or' c) '&' (c 'or' a)).
  z=TRUE holds ((a '&' b) 'or' (b '&' c) 'or' (c '&' a)).z=TRUE
  proof
    let z be Element of Y;
A10: ((a 'or' b) '&' (b 'or' c) '&' (c 'or' a)).z =((a 'or' b) '&' (b 'or'
    c)).z '&' (c 'or' a).z by MARGREL1:def 20
      .=(a 'or' b).z '&' (b 'or' c).z '&' (c 'or' a).z by MARGREL1:def 20
      .=(a.z 'or' b.z) '&' (b 'or' c).z '&' (c 'or' a).z by BVFUNC_1:def 4
      .=(a.z 'or' b.z) '&' (b.z 'or' c.z) '&' (c 'or' a).z by
BVFUNC_1:def 4
      .=(a.z 'or' b.z) '&' (b.z 'or' c.z) '&' (c.z 'or' a.z) by
BVFUNC_1:def 4;
    assume
A11: ((a 'or' b) '&' (b 'or' c) '&' (c 'or' a)).z=TRUE;
    now
A12:  (b.z '&' c.z)=TRUE or (b.z '&' c.z)=FALSE by XBOOLEAN:def 3;
A13:  (c.z '&' a.z)=TRUE or (c.z '&' a.z)=FALSE by XBOOLEAN:def 3;
A14:  ((a '&' b) 'or' (b '&' c) 'or' (c '&' a)).z =((a '&' b) 'or' (b '&'
      c)).z 'or' (c '&' a).z by BVFUNC_1:def 4
        .=(a '&' b).z 'or' (b '&' c).z 'or' (c '&' a).z by BVFUNC_1:def 4
        .=(a.z '&' b.z) 'or' (b '&' c).z 'or' (c '&' a).z by
MARGREL1:def 20
        .=(a.z '&' b.z) 'or' (b.z '&' c.z) 'or' (c '&' a).z by
MARGREL1:def 20
        .=(a.z '&' b.z) 'or' (b.z '&' c.z) 'or' (c.z '&' a.z) by
MARGREL1:def 20;
      assume
A15:  ((a '&' b) 'or' (b '&' c) 'or' (c '&' a)).z<>TRUE;
      now
        per cases by A15,A14,A13,A12,MARGREL1:12,XBOOLEAN:def 3;
        case
          a.z=FALSE & b.z=FALSE;
          hence thesis by A11,A10;
        end;
        case
          b.z=FALSE & c.z=FALSE;
          hence thesis by A11,A10;
        end;
        case
          c.z=FALSE & a.z=FALSE;
          hence thesis by A11,A10;
        end;
      end;
      hence thesis;
    end;
    hence thesis;
  end;
  then (a 'or' b) '&' (b 'or' c) '&' (c 'or' a) '<' (a '&' b) 'or' (b '&' c)
  'or' (c '&' a);
  hence thesis by A9,BVFUNC_1:15;
end;
