reserve x for set;
reserve k, l for Nat;
reserve p, q for FinSequence;
reserve R for Relation;
reserve p, q for RedSequence of R;
reserve E for set;
reserve s, t for XFinSequence;
reserve p, q for XFinSequence-yielding FinSequence;
reserve E for set;
reserve S, T, U for semi-Thue-system of E;
reserve s, t, s1, t1, u, v, u1, v1, w for Element of E^omega;
reserve p for FinSequence of E^omega;

theorem Th45:
  s ==>* t, S & u ==>* v, S \/ {[s, t]} implies u ==>* v, S
proof
  assume that
A1: s ==>* t, S and
A2: u ==>* v, S \/ {[s, t]};
  ==>.-relation(S \/ {[s, t]}) reduces u, v by A2;
  then
A3: ex p2 being RedSequence of ==>.-relation(S \/ {[s, t]}) st p2.1 = u & p2.
  len p2 = v by REWRITE1:def 3;
  defpred P[Nat] means for p being RedSequence of ==>.-relation(S \/ {[s, t]})
  , s1, t1 st len p = $1 & p.1 = s1 & p.len p = t1 ex q being RedSequence of
  ==>.-relation(S) st q.1 = s1 & q.len q = t1;
A4: now
    let k;
    assume
A5: P[k];
    thus P[k + 1]
    proof
      let p be RedSequence of ==>.-relation(S \/ {[s, t]}), s1, t1 such that
A6:   len p = k + 1 and
A7:   p.1 = s1 and
A8:   p.len p = t1;
      per cases;
      suppose
        not k in dom p & k + 1 in dom p;
        then k = 0 by Th1;
        then p = <*s1*> by A6,A7,FINSEQ_1:40;
        then reconsider p as RedSequence of ==>.-relation(S) by REWRITE1:6;
        take p;
        thus thesis by A7,A8;
      end;
      suppose
        not k + 1 in dom p;
        then 0 + 1 > k + 1 by A6,FINSEQ_3:25;
        hence thesis by XREAL_1:6;
      end;
      suppose
A9:     k in dom p & k + 1 in dom p;
        set w = p.k;
A10:    [p.k, p.(k + 1)] in ==>.-relation(S \/ {[s, t]}) by A9,REWRITE1:def 2;
        then reconsider w as Element of E^omega by ZFMISC_1:87;
A11:    w ==>. t1, S \/ {[s, t]} by A6,A8,A10,Def6;
A12:    w ==>* t1, S
        proof
          per cases by A11,Th21;
          suppose
            w ==>. t1, S;
            hence thesis by Th33;
          end;
          suppose
            w ==>. t1, {[s, t]};
            hence thesis by A1,Th44;
          end;
        end;
        ex p1 being RedSequence of ==>.-relation(S \/ {[s, t]}) st len p1
        = k & p1.1 = s1 & p1.len p1 = w by A7,A9,Th4;
        then
        ex q being RedSequence of ==>.-relation(S) st q.1 = s1 & q.len q =
        w by A5;
        then ==>.-relation(S) reduces s1, w by REWRITE1:def 3;
        then s1 ==>* w, S;
        then s1 ==>* t1, S by A12,Th35;
        then ==>.-relation(S) reduces s1, t1;
        hence thesis by REWRITE1:def 3;
      end;
    end;
  end;
A13: P[0] by REWRITE1:def 2;
  for k holds P[k] from NAT_1:sch 2(A13, A4);
  then ex q being RedSequence of ==>.-relation(S) st q.1 = u & q.len q = v by
A3;
  then ==>.-relation(S) reduces u, v by REWRITE1:def 3;
  hence thesis;
end;
