begin
:: deftheorem Def1 defines are_adjacent1 GOBRD10:def 1 :
for i1, i2 being Element of NAT holds
( i1,i2 are_adjacent1 iff ( i2 = i1 + 1 or i1 = i2 + 1 ) );
theorem Th1:
theorem Th2:
:: deftheorem Def2 defines are_adjacent2 GOBRD10:def 2 :
for i1, j1, i2, j2 being Element of NAT holds
( i1,j1,i2,j2 are_adjacent2 iff ( ( i1,i2 are_adjacent1 & j1 = j2 ) or ( i1 = i2 & j1,j2 are_adjacent1 ) ) );
theorem Th3:
theorem
:: deftheorem Def3 defines |-> GOBRD10:def 3 :
for n, i being Element of NAT
for b3 being FinSequence of NAT holds
( b3 = n |-> i iff ( len b3 = n & ( for j being Element of NAT st 1 <= j & j <= n holds
b3 . j = i ) ) );
theorem
canceled;
theorem Th6:
theorem Th7:
theorem Th8:
for
n,
m,
i1,
j1,
i2,
j2 being
Element of
NAT st
i1 <= n &
j1 <= m &
i2 <= n &
j2 <= m holds
ex
fs1,
fs2 being
FinSequence of
NAT st
( ( for
i,
k1,
k2 being
Element of
NAT st
i in dom fs1 &
k1 = fs1 . i &
k2 = fs2 . i holds
(
k1 <= n &
k2 <= m ) ) &
fs1 . 1
= i1 &
fs1 . (len fs1) = i2 &
fs2 . 1
= j1 &
fs2 . (len fs2) = j2 &
len fs1 = len fs2 &
len fs1 = ((((i1 -' i2) + (i2 -' i1)) + (j1 -' j2)) + (j2 -' j1)) + 1 & ( for
i being
Element of
NAT st 1
<= i &
i < len fs1 holds
fs1 /. i,
fs2 /. i,
fs1 /. (i + 1),
fs2 /. (i + 1) are_adjacent2 ) )
theorem
for
n,
m being
Element of
NAT for
S being
set for
Y being
Subset of
S for
F being
Matrix of
n,
m,
bool S st ex
i,
j being
Element of
NAT st
(
i in Seg n &
j in Seg m &
F * (
i,
j)
c= Y ) & ( for
i1,
j1,
i2,
j2 being
Element of
NAT st
i1 in Seg n &
i2 in Seg n &
j1 in Seg m &
j2 in Seg m &
i1,
j1,
i2,
j2 are_adjacent2 holds
(
F * (
i1,
j1)
c= Y iff
F * (
i2,
j2)
c= Y ) ) holds
for
i,
j being
Element of
NAT st
i in Seg n &
j in Seg m holds
F * (
i,
j)
c= Y