Article REWRITE2, MML version 4.99.1005

:: REWRITE2:th 1
theorem
for b1 being natural set
for b2 being Relation-like Function-like FinSequence-like set
      st not b1 in dom b2 & b1 + 1 in dom b2
   holds b1 = 0;

:: REWRITE2:th 2
theorem
for b1 being natural set
for b2, b3 being Relation-like Function-like FinSequence-like set
      st len b2 < b1 & b1 <= len (b2 ^ b3)
   holds ex b4 being natural set st
      b1 = (len b2) + b4 & 1 <= b4 & b4 <= len b3;

:: REWRITE2:th 3
theorem
for b1 being natural set
for b2 being Relation-like set
for b3 being RedSequence of b2
      st 1 <= b1
   holds b3 | b1 is RedSequence of b2;

:: REWRITE2:th 4
theorem
for b1 being natural set
for b2 being Relation-like set
for b3 being RedSequence of b2
      st b1 in dom b3
   holds ex b4 being RedSequence of b2 st
      len b4 = b1 & b4 . 1 = b3 . 1 & b4 . len b4 = b3 . b1;

:: REWRITE2:attrnot 1 => REWRITE2:attr 1
definition
  let a1 be Relation-like Function-like set;
  attr a1 is XFinSequence-yielding means
    for b1 being set
          st b1 in proj1 a1
       holds a1 . b1 is Relation-like Function-like T-Sequence-like finite set;
end;

:: REWRITE2:dfs 1
definiens
  let a1 be Relation-like Function-like set;
To prove
     a1 is XFinSequence-yielding
it is sufficient to prove
  thus for b1 being set
          st b1 in proj1 a1
       holds a1 . b1 is Relation-like Function-like T-Sequence-like finite set;

:: REWRITE2:def 1
theorem
for b1 being Relation-like Function-like set holds
      b1 is XFinSequence-yielding
   iff
      for b2 being set
            st b2 in proj1 b1
         holds b1 . b2 is Relation-like Function-like T-Sequence-like finite set;

:: REWRITE2:funcreg 1
registration
  cluster {} -> XFinSequence-yielding;
end;

:: REWRITE2:funcreg 2
registration
  let a1 be Relation-like Function-like T-Sequence-like finite set;
  cluster <*a1*> -> XFinSequence-yielding;
end;

:: REWRITE2:exreg 1
registration
  cluster Relation-like Function-like XFinSequence-yielding set;
end;

:: REWRITE2:funcnot 1 => REWRITE2:func 1
definition
  let a1 be Relation-like Function-like XFinSequence-yielding set;
  let a2 be set;
  redefine func a1 . a2 -> Relation-like Function-like T-Sequence-like finite set;
end;

:: REWRITE2:exreg 2
registration
  cluster Relation-like Function-like finite FinSequence-like XFinSequence-yielding set;
end;

:: REWRITE2:condreg 1
registration
  let a1 be set;
  cluster -> XFinSequence-yielding (FinSequence of a1 ^omega);
end;

:: REWRITE2:funcreg 3
registration
  let a1, a2 be Relation-like Function-like FinSequence-like XFinSequence-yielding set;
  cluster a1 ^ a2 -> Relation-like Function-like FinSequence-like XFinSequence-yielding;
end;

:: REWRITE2:funcnot 2 => REWRITE2:func 2
definition
  let a1 be Relation-like Function-like T-Sequence-like finite set;
  let a2 be Relation-like Function-like XFinSequence-yielding set;
  func A1 ^+ A2 -> Relation-like Function-like XFinSequence-yielding set means
    proj1 it = proj1 a2 &
     (for b1 being set
           st b1 in proj1 a2
        holds it . b1 = a1 ^ (a2 . b1));
end;

:: REWRITE2:def 2
theorem
for b1 being Relation-like Function-like T-Sequence-like finite set
for b2, b3 being Relation-like Function-like XFinSequence-yielding set holds
   b3 = b1 ^+ b2
iff
   proj1 b3 = proj1 b2 &
    (for b4 being set
          st b4 in proj1 b2
       holds b3 . b4 = b1 ^ (b2 . b4));

