reserve A,A1,A2,B,B1,B2,C,O for Ordinal,
      R,S for Relation,
      a,b,c,o,l,r for object;

theorem Th22:
    R is almost-No-order & S is almost-No-order &
    R /\ OpenProd(R,A,0) = S /\ OpenProd(S,A,0) &
    R preserves_No_Comparison_on ClosedProd(R,A,B) &
    S preserves_No_Comparison_on ClosedProd(S,A,B)
  implies R /\ ClosedProd(R,A,B) = S /\ ClosedProd(S,A,B)
proof
  assume that A1: R is almost-No-order &
  S is almost-No-order and
  A2:R /\ OpenProd(R,A,0) = S /\ OpenProd(S,A,0) and
  A3:R preserves_No_Comparison_on ClosedProd(R,A,B) &
     S preserves_No_Comparison_on ClosedProd(S,A,B);
  defpred P[Ordinal] means $1 c= B implies
  R /\ ClosedProd(R,A,$1) = S /\ ClosedProd(S,A,$1);
  A4: R /\ [:BeforeGames A,BeforeGames A:] =
      S /\ [:BeforeGames A,BeforeGames A:] by A1,A2,Th20;
  A5: for D be Ordinal st for C be Ordinal st C in D holds P[C] holds P[D]
  proof
    let D be Ordinal such that A6: for C be Ordinal st C in D holds P[C];
    assume A7: D c= B;
    then ClosedProd(R,A,D) c= ClosedProd(R,A,B) &
    ClosedProd(S,A,D) c= ClosedProd(S,A,B) by Th17;
    then A8:R preserves_No_Comparison_on ClosedProd(R,A,D) &
    S preserves_No_Comparison_on ClosedProd(S,A,D) by A3;
    A9:R /\ OpenProd(R,A,D) c= S /\ OpenProd(S,A,D)
    proof
      let x,y be object;
      assume A10:[x,y] in R /\ OpenProd(R,A,D);
      then A11:[x,y] in R & [x,y] in OpenProd(R,A,D) by XBOOLE_0:def 4;
      A12:x in Day(R,A) & y in Day(R,A) by ZFMISC_1:87,A10;
      then A13: born(R,x) = born(S,x) & born(R,y) = born(S,y) by A4,Th11;
      per cases by A11,A12,Def9;
      suppose born(R,x) in A & born(R,y) in A;
        then [x,y] in OpenProd(R,A,0) by A12,Def9;
        then A14: [x,y] in S /\ OpenProd(S,A,0) by A2,A11,XBOOLE_0:def 4;
        then A15:[x,y] in S & [x,y] in OpenProd(S,A,0) by XBOOLE_0:def 4;
        A16:x in Day(S,A) & y in Day(S,A) by A14,ZFMISC_1:87;
        then (born(S,x) in A & born(S,y) in A) or
        (born(S,x) = A & born(S,y) in {}) or
        (born(S,x) in {} & born(S,y) = A) by A15,Def9;
        then [x,y] in OpenProd(S,A,D) by A16,Def9;
        hence thesis by A15,XBOOLE_0:def 4;
      end;
      suppose A17: born(R,x) = A & born(R,y) in D;
        then [x,y] in ClosedProd(R,A,born(R,y)) by A12,Def10;
        then A18:[x,y] in R /\ ClosedProd(R,A,born(R,y)) by A11,XBOOLE_0:def 4;
        A19:ClosedProd(S,A,born(R,y)) c= OpenProd(S,A,D) by Th18,A17;
        [x,y] in S /\ ClosedProd(S,A,born(R,y))
          by A7,A17,A6,A18,ORDINAL1:def 2;
        then [x,y] in S & [x,y] in ClosedProd(S,A,born(S,y))
          by A13,XBOOLE_0:def 4;
        hence thesis by A19,A13,XBOOLE_0:def 4;
      end;
      suppose A20: born(R,x) in D & born(R,y) = A;
        then [x,y] in ClosedProd(R,A,born(R,x)) by A12,Def10;
        then A21:[x,y] in R /\ ClosedProd(R,A,born(R,x)) by A11,XBOOLE_0:def 4;
        A22:ClosedProd(S,A,born(R,x)) c= OpenProd(S,A,D) by Th18,A20;
        [x,y] in S /\ ClosedProd(S,A,born(R,x))
          by A7,A20,A6,A21,ORDINAL1:def 2;
        then [x,y] in S & [x,y] in ClosedProd(S,A,born(S,x))
          by A13,XBOOLE_0:def 4;
        hence thesis by XBOOLE_0:def 4, A22,A13;
      end;
    end;
    S /\ OpenProd(S,A,D) c= R /\ OpenProd(R,A,D)
    proof
      let x,y be object;
      assume A23: [x,y] in S /\ OpenProd(S,A,D);
      then A24:[x,y] in S & [x,y] in OpenProd(S,A,D) by XBOOLE_0:def 4;
      A25:x in Day(S,A) & y in Day(S,A) by ZFMISC_1:87,A23;
      then A26: born(R,x) = born(S,x) & born(R,y) = born(S,y) by A4,Th11;
      per cases by A24,A25,Def9;
      suppose born(S,x) in A & born(S,y) in A;
        then [x,y] in OpenProd(S,A,0) by A25,Def9;
        then A27:[x,y] in R /\ OpenProd(R,A,0) by A2,A24,XBOOLE_0:def 4;
        then A28:[x,y] in R & [x,y] in OpenProd(R,A,0) by XBOOLE_0:def 4;
        A29:x in Day(R,A) & y in Day(R,A) by A27,ZFMISC_1:87;
        then born(R,x) in A & born(R,y) in A by A28,Def9;
        then [x,y] in OpenProd(R,A,D) by A29,Def9;
        hence thesis by A28,XBOOLE_0:def 4;
      end;
      suppose A30: born(S,x) = A & born(S,y) in D;
        then [x,y] in ClosedProd(S,A,born(S,y)) by A25,Def10;
        then A31:[x,y] in S /\ ClosedProd(S,A,born(S,y)) by A24,XBOOLE_0:def 4;
        A32:ClosedProd(R,A,born(S,y)) c= OpenProd(R,A,D) by Th18,A30;
        [x,y] in R /\ ClosedProd(R,A,born(R,y))
        by A26,A6,A30,A31,A7,ORDINAL1:def 2;
        then [x,y] in R & [x,y] in ClosedProd(R,A,born(R,y)) by XBOOLE_0:def 4;
        hence thesis by A32,A26,XBOOLE_0:def 4;
      end;
      suppose A33: born(S,x) in D & born(S,y) = A;
        then [x,y] in ClosedProd(S,A,born(S,x)) by A25,Def10;
        then A34:[x,y] in S /\ ClosedProd(S,A,born(S,x)) by A24,XBOOLE_0:def 4;
        A35:ClosedProd(R,A,born(S,x)) c= OpenProd(R,A,D) by Th18,A33;
        [x,y] in R /\ ClosedProd(R,A,born(S,x))
          by A7,A33,A6,A34,ORDINAL1:def 2;
        then [x,y] in R & [x,y] in ClosedProd(R,A,born(R,x))
          by A26,XBOOLE_0:def 4;
        hence thesis by A35,A26,XBOOLE_0:def 4;
      end;
    end;
    hence thesis by A1,A8,Th21,A9,XBOOLE_0:def 10;
  end;
  for D be Ordinal holds P[D] from ORDINAL1:sch 2(A5);
  hence thesis;
end;
