reserve D for non empty set;
reserve m,n,N for Nat;
reserve size for non zero Nat;
reserve f1,f2,f3,f4,f5,f6 for BinominativeFunction of D;
reserve p1,p2,p3,p4,p5,p6,p7 for PartialPredicate of D;
reserve d,v for object;
reserve V,A for set;
reserve z for Element of V;
reserve val for Function;
reserve loc for V-valued Function;
reserve d1 for NonatomicND of V,A;
reserve T for TypeSCNominativeData of V,A;
reserve n0 for Nat;

theorem
  for val being 6-element FinSequence holds
  V is non empty & A is complex-containing & A is_without_nonatomicND_wrt V &
   (for T holds loc/.1 is_a_value_on T & loc/.2 is_a_value_on T &
    loc/.3 is_a_value_on T & loc/.4 is_a_value_on T & loc/.6 is_a_value_on T) &
   Seg 6 c= dom loc & loc|Seg 6 is one-to-one &
   loc,val are_different_wrt 6
  implies
  <* valid_Fibonacci_input(V,A,val,n0),
     Fibonacci_program(A,loc,val,z),
     valid_Fibonacci_output(A,z,n0) *>
  is SFHT of ND(V,A)
  proof
    let val be 6-element FinSequence;
    set D = ND(V,A);
    set p = valid_Fibonacci_input(V,A,val,n0);
    set f = Fibonacci_main_part(A,loc,val);
    set g = SC_assignment(denaming(V,A,loc/.4),z);
    set q = valid_Fibonacci_output(A,z,n0);
    set inv = Fibonacci_inv(A,loc,n0);
    set E = Equality(A,loc/.1,loc/.3);
    assume that
A1: V is non empty & A is complex-containing & A is_without_nonatomicND_wrt V
    and
A2: (for T holds loc/.1 is_a_value_on T & loc/.2 is_a_value_on T &
    loc/.3 is_a_value_on T & loc/.4 is_a_value_on T & loc/.6 is_a_value_on T);
    assume that
A3: Seg 6 c= dom loc and
A4: loc|Seg 6 is one-to-one and
A5: loc,val are_different_wrt 6;
A6: <*p,f,PP_and(E,inv)*> is SFHT of D by A1,A2,A3,A4,A5,Th19;
A7: <*PP_and(E,inv),g,q*> is SFHT of D by A1,A2,Th21;
    <*PP_inversion(PP_and(E,inv)),g,q*> is SFHT of D by A2,Th22;
    hence thesis by A6,A7,NOMIN_3:25;
  end;