:: REWRITE2:funcnot 3 => REWRITE2:func 3
definition
  let a1 be Relation-like Function-like T-Sequence-like finite set;
  let a2 be Relation-like Function-like XFinSequence-yielding set;
  func A2 +^ A1 -> Relation-like Function-like XFinSequence-yielding set means
    proj1 it = proj1 a2 &
     (for b1 being set
           st b1 in proj1 a2
        holds it . b1 = (a2 . b1) ^ a1);
end;

:: REWRITE2:def 3
theorem
for b1 being Relation-like Function-like T-Sequence-like finite set
for b2, b3 being Relation-like Function-like XFinSequence-yielding set holds
   b3 = b2 +^ b1
iff
   proj1 b3 = proj1 b2 &
    (for b4 being set
          st b4 in proj1 b2
       holds b3 . b4 = (b2 . b4) ^ b1);

:: REWRITE2:funcreg 4
registration
  let a1 be Relation-like Function-like T-Sequence-like finite set;
  let a2 be Relation-like Function-like FinSequence-like XFinSequence-yielding set;
  cluster a1 ^+ a2 -> Relation-like Function-like FinSequence-like XFinSequence-yielding;
end;

:: REWRITE2:funcreg 5
registration
  let a1 be Relation-like Function-like T-Sequence-like finite set;
  let a2 be Relation-like Function-like FinSequence-like XFinSequence-yielding set;
  cluster a2 +^ a1 -> Relation-like Function-like FinSequence-like XFinSequence-yielding;
end;

:: REWRITE2:th 5
theorem
for b1 being Relation-like Function-like T-Sequence-like finite set
for b2 being Relation-like Function-like FinSequence-like XFinSequence-yielding set holds
   len (b1 ^+ b2) = len b2 & len (b2 +^ b1) = len b2;

:: REWRITE2:th 6
theorem
for b1 being set
for b2 being Relation-like Function-like FinSequence-like XFinSequence-yielding set holds
   (<%> b1) ^+ b2 = b2 & b2 +^ <%> b1 = b2;

:: REWRITE2:th 7
theorem
for b1, b2 being Relation-like Function-like T-Sequence-like finite set
for b3 being Relation-like Function-like FinSequence-like XFinSequence-yielding set holds
   b1 ^+ (b2 ^+ b3) = (b1 ^ b2) ^+ b3 &
    (b3 +^ b2) +^ b1 = b3 +^ (b2 ^ b1);

:: REWRITE2:th 8
theorem
for b1, b2 being Relation-like Function-like T-Sequence-like finite set
for b3 being Relation-like Function-like FinSequence-like XFinSequence-yielding set holds
   b1 ^+ (b3 +^ b2) = (b1 ^+ b3) +^ b2;

:: REWRITE2:th 9
theorem
for b1 being Relation-like Function-like T-Sequence-like finite set
for b2, b3 being Relation-like Function-like FinSequence-like XFinSequence-yielding set holds
b1 ^+ (b2 ^ b3) = (b1 ^+ b2) ^ (b1 ^+ b3) &
 (b2 ^ b3) +^ b1 = (b2 +^ b1) ^ (b3 +^ b1);

:: REWRITE2:funcnot 4 => REWRITE2:func 4
definition
  let a1 be set;
  let a2 be FinSequence of a1 ^omega;
  let a3 be natural set;
  redefine func a2 . a3 -> Element of a1 ^omega;
end;

:: REWRITE2:funcnot 5 => REWRITE2:func 5
definition
  let a1 be set;
  let a2 be natural set;
  let a3 be Element of a1 ^omega;
  redefine func a2 |-> a3 -> FinSequence of a1 ^omega;
end;

:: REWRITE2:funcnot 6 => REWRITE2:func 6
definition
  let a1 be set;
  let a2 be Element of a1 ^omega;
  let a3 be FinSequence of a1 ^omega;
  redefine func a2 ^+ a3 -> FinSequence of a1 ^omega;
end;

:: REWRITE2:funcnot 7 => REWRITE2:func 7
definition
  let a1 be set;
  let a2 be Element of a1 ^omega;
  let a3 be FinSequence of a1 ^omega;
  redefine func a3 +^ a2 -> FinSequence of a1 ^omega;
end;

:: REWRITE2:modenot 1
definition
  let a1 be set;
  mode semi-Thue-system of a1 is Relation of a1 ^omega,a1 ^omega;
end;

