Article STIRL2_1, MML version 4.99.1005

:: STIRL2_1:th 1
theorem
for b1 being non empty Element of bool NAT holds
   min b1 = min* b1;

:: STIRL2_1:th 2
theorem
for b1, b2 being non empty Element of bool NAT holds
min(min b1,min b2) = min (b1 \/ b2);

:: STIRL2_1:th 3
theorem
for b1, b2 being Element of bool NAT holds
min(min* b1,min* b2) <= min* (b1 \/ b2);

:: STIRL2_1:th 4
theorem
for b1, b2 being Element of bool NAT
      st not min* b1 in b1 /\ b2
   holds min* b1 = min* (b1 \ b2);

:: STIRL2_1:th 5
theorem
for b1 being Element of NAT holds
   min* {b1} = b1 & min {b1} = b1;

:: STIRL2_1:th 6
theorem
for b1, b2 being Element of NAT holds
min* {b1,b2} = min(b1,b2) & min {b1,b2} = min(b1,b2);

:: STIRL2_1:th 7
theorem
for b1, b2, b3 being Element of NAT holds
min* {b1,b2,b3} = min(b1,min(b2,b3));

:: STIRL2_1:th 8
theorem
for b1 being Element of NAT holds
   b1 is Element of bool NAT;

:: STIRL2_1:condreg 1
registration
  let a1 be Element of NAT;
  cluster -> natural (Element of a1);
end;

:: STIRL2_1:th 9
theorem
for b1 being Element of NAT
for b2 being non empty Element of bool NAT
      st b2 c= b1
   holds b1 - 1 is Element of NAT;

:: STIRL2_1:th 10
theorem
for b1, b2 being Element of NAT
      st b1 in b2
   holds b1 <= b2 - 1 & b2 - 1 is Element of NAT;

:: STIRL2_1:th 11
theorem
for b1 being Element of NAT holds
   min* b1 = 0;

:: STIRL2_1:th 12
theorem
for b1 being Element of NAT
for b2 being non empty Element of bool NAT
      st b2 c= b1
   holds min* b2 <= b1 - 1;

:: STIRL2_1:th 13
theorem
for b1 being Element of NAT
for b2 being non empty Element of bool NAT
      st b2 c= b1 & b2 <> {b1 - 1}
   holds min* b2 < b1 - 1;

:: STIRL2_1:th 14
theorem
for b1 being Element of NAT
for b2 being Element of bool NAT
      st b2 c= b1 & 0 < b1
   holds min* b2 <= b1 - 1;

:: STIRL2_1:funcnot 1 => STIRL2_1:func 1
definition
  let a1 be Element of NAT;
  let a2 be set;
  let a3 be Function-like quasi_total Relation of a1,a2;
  let a4 be set;
  redefine func a3 " a4 -> Element of bool NAT;
end;

:: STIRL2_1:funcnot 2 => STIRL2_1:func 2
definition
  let a1 be set;
  let a2 be Element of NAT;
  let a3 be Function-like quasi_total Relation of a1,a2;
  let a4 be set;
  redefine func a3 . a4 -> Element of a2;
end;

:: STIRL2_1:funcreg 1
registration
  let a1 be set;
  let a2 be Element of bool NAT;
  let a3 be Function-like quasi_total Relation of a1,a2;
  let a4 be set;
  cluster a3 . a4 -> natural;
end;

:: STIRL2_1:attrnot 1 => STIRL2_1:attr 1
definition
  let a1, a2 be natural set;
  let a3 be Function-like quasi_total Relation of a1,a2;
  attr a3 is "increasing means
    (a1 = 0 implies a2 = 0) &
     (a2 = 0 implies a1 = 0) &
     (for b1, b2 being Element of NAT
           st b1 in rng a3 & b2 in rng a3 & b1 < b2
        holds min* (a3 " {b1}) < min* (a3 " {b2}));
end;

:: STIRL2_1:dfs 1
definiens
  let a1, a2 be natural set;
  let a3 be Function-like quasi_total Relation of a1,a2;
To prove
     a3 is "increasing
it is sufficient to prove
  thus (a1 = 0 implies a2 = 0) &
     (a2 = 0 implies a1 = 0) &
     (for b1, b2 being Element of NAT
           st b1 in rng a3 & b2 in rng a3 & b1 < b2
        holds min* (a3 " {b1}) < min* (a3 " {b2}));

