reserve x,y for object,
        D,D1,D2 for non empty set,
        i,j,k,m,n for Nat,
        f,g for FinSequence of D*,
        f1 for FinSequence of D1*,
        f2 for FinSequence of D2*;

theorem
  i in dom (D-concatenation "**" f)
    iff
  ex n,k st n+1 in dom f & k in dom (f.(n+1)) &
            i = k + len (D-concatenation "**" (f|n))
proof

  set DC=D-concatenation;
  defpred P[Nat] means
  for i for f be FinSequence of D* st len f = $1 holds
    i in dom (DC "**" f) iff
       ex n,k st n+1 in dom f &
          k in dom (f.(n+1)) &
          i = k + len (DC "**" (f|n));
  A1:P[0]
  proof
    let i;
    let f be FinSequence of D*;
    assume len f=0;
    then f={};
    hence thesis by Lm1;
  end;
  A2:P[j] implies P[j+1]
  proof
    assume A3:P[j];
    set j1=j+1;
    let i;
    let f1 be FinSequence of D* such that
    A4: len f1 = j1;
    consider f be FinSequence of D*, d be Element of D* such that
    A5:   f1=f^<*d*> by FINSEQ_2:19,A4;
    A6: len f+1 = len f1 by A5,FINSEQ_2:16;
    A7:DC "**"f1 = (DC"**"f)^(DC"**"<*d*>) by Th3,A5
                 .= (DC"**"f)^d by FINSOP_1:11;
    A8:dom f c= dom f1 by A5,FINSEQ_1:26;
    thus i in dom (DC "**" f1) implies
    ex n,k st n+1 in dom f1 &
         k in dom (f1.(n+1)) &
         i = k + len (DC "**" (f1|n))
    proof
      assume A9:i in dom (DC "**" f1);
      per cases by A9,A7,FINSEQ_1:25;
      suppose i in dom (DC"**"f);
        then consider n,k such that
        A10:n+1 in dom f & k in dom (f.(n+1)) &
            i = k + len (DC "**" (f|n)) by A6,A4,A3;
        take n,k;
        thus n+1 in dom f1 & k in dom (f1.(n+1))
           by A10,A5,A8,FINSEQ_1:def 7;
        1<= n+1 & n+1 <= len f by A10,FINSEQ_3:25;
        then n <= len f by NAT_1:13;
        hence thesis by FINSEQ_5:22,A5,A10;
      end;
      suppose ex l be Nat st l in dom d & i=len (DC "**" f) +l;
        then consider l be Nat such that
        A11:l in dom d & i=l+len (DC "**" f);
        take n=len f,l;
        1<= n+1 by NAT_1:11;
        hence thesis by FINSEQ_1:42,FINSEQ_5:23,A5,A11,A6,FINSEQ_3:25;
      end;
    end;
    given n,k such that A12:n+1 in dom f1 &
    k in dom (f1.(n+1)) & i = k + len (DC "**" (f1|n));
    per cases by A12,A5,FINSEQ_1:25;
    suppose A13: n+1 in dom f;
      then 1 <= n+1 & n+1 <= len f by FINSEQ_3:25;
      then A14: n < len f by NAT_1:13;
      A15: k in dom (f.(n+1)) by A13,A5,FINSEQ_1:def 7,A12;
      i = k + len (DC "**" (f|n)) by A12, A14,A5,FINSEQ_5:22;
      then A16:i in dom (DC "**" f) by A15,A13,A6,A4,A3;
      dom (DC "**" f) c= dom (DC "**" f1) by A7,FINSEQ_1:26;
      hence i in dom (DC "**" f1) by A16;
    end;
    suppose ex j st j in dom <*d*> & n+1 = len f+j;
      then consider j such that
      A17:j in dom <*d*> & n+1=len f+j;
      dom <*d*> = Seg 1 & Seg 1 = {1} by FINSEQ_1:2,38;
      then j=1 by A17,TARSKI:def 1;
      then f1.(n+1) = d & f1|n = f by A17,FINSEQ_5:23,A5,FINSEQ_1:42;
      hence i in dom (DC "**" f1) by A12,FINSEQ_1:28,A7;
    end;
  end;
  P[j] from NAT_1:sch 2(A1,A2);
  then P[len f];
  hence thesis;
end;
