
theorem Th30: :: Prop 4.42 (ii) -> (iii)
  for R being non empty RelStr st R is quasi_ordered &
  (for f being sequence of R ex i,j being Nat st i < j & f.i <= f.j)
  holds for N being non empty Subset of R
  holds min-classes N is finite & min-classes N is non empty
proof
  let R be non empty RelStr such that
A1: R is quasi_ordered and
A2: for f being sequence of R
  ex i,j being Nat st i < j & f.i <= f.j;
  set IR = the InternalRel of R;
  set IR9= the InternalRel of R\~;
A3: R is transitive by A1;
  let N be non empty Subset of R such that
A4: not (min-classes N is finite & min-classes N is non empty);
  per cases by A4;
  suppose
A5: min-classes N is infinite;
    then reconsider MCN = min-classes N as infinite set;
    consider f being sequence of  min-classes N such that
A6: f is one-to-one by A5,Th2;
    deffunc F(object) = the Element of f.$1;
A7: now
      let x be object;
      assume x in NAT;
      then reconsider x9 = x as Element of NAT;
      f.x9 is Element of min-classes N;
      then
A8:   f.x in MCN;
      then f.x is non empty by Th21;
      then the Element of f.x9 in f.x;
      hence F(x) in the carrier of R by A8;
    end;
     :: !!! wykorzystac PBOOLE:sch 1 ??
    consider g being sequence of the carrier of R such that
A9: for x being object st x in NAT holds g.x = F(x) from FUNCT_2:sch 2(A7);
    reconsider g as sequence of R;
    consider i,j being Nat such that
A10: i < j and
A11: g.i <= g.j by A2;
    reconsider gi = g.i, gj= g.j as Element of R\~;
A12: [gi, gj] in IR by A11;
A13: f.i in MCN;
    then
A14: f.i is non empty by Th21;
A15: f.j in MCN;
    then
A16: f.j is non empty by Th21;
     j in NAT by ORDINAL1:def 12;
     then
A17: g.j = the Element of f.j by A9;
     i in NAT by ORDINAL1:def 12;
     then
A18: g.i = the Element of f.i by A9;
A19: gj is_minimal_wrt N, the InternalRel of R\~ by A1,A15,A16,A17,Th18;
    gi is_minimal_wrt N, the InternalRel of R\~ by A1,A13,A14,A18,Th18;
    then
A20: gi in N by WAYBEL_4:def 25;
A21: now per cases;
      suppose gi = gj;
        hence [gi, gj] in IR~ by A12,RELAT_1:def 7;
      end;
      suppose
A22:    gi <> gj;
        now
          assume not [gi, gj] in IR~;
          then [gi, gj] in IR \ IR~ by A12,XBOOLE_0:def 5;
          hence contradiction by A19,A20,A22,WAYBEL_4:def 25;
        end;
        hence [gi, gj] in IR~;
      end;
    end;
    [gi,gj] in IR by A11;
    then [gi,gj] in IR /\ IR~ by A21,XBOOLE_0:def 4;
    then [gi,gj] in EqRel R by A1,Def4;
    then gi in Class(EqRel R, gj) by EQREL_1:19;
    then
A23: Class(EqRel R, gj) = Class(EqRel R, gi) by EQREL_1:23;
    consider mj being Element of R\~ such that
    mj is_minimal_wrt N, IR9 and
A24: f.j = Class(EqRel R,mj) /\ N by A15,Def8;
    consider mi being Element of R\~ such that
    mi is_minimal_wrt N, IR9 and
A25: f.i = Class(EqRel R,mi) /\ N by A13,Def8;
    gj in Class(EqRel R, mj) by A16,A17,A24,XBOOLE_0:def 4;
    then
A26: Class(EqRel R, gj) = Class(EqRel R, mj) by EQREL_1:23;
A27:   i in NAT by ORDINAL1:def 12;
A28:   j in NAT by ORDINAL1:def 12;
    gi in Class(EqRel R, mi) by A14,A18,A25,XBOOLE_0:def 4;
    then f.i = f.j by A23,A24,A25,A26,EQREL_1:23;
    hence contradiction by A5,A6,A10,FUNCT_2:19,A27,A28;
  end;
  suppose
A29: min-classes N is empty;
    deffunc F(set,set) = the Element of IR-Seg($2) /\ N\Class(EqRel R,$2);
    consider f being Function such that
A30: dom f = NAT and
A31: f.0 = the Element of N and
A32: for n being Nat holds f.(n+1) = F(n,f.n) from NAT_1:sch 11;
    defpred P[Nat] means f.$1 in N;
A33: P[ 0 ] by A31;
A34: now
      let i be Nat such that
