reserve v,x for object;
reserve D,V,A for set;
reserve n for Nat;
reserve p,q for PartialPredicate of D;
reserve f,g for BinominativeFunction of D;
reserve D for non empty set;
reserve d for Element of D;
reserve f,g for BinominativeFunction of D;
reserve p,q,r,s for PartialPredicate of D;

theorem Th24:
  <*p,f,q*> is SFHT of D &
  <*q,g,r*> is SFHT of D & <*PP_inversion(q),g,s*> is SFHT of D
  implies <*p,PP_composition(f,g),PP_or(r,s)*> is SFHT of D
  proof
    assume that
A1: <*p,f,q*> is SFHT of D and
A2: <*q,g,r*> is SFHT of D and
A3: <*PP_inversion(q),g,s*> is SFHT of D;
    set F = PP_composition(f,g);
    for d holds d in dom p & p.d = TRUE & d in dom F & F.d in dom PP_or(r,s)
    implies PP_or(r,s).(F.d) = TRUE
    proof
      let d such that
A4:   d in dom p and
A5:   p.d = TRUE and
A6:   d in dom F and
A7:   F.d in dom PP_or(r,s);
      set d1 = f.d;
      assume PP_or(r,s).(F.d) <> TRUE;
      then
A8:   PP_or(r,s).(F.d) = FALSE by A7,PARTPR_1:3;
      then
A9:   F.d in dom r & r.(F.d) = FALSE by A7,PARTPR_1:13;
A10:  F.d in dom s & s.(F.d) = FALSE by A7,A8,PARTPR_1:13;
A11:  F = g*f by PARTPR_2:def 1;
      then
A12:  F.d = g.d1 by A6,FUNCT_1:12;
A13:  d in dom f by A6,A11,FUNCT_1:11;
      then
A14:  d1 in D by PARTFUN1:4;
A15:  d1 in dom g by A6,A11,FUNCT_1:11;
      per cases;
      suppose
A16:    d1 in dom q;
        then q.d1 = TRUE by A1,A4,A5,A13,Th11;
        hence contradiction by A2,A9,A12,A16,A15,Th11;
      end;
      suppose
A17:    not d1 in dom q;
        set I = PP_inversion(q);
A18:    I.d1 = TRUE by A14,A17,PARTPR_2:def 17;
        dom I = {d where d is Element of D: not d in dom q}
        by PARTPR_2:def 17;
        then d1 in dom I by A17,A14;
        hence contradiction by A3,A15,A10,A12,A18,Th11;
      end;
    end;
    then <*p,F,PP_or(r,s)*> in SFHTs(D);
    hence <*p,F,PP_or(r,s)*> is SFHT of D;
  end;
