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;
reserve a, a1, a2 for TwoValued Alternating FinSequence;
reserve fs, fs1, fs2 for FinSequence of X,
  fss, fss2 for Subset of fs;

theorem
  for fss1 being Subset of fs1 st Seq fss = fs1 & Seq fss1 = fs2 &
  fss2 = fss|rng((Sgm dom fss)|dom fss1) holds Seq fss2 = fs2
proof
  let fss1 be Subset of fs1 such that
A1: Seq fss = fs1 and
A2: Seq fss1 = fs2 and
A3: fss2 = fss|rng((Sgm dom fss)|dom fss1);
  consider k be Nat such that
A4: dom fs = Seg k by FINSEQ_1:def 2;
  reconsider d2 = dom fss2 as finite set;
  reconsider d1 = dom fss1 as finite set;
A6: dom Sgm d1 = Seg card d1 by FINSEQ_3:40;
  reconsider k as Element of NAT by ORDINAL1:def 12;
A7: dom fss c= Seg k by A4,RELAT_1:11;
  rng Sgm dom fss c= dom fss by FINSEQ_1:def 14;
  then
A8: dom fs1 = dom Sgm dom fss by A1,RELAT_1:27;
A9: rng Sgm dom fss2 = dom fss2 by FINSEQ_1:def 14;
A10: (Sgm dom fss)|dom fss1 c= Sgm dom fss by RELAT_1:59;
  then
A11: dom ((Sgm dom fss)|dom fss1) c= dom (Sgm dom fss) by RELAT_1:11;
  rng ((Sgm dom fss)|dom fss1) c= rng (Sgm dom fss) by A10,RELAT_1:11;
  then
  rng((Sgm dom fss)|dom fss1) c= dom fss by FINSEQ_1:def 14;
  then
A12: dom fss2 = rng((Sgm dom fss)|dom fss1) by A3,RELAT_1:62;
A13: dom fss1 c= dom fs1 by RELAT_1:11;
  now
    take Z = (Sgm dom fss)|dom fss1;
A14: dom Z = dom fss1 by A8,RELAT_1:11,62;
    hereby
      let x be object;
      assume
A15:  x in d1;
      reconsider y = Z.x as object;
      take y;
      thus y in d2 by A12,A14,A15,FUNCT_1:def 3;
      thus [x,y] in Z by A14,A15,FUNCT_1:1;
    end;
    hereby
      let y be object;
      assume y in d2;
      then consider x being object such that
A16:  x in dom Z and
A17:  y = Z.x by A12,FUNCT_1:def 3;
      reconsider x as object;
      take x;
      thus x in d1 & [x,y] in Z by A13,A8,A16,A17,FUNCT_1:1,RELAT_1:62;
    end;
    let x,y,z,u be object;
    assume that
A18: [x,y] in Z and
A19: [z,u] in Z;
A20: z in dom Z by A19,FUNCT_1:1;
A21: u = Z.z by A19,FUNCT_1:1;
A22: u = (Sgm dom fss).z by A20,A21,FUNCT_1:47;
A23: y = Z.x by A18,FUNCT_1:1;
    hence x=z implies y=u by A19,FUNCT_1:1;
A24: x in dom Z by A18,FUNCT_1:1;
    then
A25: y = (Sgm dom fss).x by A23,FUNCT_1:47;
    assume
A26: y=u;
    assume
A27: x<>z;
    reconsider x,z as Element of NAT by A24,A20;
A28: x<=len Sgm dom fss by A11,A24,FINSEQ_3:25;
A29: z<= len Sgm dom fss by A11,A20,FINSEQ_3:25;
A30: 1<=z by A11,A20,FINSEQ_3:25;
A31: 1<=x by A11,A24,FINSEQ_3:25;
    per cases by A27,XXREAL_0:1;
    suppose x < z;
      hence contradiction by A25,A22,A26,A31,A29,FINSEQ_1:def 14;
    end;
    suppose z < x;
      hence contradiction by A25,A22,A26,A28,A30,FINSEQ_1:def 14;
    end;
  end;
  then d1,d2 are_equipotent;
  then card d1 = card d2 by CARD_1:5;
  then
A32: dom Sgm d2 = Seg card d1 by FINSEQ_3:40;
A33: rng Sgm dom fss1 = dom fss1 by FINSEQ_1:def 14;
  now
    now
      let x be object;
      hereby
        assume x in dom fs2;
        then
A34:    x in dom Sgm dom fss2 by A2,A6,A32,FUNCT_1:11;
        then (Sgm dom fss2).x in dom fss2 by A9,FUNCT_1:def 3;
        hence x in dom Seq fss2 by A34,FUNCT_1:11;
      end;
      assume x in dom Seq fss2;
      then
A35:  x in dom Sgm dom fss1 by A6,A32,FUNCT_1:11;
      then (Sgm dom fss1).x in dom fss1 by A33,FUNCT_1:def 3;
      hence x in dom fs2 by A2,A35,FUNCT_1:11;
    end;
    hence
A36: dom fs2 = dom Seq fss2 by TARSKI:2;
    thus dom fs2 = dom fs2;
    let k be Nat;
    assume
A37: k in dom fs2;
    then
A38: (Sgm dom fss1).k in dom fss1 by A2,FUNCT_1:11;
A39: (Sgm dom fss2).k in dom fss2 by A36,A37,FUNCT_1:11;
A40: (Sgm dom fss1).k in dom fss1 by A2,A37,FUNCT_1:11;
    then
A41: fss1.((Sgm dom fss1).k) = (Seq fss).((Sgm dom fss1).k) by A1,GRFUNC_1:2;
A42: (Sgm dom fss2).k = ((Sgm dom fss)*(Sgm dom fss1)).k by A7,A12,A8,Th3,
RELAT_1:11;
    k in dom Sgm dom fss1 by A2,A37,FUNCT_1:11;
    then k in dom ((Sgm dom fss)*(Sgm dom fss1)) by A13,A8,A38,FUNCT_1:11;
    then
A43: (Sgm dom fss2).k = (Sgm dom fss).((Sgm dom fss1).k) by A42,FUNCT_1:12;
A44: fss2 c= fss by A3,RELAT_1:59;
    dom fss1 c= dom Seq fss by A1,RELAT_1:11;
    then
A45: (Sgm dom fss1).k in dom Sgm dom fss by A40,FUNCT_1:11;
    thus (Seq fss2).k = fss2.((Sgm dom fss2).k) by A36,A37,FUNCT_1:12
      .= fss.((Sgm dom fss).((Sgm dom fss1).k)) by A43,A44,A39,GRFUNC_1:2
      .= fss1.((Sgm dom fss1).k) by A45,A41,FUNCT_1:13
      .= fs2.k by A2,A37,FUNCT_1:12;
  end;
  hence thesis by FINSEQ_1:13;
end;