A35:  P[i];
      reconsider fi = f.i as Element of R\~ by A35;
      set IC = IR-Seg(fi) /\ N\Class(EqRel R,fi);
A36:  f.(i+1) = the Element of IR-Seg(f.i) /\ N\Class(EqRel R,f.i) by A32;
      now
        assume IC is empty;
        then IR-Seg(fi) /\ N c= Class(EqRel R,fi) by XBOOLE_1:37;
        hence contradiction by A1,A29,A35,Th20,Th29;
      end;
      then f.(i+1) in IR-Seg(f.i) /\ N by A36,XBOOLE_0:def 5;
      hence P[i+1] by XBOOLE_0:def 4;
    end;
A37: for i being Nat holds P[i] from NAT_1:sch 2(A33,A34);
    now
      let x being object;
      assume x in NAT;
      then f.x in N by A37;
      hence f.x in the carrier of R;
    end;
    then reconsider f as sequence of R by A30,FUNCT_2:3;
A38: now
      let i be Nat;
      defpred P[Nat] means i < $1 implies f.i >= f.$1;
A39:  P[ 0 ] by NAT_1:2;
A40:  for j being Nat st P[j] holds P[j+1]
      proof
        let j be Nat such that
A41:    i < j implies f.i >= f.j and
A42:    i < j+1;
A43:    i <= j by A42,NAT_1:13;
        reconsider fj = f.j, fj1 = f.(j+1) as Element of R\~;
        set IC = IR-Seg(fj) /\ N\Class(EqRel R,fj);
A44:    fj in N by A37;
A45:    fj1 = the Element of IC by A32;
        now
          assume IC is empty;
          then IR-Seg(fj) /\ N c= Class(EqRel R,fj) by XBOOLE_1:37;
          hence contradiction by A1,A29,A44,Th20,Th29;
        end;
        then fj1 in IR-Seg(fj) /\ N by A45,XBOOLE_0:def 5;
        then fj1 in IR-Seg(fj) by XBOOLE_0:def 4;
        then
A46:    [fj1, fj] in IR by WELLORD1:1;
        then
A47:    f.j >= f.(j+1);
        per cases by A43,XXREAL_0:1;
        suppose i < j;
          hence thesis by A3,A41,A47,ORDERS_2:3;
        end;
        suppose i = j;
          hence thesis by A46;
        end;
      end;
      thus for j being Nat holds P[j] from NAT_1:sch 2(A39,A40);
    end;
    now
      let i be Nat;
      defpred P[Nat] means i < $1 implies not f.i <= f.$1;
A48:  P[ 0 ] by NAT_1:2;
A49:  for j being Nat st P[j] holds P[j+1]
      proof
        let j be Nat such that
        i < j implies not f.i <= f.j and
A50:    i < j+1;
A51:    i <= j by A50,NAT_1:13;
        reconsider fj = f.j, fj1 = f.(j+1) as Element of R\~;
A52:    fj in N by A37;
        per cases by A51,XXREAL_0:1;
        suppose
A53:      i < j;
          assume
A54:      f.i <= f.(j+1);
          j < j+1 by NAT_1:13;
          then
A55:      f.j >= f.(j+1) by A38;
          f.i >= f.j by A38,A53;
          then f.j <= f.(j+1) by A3,A54,ORDERS_2:3;
          then
A56:      fj1 in Class(EqRel R, fj) by A1,A55,Th7;
          set IC = IR-Seg(fj) /\ N\Class(EqRel R,fj);
A57:      fj1 = the Element of IC by A32;
          now
            assume IC is empty;
            then IR-Seg(fj) /\ N c= Class(EqRel R,fj) by XBOOLE_1:37;
            hence contradiction by A1,A29,A52,Th20,Th29;
          end;
          hence contradiction by A56,A57,XBOOLE_0:def 5;
        end;
        suppose
A58:      i = j;
          assume
A59:      f.i <= f.(j+1);
          j < j+1 by NAT_1:13;
          then f.(j+1) <= f.j by A38;
          then
A60:      fj1 in Class(EqRel R, fj) by A1,A58,A59,Th7;
          set IC = IR-Seg(fj) /\ N\Class(EqRel R,fj);
A61:      fj1 = the Element of IC by A32;
          now
            assume IC is empty;
            then IR-Seg(fj) /\ N c= Class(EqRel R,fj) by XBOOLE_1:37;
            hence contradiction by A1,A29,A52,Th20,Th29;
          end;
          hence contradiction by A60,A61,XBOOLE_0:def 5;
        end;
      end;
      thus for j being Nat holds P[j] from NAT_1:sch 2(A48,A49);
    end;
    hence contradiction by A2;
  end;
end;
