reserve n,k,b for Nat, i for Integer;

theorem
  11 divides n iff 11 divides
  Sum SubXFinS(digits(n,10),EvenNAT) - Sum SubXFinS(digits(n,10),OddNAT)
  proof
    set d = digits(n,10);
    consider p being XFinSequence of NAT such that
    A1: dom p = dom d and
    A2: for i being Nat st i in dom p holds p.i = (d.i)*(10|^i) and
    A3: value(d,10) = Sum p by NUMERAL1:def 1;
    set pe = SubXFinS(p,EvenNAT);
    set po = SubXFinS(p,OddNAT);
    A4: Sum pe + Sum po = Sum SubXFinS(p,NAT) by Th10,Th7,Th8
    .= Sum p by Th11;
    set de = SubXFinS(d,EvenNAT);
    set dod = SubXFinS(d,OddNAT);
    A5: dom pe = dom Sgm0(EvenNAT/\len d) by Th6,A1
    .= dom de by Th6;
    A6: dom po = dom Sgm0(OddNAT/\len d) by Th6,A1
    .= dom dod by Th6;
    A7: for i being Nat st i in dom de holds de.i = d.(2*i)
    proof
      set se = Sgm0 (EvenNAT /\ len d);
      let i be Nat;
      assume A8: i in dom de;
      then A9: i in dom se & se.i in dom d by FUNCT_1:11;
      thus de.i = d.(se.i) by A8,FUNCT_1:12
      .= d.(2*i) by A9,Th12;
    end;
    A10: for i being Nat st i in dom pe holds pe.i = de.i * 10|^(2*i)
    proof
      set se = Sgm0 (EvenNAT /\ len p);
      let i be Nat;
      assume A11: i in dom pe;
      then A12: i in dom se & se.i in dom p by FUNCT_1:11;
      then A13: se.i = 2*i by Th12;
      thus pe.i = p.(se.i) by A11,FUNCT_1:12
      .= (d.(2*i))*(10|^(2*i)) by A12,A13,A2
      .= (de.i)*(10|^(2*i)) by A12,A1,FUNCT_1:11,A7;
    end;
    A14: for i being Nat st i in dom dod holds dod.i = d.(2*i+1)
    proof
      set so = Sgm0 (OddNAT /\ len d);
      let i be Nat;
      assume A15: i in dom dod;
      then A16: i in dom so & so.i in dom d by FUNCT_1:11;
      thus dod.i = d.(so.i) by A15,FUNCT_1:12
      .= d.(2*i+1) by A16,Th13;
    end;
    A17: for i being Nat st i in dom po holds po.i = dod.i * 10|^(2*i+1)
    proof
      set so = Sgm0 (OddNAT /\ len p);
      let i be Nat;
      assume A18: i in dom po;
      then A19: i in dom so & so.i in dom p by FUNCT_1:11;
      then A20: so.i = 2*i+1 by Th13;
      thus po.i = p.(so.i) by A18,FUNCT_1:12
      .= (d.(2*i+1))*(10|^(2*i+1)) by A19,A20,A2
      .= (dod.i)*(10|^(2*i+1)) by A19,A1,FUNCT_1:11,A14;
    end;
    defpred E[set,set] means $2 = pe . $1 - de . $1;
    A21: for k being Nat st k in Segm dom pe
    ex x being Element of INT st E[k,x]
    proof
      let k be Nat;
      assume k in Segm dom pe;
      take pe.k - de.k;
      thus thesis by INT_1:def 2;
    end;

    consider pede being XFinSequence of INT such that
    A22: dom pede = Segm dom pe & for k being Nat st k in Segm dom pe
    holds E[k,pede.k] from STIRL2_1:sch 5(A21);

    now
      let i be Nat;
      reconsider dz = (10|^(2*i) - 1) as Nat by NAT_1:20,NEWTON:83;
      assume A23: i in dom pede;
      then pede . i = pe . i - de . i by A22
      .= (de.i)*(10|^(2*i)) - de . i by A10,A23,A22
      .= (de.i)*dz;
      hence 11 divides pede.i by Th20,NAT_D:9;
    end;
    then 11 divides Sum pede by Th16;
    then A24: Sum pede mod 11 = 0 by INT_1:62;
    A25: len pede = len de by A22,A5;
    A26: len pede = len pe by A22;
    A27: for i being Nat st i in dom pe holds
    pe.i = addint.(pede.i,de.i)
    proof
      let i be Nat;
      assume A28: i in dom pe;
      thus addint.(pede.i,de.i) = pede.i + de.i by BINOP_2:def 20
      .= (pe.i - de.i) + de.i by A28,A22
      .= pe.i;
    end;

    A29: Sum pe = addint "**" pe by AFINSQ_2:50
    .= addint "**" pede^de by A25,A26,A27,AFINSQ_2:46
    .= Sum (pede^de) by AFINSQ_2:50
    .= Sum pede + Sum de by AFINSQ_2:55;

    defpred O[set,set] means $2 = po . $1 + dod . $1;
    A30: for k being Nat st k in Segm dom po
    ex x being Element of NAT st O[k,x];

    consider podo being XFinSequence of NAT such that
    A31: dom podo = Segm dom po & for k being Nat st k in Segm dom po holds
    O[k,podo.k] from STIRL2_1:sch 5(A30);

    now
      let i be Nat;
      reconsider dz = (10|^(2*i) - 1) as Nat by NAT_1:20,NEWTON:83;
      assume A32: i in dom podo;
      then podo . i = po . i + dod . i by A31
      .= (dod.i)*(10|^(2*i+1)) + dod . i by A17,A32,A31
      .= (dod.i)*(10|^(2*i+1) + 1);
      hence 11 divides podo.i by Th21,NAT_D:9;
    end;
    then 11 divides Sum podo by Th16;
    then A33: Sum podo mod 11 = 0 by INT_1:62;

    set mdo = (-1)(#)dod;

    A34: len podo = len mdo by A31,A6,VALUED_1:def 5;
    A35: len podo = len po by A31;

    A36: for i being Nat st i in dom po holds
    po.i = addint.(podo.i,mdo.i)
    proof
      let i be Nat;
      assume A37: i in dom po;
      then A38: i in dom mdo by A6,VALUED_1:def 5;
      thus addint.(podo.i,mdo.i) = podo.i + mdo.i by BINOP_2:def 20
      .= podo.i + (-1) * dod.i by A38,VALUED_1:def 5
      .= (po.i + dod.i) - dod.i by A37,A31
      .= po.i;
    end;

    A39: Sum po = addint "**" po by AFINSQ_2:50
    .= addint "**" podo^mdo by A34,A35,A36,AFINSQ_2:46
    .= Sum (podo^mdo) by AFINSQ_2:50
    .= Sum podo + Sum mdo by AFINSQ_2:55
    .= Sum podo + (-1) * Sum dod by AFINSQ_2:64
    .= Sum podo - Sum dod;

    thus 11 divides n implies
    11 divides Sum de - Sum dod
    proof
      assume 11 divides n;
      then 11 divides Sum p by A3,NUMERAL1:5;
      then 0 = ((Sum pede + Sum podo) + (Sum de - Sum dod)) mod 11
      by INT_1:62,A4,A29,A39
      .= (((Sum pede + Sum podo) mod 11) +
      ((Sum de - Sum dod) mod 11)) mod 11 by NAT_D:66
      .= ((((Sum pede mod 11) + (Sum podo mod 11)) mod 11) +
      ((Sum de - Sum dod) mod 11)) mod 11 by NAT_D:66
      .= (0 qua Integer + ((Sum de - Sum dod) mod 11)) mod 11
      by A24,A33,NAT_D:26
      .= (Sum de - Sum dod) mod 11 by Th14;
      hence 11 divides Sum de - Sum dod by INT_1:62;
    end;

    thus 11 divides Sum de - Sum dod
    implies 11 divides n
    proof
      assume 11 divides Sum de - Sum dod;
      then 0 = (Sum de - Sum dod) mod 11 by INT_1:62
      .= (0 qua Integer + ((Sum de - Sum dod) mod 11)) mod 11 by Th14
      .= ((((Sum pede mod 11) + (Sum podo mod 11)) mod 11) +
      ((Sum de - Sum dod) mod 11)) mod 11 by A24,A33,NAT_D:26
      .= (((Sum pede + Sum podo) mod 11) +
      ((Sum de - Sum dod) mod 11)) mod 11 by NAT_D:66
      .= ((Sum pede + Sum podo) + (Sum de - Sum dod)) mod 11 by NAT_D:66
      .= n mod 11 by A4,A29,A39,A3,NUMERAL1:5;
      hence 11 divides n by INT_1:62;
    end;
  end;
