reserve D for non empty set;
reserve f1,f2,f3,f4,f5 for BinominativeFunction of D;
reserve p,q,r,t,w,u for PartialPredicate of D;
reserve d,v,v1 for object;
reserve V,A for set;
reserve i,j,b,n,s,z for Element of V;
reserve i1,j1,b1,n1,s1 for object;
reserve d1,Li,Lj,Lb,Ln,Ls for NonatomicND of V,A;
reserve Di,Dj,Db,Dn,Ds for SCBinominativeFunction of V,A;
reserve f for SCBinominativeFunction of V,A;
reserve T for TypeSCNominativeData of V,A;
reserve loc for V-valued Function;
reserve val for Function;
reserve n0 for Nat;
reserve b0 for Complex;

theorem Th5:
  V is non empty & A is complex-containing & A is_without_nonatomicND_wrt V &
  loc/.1, loc/.2, loc/.3, loc/.4, loc/.5 are_mutually_distinct
  implies
  <* power_inv(A,loc,b0,n0),
     power_loop_body(A,loc),
     power_inv(A,loc,b0,n0) *> is SFHT of ND(V,A)
  proof
    set i = loc/.1, j = loc/.2, b = loc/.3, n = loc/.4, s = loc/.5;
    assume that
A1: V is non empty and
A2: A is complex-containing and
A3: A is_without_nonatomicND_wrt V and
A4: i,j,b,n,s are_mutually_distinct;
    set D = ND(V,A);
    set inv = power_inv(A,loc,b0,n0);
    set L = power_loop_body(A,loc);
    set add = addition(A,i,j);
    set mlt = multiplication(A,s,b);
    set f = SC_assignment(add,i);
    set g = SC_assignment(mlt,s);
    set Di = denaming(V,A,i);
    set Dj = denaming(V,A,j);
    set Db = denaming(V,A,b);
    set Dn = denaming(V,A,n);
    set Ds = denaming(V,A,s);
    now
      let d be TypeSCNominativeData of V,A such that
A5:   d in dom inv and
A6:   inv.d = TRUE and
A7:   d in dom L and
A8:   L.d in dom inv;
      power_inv_pred A,loc,b0,n0,d by A5,A6,Def12;
      then consider d1 being NonatomicND of V,A such that
A9:   d = d1 and
A10:  {i,j,b,n,s} c= dom d1 and
A11:  d1.j = 1 and
A12:  d1.b = b0 and
A13:  d1.n = n0 and
A14:  ex S being Complex, I being Nat st I = d1.i & S = d1.s & S = b0|^I;
A15:  i in {i,j,b,n,s} by ENUMSET1:def 3;
A16:  j in {i,j,b,n,s} by ENUMSET1:def 3;
A17:  b in {i,j,b,n,s} by ENUMSET1:def 3;
A18:  n in {i,j,b,n,s} by ENUMSET1:def 3;
A19:  s in {i,j,b,n,s} by ENUMSET1:def 3;
      consider S being Complex, I being Nat such that
A20:  I = d1.i and
A22:  S = d1.s and
A23:  S = b0|^I by A14;
A24:  dom f = dom add by NOMIN_2:def 7;
A25:  dom g = dom mlt by NOMIN_2:def 7;
A26:  PP_composition(f,g) = g*f by PARTPR_2:def 1;
      then
A27:  d in dom f by A7,FUNCT_1:11;
      then reconsider Ad = add.d1 as TypeSCNominativeData of V,A
      by A24,A9,PARTFUN1:4,NOMIN_1:39;
      reconsider La = local_overlapping(V,A,d1,Ad,i)
      as NonatomicND of V,A by NOMIN_2:9;
      reconsider Lm = local_overlapping(V,A,La,mlt.La,s)
      as NonatomicND of V,A by NOMIN_2:9;
      L = g*f by PARTPR_2:def 1;
      then
A28:  L.d = g.(f.d) by A7,FUNCT_1:12;
A29:  f.d = La by A9,A27,NOMIN_2:def 7;
      then
A30:  La in dom g by A7,A26,FUNCT_1:11;
A31:  g.La = Lm by A30,NOMIN_2:def 7;
      power_inv_pred A,loc,b0,n0,Lm
      proof
        take Lm;
        thus Lm = Lm;
A32:    mlt.La is TypeSCNominativeData of V,A by A25,A30,PARTFUN1:4,NOMIN_1:39;
A33:    dom Lm = dom La \/ {s} by A3,A1,A25,A30,A31,NOMIN_4:5;
A34:    dom La = {i} \/ dom d1 by A3,A1,NOMIN_4:4;
        i in {i} by TARSKI:def 1;
        then
A35:    i in dom La by A34,XBOOLE_0:def 3;
        then
A36:    i in dom Lm by A33,XBOOLE_0:def 3;
A37:    j in dom La by A10,A16,A34,XBOOLE_0:def 3;
        then
A38:    j in dom Lm by A33,XBOOLE_0:def 3;
A39:    b in dom La by A17,A10,A34,XBOOLE_0:def 3;
        then
A40:    b in dom Lm by A33,XBOOLE_0:def 3;
A41:    n in dom La by A10,A18,A34,XBOOLE_0:def 3;
        then
A42:    n in dom Lm by A33,XBOOLE_0:def 3;
        s in {s} by TARSKI:def 1;
        then s in dom Lm by A33,XBOOLE_0:def 3;
        hence {i,j,b,n,s} c= dom Lm by A36,A38,A40,A42,ENUMSET1:def 3;
        thus Lm.j = La.j by A1,A32,A3,A4,A37,NOMIN_5:3
        .= 1 by A3,A1,A10,A16,A11,A4,NOMIN_5:3;
        thus Lm.b = La.b by A1,A4,A32,A39,A3,NOMIN_5:3
        .= b0 by A3,A1,A10,A4,A17,A12,NOMIN_5:3;
        thus Lm.n = La.n by A4,A1,A32,A41,A3,NOMIN_5:3
        .= n0 by A10,A3,A1,A4,A18,A13,NOMIN_5:3;
        take S1 = S*b0, I1 = I+1;
        La.i = Ad by A1,NOMIN_2:10
        .= I1 by A15,A2,A10,A20,A11,A16,A9,A27,A24,NOMIN_5:4;
        hence Lm.i = I1 by A1,A32,A3,A4,A35,NOMIN_5:3;
A43:    s in dom La by A10,A19,A34,XBOOLE_0:def 3;
A44:    La.s = d1.s by A3,A1,A10,A4,A19,NOMIN_5:3;
A45:    La.b = d1.b by A3,A1,A10,A4,A17,NOMIN_5:3;
        thus Lm.s = mlt.La by A1,A32,NOMIN_2:10
        .= S1 by A39,A12,A45,A2,A22,A43,A25,A30,A44,NOMIN_5:5;
        thus S1 = b0|^I1 by A23,NEWTON:6;
      end;
      hence inv.(L.d) = TRUE by A8,A28,A29,A31,Def12;
    end;
    hence thesis by NOMIN_3:28;
  end;
