reserve Y for non empty set;

theorem :: Contraposition
  for a,b,c being Function of Y,BOOLEAN holds (c 'imp' (b 'imp' a)
  ) 'imp' (b 'imp' (c 'imp' a))=I_el(Y)
proof
  let a,b,c be Function of Y,BOOLEAN;
    let x be Element of Y;
A1: now
      per cases by XBOOLEAN:def 3;
      case
        b.x=TRUE;
        hence ('not' b.x 'or' b.x)=TRUE by BINARITH:10;
      end;
      case
        b.x=FALSE;
        then 'not' b.x 'or' b.x =TRUE 'or' FALSE by MARGREL1:11
          .=TRUE by BINARITH:10;
        hence ('not' b.x 'or' b.x)=TRUE;
      end;
    end;
A2: now
      per cases by XBOOLEAN:def 3;
      case
        a.x=TRUE;
        hence ('not' a.x 'or' a.x)=TRUE by BINARITH:10;
      end;
      case
        a.x=FALSE;
        then 'not' a.x 'or' a.x =TRUE 'or' FALSE by MARGREL1:11
          .=TRUE by BINARITH:10;
        hence ('not' a.x 'or' a.x)=TRUE;
      end;
    end;
A3: now
      per cases by XBOOLEAN:def 3;
      case
        c.x=TRUE;
        hence ('not' c.x 'or' c.x)=TRUE by BINARITH:10;
      end;
      case
        c.x=FALSE;
        then 'not' c.x 'or' c.x =TRUE 'or' FALSE by MARGREL1:11
          .=TRUE by BINARITH:10;
        hence ('not' c.x 'or' c.x)=TRUE;
      end;
    end;
    ((c 'imp' (b 'imp' a)) 'imp' (b 'imp' (c 'imp' a))).x =('not' (c
    'imp' (b 'imp' a)).x) 'or' (b 'imp' (c 'imp' a)).x by BVFUNC_1:def 8
      .=('not' ('not' c.x 'or' (b 'imp' a).x)) 'or' (b 'imp' (c 'imp' a)).x
    by BVFUNC_1:def 8
      .=('not' ('not' c.x 'or' ('not' b.x 'or' a.x))) 'or' (b 'imp' (c 'imp'
    a)).x by BVFUNC_1:def 8
      .=('not' ('not' c.x 'or' ('not' b.x 'or' a.x))) 'or' ('not' b.x 'or' (
    c 'imp' a).x) by BVFUNC_1:def 8
      .=((c.x '&' ('not' 'not' b.x '&' 'not' a.x))) 'or' ('not' b.x 'or' (
    'not' c.x 'or' a.x)) by BVFUNC_1:def 8
      .=(('not' c.x 'or' a.x) 'or' 'not' b.x) 'or' (b.x '&' (c.x '&' 'not' a
    .x)) by MARGREL1:16
      .=((('not' c.x 'or' a.x) 'or' 'not' b.x) 'or' b.x) '&' ((('not' c.x
    'or' a.x) 'or' 'not' b.x) 'or' (c.x '&' 'not' a.x)) by XBOOLEAN:9
      .=(('not' c.x 'or' a.x) 'or' TRUE) '&' ((('not' c.x 'or' a.x) 'or'
    'not' b.x) 'or' (c.x '&' 'not' a.x)) by A1,BINARITH:11
      .=TRUE '&' ((('not' c.x 'or' a.x) 'or' 'not' b.x) 'or' (c.x '&' 'not'
    a.x)) by BINARITH:10
      .=((('not' c.x 'or' a.x) 'or' 'not' b.x) 'or' (c.x '&' 'not' a.x)) by
MARGREL1:14
      .=(((a.x 'or' 'not' b.x) 'or' 'not' c.x) 'or' (c.x '&' 'not' a.x)) by
BINARITH:11
      .=((a.x 'or' 'not' b.x) 'or' ('not' c.x 'or' (c.x '&' 'not' a.x))) by
BINARITH:11
      .=((a.x 'or' 'not' b.x) 'or' (TRUE '&' ('not' c.x 'or' 'not' a.x))) by A3
,XBOOLEAN:9
      .=('not' b.x 'or' a.x) 'or' ('not' c.x 'or' 'not' a.x) by MARGREL1:14
      .=(('not' b.x 'or' a.x) 'or' 'not' a.x) 'or' 'not' c.x by BINARITH:11
      .=('not' b.x 'or' TRUE) 'or' 'not' c.x by A2,BINARITH:11
      .=TRUE 'or' 'not' c.x by BINARITH:10
      .=TRUE by BINARITH:10;
    hence thesis by BVFUNC_1:def 11;
end;
