Article GOBOARD2, MML version 4.99.1005

:: GOBOARD2:sch 1
scheme GOBOARD2:sch 1
{F1 -> non empty set,
  F2 -> Element of NAT,
  F3 -> Element of F1()}:
ex b1 being FinSequence of F1() st
   len b1 = F2() &
    (for b2 being Element of NAT
          st b2 in dom b1
       holds b1 /. b2 = F3(b2))


:: GOBOARD2:th 1
theorem
for b1 being finite Element of bool REAL
      st b1 <> {}
   holds b1 is bounded_above & upper_bound b1 in b1 & b1 is bounded_below & lower_bound b1 in b1;

:: GOBOARD2:th 3
theorem
for b1 being natural set
for b2 being Relation-like Function-like FinSequence-like set holds
      1 <= b1 & b1 + 1 <= len b2
   iff
      b1 in dom b2 & b1 + 1 in dom b2;

:: GOBOARD2:th 4
theorem
for b1 being natural set
for b2 being Relation-like Function-like FinSequence-like set holds
      1 <= b1 & b1 + 2 <= len b2
   iff
      b1 in dom b2 & b1 + 1 in dom b2 & b1 + 2 in dom b2;

:: GOBOARD2:th 5
theorem
for b1 being non empty set
for b2, b3 being FinSequence of b1
for b4 being Element of NAT
      st 1 <= b4 & b4 <= len b3
   holds (b2 ^ b3) /. (b4 + len b2) = b3 /. b4;

:: GOBOARD2:th 6
theorem
for b1 being FinSequence of the carrier of TOP-REAL 2
      st for b2, b3 being Element of NAT
              st b2 + 1 < b3 & b2 in dom b1 & b2 + 1 in dom b1 & b3 in dom b1 & b3 + 1 in dom b1
           holds LSeg(b1,b2) misses LSeg(b1,b3)
   holds b1 is s.n.c.;

:: GOBOARD2:th 7
theorem
for b1 being FinSequence of the carrier of TOP-REAL 2
for b2 being Element of NAT
      st b1 is unfolded & b1 is s.n.c. & b1 is one-to-one & b1 /. len b1 in LSeg(b1,b2) & b2 in dom b1 & b2 + 1 in dom b1
   holds b2 + 1 = len b1;

:: GOBOARD2:th 8
theorem
for b1 being FinSequence of the carrier of TOP-REAL 2
for b2 being Element of NAT
      st b2 <> 0 & len b1 = b2 + 1
   holds L~ b1 = (L~ (b1 | b2)) \/ LSeg(b1,b2);

:: GOBOARD2:th 9
theorem
for b1 being FinSequence of the carrier of TOP-REAL 2
for b2 being Element of NAT
      st 1 < b2 & len b1 = b2 + 1 & b1 is unfolded & b1 is s.n.c.
   holds (L~ (b1 | b2)) /\ LSeg(b1,b2) = {b1 /. b2};

:: GOBOARD2:th 10
theorem
for b1, b2 being FinSequence of the carrier of TOP-REAL 2
for b3, b4 being Element of NAT
      st len b1 < b3 & b3 + 1 <= len (b1 ^ b2) & b4 + len b1 = b3
   holds LSeg(b1 ^ b2,b3) = LSeg(b2,b4);

:: GOBOARD2:th 11
theorem
for b1, b2 being FinSequence of the carrier of TOP-REAL 2 holds
L~ b1 c= L~ (b1 ^ b2);

:: GOBOARD2:th 12
theorem
for b1 being FinSequence of the carrier of TOP-REAL 2
for b2 being Element of NAT
      st b1 is s.n.c.
   holds b1 | b2 is s.n.c.;

:: GOBOARD2:th 13
theorem
for b1, b2 being FinSequence of the carrier of TOP-REAL 2
      st b1 is special &
         b2 is special &
         ((b1 /. len b1) `1 = (b2 /. 1) `1 or (b1 /. len b1) `2 = (b2 /. 1) `2)
   holds b1 ^ b2 is special;

:: GOBOARD2:th 14
theorem
for b1 being FinSequence of the carrier of TOP-REAL 2
      st b1 <> {}
   holds X_axis b1 <> {};

:: GOBOARD2:th 15
theorem
for b1 being FinSequence of the carrier of TOP-REAL 2
      st b1 <> {}
   holds Y_axis b1 <> {};