:: REWRITE2:funcreg 6
registration
  let a1 be Relation-like set;
  cluster a1 \/ (a1 ~) -> symmetric;
end;

:: REWRITE2:exreg 3
registration
  let a1 be set;
  cluster Relation-like symmetric Relation of a1 ^omega,a1 ^omega;
end;

:: REWRITE2:modenot 2
definition
  let a1 be set;
  mode Thue-system of a1 is symmetric Relation of a1 ^omega,a1 ^omega;
end;

:: REWRITE2:prednot 1 => REWRITE2:pred 1
definition
  let a1 be set;
  let a2 be Relation of a1 ^omega,a1 ^omega;
  let a3, a4 be Element of a1 ^omega;
  pred A3 -->. A4,A2 means
    [a3,a4] in a2;
end;

:: REWRITE2:dfs 4
definiens
  let a1 be set;
  let a2 be Relation of a1 ^omega,a1 ^omega;
  let a3, a4 be Element of a1 ^omega;
To prove
     a3 -->. a4,a2
it is sufficient to prove
  thus [a3,a4] in a2;

:: REWRITE2:def 4
theorem
for b1 being set
for b2 being Relation of b1 ^omega,b1 ^omega
for b3, b4 being Element of b1 ^omega holds
   b3 -->. b4,b2
iff
   [b3,b4] in b2;

:: REWRITE2:prednot 2 => REWRITE2:pred 2
definition
  let a1 be set;
  let a2 be Relation of a1 ^omega,a1 ^omega;
  let a3, a4 be Element of a1 ^omega;
  pred A3 ==>. A4,A2 means
    ex b1, b2, b3, b4 being Element of a1 ^omega st
       a3 = (b1 ^ b3) ^ b2 & a4 = (b1 ^ b4) ^ b2 & b3 -->. b4,a2;
end;

:: REWRITE2:dfs 5
definiens
  let a1 be set;
  let a2 be Relation of a1 ^omega,a1 ^omega;
  let a3, a4 be Element of a1 ^omega;
To prove
     a3 ==>. a4,a2
it is sufficient to prove
  thus ex b1, b2, b3, b4 being Element of a1 ^omega st
       a3 = (b1 ^ b3) ^ b2 & a4 = (b1 ^ b4) ^ b2 & b3 -->. b4,a2;

:: REWRITE2:def 5
theorem
for b1 being set
for b2 being Relation of b1 ^omega,b1 ^omega
for b3, b4 being Element of b1 ^omega holds
   b3 ==>. b4,b2
iff
   ex b5, b6, b7, b8 being Element of b1 ^omega st
      b3 = (b5 ^ b7) ^ b6 & b4 = (b5 ^ b8) ^ b6 & b7 -->. b8,b2;

:: REWRITE2:th 10
theorem
for b1 being set
for b2 being Relation of b1 ^omega,b1 ^omega
for b3, b4 being Element of b1 ^omega
      st b3 -->. b4,b2
   holds b3 ==>. b4,b2;

:: REWRITE2:th 11
theorem
for b1 being set
for b2 being Relation of b1 ^omega,b1 ^omega
for b3 being Element of b1 ^omega
      st b3 ==>. b3,b2
   holds ex b4, b5, b6 being Element of b1 ^omega st
      b3 = (b4 ^ b6) ^ b5 & b6 -->. b6,b2;

:: REWRITE2:th 12
theorem
for b1 being set
for b2 being Relation of b1 ^omega,b1 ^omega
for b3, b4, b5 being Element of b1 ^omega
      st b3 ==>. b4,b2
   holds b5 ^ b3 ==>. b5 ^ b4,b2 & b3 ^ b5 ==>. b4 ^ b5,b2;

:: REWRITE2:th 13
theorem
for b1 being set
for b2 being Relation of b1 ^omega,b1 ^omega
for b3, b4, b5, b6 being Element of b1 ^omega
      st b3 ==>. b4,b2
   holds (b5 ^ b3) ^ b6 ==>. (b5 ^ b4) ^ b6,b2;

:: REWRITE2:th 14
theorem
for b1 being set
for b2 being Relation of b1 ^omega,b1 ^omega
for b3, b4, b5 being Element of b1 ^omega
      st b3 -->. b4,b2
   holds b5 ^ b3 ==>. b5 ^ b4,b2 & b3 ^ b5 ==>. b4 ^ b5,b2;

