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

    assume
    A1: z = x ^ <*y0*> & j = len x + 1;

    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 x = x1
         & 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;

    reconsider y1 = y as Element of ((X ^ <*Y*>).j)
      by A1,A4,A5,FINSEQ_1:42;

    A6: dom(reproj(j,z).y1)
      = dom(z +* (j,y1)) by NDIFF_5:def 4
     .= dom z by FUNCT_7:30;
    then
    A7: dom(reproj(j,z).y1) = Seg len z by FINSEQ_1:def 3;
    A8: len z
     = len x + len <*y0*> by FINSEQ_1:22,A1
    .= len x + 1 by FINSEQ_1:40;

    then
    A9: len(reproj(j,z).y1) = len x + 1 by A7,FINSEQ_1:def 3;
    A10: len(x ^ <*y*>)
     = len x + len <*y*> by FINSEQ_1:22
    .= len x + 1 by FINSEQ_1:40;
    A11: dom(reproj(j,z).y1) = dom(x ^ <*y*>) by A7,A8,A10,FINSEQ_1:def 3;

    for k be object st k in dom(reproj(j,z).y1)
    holds (reproj(j,z).y1).k = (x ^ <*y*>).k
    proof
      let k be object;
      assume
      A12: k in dom(reproj(j,z).y1);
      then
      A13: k in Seg len(reproj(j,z).y1) by FINSEQ_1:def 3;
      reconsider k1 = k as Nat by A12;

      A14: (reproj(j,z).y1).k1 = (z +* (j,y1)).k1 by NDIFF_5:def 4;
      A15: 1 <= k1 & k1 <= len(reproj(j,z).y1) by A13,FINSEQ_1:1;

      per cases;
      suppose
        A16: k1 <= len x;
        then k1 in Seg len x by A15;
        then
        A17: k1 in dom x by FINSEQ_1:def 3;

        A18: len x + 0 < len x + 1 by XREAL_1:8;
        (reproj(j,z).y1).k1
         = z.k1 by A1,A14,A16,A18,FUNCT_7:32
        .= x.k1 by A1,A17,FINSEQ_1:def 7;
        hence (reproj(j,z).y1).k = (x ^ <*y*>).k by A17,FINSEQ_1:def 7;
      end;
      suppose
        len x < k1;
        then len x + 1 <= k1 by NAT_1:13;
        then
        A19: len x + 1 = k1 by A9,A15,XXREAL_0:1;
        then (x ^ <*y*>).k1 = y by FINSEQ_1:42;
        hence (reproj(j,z).y1).k = (x ^ <*y*>).k
          by A1,A6,A12,A14,A19,FUNCT_7:31;
      end;
    end;
    hence thesis by FUNCT_1:2,A11;
  end;