:: GOBOARD2:funcreg 1
registration
  let a1 be non empty FinSequence of the carrier of TOP-REAL 2;
  cluster X_axis a1 -> non empty;
end;

:: GOBOARD2:funcreg 2
registration
  let a1 be non empty FinSequence of the carrier of TOP-REAL 2;
  cluster Y_axis a1 -> non empty;
end;

:: GOBOARD2:th 16
theorem
for b1 being FinSequence of the carrier of TOP-REAL 2
for b2 being non empty-yielding tabular X_equal-in-line Y_equal-in-column Y_increasing-in-line X_increasing-in-column FinSequence of (the carrier of TOP-REAL 2) *
   st b1 is special
for b3 being Element of NAT
   st b3 in dom b1 & b3 + 1 in dom b1
for b4, b5, b6, b7 being Element of NAT
      st [b4,b5] in Indices b2 & [b6,b7] in Indices b2 & b1 /. b3 = b2 *(b4,b5) & b1 /. (b3 + 1) = b2 *(b6,b7) & b4 <> b6
   holds b7 = b5;

:: GOBOARD2:th 17
theorem
for b1 being FinSequence of the carrier of TOP-REAL 2
for b2 being non empty-yielding tabular X_equal-in-line Y_equal-in-column Y_increasing-in-line X_increasing-in-column FinSequence of (the carrier of TOP-REAL 2) *
      st (for b3 being Element of NAT
               st b3 in dom b1
            holds ex b4, b5 being Element of NAT st
               [b4,b5] in Indices b2 & b1 /. b3 = b2 *(b4,b5)) &
         b1 is special &
         (for b3 being Element of NAT
               st b3 in dom b1 & b3 + 1 in dom b1
            holds b1 /. b3 <> b1 /. (b3 + 1))
   holds ex b3 being FinSequence of the carrier of TOP-REAL 2 st
      b3 is_sequence_on b2 & L~ b1 = L~ b3 & b3 /. 1 = b1 /. 1 & b3 /. len b3 = b1 /. len b1 & len b1 <= len b3;

:: GOBOARD2:th 18
theorem
for b1 being FinSequence of REAL
   st b1 is increasing
for b2, b3 being Element of NAT
      st b2 in dom b1 & b3 in dom b1 & b2 <= b3
   holds b1 . b2 <= b1 . b3;

:: GOBOARD2:th 19
theorem
for b1 being FinSequence of REAL
   st b1 is increasing
for b2, b3 being Element of NAT
      st b2 in dom b1 & b3 in dom b1 & b2 <> b3
   holds b1 . b2 <> b1 . b3;

:: GOBOARD2:th 20
theorem
for b1, b2 being FinSequence of REAL
for b3 being Element of NAT
      st b1 is increasing & b2 = b1 | Seg b3
   holds b2 is increasing;

:: GOBOARD2:th 21
theorem
for b1 being FinSequence of REAL holds
   ex b2 being FinSequence of REAL st
      proj2 b2 = proj2 b1 & len b2 = card proj2 b1 & b2 is increasing;

:: GOBOARD2:th 22
theorem
for b1, b2 being FinSequence of REAL
      st len b1 = len b2 & proj2 b1 = proj2 b2 & b1 is increasing & b2 is increasing
   holds b1 = b2;

:: GOBOARD2:funcnot 1 => GOBOARD2:func 1
definition
  let a1, a2 be FinSequence of REAL;
  assume a1 <> {} & a2 <> {};
  func GoB(A1,A2) -> tabular FinSequence of (the carrier of TOP-REAL 2) * means
    len it = len a1 &
     width it = len a2 &
     (for b1, b2 being Element of NAT
           st [b1,b2] in Indices it
        holds it *(b1,b2) = |[a1 . b1,a2 . b2]|);
end;

:: GOBOARD2:def 1
theorem
for b1, b2 being FinSequence of REAL
   st b1 <> {} & b2 <> {}
for b3 being tabular FinSequence of (the carrier of TOP-REAL 2) * holds
      b3 = GoB(b1,b2)
   iff
      len b3 = len b1 &
       width b3 = len b2 &
       (for b4, b5 being Element of NAT
             st [b4,b5] in Indices b3
          holds b3 *(b4,b5) = |[b1 . b4,b2 . b5]|);