:: REWRITE2:th 15
theorem
for b1 being set
for b2 being Relation of b1 ^omega,b1 ^omega
for b3, b4, b5, b6 being Element of b1 ^omega
      st b3 -->. b4,b2
   holds (b5 ^ b3) ^ b6 ==>. (b5 ^ b4) ^ b6,b2;

:: REWRITE2:th 16
theorem
for b1 being set
for b2 being Relation of b1 ^omega,b1 ^omega
for b3, b4 being Element of b1 ^omega
      st b2 is symmetric Relation of b1 ^omega,b1 ^omega & b3 -->. b4,b2
   holds b4 -->. b3,b2;

:: REWRITE2:th 17
theorem
for b1 being set
for b2 being Relation of b1 ^omega,b1 ^omega
for b3, b4 being Element of b1 ^omega
      st b2 is symmetric Relation of b1 ^omega,b1 ^omega & b3 ==>. b4,b2
   holds b4 ==>. b3,b2;

:: REWRITE2:th 18
theorem
for b1 being set
for b2, b3 being Relation of b1 ^omega,b1 ^omega
for b4, b5 being Element of b1 ^omega
      st b2 c= b3 & b4 -->. b5,b2
   holds b4 -->. b5,b3;

:: REWRITE2:th 19
theorem
for b1 being set
for b2, b3 being Relation of b1 ^omega,b1 ^omega
for b4, b5 being Element of b1 ^omega
      st b2 c= b3 & b4 ==>. b5,b2
   holds b4 ==>. b5,b3;

:: REWRITE2:th 20
theorem
for b1 being set
for b2, b3 being Element of b1 ^omega holds
not b2 ==>. b3,{}(b1 ^omega,b1 ^omega);

:: REWRITE2:th 21
theorem
for b1 being set
for b2, b3 being Relation of b1 ^omega,b1 ^omega
for b4, b5 being Element of b1 ^omega
      st b4 ==>. b5,b2 \/ b3 & not b4 ==>. b5,b2
   holds b4 ==>. b5,b3;

:: REWRITE2:funcnot 8 => REWRITE2:func 8
definition
  let a1 be set;
  redefine func id a1 -> Relation of a1,a1;
end;

:: REWRITE2:funcnot 9 => REWRITE2:func 9
definition
  let a1 be set;
  let a2 be Relation of a1 ^omega,a1 ^omega;
  func ==>.-relation A2 -> Relation of a1 ^omega,a1 ^omega means
    for b1, b2 being Element of a1 ^omega holds
       [b1,b2] in it
    iff
       b1 ==>. b2,a2;
end;

:: REWRITE2:def 6
theorem
for b1 being set
for b2, b3 being Relation of b1 ^omega,b1 ^omega holds
   b3 = ==>.-relation b2
iff
   for b4, b5 being Element of b1 ^omega holds
      [b4,b5] in b3
   iff
      b4 ==>. b5,b2;

:: REWRITE2:th 22
theorem
for b1 being set
for b2 being Relation of b1 ^omega,b1 ^omega holds
   b2 c= ==>.-relation b2;

:: REWRITE2:th 23
theorem
for b1 being set
for b2 being Relation of b1 ^omega,b1 ^omega
for b3 being Element of b1 ^omega
for b4 being FinSequence of b1 ^omega
      st b4 is RedSequence of ==>.-relation b2
   holds b4 +^ b3 is RedSequence of ==>.-relation b2 & b3 ^+ b4 is RedSequence of ==>.-relation b2;

:: REWRITE2:th 24
theorem
for b1 being set
for b2 being Relation of b1 ^omega,b1 ^omega
for b3, b4 being Element of b1 ^omega
for b5 being FinSequence of b1 ^omega
      st b5 is RedSequence of ==>.-relation b2
   holds (b3 ^+ b5) +^ b4 is RedSequence of ==>.-relation b2;

:: REWRITE2:th 25
theorem
for b1 being set
for b2 being Relation of b1 ^omega,b1 ^omega
      st b2 is symmetric Relation of b1 ^omega,b1 ^omega
   holds ==>.-relation b2 = (==>.-relation b2) ~;

