reserve n,m,i,k for Element of NAT;
reserve x,X,X1 for set;
reserve r,p for Real;
reserve s,x0,x1,x2 for Real;
reserve f,f1,f2 for PartFunc of REAL,REAL n;
reserve h for PartFunc of REAL,REAL-NS n;
reserve W for non empty set;

theorem Th20:
  for S be RealNormSpace,
      f1 be PartFunc of REAL,S,
      f2 be PartFunc of S,REAL
     st x0 in dom (f2*f1) & f1 is_continuous_in x0
      & f2 is_continuous_in f1/.x0
    holds f2*f1 is_continuous_in x0
proof
  let S be RealNormSpace,
      f1 be PartFunc of REAL,S,
      f2 be PartFunc of S,REAL;
  assume
A1: x0 in dom (f2*f1);
  assume that
A2: f1 is_continuous_in x0 and
A3: f2 is_continuous_in f1/.x0;
  let s1 be Real_Sequence such that
A4: rng s1 c= dom (f2*f1) and
A5: s1 is convergent & lim s1 = x0;
A6: dom (f2*f1) c= dom f1 by RELAT_1:25;
A7: rng (f1/*s1) c= dom f2
  proof
    let x be object;
    assume x in rng (f1/*s1);
    then consider n such that
A8: x=(f1/*s1).n by FUNCT_2:113;
    s1.n in rng s1 by VALUED_0:28;
    then f1.(s1.n) in dom f2 by A4,FUNCT_1:11;
    hence x in dom f2 by A4,A6,A8,FUNCT_2:108,XBOOLE_1:1;
  end;
A9: now
    let n;
    s1.n in rng s1 by VALUED_0:28; then
A10: s1.n in dom f1 by A4,FUNCT_1:11;
    thus ((f2*f1)/*s1).n = (f2*f1).(s1.n) by A4,FUNCT_2:108
      .= f2.(f1.(s1.n)) by A10,FUNCT_1:13
      .= f2.((f1/*s1).n) by A4,A6,FUNCT_2:108,XBOOLE_1:1
      .= (f2/*(f1/*s1)).n by A7,FUNCT_2:108;
  end; then
A11: f2/*(f1/*s1) = (f2*f1)/*s1 by FUNCT_2:63;
  rng s1 c= dom f1 by A4,A6; then
A12: f1/*s1 is convergent & f1/.x0 = lim (f1/*s1) by A2,A5;
 hence (f2*f1)/*s1 is convergent by A3,A7,A11,NFCONT_1:def 6;
 thus (f2*f1).x0 = (f2*f1)/.x0 by A1,PARTFUN1:def 6
        .=f2/.(f1/.x0) by A1,PARTFUN2:3
        .= lim (f2/*(f1/*s1)) by A12,A3,A7,NFCONT_1:def 6
        .= lim ((f2*f1)/*s1) by A9,FUNCT_2:63;
end;