:: GOBOARD2:funcreg 3
registration
  let a1, a2 be non empty FinSequence of REAL;
  cluster GoB(a1,a2) -> non empty-yielding tabular X_equal-in-line Y_equal-in-column;
end;

:: GOBOARD2:funcreg 4
registration
  let a1, a2 be non empty increasing FinSequence of REAL;
  cluster GoB(a1,a2) -> tabular Y_increasing-in-line X_increasing-in-column;
end;

:: GOBOARD2:funcnot 2 => GOBOARD2:func 2
definition
  let a1 be FinSequence of REAL;
  func Incr A1 -> increasing FinSequence of REAL means
    proj2 it = proj2 a1 & len it = card proj2 a1;
end;

:: GOBOARD2:def 2
theorem
for b1 being FinSequence of REAL
for b2 being increasing FinSequence of REAL holds
      b2 = Incr b1
   iff
      proj2 b2 = proj2 b1 & len b2 = card proj2 b1;

:: GOBOARD2:funcnot 3 => GOBOARD2:func 3
definition
  let a1 be non empty FinSequence of the carrier of TOP-REAL 2;
  func GoB A1 -> tabular FinSequence of (the carrier of TOP-REAL 2) * equals
    GoB(Incr X_axis a1,Incr Y_axis a1);
end;

:: GOBOARD2:def 3
theorem
for b1 being non empty FinSequence of the carrier of TOP-REAL 2 holds
   GoB b1 = GoB(Incr X_axis b1,Incr Y_axis b1);

:: GOBOARD2:th 23
theorem
for b1 being FinSequence of REAL
      st b1 <> {}
   holds Incr b1 <> {};

:: GOBOARD2:funcreg 5
registration
  let a1 be non empty FinSequence of REAL;
  cluster Incr a1 -> non empty increasing;
end;

:: GOBOARD2:funcreg 6
registration
  let a1 be non empty FinSequence of the carrier of TOP-REAL 2;
  cluster GoB a1 -> non empty-yielding tabular X_equal-in-line Y_equal-in-column Y_increasing-in-line X_increasing-in-column;
end;

:: GOBOARD2:th 24
theorem
for b1 being non empty FinSequence of the carrier of TOP-REAL 2 holds
   len GoB b1 = card proj2 X_axis b1 &
    width GoB b1 = card proj2 Y_axis b1;

:: GOBOARD2:th 25
theorem
for b1 being non empty FinSequence of the carrier of TOP-REAL 2
for b2 being Element of NAT
      st b2 in dom b1
   holds ex b3, b4 being Element of NAT st
      [b3,b4] in Indices GoB b1 & b1 /. b2 = (GoB b1) *(b3,b4);

:: GOBOARD2:th 26
theorem
for b1 being Element of NAT
for b2 being non empty FinSequence of the carrier of TOP-REAL 2
      st b1 in dom b2 &
         (for b3 being Element of NAT
               st b3 in dom b2
            holds (X_axis b2) . b1 <= (X_axis b2) . b3)
   holds b2 /. b1 in proj2 Line(GoB b2,1);

:: GOBOARD2:th 27
theorem
for b1 being Element of NAT
for b2 being non empty FinSequence of the carrier of TOP-REAL 2
      st b1 in dom b2 &
         (for b3 being Element of NAT
               st b3 in dom b2
            holds (X_axis b2) . b3 <= (X_axis b2) . b1)
   holds b2 /. b1 in proj2 Line(GoB b2,len GoB b2);

:: GOBOARD2:th 28
theorem
for b1 being Element of NAT
for b2 being non empty FinSequence of the carrier of TOP-REAL 2
      st b1 in dom b2 &
         (for b3 being Element of NAT
               st b3 in dom b2
            holds (Y_axis b2) . b1 <= (Y_axis b2) . b3)
   holds b2 /. b1 in proj2 Col(GoB b2,1);

:: GOBOARD2:th 29
theorem
for b1 being Element of NAT
for b2 being non empty FinSequence of the carrier of TOP-REAL 2
      st b1 in dom b2 &
         (for b3 being Element of NAT
               st b3 in dom b2
            holds (Y_axis b2) . b3 <= (Y_axis b2) . b1)
   holds b2 /. b1 in proj2 Col(GoB b2,width GoB b2);