reserve k,n for Nat,
  x,y,z,y1,y2 for object,X,Y for set,
  f,g for Function;
reserve p,q,r,s,t for XFinSequence;
reserve D for set;

theorem Th25:
  p^q^r = p^(q^r)
proof
A1: for k st k in dom p holds ((p^q)^r).k=p.k
  proof
    let k;
    assume
A2: k in dom p;
    dom p c= dom(p^q) by Th19;
    hence (p^q^r).k=(p^q).k by A2,Def3
      .=p.k by A2,Def3;
  end;
A3: for k st k in dom(q^r) holds ((p^q)^r).(len p + k)=(q^r).k
  proof
    let k;
    assume
A4: k in dom(q^r);
A5: now
      assume not k in dom q;
      then consider n such that
A6:   n in dom r and
A7:   k=len q + n by A4,Th18;
      thus (p^q^r).(len p + k) =(p^q^r).(len p + len q + n) by A7
        .=(p^q^r).(len(p^q) + n) by Def3
        .=r.n by A6,Def3
        .=(q^r).k by A6,A7,Def3;
    end;
    now
      assume
A8:   k in dom q;
      then (len p + k) in dom(p^q) by Th21;
      hence (p^q^r).(len p + k) = (p^q).(len p + k) by Def3
        .=q.k by A8,Def3
        .=(q^r).k by A8,Def3;
    end;
    hence thesis by A5;
  end;
  dom ((p^q)^r) = (len (p^q) + len r) by Def3
    .= (len p + len q + len r) by Def3
    .= (len p + (len q + len r))
    .= (len p + len(q^r)) by Def3;
  hence thesis by A1,A3,Def3;
end;