:: REWRITE2:th 26
theorem
for b1 being set
for b2, b3 being Relation of b1 ^omega,b1 ^omega
      st b2 c= b3
   holds ==>.-relation b2 c= ==>.-relation b3;

:: REWRITE2:th 27
theorem
for b1 being set holds
   ==>.-relation id (b1 ^omega) = id (b1 ^omega);

:: REWRITE2:th 28
theorem
for b1 being set
for b2 being Relation of b1 ^omega,b1 ^omega holds
   ==>.-relation (b2 \/ id (b1 ^omega)) = (==>.-relation b2) \/ id (b1 ^omega);

:: REWRITE2:th 29
theorem
for b1 being set holds
   ==>.-relation {}(b1 ^omega,b1 ^omega) = {}(b1 ^omega,b1 ^omega);

:: REWRITE2:th 30
theorem
for b1 being set
for b2 being Relation of b1 ^omega,b1 ^omega
for b3, b4 being Element of b1 ^omega
      st b3 ==>. b4,==>.-relation b2
   holds b3 ==>. b4,b2;

:: REWRITE2:th 31
theorem
for b1 being set
for b2 being Relation of b1 ^omega,b1 ^omega holds
   ==>.-relation ==>.-relation b2 = ==>.-relation b2;

:: REWRITE2:prednot 3 => REWRITE2:pred 3
definition
  let a1 be set;
  let a2 be Relation of a1 ^omega,a1 ^omega;
  let a3, a4 be Element of a1 ^omega;
  pred A3 ==>* A4,A2 means
    ==>.-relation a2 reduces a3,a4;
end;

:: REWRITE2:dfs 7
definiens
  let a1 be set;
  let a2 be Relation of a1 ^omega,a1 ^omega;
  let a3, a4 be Element of a1 ^omega;
To prove
     a3 ==>* a4,a2
it is sufficient to prove
  thus ==>.-relation a2 reduces a3,a4;

:: REWRITE2:def 7
theorem
for b1 being set
for b2 being Relation of b1 ^omega,b1 ^omega
for b3, b4 being Element of b1 ^omega holds
   b3 ==>* b4,b2
iff
   ==>.-relation b2 reduces b3,b4;

:: REWRITE2:th 32
theorem
for b1 being set
for b2 being Relation of b1 ^omega,b1 ^omega
for b3 being Element of b1 ^omega holds
   b3 ==>* b3,b2;

:: REWRITE2:th 33
theorem
for b1 being set
for b2 being Relation of b1 ^omega,b1 ^omega
for b3, b4 being Element of b1 ^omega
      st b3 ==>. b4,b2
   holds b3 ==>* b4,b2;

:: REWRITE2:th 34
theorem
for b1 being set
for b2 being Relation of b1 ^omega,b1 ^omega
for b3, b4 being Element of b1 ^omega
      st b3 -->. b4,b2
   holds b3 ==>* b4,b2;

:: REWRITE2:th 35
theorem
for b1 being set
for b2 being Relation of b1 ^omega,b1 ^omega
for b3, b4, b5 being Element of b1 ^omega
      st b3 ==>* b4,b2 & b4 ==>* b5,b2
   holds b3 ==>* b5,b2;

:: REWRITE2:th 36
theorem
for b1 being set
for b2 being Relation of b1 ^omega,b1 ^omega
for b3, b4, b5 being Element of b1 ^omega
      st b3 ==>* b4,b2
   holds b3 ^ b5 ==>* b4 ^ b5,b2 & b5 ^ b3 ==>* b5 ^ b4,b2;

:: REWRITE2:th 37
theorem
for b1 being set
for b2 being Relation of b1 ^omega,b1 ^omega
for b3, b4, b5, b6 being Element of b1 ^omega
      st b3 ==>* b4,b2
   holds (b5 ^ b3) ^ b6 ==>* (b5 ^ b4) ^ b6,b2;

:: REWRITE2:th 38
theorem
for b1 being set
for b2 being Relation of b1 ^omega,b1 ^omega
for b3, b4, b5, b6 being Element of b1 ^omega
      st b3 ==>* b4,b2 & b5 ==>* b6,b2
   holds b3 ^ b5 ==>* b4 ^ b6,b2 & b5 ^ b3 ==>* b6 ^ b4,b2;

