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;

theorem Th20:
  len a1 = len a2 & rng a1 = rng a2 & a1.1 = a2.1 implies a1 = a2
proof
  assume that
A1: len a1 = len a2 and
A2: rng a1 = rng a2 and
A3: a1.1 = a2.1;
  defpred P[Nat] means 1<=$1 & $1<=len a1 implies a1.$1=a2.$1;
A4: for k being Nat st P[k] holds P[k+1]
  proof
    let k be Nat;
    assume that
A5: 1<=k & k<=len a1 implies a1.k = a2.k;
A6: 0=k or 0<k & 0+1=1;
    assume that
A7: 1<=k+1 and
A8: k+1<=len a1;
A9: k+1 in dom a1 by A7,A8,FINSEQ_3:25;
    per cases by A6,NAT_1:13;
    suppose
      0 = k;
      hence thesis by A3;
    end;
    suppose
A10:  1<=k;
A11:  dom a2 = Seg len a2 by FINSEQ_1:def 3;
      consider X, Y being object such that
      X <> Y and
A12:  rng a1 = { X, Y } by Th19;
      a1.(k+1) in rng a1 by A9,FUNCT_1:def 3;
      then
A13:  a1.(k+1)=X or a1.(k+1)= Y by A12,TARSKI:def 2;
      dom a1 = Seg len a1 by FINSEQ_1:def 3;
      then a2.(k+1) in rng a2 by A1,A9,A11,FUNCT_1:def 3;
      then
A14:  a2.(k+1) = X or a2.(k+1) = Y by A2,A12,TARSKI:def 2;
      k<=len a1 by A8,NAT_1:13;
      then k in dom a1 by A10,FINSEQ_3:25;
      then a1.k in rng a1 by FUNCT_1:def 3;
      then a1.k=X or a1.k=Y by A12,TARSKI:def 2;
      hence thesis by A1,A5,A8,A10,A13,A14,Def4,NAT_1:13;
    end;
  end;
A15: P[0];
  for i being Nat holds P[i] from NAT_1:sch 2(A15, A4);
  hence thesis by A1;
end;
