reserve x,y,z for set;
reserve f,f1,f2,f3 for FinSequence,
  p,p1,p2,p3 for set,
  i,k for Nat;
reserve D for non empty set,
  p,p1,p2,p3 for Element of D,
  f,f1,f2 for FinSequence of D;
reserve D for non empty set;
reserve p, q for FinSequence,
  X, Y, x, y for set,
  D for non empty set,
  i, j, k, l, m, n, r for Nat;

theorem Th3:
  X c= Seg k & Y c= dom Sgm X implies (Sgm X)*(Sgm Y) = Sgm rng (( Sgm X)|Y)
proof
  assume that
A1: X c= Seg k and
A2: Y c= dom Sgm X;
  reconsider Y9 = Y as finite set by A2;
  set M = (Sgm X)*(Sgm Y);
  set R = rng ((Sgm X)|Y);
  Y c= Seg len Sgm X by A2,FINSEQ_1:def 3;
  then
a3: Y is included_in_Seg;
  then
A4: rng Sgm Y = Y by FINSEQ_1:def 14;
  dom Sgm Y9 = Seg card Y9 by a3,FINSEQ_3:40;
  then
A5: dom M = Seg card Y9 by A2,A4,RELAT_1:27;
a1: X is included_in_Seg by A1;
   then
A6: rng Sgm X c= Seg k by A1,FINSEQ_1:def 14;
  then
A7: rng Sgm X c= NAT by XBOOLE_1:1;
  reconsider M as FinSequence by A5,FINSEQ_1:def 2;
  rng M c= rng Sgm X by RELAT_1:26;
  then rng M c= NAT by A7;
  then reconsider L = (Sgm X)*(Sgm Y) as FinSequence of NAT by FINSEQ_1:def 4;
  now
    let y be object;
    hereby
      assume y in rng L;
      then consider x being object such that
A8:   x in dom L and
A9:   y = L.x by FUNCT_1:def 3;
      x in dom Sgm Y by A8,FUNCT_1:11;
      then
A10:  (Sgm Y).x in Y by A4,FUNCT_1:def 3;
      y = (Sgm X).((Sgm Y).x) by A8,A9,FUNCT_1:12;
      hence y in R by A2,A10,FUNCT_1:50;
    end;
    assume y in R;
    then consider x being object such that
A11: x in dom ((Sgm X)|Y) and
A12: y = ((Sgm X)|Y).x by FUNCT_1:def 3;
A13: x in (dom Sgm X)/\Y by A11,RELAT_1:61;
    then
A14: x in Y by XBOOLE_0:def 4;
    then consider z being object such that
A15: z in dom Sgm Y and
A16: x = (Sgm Y).z by A4,FUNCT_1:def 3;
    x in dom Sgm X by A13,XBOOLE_0:def 4;
    then
A17: z in dom((Sgm X)*(Sgm Y)) by A15,A16,FUNCT_1:11;
    y = (Sgm X).x by A12,A14,FUNCT_1:49;
    then L.z = y by A16,A17,FUNCT_1:12;
    hence y in rng L by A17,FUNCT_1:def 3;
  end;
  then
A18: rng L = R by TARSKI:2;
A19: now
    let l,m be Nat;
    assume that
A20: 1 <= l and
A21: l < m and
A22: m <= len L;
     set k1=L.l;
     set k2=L.m;
    l <= len L by A21,A22,XXREAL_0:2;
    then
A25: l in dom L by A20,FINSEQ_3:25;
    then
A26: L.l = (Sgm X).((Sgm Y).l) by FUNCT_1:12;
    1<=m by A20,A21,XXREAL_0:2;
    then
A27: m in dom L by A22,FINSEQ_3:25;
    then
A28: L.m = (Sgm X).((Sgm Y).m) by FUNCT_1:12;
A29: (Sgm Y).l in dom Sgm X by A25,FUNCT_1:11;
    m in dom Sgm Y by A27,FUNCT_1:11;
    then
A30: m<=len Sgm Y by FINSEQ_3:25;
A31: (Sgm Y).m in dom Sgm X by A27,FUNCT_1:11;
    reconsider l, m as Element of NAT by ORDINAL1:def 12;
    reconsider K1 = (Sgm Y).l, K2 = (Sgm Y).m as Element of NAT
      by ORDINAL1:def 12;
A32: 1<=K1 by A29,FINSEQ_3:25;
A33: K2<=len Sgm X by A31,FINSEQ_3:25;
    K1 < K2 by a3,A20,A21,A30,FINSEQ_1:def 14;
    hence k1 < k2 by a1,A26,A28,A32,A33,FINSEQ_1:def 14;
  end;
  R c= rng Sgm X by RELAT_1:70;
  then R c= Seg k by A6;
  then R is included_in_Seg;
  hence thesis by A18,A19,FINSEQ_1:def 14;
end;
