theorem Th8:
  h*(p^<*d*>) = (h*p)^<*h.d*>
proof
  set q = h*(p^<*d*>);
  set r = (h*p)^<*h.d*>;
  set i = len p + 1;
A1: len q = len(p^<*d*>) by FINSEQ_2:33;
A2: len(h*p) = len p by FINSEQ_2:33;
  len(p^<*d*>) = i by FINSEQ_2:16;
  then
A3: dom q = Seg i by A1,FINSEQ_1:def 3;
A4: now
    let j be Nat;
A5: Seg len p = dom p by FINSEQ_1:def 3;
A6: Seg len(h*p) = dom(h*p) by FINSEQ_1:def 3;
    assume
A7: j in dom q;
    now
      per cases by A3,A7,A5,FINSEQ_2:7;
      suppose
A8:     j in dom p;
        hence h.((p^<*d*>).j) = h.(p.j) by FINSEQ_1:def 7
          .= (h*p).j by A2,A5,A6,A8,FUNCT_1:12
          .= r.j by A2,A5,A6,A8,FINSEQ_1:def 7;
      end;
      suppose
A9:     j = i;
        hence h.((p^<*d*>).j) = h.d by FINSEQ_1:42
          .= r.j by A2,A9,FINSEQ_1:42;
      end;
    end;
    hence q.j = r.j by A7,FUNCT_1:12;
  end;
  len r = len(h*p)+1 by FINSEQ_2:16;
  hence thesis by A1,A2,A4,FINSEQ_2:9,16;
end;
