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 Th26:
  A is complex-containing & (for d holds a is_complex_on d) &
  (for d holds b is_complex_on d) implies
  <* PP_inversion(PP_and(Equality(A,a,b),gcd_inv(V,A,a,b,x0,y0))),
     SC_assignment(denaming(V,A,a),z),
     valid_gcd_output(V,A,z,x0,y0) *> is SFHT of ND(V,A)
  proof
    set Da = denaming(V,A,a);
    set Db = denaming(V,A,b);
    set Dz = denaming(V,A,z);
    set e = Equality(A,a,b);
    set i = gcd_inv(V,A,a,b,x0,y0);
    set q = PP_and(e,i);
    set r = valid_gcd_output(V,A,z,x0,y0);
    set g = SC_assignment(Da,z);
    set P = PP_inversion(q);
    assume that
A2: A is complex-containing and
A3: for d holds a is_complex_on d and
A4: for d holds b is_complex_on d;
A5: for d holds a is_a_value_on d by A2,A3,Th7;
A6: for d holds b is_a_value_on d by A2,A4,Th7;
A9: dom q = {d where d is TypeSCNominativeData of V,A:
             d in dom e & e.d = FALSE or d in dom i & i.d = FALSE
          or d in dom e & e.d = TRUE & d in dom i & i.d = TRUE} by NOMIN_2:17;
A10: dom e = dom Da /\ dom Db by A5,A6,Th11;
A11: dom e c= dom q by PARTPR_2:3;
    for d holds d in dom P & P.d = TRUE & d in dom g & g.d in dom r implies
     r.(g.d) = TRUE
    proof
      let d such that
A12:  d in dom P and
      P.d = TRUE and
A13:  d in dom g and
      g.d in dom r;
      dom P = {d where d is Element of ND(V,A): not d in dom q}
      by PARTPR_2:def 17;
      then consider d1 being Element of ND(V,A) such that
A14:  d = d1 and
A15:  not d1 in dom q by A12;
A16:  dom g = dom Da by NOMIN_2:def 7;
      not d1 in dom e by A11,A15;
      then
A17:  not d1 in dom Db by A10,A13,A14,A16,XBOOLE_0:def 4;
A18:  dom Db = {d where d is NonatomicND of V,A: b in dom d} by NOMIN_1:def 18;
      dom i = ND(V,A) by Def28;
      then
A19:  d in dom i;
      not d in dom i or i.d <> FALSE by A9,A14,A15;
      then gcd_inv_pred V,A,a,b,x0,y0,d by A19,Def28;
      hence thesis by A14,A17,A18;
    end;
    hence <*P,g,r*> is SFHT of ND(V,A) by NOMIN_3:28;
  end;
