reserve v for object;
reserve V,A for set;
reserve f for SCBinominativeFunction of V,A;
reserve d for TypeSCNominativeData of V,A;
reserve d1 for NonatomicND of V,A;
reserve a,b,c,z for Element of V;
reserve x,y for object;
reserve p,q,r,s for SCPartialNominativePredicate of V,A;
reserve x0,y0 for Nat;

theorem Th24:
  V is non empty & A is_without_nonatomicND_wrt V & a <> b & a <> y &
   A is complex-containing &
   (for d holds a is_complex_on d) & (for d holds b is_complex_on d)
  implies
  <*valid_gcd_input(V,A,x,y,x0,y0), gcd_main_part(V,A,a,b,x,y),
    PP_and(Equality(A,a,b),gcd_inv(V,A,a,b,x0,y0)) *> is SFHT of ND(V,A)
 proof
   assume
A1: V is non empty & A is_without_nonatomicND_wrt V & a <> b & a <> y &
    A is complex-containing &
    (for d holds a is_complex_on d) & (for d holds b is_complex_on d);
    set f = gcd_var_init(V,A,a,b,x,y);
    set g = gcd_main_loop(V,A,a,b);
    set p = valid_gcd_input(V,A,x,y,x0,y0);
    set q = gcd_inv(V,A,a,b,x0,y0);
    set r = PP_and(Equality(A,a,b),gcd_inv(V,A,a,b,x0,y0));
A2: <*p,f,q*> is SFHT of ND(V,A) by A1,Th16;
A3: <*q,g,r*> is SFHT of ND(V,A) by A1,Th23;
    <*PP_inversion(q),g,r*> is SFHT of ND(V,A) by NOMIN_3:19;
    hence thesis by A2,A3,NOMIN_3:25;
  end;
