reserve
  a for natural Number,
  k,l,m,n,k1,b,c,i for Nat,
  x,y,z,y1,y2 for object,
  X,Y for set,
  f,g for Function;
reserve p,q,r,s,t for FinSequence;
reserve D for set;

theorem
  p^r = q^r or r^p = r^q implies p = q
proof
  assume
A1: p^r = q^r or r^p = r^q;
A2: now
    assume
A3: p^r = q^r;
    then len p + len r = len(q^r) by Th22;
    then len p + len r = len q + len r by Th22;
    then
A4: dom p = Seg len q by Def3
      .= dom q by Def3;
    for k st k in dom p holds p.k=q.k
    proof
      let k;
      assume
A5:   k in dom p;
      hence p.k=(q^r).k by A3,Def7
        .=q.k by A4,A5,Def7;
    end;
    hence thesis by A4;
  end;
  now
    assume
A6: r^p=r^q;
    then len r + len p = len(r^q) by Th22
      .=len r + len q by Th22;
    then
A7: dom p = Seg len q by Def3
      .= dom q by Def3;
    for k st k in dom p holds p.k=q.k
    proof
      let k;
      assume
A8:   k in dom p;
      hence p.k = (r^q).(len r + k) by A6,Def7
        .= q.k by A7,A8,Def7;
    end;
    hence thesis by A7;
  end;
  hence thesis by A1,A2;
end;
