  reserve n,m,i for Nat,
          p,q for Point of TOP-REAL n,
          r,s for Real,
          R for real-valued FinSequence;
reserve T1,T2,S1,S2 for non empty TopSpace,
        t1 for Point of T1, t2 for Point of T2,
        pn,qn for Point of TOP-REAL n,
        pm,qm for Point of TOP-REAL m;

theorem Th16:
  for r,s st r>0 & s>0
  for f be Function of T1,(TOP-REAL n)|ClosedHypercube(pn,n|->r)
  for g be Function of T2,(TOP-REAL m)| ClosedHypercube(pm,m|->s)
    st f is being_homeomorphism & g is being_homeomorphism
  holds
    ex h be Function of [:T1,T2:],(TOP-REAL (n+m))|
        ClosedHypercube(0.TOP-REAL (n+m),(n+m)|->1)
    st h is being_homeomorphism &
       for t1, t2 holds
         f.t1 in OpenHypercube(pn,r) & g.t2 in OpenHypercube(pm,s)
       iff
         h. (t1,t2) in OpenHypercube(0.TOP-REAL (n+m),1)
proof
  set nm=n+m,TRn=TOP-REAL n,TRm=TOP-REAL m,TRnm=TOP-REAL nm;
  let r,s such that
A1: r>0
  and
A2: s>0;
  set Rn=n|->r,Rm=m|->s,Rnm=nm|->1;
  set RR=ClosedHypercube(pn,Rn),RS=ClosedHypercube(pm,Rm),CL = ClosedHypercube
  (0.TRnm,Rnm);
  reconsider Rs=RS as non empty Subset of TRm by A2;
  reconsider Rr=RR as non empty Subset of TRn by A1;
  set Or=OpenHypercube(pn,r),Os=OpenHypercube(pm,s),
      O = OpenHypercube(0.TRnm,1);
  consider h be Function of [: TRn| Rr,TRm| Rs:],TRnm| CL such that
A3: h is being_homeomorphism
  and
A4: h.:[: Or, Os:] = O by Th15,A1,A2;
  let f be Function of T1,TRn| RR;
  let g be Function of T2,TRm| RS such that
A5: f is being_homeomorphism
  and
A6: g is being_homeomorphism;
A7: dom g = [#]T2 by A6,TOPS_2:def 5;
  reconsider G=g as Function of T2,TRm| Rs;
  reconsider F=f as Function of T1,TRn| Rr;
  reconsider fgh=h*[:F,G:] as Function of [:T1,T2:],TRnm| CL;
  take fgh;
  [:F,G:] is being_homeomorphism by A5,A6,Th14;
  hence fgh is being_homeomorphism by A3,TOPS_2:57;
  then
A8: dom fgh= [#][:T1,T2:] by TOPS_2:def 5;
  let t1,t2;
  dom f = [#]T1 by A5,TOPS_2:def 5;
  then
A9: [f.t1,g.t2] = [:F,G:]. (t1,t2) by A7,FUNCT_3:def 8
               .= [:F,G:]. [t1,t2];
A10: [#] (TRm| Rs)= Rs by PRE_TOPC:def 5;
  [#] (TRn| Rr) = Rr by PRE_TOPC:def 5;
  then
A11:[#] [: TRn| Rr,TRm| Rs:] = [:Rr,Rs:] by A10,BORSUK_1:def 2;
A12: Os c= Rs by Th12;
A13: Or c= Rr by Th12;
A14: dom h = [#][: TRn| Rr,TRm| Rs:] by A3,TOPS_2:def 5;
  thus f.t1 in Or & g.t2 in Os implies fgh.(t1,t2) in O
  proof
    assume that
A15:  f.t1 in Or
    and
A16:  g.t2 in Os;
A17:  [f.t1,g.t2] in [: Or, Os:] by ZFMISC_1:87,A15,A16;
    [f.t1,g.t2] in dom h by A15,A13, A16,A12,A11,A14, ZFMISC_1:87;
    then
    h. [f.t1,g.t2] in O by A17,A4,FUNCT_1:def 6;
    hence thesis by A8,A9,FUNCT_1:12;
  end;
  assume
A18: fgh.(t1,t2) in O;
  fgh.(t1,t2) = h. [f.t1,g.t2] by A8,FUNCT_1:12,A9;
  then consider xy be object such that
A19: xy in dom h
    and
A20: xy in [: Or, Os:]
    and
A21: h.xy = h. [f.t1,g.t2] by A18,FUNCT_1: def 6,A4;
  [f.t1,g.t2] in dom h by A8,FUNCT_1:11,A9;
  then xy = [f.t1,g.t2] by A19,A21, A3,FUNCT_1:def 4;
  hence thesis by A20,ZFMISC_1:87;
end;
