reserve p,q,r for FinSequence,
  x,y for object;

theorem
  for R,Q being Relation st for a,b being object st [a,b] in Q holds
  a,b are_critical_wrt R holds R, R \/ Q are_equivalent
proof
  let R,Q be Relation;
  assume
A1: for a,b being object st [a,b] in Q holds a,b are_critical_wrt R;
  let a,b be object;
A2: R c= R \/ Q by XBOOLE_1:7;
A3: R~ c= (R \/ Q)~
  proof
    let x,y be object;
    assume [x,y] in R~;
    then [y,x] in R by RELAT_1:def 7;
    hence thesis by A2,RELAT_1:def 7;
  end;
  thus a,b are_convertible_wrt R implies
  a,b are_convertible_wrt R \/ Q by A2,A3,Th22,XBOOLE_1:13;
  given p being RedSequence of (R \/ Q) \/ (R \/ Q)~ such that
A4: a = p.1 and
A5: b = p.len p;
  defpred Z[Nat] means $1 in dom p implies a,p.$1
  are_convertible_wrt R;
  now
    let i be Nat such that
A6: i in dom p implies a,p.i are_convertible_wrt R and
A7: i+1 in dom p;
A8: i < len p by A7,Lm2;
    per cases;
    suppose
      i = 0;
      hence a,p.(i+1) are_convertible_wrt R by A4,Th26;
    end;
    suppose
A9:   i > 0;
      then i in dom p by A8,Lm3;
      then [p.i,p.(i+1)] in (R \/ Q) \/ (R \/ Q)~ by A7,Def2;
      then [p.i,p.(i+1)] in R \/ Q or [p.i,p.(i+1)] in (R \/ Q)~ by
XBOOLE_0:def 3;
      then [p.i,p.(i+1)] in R \/ Q or [p.(i+1),p.i] in R \/ Q by RELAT_1:def 7;
      then
      [p.i,p.(i+1)] in R or [p.i,p.(i+1)] in Q or [p.(i+1),p.i] in R or [
      p.(i+1),p.i] in Q by XBOOLE_0:def 3;
      then p.i,p.(i+1) are_convertible_wrt R or p.(i+1),p.i
      are_convertible_wrt R by A1,Th29,Th59;
      then p.i,p.(i+1) are_convertible_wrt R by Lm5;
      hence a,p.(i+1) are_convertible_wrt R by A6,A8,A9,Lm3,Th30;
    end;
  end;
  then
A10: for k being Nat st Z[k] holds Z[k+1];
A11: len p in dom p by FINSEQ_5:6;
A12: Z[ 0 ] by Lm1;
  for i being Nat holds Z[i] from NAT_1:sch 2(A12,A10);
  hence thesis by A5,A11;
end;
