
theorem LMC31E:
  for k,n be Nat st k <= n holds n+k <= 2 to_power n
  proof
    let k be Nat;
    defpred P[Nat] means
    $1 + k + k <= 2 to_power ($1 + k);
    2*k <= 2 to_power k by LMC31D; then
    P1:P[0];
    P2: for n be Nat st P[n] holds P[n+1]
    proof
      let n be Nat;
      assume A1: P[n];
      A2: 2 to_power (k+(n+1)) = 2 to_power ((k+n)+1)
      .= 2 to_power (k+n) * 2 to_power 1 by POWER:27
      .= 2 to_power (k+n) * 2 by POWER:25
      .= 2 to_power (k+n) + 2 to_power (k+n);
      1 <= 2 to_power (k+n)
      proof
        per cases;
        suppose k+n = 0;
          hence 1 <= 2 to_power (k+n) by POWER:24;
        end;
        suppose k+n <> 0;
          hence 1 <= 2 to_power (k+n) by POWER:35;
        end;
      end; then
      n+k+k+1 <= 2 to_power (k+n) + 2 to_power (k+n) by XREAL_1:7,A1;
      hence (n+1) +k +k <= 2 to_power ((n+1)+k) by A2;
    end;
    X1: for n be Nat holds P[n] from NAT_1:sch 2(P1,P2);
    let n be Nat;
    assume k <= n; then
    n-k in NAT by INT_1:5;
    then reconsider m=n-k as Nat;
    m + k + k <= 2 to_power (m + k) by X1;
    hence n+k <= 2 to_power n;
  end;