:: REWRITE2:th 39
theorem
for b1 being set
for b2 being Relation of b1 ^omega,b1 ^omega
for b3, b4 being Element of b1 ^omega
      st b2 is symmetric Relation of b1 ^omega,b1 ^omega & b3 ==>* b4,b2
   holds b4 ==>* b3,b2;

:: REWRITE2:th 40
theorem
for b1 being set
for b2, b3 being Relation of b1 ^omega,b1 ^omega
for b4, b5 being Element of b1 ^omega
      st b2 c= b3 & b4 ==>* b5,b2
   holds b4 ==>* b5,b3;

:: REWRITE2:th 41
theorem
for b1 being set
for b2 being Relation of b1 ^omega,b1 ^omega
for b3, b4 being Element of b1 ^omega holds
   b3 ==>* b4,b2
iff
   b3 ==>* b4,b2 \/ id (b1 ^omega);

:: REWRITE2:th 42
theorem
for b1 being set
for b2, b3 being Element of b1 ^omega
      st b2 ==>* b3,{}(b1 ^omega,b1 ^omega)
   holds b2 = b3;

:: REWRITE2:th 43
theorem
for b1 being set
for b2 being Relation of b1 ^omega,b1 ^omega
for b3, b4 being Element of b1 ^omega
      st b3 ==>* b4,==>.-relation b2
   holds b3 ==>* b4,b2;

:: REWRITE2:th 44
theorem
for b1 being set
for b2 being Relation of b1 ^omega,b1 ^omega
for b3, b4, b5, b6 being Element of b1 ^omega
      st b3 ==>* b4,b2 & b5 ==>. b6,{[b3,b4]}
   holds b5 ==>* b6,b2;

:: REWRITE2:th 45
theorem
for b1 being set
for b2 being Relation of b1 ^omega,b1 ^omega
for b3, b4, b5, b6 being Element of b1 ^omega
      st b3 ==>* b4,b2 &
         b5 ==>* b6,b2 \/ {[b3,b4]}
   holds b5 ==>* b6,b2;

:: REWRITE2:funcnot 10 => REWRITE2:func 10
definition
  let a1 be set;
  let a2 be Relation of a1 ^omega,a1 ^omega;
  let a3 be Element of a1 ^omega;
  func Lang(A3,A2) -> Element of bool (a1 ^omega) equals
    {b1 where b1 is Element of a1 ^omega: a3 ==>* b1,a2};
end;

:: REWRITE2:def 8
theorem
for b1 being set
for b2 being Relation of b1 ^omega,b1 ^omega
for b3 being Element of b1 ^omega holds
   Lang(b3,b2) = {b4 where b4 is Element of b1 ^omega: b3 ==>* b4,b2};

:: REWRITE2:th 46
theorem
for b1 being set
for b2 being Relation of b1 ^omega,b1 ^omega
for b3, b4 being Element of b1 ^omega holds
   b3 in Lang(b4,b2)
iff
   b4 ==>* b3,b2;

:: REWRITE2:th 47
theorem
for b1 being set
for b2 being Relation of b1 ^omega,b1 ^omega
for b3 being Element of b1 ^omega holds
   b3 in Lang(b3,b2);

:: REWRITE2:funcreg 7
registration
  let a1 be non empty set;
  let a2 be Relation of a1 ^omega,a1 ^omega;
  let a3 be Element of a1 ^omega;
  cluster Lang(a3,a2) -> non empty;
end;

:: REWRITE2:th 48
theorem
for b1 being set
for b2, b3 being Relation of b1 ^omega,b1 ^omega
for b4 being Element of b1 ^omega
      st b2 c= b3
   holds Lang(b4,b2) c= Lang(b4,b3);

:: REWRITE2:th 49
theorem
for b1 being set
for b2 being Relation of b1 ^omega,b1 ^omega
for b3 being Element of b1 ^omega holds
   Lang(b3,b2) = Lang(b3,b2 \/ id (b1 ^omega));

:: REWRITE2:th 50
theorem
for b1 being set
for b2 being Element of b1 ^omega holds
   Lang(b2,{}(b1 ^omega,b1 ^omega)) = {b2};

:: REWRITE2:th 51
theorem
for b1 being set
for b2 being Element of b1 ^omega holds
   Lang(b2,id (b1 ^omega)) = {b2};

