theorem
  fD,fB are_composable implies
  <*fB.1,PP_composition(fD),fB.(len fB)*> is SFHT of D
  proof
    assume that
A1: 1 <= len fD and
A2: len fB = len fD + 1 and
A3: for n st 1 <= n <= len fD holds <*fB.n,fD.n,fB.(n+1)*> is SFHT of D and
A4: for n st 2 <= n <= len fD holds <*PP_inversion(fB.n),fD.n,fB.(n+1)*>
      is SFHT of D;
    set G = PP_compositionSeq(fD);
    defpred P[Nat] means
    1 <= $1 <= len fD implies <*fB.1,G.$1,fB.($1+1)*> is SFHT of D;
A5: P[0];
A6: for k being Nat st P[k] holds P[k+1]
    proof
      let k be Nat;
      assume that
A7:   P[k] and
A8:   1 <= k+1 and
A9:   k+1 <= len fD;
      per cases;
      suppose
A10:    k = 0;
        G.1 = fD.1 by A1,Def5;
        hence <*fB.1,G.(k+1),fB.(k+1+1)*> is SFHT of D by A1,A3,A10;
      end;
      suppose k > 0;
        then
A11:    0+1 <= k by NAT_1:13;
A12:    k < len fD by A9,NAT_1:13;
A13:    k <= k+1 by NAT_1:11;
A14:    <*fB.(k+1),fD.(k+1),fB.(k+1+1)*> is SFHT of D by A3,A8,A9;
        <*PP_inversion(fB.(k+1)),fD.(k+1),fB.(k+1+1)*> is SFHT of D
          by A4,A9,A11,XREAL_1:6;
        then <*fB.1,PP_composition(G.k,fD.(k+1)),PP_or(fB.(k+1+1),fB.(k+1+1))*>
        is SFHT of D by A7,A9,A11,A13,A14,XXREAL_0:2,NOMIN_3:24;
        hence thesis by A11,A12,Def5;
      end;
    end;
A15: for k being Nat holds P[k] from NAT_1:sch 2(A5,A6);
    len G = len fD by A1,Def5;
    hence thesis by A1,A2,A15;
  end;
