
theorem Th32:
  for X be RealNormSpace-Sequence,
      x be Element of product X,
      Y be RealNormSpace,
      z be Element of product(X ^ <*Y*>),
      i be Element of dom X,
      j be Element of dom(X ^ <*Y*>),
      xi be Element of X.i,
      y be Point of Y
  st i = j & z = x ^ <*y*>
  holds
    reproj(j,z).xi = (reproj(i,x).xi) ^ <*y*>
  proof
    let X be RealNormSpace-Sequence,
        x be Element of product X,
        Y be RealNormSpace,
        z be Element of product(X ^ <*Y*>),
        i be Element of dom X,
        j be Element of dom(X ^ <*Y*>),
        xi be Element of X.i,
        y be Point of Y;

    assume
    A1: i = j & z = x ^ <*y*>;
    set CX = carr X;

    A2: product X = NORMSTR(# product(carr X),
                              zeros X,
                              [:(addop X):],
                              [:(multop X):],
                              productnorm X #) by PRVECT_2:6;
    A3: ex x1 be Function
        st x1 = x
         & dom x1 = dom CX
         & for i be object st i in dom CX
           holds x1.i in CX.i by A2,CARD_3:def 5;

    dom x = Seg len CX by A3,FINSEQ_1:def 3;
    then
    A4: len x = len CX by FINSEQ_1:def 3;
    A5: len X = len CX by PRVECT_1:def 11;

    i in dom X;
    then i in Seg len X by FINSEQ_1:def 3;
    then
    A6: 1 <= i & i <= len X by FINSEQ_1:1;

    reconsider xj = xi as Element of (X ^ <*Y*>).j by A1,FINSEQ_1:def 7;

    A7: dom(reproj(j,z).xj)
      = dom(z +* (j,xj)) by NDIFF_5:def 4
     .= dom z by FUNCT_7:30;

    then dom(reproj(j,z).xj) = Seg len z by FINSEQ_1:def 3;
    then
    A8: len(reproj(j,z).xj) = len z by FINSEQ_1:def 3;

    A9: dom(reproj(i,x).xi)
      = dom(x +* (i,xi)) by NDIFF_5:def 4
     .= dom x by FUNCT_7:30;
    then
    A10: dom(reproj(i,x).xi) = Seg len x by FINSEQ_1:def 3;
    then
    A11: len(reproj(i,x).xi) = len x by FINSEQ_1:def 3;

    A12: len z
       = len x + len <*y*> by FINSEQ_1:22,A1
      .= len x + 1 by FINSEQ_1:40;

    A13: len(reproj(i,x).xi ^ <*y*>)
       = len(reproj(i,x).xi) + len <*y*> by FINSEQ_1:22
      .= len(reproj(i,x).xi) + 1 by FINSEQ_1:40;

    A14: dom(reproj(i,x).xi ^ <*y*>)
       = Seg len(reproj(i,x).xi ^ <*y*>) by FINSEQ_1:def 3
      .= Seg len(reproj(j,z).xj) by A8,A10,A12,A13,FINSEQ_1:def 3
      .= dom(reproj(j,z).xj) by FINSEQ_1:def 3;

    for k be object st k in dom(reproj(i,x).xi ^ <*y*>)
    holds (reproj(i,x).xi ^ <*y*>).k = (reproj(j,z).xj).k
    proof
      let k be object;
      assume
      A15: k in dom(reproj(i,x).xi ^<*y*>);
      then
      A16: k in Seg len(reproj(i,x).xi ^<*y*>) by FINSEQ_1:def 3;
      reconsider k1 = k as Nat by A15;
      A17: (reproj(j,z).xj).k1 = (z +* (j,xj)).k1 by NDIFF_5:def 4;
      A18: 1 <= k1 & k1 <= len(reproj(i,x).xi) + 1 by A13,A16,FINSEQ_1:1;

      per cases;
      suppose
        k1 <= len(reproj(i,x).xi); then
        A19: k1 in Seg len(reproj(i,x).xi) by A18;
        then k1 in dom(reproj(i,x).xi) by FINSEQ_1:def 3;
        then
        A20: (reproj(i,x).xi ^ <*y*>).k1
         = (reproj(i,x).xi).k1 by FINSEQ_1:def 7
        .= (x +* (i,xi)).k1 by NDIFF_5:def 4;
        A21: k1 in dom x by A9,A19,FINSEQ_1:def 3;

        per cases;
        suppose
          A22: k1 = i; then
          (reproj(i,x).xi ^ <*y*>).k1 = xi by A20,A21,FUNCT_7:31;
          hence (reproj(i,x).xi ^ <*y*>).k = (reproj(j,z).xj).k
              by A1,A7,A14,A15,A17,A22,FUNCT_7:31;
        end;
        suppose
          A24: k1 <> i;
          (reproj(j,z).xj).k1
           = z.k1 by A1,A17,A24,FUNCT_7:32
          .= x.k1 by A1,A21,FINSEQ_1:def 7;

          hence
          (reproj(i,x).xi ^ <*y*>).k
          = (reproj(j,z).xj).k by A20,A24,FUNCT_7:32;
        end;
      end;
      suppose
        A25: len(reproj(i,x).xi) < k1;
        then
        A26: len(reproj(i,x).xi) + 1 <= k1 by NAT_1:13;
        then
        A27: len(reproj(i,x).xi) + 1 = k1 by A18,XXREAL_0:1;
        A28: j <> k1 by A1,A4,A5,A6,A10,A25,FINSEQ_1:def 3;
        A29: len x + 1 = k1 by A11,A18,A26,XXREAL_0:1;

        (reproj(j,z).xj).k1
         = z.k1 by A17,A28,FUNCT_7:32
        .= y by A1,A29,FINSEQ_1:42;

        hence (reproj(i,x).xi ^ <*y*>).k
            = (reproj(j,z).xj).k by A27,FINSEQ_1:42;
      end;
    end;
    hence thesis by A14,FUNCT_1:2;
  end;
