reserve a,b,i,k,m,n for Nat;
reserve s,z for non zero Nat;
reserve r for Real;
reserve c for Complex;
reserve e1,e2,e3,e4,e5 for ExtReal;

theorem
  for a,b,k being Integer st a+b > 0 & (a mod k)+(b mod k) > 0  holds
  ((a+b) to_power n) mod k = (((a mod k) + (b mod k)) to_power n) mod k
  proof
    let a,b,k be Integer;
    set ak = a mod k;
    set bk = b mod k;
    assume that
A1: a+b > 0 and
A2: ak+bk > 0;
    defpred P[Nat] means
    ((a+b) to_power $1) mod k = ((ak+bk) to_power $1) mod k;
A3: P[0]
    proof
      thus ((a+b) to_power 0) mod k = 1 mod k by POWER:24
      .= (((a mod k) + (b mod k)) to_power 0) mod k by POWER:24;
    end;
A4: for x being Nat st P[x] holds P[x+1]
    proof
      let x be Nat such that
A5:   P[x];
A6:   (a+b) to_power (x+1) = (a+b) to_power x * (a+b) to_power 1
      by A1,POWER:27;
A7:   (a+b) mod k = (ak+bk) mod k by NAT_D:66;
      thus ((a+b) to_power (x+1)) mod k
       = (((a+b) to_power x mod k) * ((a+b) mod k)) mod k by A6,NAT_D:67
      .= ((ak+bk) to_power x * (ak+bk) to_power 1) mod k by A5,A7,NAT_D:67
      .= ((ak+bk) to_power (x+1)) mod k by A2,POWER:27;
    end;
    for x being Nat holds P[x] from NAT_1:sch 2(A3,A4);
    hence thesis;
  end;
