Article GOBRD10, MML version 4.99.1005

:: GOBRD10:prednot 1 => GOBRD10:pred 1
definition
  let a1, a2 be Element of NAT;
  pred A1,A2 are_adjacent1 means
    (a2 <> a1 + 1) implies a1 = a2 + 1;
  symmetry;
::  for a1, a2 being Element of NAT
::        st a1,a2 are_adjacent1
::     holds a2,a1 are_adjacent1;
  irreflexivity;
::  for a1 being Element of NAT holds
::     not a1,a1 are_adjacent1;
end;

:: GOBRD10:dfs 1
definiens
  let a1, a2 be Element of NAT;
To prove
     a1,a2 are_adjacent1
it is sufficient to prove
  thus (a2 <> a1 + 1) implies a1 = a2 + 1;

:: GOBRD10:def 1
theorem
for b1, b2 being Element of NAT holds
   b1,b2 are_adjacent1
iff
   (b2 = b1 + 1 or b1 = b2 + 1);

:: GOBRD10:th 1
theorem
for b1, b2 being Element of NAT
      st b1,b2 are_adjacent1
   holds b1 + 1,b2 + 1 are_adjacent1;

:: GOBRD10:th 2
theorem
for b1, b2 being Element of NAT
      st b1,b2 are_adjacent1 & 1 <= b1 & 1 <= b2
   holds b1 -' 1,b2 -' 1 are_adjacent1;

:: GOBRD10:prednot 2 => GOBRD10:pred 2
definition
  let a1, a2, a3, a4 be Element of NAT;
  pred A1,A2,A3,A4 are_adjacent2 means
    ((a1,a3 are_adjacent1 implies a2 <> a4)) implies a1 = a3 & a2,a4 are_adjacent1;
end;

:: GOBRD10:dfs 2
definiens
  let a1, a2, a3, a4 be Element of NAT;
To prove
     a1,a2,a3,a4 are_adjacent2
it is sufficient to prove
  thus ((a1,a3 are_adjacent1 implies a2 <> a4)) implies a1 = a3 & a2,a4 are_adjacent1;

:: GOBRD10:def 2
theorem
for b1, b2, b3, b4 being Element of NAT holds
   b1,b2,b3,b4 are_adjacent2
iff
   (b1,b3 are_adjacent1 & b2 = b4 or b1 = b3 & b2,b4 are_adjacent1);

:: GOBRD10:th 3
theorem
for b1, b2, b3, b4 being Element of NAT
      st b1,b3,b2,b4 are_adjacent2
   holds b1 + 1,b3 + 1,b2 + 1,b4 + 1 are_adjacent2;

:: GOBRD10:th 4
theorem
for b1, b2, b3, b4 being Element of NAT
      st b1,b3,b2,b4 are_adjacent2 & 1 <= b1 & 1 <= b2 & 1 <= b3 & 1 <= b4
   holds b1 -' 1,b3 -' 1,b2 -' 1,b4 -' 1 are_adjacent2;

:: GOBRD10:funcnot 1 => GOBRD10:func 1
definition
  let a1, a2 be Element of NAT;
  redefine func A1 |-> A2 -> FinSequence of NAT means
    len it = a1 &
     (for b1 being Element of NAT
           st 1 <= b1 & b1 <= a1
        holds it . b1 = a2);
end;

:: GOBRD10:def 3
theorem
for b1, b2 being Element of NAT
for b3 being FinSequence of NAT holds
      b3 = b1 |-> b2
   iff
      len b3 = b1 &
       (for b4 being Element of NAT
             st 1 <= b4 & b4 <= b1
          holds b3 . b4 = b2);

:: GOBRD10:th 6
theorem
for b1, b2, b3 being Element of NAT
      st b2 <= b1 & b3 <= b1
   holds ex b4 being FinSequence of NAT st
      b4 . 1 = b2 &
       b4 . len b4 = b3 &
       len b4 = ((b2 -' b3) + (b3 -' b2)) + 1 &
       (for b5, b6 being Element of NAT
             st 1 <= b5 & b5 <= len b4 & b6 = b4 . b5
          holds b6 <= b1) &
       (for b5 being Element of NAT
             st 1 <= b5 &
                b5 < len b4 &
                b4 . (b5 + 1) <> (b4 /. b5) + 1
          holds b4 . b5 = (b4 /. (b5 + 1)) + 1);

:: GOBRD10:th 7
theorem
for b1, b2, b3 being Element of NAT
      st b2 <= b1 & b3 <= b1
   holds ex b4 being FinSequence of NAT st
      b4 . 1 = b2 &
       b4 . len b4 = b3 &
       len b4 = ((b2 -' b3) + (b3 -' b2)) + 1 &
       (for b5, b6 being Element of NAT
             st 1 <= b5 & b5 <= len b4 & b6 = b4 . b5
          holds b6 <= b1) &
       (for b5 being Element of NAT
             st 1 <= b5 & b5 < len b4
          holds b4 /. b5,b4 /. (b5 + 1) are_adjacent1);

:: GOBRD10:th 8
theorem
for b1, b2, b3, b4, b5, b6 being Element of NAT
      st b3 <= b1 & b4 <= b2 & b5 <= b1 & b6 <= b2
   holds ex b7, b8 being FinSequence of NAT st
      (for b9, b10, b11 being Element of NAT
             st b9 in dom b7 & b10 = b7 . b9 & b11 = b8 . b9
          holds b10 <= b1 & b11 <= b2) &
       b7 . 1 = b3 &
       b7 . len b7 = b5 &
       b8 . 1 = b4 &
       b8 . len b8 = b6 &
       len b7 = len b8 &
       len b7 = ((((b3 -' b5) + (b5 -' b3)) + (b4 -' b6)) + (b6 -' b4)) + 1 &
       (for b9 being Element of NAT
             st 1 <= b9 & b9 < len b7
          holds b7 /. b9,b8 /. b9,b7 /. (b9 + 1),b8 /. (b9 + 1) are_adjacent2);

:: GOBRD10:th 9
theorem
for b1, b2 being Element of NAT
for b3 being set
for b4 being Element of bool b3
for b5 being Matrix of b1,b2,bool b3
   st (ex b6, b7 being Element of NAT st
         b6 in Seg b1 & b7 in Seg b2 & b5 *(b6,b7) c= b4) &
      (for b6, b7, b8, b9 being Element of NAT
            st b6 in Seg b1 & b8 in Seg b1 & b7 in Seg b2 & b9 in Seg b2 & b6,b7,b8,b9 are_adjacent2
         holds    b5 *(b6,b7) c= b4
         iff
            b5 *(b8,b9) c= b4)
for b6, b7 being Element of NAT
      st b6 in Seg b1 & b7 in Seg b2
   holds b5 *(b6,b7) c= b4;