reserve x,y for set,
  n,m for Nat,
  r,s for Real;
reserve f, g for Function;

theorem ::: variant of FINSEQ_1:47
  for p,q,r,s being FinSequence st p^q = r^s & len p <= len r
  ex t,u being FinSequence st p^t = r & u^s = q
proof
  let p,q,r,s be FinSequence;
  assume A1: p^q = r^s & len p <= len r;
  then len r - len p in NAT by INT_1:5;
  then reconsider k = len r - len p as Nat;
  A3: len p + len q = len(p^q) by FINSEQ_1:22
    .= len r + len s by A1, FINSEQ_1:22;
  then len q = k + len s;
  then A5: len q >= k + 0 by XREAL_1:6;
  A6: len(p^(q|k)) = len p + len(q|k) by FINSEQ_1:22
    .= len p + k by A5, FINSEQ_1:59
    .= len r;
  A7: len((r/^len p)^s) = len(r/^len p) + len s by FINSEQ_1:22
    .= len r - len p + len s by A1, Def1
    .= len q by A3;
  take q|k, r/^len p;
  now
    let i be Nat;
    assume A8: 1 <= i & i <= len r;
    then A9: i in dom r by FINSEQ_3:25;
    per cases;
    suppose i <= len p;
      then A11: i in dom p by A8, FINSEQ_3:25;
      hence (p^(q|k)).i = p.i by FINSEQ_1:def 7
        .= (r^s).i by A1, A11, FINSEQ_1:def 7
        .= r.i by A9, FINSEQ_1:def 7;
    end;
    suppose len p < i;
      then len p + 1 <= i by NAT_1:13;
      then consider j being Nat such that
        A14: i = len p + 1 + j by NAT_1:10;
      A15: i = len p + (1+j) by A14;
      len p + (1 + j) <= len p + k by A8, A14;
      then 1 + j <= k by XREAL_1:6;
      then A16: 1 + j <= len(q|k) by A5, FINSEQ_1:59;
      1 + 0 <= 1 + j by XREAL_1:6;
      then A17: 1+j in dom(q|k) by A16, FINSEQ_3:25;
      then A18: 1+j in dom(q|Seg k);
      then A19: 1+j in dom q by RELAT_1:60, TARSKI:def 3;
      thus (p^(q|k)).i = (q|k).(1+j) by A15, A17, FINSEQ_1:def 7
        .= (q|Seg k).(1+j)
        .= q.(1+j) by A18, FUNCT_1:47
        .= (r^s).i by A1, A15, A19, FINSEQ_1:def 7
        .= r.i by A9, FINSEQ_1:def 7;
    end;
  end;
  hence p^(q|k) = r by A6, FINSEQ_1:14;
  now
    let i be Nat;
    assume A20: 1 <= i & i <= len q;
    then A21: i in dom q by FINSEQ_3:25;
    per cases;
    suppose A22: i <= k;
      len(r/^len p) = k by A1, Def1;
      then A25: i in dom(r/^len p) by A20, A22, FINSEQ_3:25;
      A26: i + len p <= len r - len p + len p by A22, XREAL_1:6;
      1 + 0 <= i + len p by A20, XREAL_1:7;
      then A27: i + len p in dom r by A26, FINSEQ_3:25;
      thus ((r/^len p)^s).i = (r/^len p).i by A25, FINSEQ_1:def 7
        .= r.(i+len p) by A1, A25, Def1
        .= (p^q).(len p + i) by A1, A27, FINSEQ_1:def 7
        .= q.i by A21, FINSEQ_1:def 7;
    end;
    suppose k < i;
      then k + 1 <= i by NAT_1:13;
      then consider j being Nat such that
        A29: i = k + 1 + j by NAT_1:10;
      len(r/^len p) = k by A1, Def1;
      then A30: i = len(r/^len p) + (1 + j) by A29;
      i <= len(r/^len p) + len s by A7, A20, FINSEQ_1:22;
      then A31: 1 + j <= len s by A30, XREAL_1:6;
      1 + 0 <= 1 + j by XREAL_1:6;
      then A32: 1+j in dom s by A31, FINSEQ_3:25;
      thus ((r/^len p)^s).i = s.(1+j) by A30, A32, FINSEQ_1:def 7
        .= (p^q).(len r + (1+j)) by A1, A32, FINSEQ_1:def 7
        .= (p^q).(len p + i) by A29
        .= q.i by A21, FINSEQ_1:def 7;
    end;
  end;
  hence thesis by A7, FINSEQ_1:14;
end;
