reserve Y for non empty set;

theorem
  for a,b,c,d being Function of Y,BOOLEAN holds a 'imp' (b 'imp' c
) = I_el(Y) & a 'imp' (c 'imp' d) = I_el(Y) implies a 'imp' (b 'imp' d) = I_el(
  Y)
proof
  let a,b,c,d be Function of Y,BOOLEAN;
  assume that
A1: a 'imp' (b 'imp' c) = I_el(Y) and
A2: a 'imp' (c 'imp' d) = I_el(Y);
  for x being Element of Y holds (a 'imp' (b 'imp' d)).x=TRUE
  proof
    let x be Element of Y;
A3: (a 'imp' (b 'imp' d)).x ='not' a.x 'or' (b 'imp' d).x by BVFUNC_1:def 8
      .='not' a.x 'or' ('not' b.x 'or' (d).x) by BVFUNC_1:def 8;
    (a 'imp' (c 'imp' d)).x=TRUE by A2,BVFUNC_1:def 11;
    then 'not' a.x 'or' (c 'imp' d).x=TRUE by BVFUNC_1:def 8;
    then
A4: 'not' a.x 'or' ('not' c.x 'or' (d).x)=TRUE by BVFUNC_1:def 8;
    (a 'imp' (b 'imp' c)).x=TRUE by A1,BVFUNC_1:def 11;
    then 'not' a.x 'or' (b 'imp' c).x=TRUE by BVFUNC_1:def 8;
    then
A5: 'not' a.x 'or' ('not' b.x 'or' c.x)=TRUE by BVFUNC_1:def 8;
A6: 'not' a.x=TRUE or 'not' a.x=FALSE by XBOOLEAN:def 3;
    now
      per cases by A5,A6,A4,BINARITH:3;
      case
        'not' a.x=TRUE & 'not' a.x=TRUE;
        hence thesis by A3,BINARITH:10;
      end;
      case
        'not' a.x=TRUE & ('not' c.x 'or' (d).x)=TRUE;
        hence thesis by A3,BINARITH:10;
      end;
      case
        ('not' b.x 'or' c.x)=TRUE & 'not' a.x=TRUE;
        hence thesis by A3,BINARITH:10;
      end;
      case
A7:     ('not' b.x 'or' c.x)=TRUE & ('not' c.x 'or' (d).x)=TRUE;
A8:     'not' c.x=TRUE or 'not' c.x=FALSE by XBOOLEAN:def 3;
A9:     'not' b.x=TRUE or 'not' b.x=FALSE by XBOOLEAN:def 3;
        now
          per cases by A7,A9,A8,BINARITH:3;
          case
            'not' b.x=TRUE & 'not' c.x=TRUE;
            then (a 'imp' (b 'imp' d)).x ='not' a.x 'or' TRUE by A3,BINARITH:10
              .=TRUE by BINARITH:10;
            hence thesis;
          end;
          case
            'not' b.x=TRUE & (d).x=TRUE;
            hence thesis by A3,BINARITH:10;
          end;
          case
            c.x=TRUE & 'not' c.x=TRUE;
            hence thesis by MARGREL1:11;
          end;
          case
            c.x=TRUE & (d).x=TRUE;
            then (a 'imp' (b 'imp' d)).x ='not' a.x 'or' TRUE by A3,BINARITH:10
              .=TRUE by BINARITH:10;
            hence thesis;
          end;
        end;
        hence thesis;
      end;
    end;
    hence thesis;
  end;
  hence thesis by BVFUNC_1:def 11;
end;
