reserve x,y,P,Q for Integer;
reserve a,b,n for Nat;
reserve V,A for set;
reserve val for Function;
reserve loc for V-valued Function;
reserve d1 for NonatomicND of V,A;
reserve p for SCPartialNominativePredicate of V,A;
reserve d for object;
reserve z for Element of V;
reserve T for TypeSCNominativeData of V,A;
reserve size for non zero Nat;
reserve x0, y0, p0, q0 for Integer;
reserve n0 for Nat;

theorem Th21:
  (for T holds loc/.1 is_a_value_on T & loc/.3 is_a_value_on T)
  implies
  <* PP_inversion(PP_and(Equality(A,loc/.1,loc/.3),
     Lucas_inv(A,loc,x0,y0,p0,q0,n0))),
     SC_assignment(denaming(V,A,loc/.4),z),
     valid_Lucas_output(A,z,x0,y0,p0,q0,n0) *> is SFHT of ND(V,A)
  proof
    set i = loc/.1, j = loc/.2, n = loc/.3, s = loc/.4, b = loc/.5, c = loc/.6;
    set p = loc/.7, q = loc/.8, ps = loc/.9, qc = loc/.10;
    set D = ND(V,A);
    set inv = Lucas_inv(A,loc,x0,y0,p0,q0,n0);
    set O = valid_Lucas_output(A,z,x0,y0,p0,q0,n0);
    set Di = denaming(V,A,i);
    set Dn = denaming(V,A,n);
    set Ds = denaming(V,A,s);
    set E = Equality(A,i,n);
    set F = PP_and(E,inv);
    set G = SC_assignment(Ds,z);
    set N = PP_inversion(F);
    assume
A1: for T holds i is_a_value_on T & n is_a_value_on T;
    now
      let d be TypeSCNominativeData of V,A such that
A2:   d in dom N and
      N.d = TRUE and
      d in dom G and
      G.d in dom O;
A3:   dom F = {d where d is Element of D:
      d in dom E & E.d = FALSE or d in dom inv & inv.d = FALSE
      or d in dom E & E.d = TRUE & d in dom inv & inv.d = TRUE} by PARTPR_1:16;
A4:   dom Di = {d where d is NonatomicND of V,A: i in dom d} by NOMIN_1:def 18;
A5:   dom Dn = {d where d is NonatomicND of V,A: n in dom d} by NOMIN_1:def 18;
A6:   dom E = dom Di /\ dom Dn by A1,NOMIN_4:11;
A7:   not d in dom F by A2,PARTPR_2:9;
      dom E c= dom F by PARTPR_2:3;
      then not d in dom E by A2,PARTPR_2:9;
      then
A8:   not d in dom Di or not d in dom Dn by A6,XBOOLE_0:def 4;
      dom inv = D by Def15;
      then
A9:   d in dom inv;
      then inv.d <> FALSE by A3,A7;
      then Lucas_inv_pred A,loc,x0,y0,p0,q0,n0,d by A9,Def15;
      then consider d1 being NonatomicND of V,A such that
A10:  d = d1 and
A11:  {i,j,n,s,b,c,p,q,ps,qc} c= dom d1 and
      d1.j = 1 & d1.n = n0 & d1.p = p0 & d1.q = q0 &
      ex I being Nat st I = d1.i &
      d1.s = Lucas(x0,y0,p0,q0,I) &
      d1.b = Lucas(x0,y0,p0,q0,I+1);
      i in {i,j,n,s,b,c,p,q,ps,qc} & n in {i,j,n,s,b,c,p,q,ps,qc}
      by ENUMSET1:def 8;
      hence O.(G.d) = TRUE by A4,A5,A8,A10,A11;
    end;
    hence thesis by NOMIN_3:28;
  end;
