begin
definition
let G be
Matrix of
(TOP-REAL 2);
let i be
Nat;
func v_strip (
G,
i)
-> Subset of
(TOP-REAL 2) equals :
Def1:
{ |[r,s]| where r, s is Real : ( (G * (i,1)) `1 <= r & r <= (G * ((i + 1),1)) `1 ) } if ( 1
<= i &
i < len G )
{ |[r,s]| where r, s is Real : (G * (i,1)) `1 <= r } if i >= len G otherwise { |[r,s]| where r, s is Real : r <= (G * ((i + 1),1)) `1 } ;
coherence
( ( 1 <= i & i < len G implies { |[r,s]| where r, s is Real : ( (G * (i,1)) `1 <= r & r <= (G * ((i + 1),1)) `1 ) } is Subset of (TOP-REAL 2) ) & ( i >= len G implies { |[r,s]| where r, s is Real : (G * (i,1)) `1 <= r } is Subset of (TOP-REAL 2) ) & ( ( not 1 <= i or not i < len G ) & not i >= len G implies { |[r,s]| where r, s is Real : r <= (G * ((i + 1),1)) `1 } is Subset of (TOP-REAL 2) ) )
correctness
consistency
for b1 being Subset of (TOP-REAL 2) st 1 <= i & i < len G & i >= len G holds
( b1 = { |[r,s]| where r, s is Real : ( (G * (i,1)) `1 <= r & r <= (G * ((i + 1),1)) `1 ) } iff b1 = { |[r,s]| where r, s is Real : (G * (i,1)) `1 <= r } );
;
func h_strip (
G,
i)
-> Subset of
(TOP-REAL 2) equals :
Def2:
{ |[r,s]| where r, s is Real : ( (G * (1,i)) `2 <= s & s <= (G * (1,(i + 1))) `2 ) } if ( 1
<= i &
i < width G )
{ |[r,s]| where r, s is Real : (G * (1,i)) `2 <= s } if i >= width G otherwise { |[r,s]| where r, s is Real : s <= (G * (1,(i + 1))) `2 } ;
coherence
( ( 1 <= i & i < width G implies { |[r,s]| where r, s is Real : ( (G * (1,i)) `2 <= s & s <= (G * (1,(i + 1))) `2 ) } is Subset of (TOP-REAL 2) ) & ( i >= width G implies { |[r,s]| where r, s is Real : (G * (1,i)) `2 <= s } is Subset of (TOP-REAL 2) ) & ( ( not 1 <= i or not i < width G ) & not i >= width G implies { |[r,s]| where r, s is Real : s <= (G * (1,(i + 1))) `2 } is Subset of (TOP-REAL 2) ) )
correctness
consistency
for b1 being Subset of (TOP-REAL 2) st 1 <= i & i < width G & i >= width G holds
( b1 = { |[r,s]| where r, s is Real : ( (G * (1,i)) `2 <= s & s <= (G * (1,(i + 1))) `2 ) } iff b1 = { |[r,s]| where r, s is Real : (G * (1,i)) `2 <= s } );
;
end;
:: deftheorem Def1 defines v_strip GOBOARD5:def 1 :
for G being Matrix of (TOP-REAL 2)
for i being Nat holds
( ( 1 <= i & i < len G implies v_strip (G,i) = { |[r,s]| where r, s is Real : ( (G * (i,1)) `1 <= r & r <= (G * ((i + 1),1)) `1 ) } ) & ( i >= len G implies v_strip (G,i) = { |[r,s]| where r, s is Real : (G * (i,1)) `1 <= r } ) & ( ( not 1 <= i or not i < len G ) & not i >= len G implies v_strip (G,i) = { |[r,s]| where r, s is Real : r <= (G * ((i + 1),1)) `1 } ) );
:: deftheorem Def2 defines h_strip GOBOARD5:def 2 :
for G being Matrix of (TOP-REAL 2)
for i being Nat holds
( ( 1 <= i & i < width G implies h_strip (G,i) = { |[r,s]| where r, s is Real : ( (G * (1,i)) `2 <= s & s <= (G * (1,(i + 1))) `2 ) } ) & ( i >= width G implies h_strip (G,i) = { |[r,s]| where r, s is Real : (G * (1,i)) `2 <= s } ) & ( ( not 1 <= i or not i < width G ) & not i >= width G implies h_strip (G,i) = { |[r,s]| where r, s is Real : s <= (G * (1,(i + 1))) `2 } ) );
theorem
canceled;
theorem Th2:
theorem Th3:
theorem Th4:
theorem Th5:
theorem Th6:
theorem Th7:
theorem Th8:
theorem Th9:
theorem Th10:
theorem Th11:
:: deftheorem defines cell GOBOARD5:def 3 :
for G being Matrix of (TOP-REAL 2)
for i, j being Nat holds cell (G,i,j) = (v_strip (G,i)) /\ (h_strip (G,j));
:: deftheorem defines s.c.c. GOBOARD5:def 4 :
for IT being FinSequence of (TOP-REAL 2) holds
( IT is s.c.c. iff for i, j being Element of NAT st i + 1 < j & ( ( i > 1 & j < len IT ) or j + 1 < len IT ) holds
LSeg (IT,i) misses LSeg (IT,j) );
:: deftheorem Def5 defines standard GOBOARD5:def 5 :
for IT being non empty FinSequence of (TOP-REAL 2) holds
( IT is standard iff IT is_sequence_on GoB IT );
Lm1:
for f being FinSequence of (TOP-REAL 2) holds dom (X_axis f) = dom f
Lm2:
for f being FinSequence of (TOP-REAL 2) holds dom (Y_axis f) = dom f
theorem Th12:
theorem Th13:
definition
let f be
standard special_circular_sequence;
let k be
Element of
NAT ;
assume that A1:
1
<= k
and A2:
k + 1
<= len f
;
k <= k + 1
by NAT_1:11;
then
k <= len f
by A2, XXREAL_0:2;
then A3:
k in dom f
by A1, FINSEQ_3:27;
then consider i1,
j1 being
Element of
NAT such that A4:
[i1,j1] in Indices (GoB f)
and A5:
f /. k = (GoB f) * (
i1,
j1)
by Th12;
k + 1
>= 1
by NAT_1:11;
then A6:
k + 1
in dom f
by A2, FINSEQ_3:27;
then consider i2,
j2 being
Element of
NAT such that A7:
[i2,j2] in Indices (GoB f)
and A8:
f /. (k + 1) = (GoB f) * (
i2,
j2)
by Th12;
A9:
(abs (i1 - i2)) + (abs (j1 - j2)) = 1
by A3, A4, A5, A6, A7, A8, Th13;
A10:
now
per cases
( ( abs (i1 - i2) = 1 & j1 = j2 ) or ( i1 = i2 & abs (j1 - j2) = 1 ) )
by A9, SEQM_3:82;
case that A11:
abs (i1 - i2) = 1
and A12:
j1 = j2
;
( ( i1 = i2 + 1 or i1 + 1 = i2 ) & j1 = j2 )
end;
case that A13:
i1 = i2
and A14:
abs (j1 - j2) = 1
;
( ( j1 = j2 + 1 or j1 + 1 = j2 ) & i1 = i2 )
end;
end;
end;
func right_cell (
f,
k)
-> Subset of
(TOP-REAL 2) means :
Def6:
for
i1,
j1,
i2,
j2 being
Element of
NAT st
[i1,j1] in Indices (GoB f) &
[i2,j2] in Indices (GoB f) &
f /. k = (GoB f) * (
i1,
j1) &
f /. (k + 1) = (GoB f) * (
i2,
j2) & not (
i1 = i2 &
j1 + 1
= j2 &
it = cell (
(GoB f),
i1,
j1) ) & not (
i1 + 1
= i2 &
j1 = j2 &
it = cell (
(GoB f),
i1,
(j1 -' 1)) ) & not (
i1 = i2 + 1 &
j1 = j2 &
it = cell (
(GoB f),
i2,
j2) ) holds
(
i1 = i2 &
j1 = j2 + 1 &
it = cell (
(GoB f),
(i1 -' 1),
j2) );
existence
ex b1 being Subset of (TOP-REAL 2) st
for i1, j1, i2, j2 being Element of NAT st [i1,j1] in Indices (GoB f) & [i2,j2] in Indices (GoB f) & f /. k = (GoB f) * (i1,j1) & f /. (k + 1) = (GoB f) * (i2,j2) & not ( i1 = i2 & j1 + 1 = j2 & b1 = cell ((GoB f),i1,j1) ) & not ( i1 + 1 = i2 & j1 = j2 & b1 = cell ((GoB f),i1,(j1 -' 1)) ) & not ( i1 = i2 + 1 & j1 = j2 & b1 = cell ((GoB f),i2,j2) ) holds
( i1 = i2 & j1 = j2 + 1 & b1 = cell ((GoB f),(i1 -' 1),j2) )
uniqueness
for b1, b2 being Subset of (TOP-REAL 2) st ( for i1, j1, i2, j2 being Element of NAT st [i1,j1] in Indices (GoB f) & [i2,j2] in Indices (GoB f) & f /. k = (GoB f) * (i1,j1) & f /. (k + 1) = (GoB f) * (i2,j2) & not ( i1 = i2 & j1 + 1 = j2 & b1 = cell ((GoB f),i1,j1) ) & not ( i1 + 1 = i2 & j1 = j2 & b1 = cell ((GoB f),i1,(j1 -' 1)) ) & not ( i1 = i2 + 1 & j1 = j2 & b1 = cell ((GoB f),i2,j2) ) holds
( i1 = i2 & j1 = j2 + 1 & b1 = cell ((GoB f),(i1 -' 1),j2) ) ) & ( for i1, j1, i2, j2 being Element of NAT st [i1,j1] in Indices (GoB f) & [i2,j2] in Indices (GoB f) & f /. k = (GoB f) * (i1,j1) & f /. (k + 1) = (GoB f) * (i2,j2) & not ( i1 = i2 & j1 + 1 = j2 & b2 = cell ((GoB f),i1,j1) ) & not ( i1 + 1 = i2 & j1 = j2 & b2 = cell ((GoB f),i1,(j1 -' 1)) ) & not ( i1 = i2 + 1 & j1 = j2 & b2 = cell ((GoB f),i2,j2) ) holds
( i1 = i2 & j1 = j2 + 1 & b2 = cell ((GoB f),(i1 -' 1),j2) ) ) holds
b1 = b2
func left_cell (
f,
k)
-> Subset of
(TOP-REAL 2) means :
Def7:
for
i1,
j1,
i2,
j2 being
Element of
NAT st
[i1,j1] in Indices (GoB f) &
[i2,j2] in Indices (GoB f) &
f /. k = (GoB f) * (
i1,
j1) &
f /. (k + 1) = (GoB f) * (
i2,
j2) & not (
i1 = i2 &
j1 + 1
= j2 &
it = cell (
(GoB f),
(i1 -' 1),
j1) ) & not (
i1 + 1
= i2 &
j1 = j2 &
it = cell (
(GoB f),
i1,
j1) ) & not (
i1 = i2 + 1 &
j1 = j2 &
it = cell (
(GoB f),
i2,
(j2 -' 1)) ) holds
(
i1 = i2 &
j1 = j2 + 1 &
it = cell (
(GoB f),
i1,
j2) );
existence
ex b1 being Subset of (TOP-REAL 2) st
for i1, j1, i2, j2 being Element of NAT st [i1,j1] in Indices (GoB f) & [i2,j2] in Indices (GoB f) & f /. k = (GoB f) * (i1,j1) & f /. (k + 1) = (GoB f) * (i2,j2) & not ( i1 = i2 & j1 + 1 = j2 & b1 = cell ((GoB f),(i1 -' 1),j1) ) & not ( i1 + 1 = i2 & j1 = j2 & b1 = cell ((GoB f),i1,j1) ) & not ( i1 = i2 + 1 & j1 = j2 & b1 = cell ((GoB f),i2,(j2 -' 1)) ) holds
( i1 = i2 & j1 = j2 + 1 & b1 = cell ((GoB f),i1,j2) )
uniqueness
for b1, b2 being Subset of (TOP-REAL 2) st ( for i1, j1, i2, j2 being Element of NAT st [i1,j1] in Indices (GoB f) & [i2,j2] in Indices (GoB f) & f /. k = (GoB f) * (i1,j1) & f /. (k + 1) = (GoB f) * (i2,j2) & not ( i1 = i2 & j1 + 1 = j2 & b1 = cell ((GoB f),(i1 -' 1),j1) ) & not ( i1 + 1 = i2 & j1 = j2 & b1 = cell ((GoB f),i1,j1) ) & not ( i1 = i2 + 1 & j1 = j2 & b1 = cell ((GoB f),i2,(j2 -' 1)) ) holds
( i1 = i2 & j1 = j2 + 1 & b1 = cell ((GoB f),i1,j2) ) ) & ( for i1, j1, i2, j2 being Element of NAT st [i1,j1] in Indices (GoB f) & [i2,j2] in Indices (GoB f) & f /. k = (GoB f) * (i1,j1) & f /. (k + 1) = (GoB f) * (i2,j2) & not ( i1 = i2 & j1 + 1 = j2 & b2 = cell ((GoB f),(i1 -' 1),j1) ) & not ( i1 + 1 = i2 & j1 = j2 & b2 = cell ((GoB f),i1,j1) ) & not ( i1 = i2 + 1 & j1 = j2 & b2 = cell ((GoB f),i2,(j2 -' 1)) ) holds
( i1 = i2 & j1 = j2 + 1 & b2 = cell ((GoB f),i1,j2) ) ) holds
b1 = b2
end;
:: deftheorem Def6 defines right_cell GOBOARD5:def 6 :
for f being standard special_circular_sequence
for k being Element of NAT st 1 <= k & k + 1 <= len f holds
for b3 being Subset of (TOP-REAL 2) holds
( b3 = right_cell (f,k) iff for i1, j1, i2, j2 being Element of NAT st [i1,j1] in Indices (GoB f) & [i2,j2] in Indices (GoB f) & f /. k = (GoB f) * (i1,j1) & f /. (k + 1) = (GoB f) * (i2,j2) & not ( i1 = i2 & j1 + 1 = j2 & b3 = cell ((GoB f),i1,j1) ) & not ( i1 + 1 = i2 & j1 = j2 & b3 = cell ((GoB f),i1,(j1 -' 1)) ) & not ( i1 = i2 + 1 & j1 = j2 & b3 = cell ((GoB f),i2,j2) ) holds
( i1 = i2 & j1 = j2 + 1 & b3 = cell ((GoB f),(i1 -' 1),j2) ) );
:: deftheorem Def7 defines left_cell GOBOARD5:def 7 :
for f being standard special_circular_sequence
for k being Element of NAT st 1 <= k & k + 1 <= len f holds
for b3 being Subset of (TOP-REAL 2) holds
( b3 = left_cell (f,k) iff for i1, j1, i2, j2 being Element of NAT st [i1,j1] in Indices (GoB f) & [i2,j2] in Indices (GoB f) & f /. k = (GoB f) * (i1,j1) & f /. (k + 1) = (GoB f) * (i2,j2) & not ( i1 = i2 & j1 + 1 = j2 & b3 = cell ((GoB f),(i1 -' 1),j1) ) & not ( i1 + 1 = i2 & j1 = j2 & b3 = cell ((GoB f),i1,j1) ) & not ( i1 = i2 + 1 & j1 = j2 & b3 = cell ((GoB f),i2,(j2 -' 1)) ) holds
( i1 = i2 & j1 = j2 + 1 & b3 = cell ((GoB f),i1,j2) ) );
theorem Th14:
theorem Th15:
theorem Th16:
theorem Th17:
theorem Th18:
theorem Th19:
theorem Th20:
theorem Th21:
theorem Th22:
theorem Th23:
theorem Th24:
theorem Th25:
theorem Th26:
theorem Th27:
theorem Th28:
for
k,
i,
j being
Element of
NAT for
f being
standard special_circular_sequence st 1
<= k &
k + 1
<= len f &
[(i + 1),j] in Indices (GoB f) &
[(i + 1),(j + 1)] in Indices (GoB f) &
f /. k = (GoB f) * (
(i + 1),
j) &
f /. (k + 1) = (GoB f) * (
(i + 1),
(j + 1)) holds
(
left_cell (
f,
k)
= cell (
(GoB f),
i,
j) &
right_cell (
f,
k)
= cell (
(GoB f),
(i + 1),
j) )
theorem Th29:
for
k,
i,
j being
Element of
NAT for
f being
standard special_circular_sequence st 1
<= k &
k + 1
<= len f &
[i,(j + 1)] in Indices (GoB f) &
[(i + 1),(j + 1)] in Indices (GoB f) &
f /. k = (GoB f) * (
i,
(j + 1)) &
f /. (k + 1) = (GoB f) * (
(i + 1),
(j + 1)) holds
(
left_cell (
f,
k)
= cell (
(GoB f),
i,
(j + 1)) &
right_cell (
f,
k)
= cell (
(GoB f),
i,
j) )
theorem Th30:
for
k,
i,
j being
Element of
NAT for
f being
standard special_circular_sequence st 1
<= k &
k + 1
<= len f &
[i,(j + 1)] in Indices (GoB f) &
[(i + 1),(j + 1)] in Indices (GoB f) &
f /. k = (GoB f) * (
(i + 1),
(j + 1)) &
f /. (k + 1) = (GoB f) * (
i,
(j + 1)) holds
(
left_cell (
f,
k)
= cell (
(GoB f),
i,
j) &
right_cell (
f,
k)
= cell (
(GoB f),
i,
(j + 1)) )
theorem Th31:
for
k,
i,
j being
Element of
NAT for
f being
standard special_circular_sequence st 1
<= k &
k + 1
<= len f &
[(i + 1),(j + 1)] in Indices (GoB f) &
[(i + 1),j] in Indices (GoB f) &
f /. k = (GoB f) * (
(i + 1),
(j + 1)) &
f /. (k + 1) = (GoB f) * (
(i + 1),
j) holds
(
left_cell (
f,
k)
= cell (
(GoB f),
(i + 1),
j) &
right_cell (
f,
k)
= cell (
(GoB f),
i,
j) )
theorem