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

theorem
  for a,b being Function of Y,BOOLEAN holds ((a 'imp' b) 'imp' a)
  'imp' a = I_el(Y)
proof
  let a,b be Function of Y,BOOLEAN;
  for x being Element of Y holds (((a 'imp' b) 'imp' a) 'imp' a).x = TRUE
  proof
    let x be Element of Y;
    (((a 'imp' b) 'imp' a) 'imp' a).x =('not'( (a 'imp' b) 'imp' a) 'or' a
    ).x by BVFUNC_4:8
      .=('not'('not'( a 'imp' b) 'or' a) 'or' a).x by BVFUNC_4:8
      .=('not'('not'('not' a 'or' b) 'or' a) 'or' a).x by BVFUNC_4:8
      .=('not'( ('not' 'not' a '&' 'not' b) 'or' a) 'or' a).x by BVFUNC_1:13
      .=('not'( ((a 'or' a) '&' ('not' b 'or' a))) 'or' a).x by BVFUNC_1:11
      .=(('not' a 'or' 'not'('not' b 'or' a)) 'or' a).x by BVFUNC_1:14
      .=(('not' a 'or' ('not' 'not' b '&' 'not' a)) 'or' a).x by BVFUNC_1:13
      .=((('not' a 'or' b) '&' ('not' a 'or' 'not' a)) 'or' a).x by BVFUNC_1:11
      .=((('not' a 'or' b) 'or' a) '&' ('not' a 'or' a)).x by BVFUNC_1:11
      .=((('not' a 'or' b) 'or' a) '&' I_el(Y)).x by BVFUNC_4:6
      .=(('not' a 'or' b) 'or' a).x by BVFUNC_1:6
      .=(b 'or' ('not' a 'or' a)).x by BVFUNC_1:8
      .=(b 'or' I_el(Y)).x by BVFUNC_4:6
      .=TRUE by BVFUNC_1:10,def 11;
    hence thesis;
  end;
  hence thesis by BVFUNC_1:def 11;
end;