:: STIRL2_1:def 1
theorem
for b1, b2 being natural set
for b3 being Function-like quasi_total Relation of b1,b2 holds
      b3 is "increasing(b1, b2)
   iff
      (b1 = 0 implies b2 = 0) &
       (b2 = 0 implies b1 = 0) &
       (for b4, b5 being Element of NAT
             st b4 in rng b3 & b5 in rng b3 & b4 < b5
          holds min* (b3 " {b4}) < min* (b3 " {b5}));

:: STIRL2_1:th 15
theorem
for b1, b2 being Element of NAT
for b3 being Function-like quasi_total Relation of b1,b2
      st b1 = 0 & b2 = 0
   holds b3 is onto(b1, b2) & b3 is "increasing(b1, b2);

:: STIRL2_1:th 16
theorem
for b1, b2, b3 being Element of NAT
for b4 being Function-like quasi_total Relation of b2,b1
      st 0 < b2
   holds min* (b4 " {b3}) <= b2 - 1;

:: STIRL2_1:th 17
theorem
for b1, b2 being Element of NAT
for b3 being Function-like quasi_total Relation of b1,b2
      st b3 is onto(b1, b2)
   holds b2 <= b1;

:: STIRL2_1:th 18
theorem
for b1, b2 being Element of NAT
for b3 being Function-like quasi_total Relation of b1,b2
   st b3 is onto(b1, b2) & b3 is "increasing(b1, b2)
for b4 being Element of NAT
      st b4 < b2
   holds b4 <= min* (b3 " {b4});

:: STIRL2_1:th 19
theorem
for b1, b2 being Element of NAT
for b3 being Function-like quasi_total Relation of b2,b1
   st b3 is onto(b2, b1) & b3 is "increasing(b2, b1)
for b4 being Element of NAT
      st b4 < b1
   holds min* (b3 " {b4}) <= (b2 - b1) + b4;

:: STIRL2_1:th 20
theorem
for b1, b2 being Element of NAT
for b3 being Function-like quasi_total Relation of b1,b2
      st b3 is onto(b1, b2) & b3 is "increasing(b1, b2) & b1 = b2
   holds b3 = id b1;

:: STIRL2_1:th 21
theorem
for b1, b2 being Element of NAT
for b3 being Function-like quasi_total Relation of b2,b1
      st b3 = id b2 & 0 < b2
   holds b3 is "increasing(b2, b1);

:: STIRL2_1:th 22
theorem
for b1, b2 being Element of NAT
      st    b1 = 0
        iff
           b2 = 0
   holds ex b3 being Function-like quasi_total Relation of b1,b2 st
      b3 is "increasing(b1, b2);

:: STIRL2_1:th 23
theorem
for b1, b2 being Element of NAT
      st (b1 = 0 implies b2 = 0) & (b2 = 0 implies b1 = 0) & b2 <= b1
   holds ex b3 being Function-like quasi_total Relation of b1,b2 st
      b3 is onto(b1, b2) & b3 is "increasing(b1, b2);

:: STIRL2_1:sch 1
scheme STIRL2_1:sch 1
{F1 -> natural set,
  F2 -> natural set}:
{b1 where b1 is Function-like quasi_total Relation of F1(),F2(): P1[b1]} is finite


:: STIRL2_1:th 24
theorem
for b1, b2 being natural set holds
{b3 where b3 is Function-like quasi_total Relation of b1,b2: b3 is onto(b1, b2) & b3 is "increasing(b1, b2)} is finite;

:: STIRL2_1:th 25
theorem
for b1, b2 being natural set holds
Card {b3 where b3 is Function-like quasi_total Relation of b1,b2: b3 is onto(b1, b2) & b3 is "increasing(b1, b2)} is Element of NAT;

:: STIRL2_1:funcnot 3 => STIRL2_1:func 3
definition
  let a1, a2 be natural set;
  func A1 block A2 -> Element of NAT equals
    Card {b1 where b1 is Function-like quasi_total Relation of a1,a2: b1 is onto(a1, a2) & b1 is "increasing(a1, a2)};
end;

:: STIRL2_1:def 2
theorem
for b1, b2 being natural set holds
b1 block b2 = Card {b3 where b3 is Function-like quasi_total Relation of b1,b2: b3 is onto(b1, b2) & b3 is "increasing(b1, b2)};

:: STIRL2_1:th 26
theorem
for b1 being Element of NAT holds
   b1 block b1 = 1;

:: STIRL2_1:th 27
theorem
for b1 being Element of NAT
      st b1 <> 0
   holds 0 block b1 = 0;

:: STIRL2_1:th 28
theorem
for b1 being Element of NAT holds
      0 block b1 = 1
   iff
      b1 = 0;

:: STIRL2_1:th 29
theorem
for b1, b2 being Element of NAT
      st b1 < b2
   holds b1 block b2 = 0;

:: STIRL2_1:th 30
theorem
for b1 being Element of NAT holds
      b1 block 0 = 1
   iff
      b1 = 0;

:: STIRL2_1:th 31
theorem
for b1 being Element of NAT
      st b1 <> 0
   holds b1 block 0 = 0;

:: STIRL2_1:th 32
theorem
for b1 being Element of NAT
      st b1 <> 0
   holds b1 block 1 = 1;

:: STIRL2_1:th 33
theorem
for b1, b2 being Element of NAT holds
   (1 <= b1 & b1 <= b2 or b1 = b2)
iff
   0 < b2 block b1;

:: STIRL2_1:sch 2
scheme STIRL2_1:sch 2
{F1 -> set,
  F2 -> set,
  F3 -> set,
  F4 -> set,
  F5 -> Function-like quasi_total Relation of F1(),F2(),
  F6 -> set}:
ex b1 being Function-like quasi_total Relation of F3(),F4() st
   b1 | F1() = F5() &
    (for b2 being set
          st b2 in F3() \ F1()
       holds b1 . b2 = F6(b2))
provided
   for b1 being set
         st b1 in F3() \ F1()
      holds F6(b1) in F4()
and
   F1() c= F3() & F2() c= F4()
and
   (F2() is empty implies F1() is empty);


:: STIRL2_1:sch 3
scheme STIRL2_1:sch 3
{F1 -> set,
  F2 -> set,
  F3 -> set,
  F4 -> set,
  F5 -> set}:
Card {b1 where b1 is Function-like quasi_total Relation of F1(),F2(): P1[b1, F1(), F2()]} = Card {b1 where b1 is Function-like quasi_total Relation of F3(),F4(): P1[b1, F3(), F4()] &
 rng (b1 | F1()) c= F2() &
 (for b2 being set
       st b2 in F3() \ F1()
    holds b1 . b2 = F5(b2))}
provided
   for b1 being set
         st b1 in F3() \ F1()
      holds F5(b1) in F4()
and
   F1() c= F3() & F2() c= F4()
and
   (F2() is empty implies F1() is empty)
and
   for b1 being Function-like quasi_total Relation of F3(),F4()
         st for b2 being set
                 st b2 in F3() \ F1()
              holds F5(b2) = b1 . b2
      holds    P1[b1, F3(), F4()]
      iff
         P1[b1 | F1(), F1(), F2()];


:: STIRL2_1:sch 4
scheme STIRL2_1:sch 4
{F1 -> set,
  F2 -> set,
  F3 -> set,
  F4 -> set}:
Card {b1 where b1 is Function-like quasi_total Relation of F1(),F2(): P1[b1, F1(), F2()]} = Card {b1 where b1 is Function-like quasi_total Relation of F1() \/ {F3()},F2() \/ {F4()}: P1[b1, F1() \/ {F3()}, F2() \/ {F4()}] & rng (b1 | F1()) c= F2() & b1 . F3() = F4()}
provided
   (F2() is empty implies F1() is empty)
and
   not F3() in F1()
and
   for b1 being Function-like quasi_total Relation of F1() \/ {F3()},F2() \/ {F4()}
         st b1 . F3() = F4()
      holds    P1[b1, F1() \/ {F3()}, F2() \/ {F4()}]
      iff
         P1[b1 | F1(), F1(), F2()];


:: STIRL2_1:th 34
theorem
for b1, b2 being Element of NAT
for b3 being Function-like quasi_total Relation of b1 + 1,b2 + 1
      st b3 is onto(b1 + 1, b2 + 1) &
         b3 is "increasing(b1 + 1, b2 + 1) &
         b3 " {b3 . b1} = {b1}
   holds b3 . b1 = b2;

:: STIRL2_1:th 35
theorem
for b1, b2 being Element of NAT
for b3 being Function-like quasi_total Relation of b1 + 1,b2
      st b2 <> 0 &
         b3 " {b3 . b1} <> {b1}
   holds ex b4 being Element of NAT st
      b4 in b3 " {b3 . b1} & b4 <> b1;

:: STIRL2_1:th 36
theorem
for b1, b2, b3, b4 being Element of NAT
for b5 being Function-like quasi_total Relation of b1,b2
for b6 being Function-like quasi_total Relation of b1 + b3,b2 + b4
   st b6 is "increasing(b1 + b3, b2 + b4) & b5 = b6 | b1
for b7, b8 being Element of NAT
      st b7 in rng b5 & b8 in rng b5 & b7 < b8
   holds min* (b5 " {b7}) < min* (b5 " {b8});

:: STIRL2_1:th 37
theorem
for b1, b2 being Element of NAT
for b3 being Function-like quasi_total Relation of b1 + 1,b2 + 1
      st b3 is onto(b1 + 1, b2 + 1) &
         b3 is "increasing(b1 + 1, b2 + 1) &
         b3 " {b3 . b1} = {b1}
   holds rng (b3 | b1) c= b2 &
    (for b4 being Function-like quasi_total Relation of b1,b2
          st b4 = b3 | b1
       holds b4 is onto(b1, b2) & b4 is "increasing(b1, b2));

:: STIRL2_1:th 38
theorem
for b1, b2 being Element of NAT
for b3 being Function-like quasi_total Relation of b1 + 1,b2
for b4 being Function-like quasi_total Relation of b1,b2
      st b3 is onto(b1 + 1, b2) &
         b3 is "increasing(b1 + 1, b2) &
         b3 " {b3 . b1} <> {b1} &
         b3 | b1 = b4
   holds b4 is onto(b1, b2) & b4 is "increasing(b1, b2);

:: STIRL2_1:th 39
theorem
for b1, b2, b3 being Element of NAT
for b4 being Function-like quasi_total Relation of b1,b2
for b5 being Function-like quasi_total Relation of b1 + 1,b2 + b3
   st b4 is onto(b1, b2) & b4 is "increasing(b1, b2) & b4 = b5 | b1
for b6, b7 being Element of NAT
      st b6 in rng b5 & b7 in rng b5 & b6 < b7
   holds min* (b5 " {b6}) < min* (b5 " {b7});

:: STIRL2_1:th 40
theorem
for b1, b2 being Element of NAT
for b3 being Function-like quasi_total Relation of b1,b2
for b4 being Function-like quasi_total Relation of b1 + 1,b2 + 1
      st b3 is onto(b1, b2) & b3 is "increasing(b1, b2) & b3 = b4 | b1 & b4 . b1 = b2
   holds b4 is onto(b1 + 1, b2 + 1) &
    b4 is "increasing(b1 + 1, b2 + 1) &
    b4 " {b4 . b1} = {b1};

:: STIRL2_1:th 41
theorem
for b1, b2 being Element of NAT
for b3 being Function-like quasi_total Relation of b1,b2
for b4 being Function-like quasi_total Relation of b1 + 1,b2
      st b3 is onto(b1, b2) & b3 is "increasing(b1, b2) & b3 = b4 | b1 & b4 . b1 < b2
   holds b4 is onto(b1 + 1, b2) &
    b4 is "increasing(b1 + 1, b2) &
    b4 " {b4 . b1} <> {b1};

:: STIRL2_1:th 42
theorem
for b1, b2 being Element of NAT holds
Card {b3 where b3 is Function-like quasi_total Relation of b1 + 1,b2 + 1: b3 is onto(b1 + 1, b2 + 1) &
 b3 is "increasing(b1 + 1, b2 + 1) &
 b3 " {b3 . b1} = {b1}} = Card {b3 where b3 is Function-like quasi_total Relation of b1,b2: b3 is onto(b1, b2) & b3 is "increasing(b1, b2)};

:: STIRL2_1:th 43
theorem
for b1, b2, b3 being Element of NAT
      st b3 < b1
   holds Card {b4 where b4 is Function-like quasi_total Relation of b2 + 1,b1: b4 is onto(b2 + 1, b1) &
    b4 is "increasing(b2 + 1, b1) &
    b4 " {b4 . b2} <> {b2} &
    b4 . b2 = b3} = Card {b4 where b4 is Function-like quasi_total Relation of b2,b1: b4 is onto(b2, b1) & b4 is "increasing(b2, b1)};

:: STIRL2_1:funcnot 4 => STIRL2_1:func 4
definition
  let a1 be non empty set;
  let a2 be finite T-Sequence of a1;
  let a3 be Function-like quasi_total Relation of [:a1,a1:],a1;
  assume (a3 is having_a_unity(a1) or 1 <= len a2);
  func A3 "**" A2 -> Element of a1 means
    it = the_unity_wrt a3
    if a3 is having_a_unity(a1) & len a2 = 0
    otherwise ex b1 being Function-like quasi_total Relation of NAT,a1 st
       b1 . 0 = a2 . 0 &
        (for b2 being Element of NAT
              st b2 + 1 < len a2
           holds b1 . (b2 + 1) = a3 .(b1 . b2,a2 . (b2 + 1))) &
        it = b1 . ((len a2) - 1);
end;

:: STIRL2_1:def 3
theorem
for b1 being non empty set
for b2 being finite T-Sequence of b1
for b3 being Function-like quasi_total Relation of [:b1,b1:],b1
   st (b3 is having_a_unity(b1) or 1 <= len b2)
for b4 being Element of b1 holds
   (b3 is having_a_unity(b1) & len b2 = 0 implies    (b4 = b3 "**" b2
    iff
       b4 = the_unity_wrt b3)) &
    (b3 is having_a_unity(b1) & len b2 = 0 or    (b4 = b3 "**" b2
    iff
       ex b5 being Function-like quasi_total Relation of NAT,b1 st
          b5 . 0 = b2 . 0 &
           (for b6 being Element of NAT
                 st b6 + 1 < len b2
              holds b5 . (b6 + 1) = b3 .(b5 . b6,b2 . (b6 + 1))) &
           b4 = b5 . ((len b2) - 1)));

:: STIRL2_1:th 44
theorem
for b1 being non empty set
for b2 being Function-like quasi_total Relation of [:b1,b1:],b1
for b3 being Element of b1 holds
   b2 "**" <%b3%> = b3;

:: STIRL2_1:th 45
theorem
for b1 being non empty set
for b2 being finite T-Sequence of b1
for b3 being Function-like quasi_total Relation of [:b1,b1:],b1
for b4 being Element of b1
      st (b3 is not having_a_unity(b1) implies 0 < len b2)
   holds b3 "**" (b2 ^ <%b4%>) = b3 .(b3 "**" b2,b4);

:: STIRL2_1:th 46
theorem
for b1 being non empty set
for b2 being finite T-Sequence of b1
      st b2 <> <%> b1
   holds ex b3 being finite T-Sequence of b1 st
      ex b4 being Element of b1 st
         b2 = b3 ^ <%b4%>;

:: STIRL2_1:sch 5
scheme STIRL2_1:sch 5
{F1 -> non empty set}:
for b1 being finite T-Sequence of F1() holds
   P1[b1]
provided
   P1[<%> F1()]
and
   for b1 being finite T-Sequence of F1()
   for b2 being Element of F1()
         st P1[b1]
      holds P1[b1 ^ <%b2%>];


:: STIRL2_1:th 47
theorem
for b1 being non empty set
for b2, b3 being finite T-Sequence of b1
for b4 being Function-like quasi_total Relation of [:b1,b1:],b1
      st b4 is associative(b1) &
         (b4 is having_a_unity(b1) or 1 <= len b2 & 1 <= len b3)
   holds b4 "**" (b2 ^ b3) = b4 .(b4 "**" b2,b4 "**" b3);

:: STIRL2_1:funcnot 5 => STIRL2_1:func 5
definition
  let a1 be non empty set;
  let a2, a3 be Element of a1;
  redefine func <%a2, a3%> -> finite T-Sequence of a1;
end;

:: STIRL2_1:funcnot 6 => STIRL2_1:func 6
definition
  let a1 be non empty set;
  let a2, a3, a4 be Element of a1;
  redefine func <%a2, a3, a4%> -> finite T-Sequence of a1;
end;

:: STIRL2_1:th 48
theorem
for b1 being non empty set
for b2 being Function-like quasi_total Relation of [:b1,b1:],b1
for b3, b4 being Element of b1 holds
b2 "**" <%b3,b4%> = b2 .(b3,b4);

:: STIRL2_1:th 49
theorem
for b1 being non empty set
for b2 being Function-like quasi_total Relation of [:b1,b1:],b1
for b3, b4, b5 being Element of b1 holds
b2 "**" <%b3,b4,b5%> = b2 .(b2 .(b3,b4),b5);

:: STIRL2_1:funcnot 7 => STIRL2_1:func 7
definition
  let a1 be finite T-Sequence of NAT;
  func Sum A1 -> Element of NAT equals
    addnat "**" a1;
end;

:: STIRL2_1:def 4
theorem
for b1 being finite T-Sequence of NAT holds
   Sum b1 = addnat "**" b1;

:: STIRL2_1:th 50
theorem
for b1 being Element of NAT
for b2 being finite T-Sequence of NAT
      st for b3 being Element of NAT
              st b3 in dom b2
           holds b2 . b3 <= b1
   holds Sum b2 <= (len b2) * b1;

:: STIRL2_1:th 51
theorem
for b1 being Element of NAT
for b2 being finite T-Sequence of NAT
      st for b3 being Element of NAT
              st b3 in dom b2
           holds b1 <= b2 . b3
   holds (len b2) * b1 <= Sum b2;

:: STIRL2_1:th 52
theorem
for b1 being Element of NAT
for b2 being finite T-Sequence of NAT
      st 0 < len b2 &
         (ex b3 being set st
            b3 in dom b2 & b2 . b3 = b1)
   holds b1 <= Sum b2;

:: STIRL2_1:th 53
theorem
for b1 being finite T-Sequence of NAT holds
      Sum b1 = 0
   iff
      (len b1 = 0 or for b2 being Element of NAT
            st b2 in dom b1
         holds b1 . b2 = 0);

:: STIRL2_1:th 54
theorem
for b1 being Relation-like Function-like set
for b2 being Element of NAT holds
   (union proj2 (b1 | b2)) \/ (b1 . b2) = union proj2 (b1 | (b2 + 1));

:: STIRL2_1:sch 6
scheme STIRL2_1:sch 6
{F1 -> non empty set,
  F2 -> Element of NAT}:
ex b1 being finite T-Sequence of F1() st
   dom b1 = F2() &
    (for b2 being Element of NAT
          st b2 in F2()
       holds P1[b2, b1 . b2])
provided
   for b1 being Element of NAT
         st b1 in F2()
      holds ex b2 being Element of F1() st
         P1[b1, b2];


:: STIRL2_1:sch 7
scheme STIRL2_1:sch 7
{F1 -> non empty set,
  F2 -> finite T-Sequence of F1()}:
ex b1 being finite T-Sequence of NAT st
   dom b1 = dom F2() &
    (for b2 being Element of NAT
          st b2 in dom b1
       holds b1 . b2 = Card (F2() . b2)) &
    Card union proj2 F2() = Sum b1
provided
   for b1 being Element of NAT
         st b1 in dom F2()
      holds F2() . b1 is finite
and
   for b1, b2 being Element of NAT
         st b1 in dom F2() & b2 in dom F2() & b1 <> b2
      holds F2() . b1 misses F2() . b2;


:: STIRL2_1:sch 8
scheme STIRL2_1:sch 8
{F1 -> finite set,
  F2 -> finite set,
  F3 -> set,
  F4 -> Function-like quasi_total Relation of card F2(),F2()}:
ex b1 being finite T-Sequence of NAT st
   dom b1 = card F2() &
    Card {b2 where b2 is Function-like quasi_total Relation of F1(),F2(): P1[b2]} = Sum b1 &
    (for b2 being Element of NAT
          st b2 in dom b1
       holds b1 . b2 = Card {b3 where b3 is Function-like quasi_total Relation of F1(),F2(): P1[b3] & b3 . F3() = F4() . b2})
provided
   F4() is onto(card F2(), F2()) & F4() is one-to-one
and
   F2() is not empty
and
   F3() in F1();


:: STIRL2_1:th 55
theorem
for b1, b2 being natural set holds
b2 * (b1 block b2) = Card {b3 where b3 is Function-like quasi_total Relation of b1 + 1,b2: b3 is onto(b1 + 1, b2) &
 b3 is "increasing(b1 + 1, b2) &
 b3 " {b3 . b1} <> {b1}};

:: STIRL2_1:th 56
theorem
for b1, b2 being natural set holds
(b1 + 1) block (b2 + 1) = ((b2 + 1) * (b1 block (b2 + 1))) + (b1 block b2);

:: STIRL2_1:th 57
theorem
for b1 being natural set
      st 1 <= b1
   holds b1 block 2 = (1 / 2) * ((2 |^ b1) - 2);

:: STIRL2_1:th 58
theorem
for b1 being Element of NAT
      st 2 <= b1
   holds b1 block 3 = (1 / 6) * (((3 |^ b1) - (3 * (2 |^ b1))) + 3);

:: STIRL2_1:th 59
theorem
for b1 being Element of NAT
      st 3 <= b1
   holds b1 block 4 = (1 / 24) * ((((4 |^ b1) - (4 * (3 |^ b1))) + (6 * (2 |^ b1))) - 4);

:: STIRL2_1:th 60
theorem
3 ! = 6 & 4 ! = 24;

:: STIRL2_1:th 61
theorem
for b1 being Element of NAT holds
   b1 choose 1 = b1 &
    b1 choose 2 = (b1 * (b1 - 1)) / 2 &
    b1 choose 3 = ((b1 * (b1 - 1)) * (b1 - 2)) / 6 &
    b1 choose 4 = (((b1 * (b1 - 1)) * (b1 - 2)) * (b1 - 3)) / 24;

:: STIRL2_1:th 62
theorem
for b1 being Element of NAT holds
   (b1 + 1) block b1 = (b1 + 1) choose 2;

:: STIRL2_1:th 63
theorem
for b1 being Element of NAT holds
   (b1 + 2) block b1 = (3 * ((b1 + 2) choose 4)) + ((b1 + 2) choose 3);

:: STIRL2_1:th 64
theorem
for b1 being Relation-like Function-like set
for b2 being set holds
   proj2 (b1 | ((proj1 b1) \ (b1 " {b2}))) = (proj2 b1) \ {b2} &
    (for b3 being set
          st b3 <> b2
       holds (b1 | ((proj1 b1) \ (b1 " {b2}))) " {b3} = b1 " {b3});

:: STIRL2_1:th 65
theorem
for b1 being Element of NAT
for b2, b3 being set
      st Card b2 = b1 + 1 & b3 in b2
   holds Card (b2 \ {b3}) = b1;

:: STIRL2_1:sch 9
scheme STIRL2_1:sch 9
for b1 being Relation-like Function-like set
      st proj2 b1 is finite
   holds P1[b1]
provided
   P1[{}]
and
   for b1 being Relation-like Function-like set
         st for b2 being set
                 st b2 in proj2 b1 & P2[b2, b1]
              holds P1[b1 | ((proj1 b1) \ (b1 " {b2}))]
      holds P1[b1];


:: STIRL2_1:th 66
theorem
for b1 being Element of bool NAT
      st b1 is finite
   holds ex b2 being Element of NAT st
      for b3 being Element of NAT
            st b3 in b1
         holds b3 <= b2;

:: STIRL2_1:th 67
theorem
for b1, b2, b3, b4 being set
   st (b2 is empty implies b1 is empty) & not b3 in b1
for b5 being Function-like quasi_total Relation of b1,b2 holds
   ex b6 being Function-like quasi_total Relation of b1 \/ {b3},b2 \/ {b4} st
      b6 | b1 = b5 & b6 . b3 = b4;

:: STIRL2_1:th 68
theorem
for b1, b2, b3, b4 being set
   st (b2 is empty implies b1 is empty)
for b5 being Function-like quasi_total Relation of b1,b2
for b6 being Function-like quasi_total Relation of b1 \/ {b3},b2 \/ {b4}
      st b6 | b1 = b5 & b6 . b3 = b4
   holds (b5 is onto(b1, b2) implies b6 is onto(b1 \/ {b3}, b2 \/ {b4})) &
    (not b4 in b2 & b5 is one-to-one implies b6 is one-to-one);

:: STIRL2_1:th 69
theorem
for b1 being finite Element of bool NAT holds
   ex b2 being Function-like quasi_total Relation of b1,card b1 st
      b2 is bijective(b1, card b1) &
       (for b3, b4 being Element of NAT
             st b3 in dom b2 & b4 in dom b2 & b3 < b4
          holds b2 . b3 < b2 . b4);

:: STIRL2_1:th 70
theorem
for b1, b2 being finite set
for b3 being Function-like quasi_total Relation of b1,b2
      st card b1 = card b2
   holds    b3 is onto(b1, b2)
   iff
      b3 is one-to-one;

:: STIRL2_1:th 71
theorem
for b1, b2 being Relation-like Function-like set
for b3 being set
      st b3 in proj2 (b1 * b2) & b2 is one-to-one
   holds ex b4 being set st
      b4 in proj1 b2 &
       b4 in proj2 b1 &
       b2 " {b3} = {b4} &
       b1 " {b4} = (b1 * b2) " {b3};

:: STIRL2_1:attrnot 2 => STIRL2_1:attr 2
definition
  let a1, a2 be Element of bool NAT;
  let a3 be Function-like quasi_total Relation of a1,a2;
  attr a3 is "increasing means
    for b1, b2 being Element of NAT
          st b1 in rng a3 & b2 in rng a3 & b1 < b2
       holds min* (a3 " {b1}) < min* (a3 " {b2});
end;

:: STIRL2_1:dfs 5
definiens
  let a1, a2 be Element of bool NAT;
  let a3 be Function-like quasi_total Relation of a1,a2;
To prove
     a3 is "increasing
it is sufficient to prove
  thus for b1, b2 being Element of NAT
          st b1 in rng a3 & b2 in rng a3 & b1 < b2
       holds min* (a3 " {b1}) < min* (a3 " {b2});

:: STIRL2_1:def 5
theorem
for b1, b2 being Element of bool NAT
for b3 being Function-like quasi_total Relation of b1,b2 holds
      b3 is "increasing(b1, b2)
   iff
      for b4, b5 being Element of NAT
            st b4 in rng b3 & b5 in rng b3 & b4 < b5
         holds min* (b3 " {b4}) < min* (b3 " {b5});

:: STIRL2_1:th 72
theorem
for b1, b2 being Element of bool NAT
for b3 being Function-like quasi_total Relation of b1,b2
      st b3 is "increasing(b1, b2)
   holds min* rng b3 = b3 . min* dom b3;

:: STIRL2_1:th 73
theorem
for b1, b2 being Element of bool NAT
for b3 being Function-like quasi_total Relation of b1,b2
      st rng b3 is finite
   holds ex b4 being Function-like quasi_total Relation of b1,b2 st
      ex b5 being Function-like quasi_total bijective Relation of rng b3,rng b3 st
         b3 = b5 * b4 & rng b3 = rng b4 & b4 is "increasing(b1, b2);

:: STIRL2_1:th 74
theorem
for b1, b2, b3 being Element of bool NAT
for b4 being Function-like quasi_total Relation of b1,b2
   st rng b4 is finite
for b5, b6 being Function-like quasi_total Relation of b1,b3
for b7, b8 being Relation-like Function-like set
      st b7 is one-to-one & b8 is one-to-one & rng b5 = rng b6 & rng b5 = proj1 b7 & proj1 b7 = proj1 b8 & b4 = b5 * b7 & b4 = b6 * b8 & b5 is "increasing(b1, b3) & b6 is "increasing(b1, b3)
   holds b7 = b8 & b5 = b6;

:: STIRL2_1:th 75
theorem
for b1, b2 being Element of bool NAT
for b3 being Function-like quasi_total Relation of b1,b2
   st rng b3 is finite
for b4, b5 being Function-like quasi_total Relation of b1,b2
for b6, b7 being Function-like quasi_total bijective Relation of rng b3,rng b3
      st b3 = b6 * b4 & b3 = b7 * b5 & rng b3 = rng b4 & rng b3 = rng b5 & b4 is "increasing(b1, b2) & b5 is "increasing(b1, b2)
   holds b6 = b7 & b4 = b5;