:: REWRITE2:prednot 4 => REWRITE2:pred 4
definition
  let a1 be set;
  let a2, a3 be Relation of a1 ^omega,a1 ^omega;
  let a4 be Element of a1 ^omega;
  pred A2,A3 are_equivalent_wrt A4 means
    Lang(a4,a2) = Lang(a4,a3);
end;

:: REWRITE2:dfs 9
definiens
  let a1 be set;
  let a2, a3 be Relation of a1 ^omega,a1 ^omega;
  let a4 be Element of a1 ^omega;
To prove
     a2,a3 are_equivalent_wrt a4
it is sufficient to prove
  thus Lang(a4,a2) = Lang(a4,a3);

:: REWRITE2:def 9
theorem
for b1 being set
for b2, b3 being Relation of b1 ^omega,b1 ^omega
for b4 being Element of b1 ^omega holds
      b2,b3 are_equivalent_wrt b4
   iff
      Lang(b4,b2) = Lang(b4,b3);

:: REWRITE2:th 52
theorem
for b1 being set
for b2 being Relation of b1 ^omega,b1 ^omega
for b3 being Element of b1 ^omega holds
   b2,b2 are_equivalent_wrt b3;

:: REWRITE2:th 53
theorem
for b1 being set
for b2, b3 being Relation of b1 ^omega,b1 ^omega
for b4 being Element of b1 ^omega
      st b2,b3 are_equivalent_wrt b4
   holds b3,b2 are_equivalent_wrt b4;

:: REWRITE2:th 54
theorem
for b1 being set
for b2, b3, b4 being Relation of b1 ^omega,b1 ^omega
for b5 being Element of b1 ^omega
      st b2,b3 are_equivalent_wrt b5 & b3,b4 are_equivalent_wrt b5
   holds b2,b4 are_equivalent_wrt b5;

:: REWRITE2:th 55
theorem
for b1 being set
for b2 being Relation of b1 ^omega,b1 ^omega
for b3 being Element of b1 ^omega holds
   b2,b2 \/ id (b1 ^omega) are_equivalent_wrt b3;

:: REWRITE2:th 56
theorem
for b1 being set
for b2, b3, b4 being Relation of b1 ^omega,b1 ^omega
for b5 being Element of b1 ^omega
      st b2,b3 are_equivalent_wrt b5 & b2 c= b4 & b4 c= b3
   holds b2,b4 are_equivalent_wrt b5 & b4,b3 are_equivalent_wrt b5;

:: REWRITE2:th 57
theorem
for b1 being set
for b2 being Relation of b1 ^omega,b1 ^omega
for b3 being Element of b1 ^omega holds
   b2,==>.-relation b2 are_equivalent_wrt b3;

:: REWRITE2:th 58
theorem
for b1 being set
for b2, b3 being Relation of b1 ^omega,b1 ^omega
for b4, b5 being Element of b1 ^omega
      st b2,b3 are_equivalent_wrt b4 & ==>.-relation (b2 \/ b3) reduces b4,b5
   holds ==>.-relation b2 reduces b4,b5;

:: REWRITE2:th 59
theorem
for b1 being set
for b2, b3 being Relation of b1 ^omega,b1 ^omega
for b4, b5 being Element of b1 ^omega
      st b2,b3 are_equivalent_wrt b4 & b4 ==>* b5,b2 \/ b3
   holds b4 ==>* b5,b2;

:: REWRITE2:th 60
theorem
for b1 being set
for b2, b3 being Relation of b1 ^omega,b1 ^omega
for b4 being Element of b1 ^omega
      st b2,b3 are_equivalent_wrt b4
   holds b2,b2 \/ b3 are_equivalent_wrt b4;

:: REWRITE2:th 61
theorem
for b1 being set
for b2 being Relation of b1 ^omega,b1 ^omega
for b3, b4, b5 being Element of b1 ^omega
      st b3 ==>. b4,b2
   holds b2,b2 \/ {[b3,b4]} are_equivalent_wrt b5;

:: REWRITE2:th 62
theorem
for b1 being set
for b2 being Relation of b1 ^omega,b1 ^omega
for b3, b4, b5 being Element of b1 ^omega
      st b3 ==>* b4,b2
   holds b2,b2 \/ {[b3,b4]} are_equivalent_wrt b5;