Journal of Formalized Mathematics
Volume 15, 2003
University of Bialystok
Copyright (c) 2003 Association of Mizar Users

The abstract of the Mizar article:

Chains on a Grating in Euclidean Space

by
Freek Wiedijk

Received January 27, 2003

MML identifier: CHAIN_1
[ Mizar article, MML identifier index ]


environ

 vocabulary CHAIN_1, FINSEQ_1, RELAT_1, FUNCT_1, FINSET_1, CARD_1, ORDERS_1,
      BOOLE, MATRIX_2, RLVECT_1, WAYBEL25, SUBSET_1, FINSEQ_2, FUNCT_2,
      GRAPH_1, ARYTM_1, MCART_1, VECTSP_1, GROUP_6, CARD_3, GOBOARD5, BINOP_1,
      PRE_TOPC, SQUARE_1, REALSET1, ARYTM, XREAL_0, POLYNOM1;
 notation TARSKI, XBOOLE_0, ZFMISC_1, SUBSET_1, RELAT_1, ORDINAL1, XCMPLX_0,
      XREAL_0, FUNCT_1, REAL_1, EUCLID, FUNCT_2, ABIAN, CARD_1, DOMAIN_1,
      MOD_4, CARD_3, BINOP_1, VECTSP_1, PRE_TOPC, SQUARE_1, NAT_1, NUMBERS,
      FINSET_1, STRUCT_0, FINSEQ_1, FINSEQ_2, RLVECT_1, REALSET1;
 constructors REAL_1, EUCLID, NAT_1, ABIAN, INT_1, DOMAIN_1, MOD_4, SQUARE_1,
      REALSET1, MEMBERED, ORDINAL2, RAT_1;
 clusters FINSET_1, SUBSET_1, RELSET_1, INT_1, ABIAN, FINSEQ_1, VECTSP_1,
      STRUCT_0, AFINSQ_1, REALSET1, FINSEQ_5, TEX_2, NAT_1, MEMBERED;
 requirements NUMERALS, SUBSET, BOOLE, REAL, ARITHM;


begin :: stuff I could not find in MML

 reserve X,x,y,z for set;
 reserve n,m,k,k',d' for Nat;

theorem :: CHAIN_1:1
 for x,y being real number st x < y ex z being Real st x < z & z < y;

theorem :: CHAIN_1:2
 for x,y being real number ex z being Real st x < z & y < z;

scheme FrSet_1_2 { D()->non empty set, A()->non empty set, P[set,set],
   F(set,set)->Element of D() } :
 { F(x,y) where x,y is Element of A() : P[x,y] } c= D();

:: Subset A -> Subset B

definition let B be set;
           let A be Subset of B;
 redefine func bool A -> Subset of bool B;
end;

definition let X be set;
 mode Subset of X is Element of bool X;
end;

:: non-zero numbers

definition
 let d be real Nat;
 redefine attr d is zero means
:: CHAIN_1:def 1
  not d > 0;
end;

definition
 let d be Nat;
 redefine attr d is zero means
:: CHAIN_1:def 2
  not d >= 1;
end;

definition
 cluster non zero Nat;
end;

 reserve d for non zero Nat;

definition let d;
 cluster Seg d -> non empty;
end;

 reserve i,i0,i1 for Element of Seg d;

:: non trivial sets

definition let X;
 redefine attr X is trivial means
:: CHAIN_1:def 3
  for x,y st x in X & y in X holds x = y;
end;

canceled;

theorem :: CHAIN_1:4
 {x,y} is trivial iff x = y;

definition
 cluster non trivial finite set;
end;

definition
 let X be non trivial set;
 let Y be set;
 cluster X \/ Y -> non trivial;
 cluster Y \/ X -> non trivial;
end;

definition
 cluster REAL -> non trivial;
end;

definition
 let X be non trivial set;
 cluster non trivial finite Subset of X;
end;

theorem :: CHAIN_1:5
 X is trivial & X \/ {y} is non trivial implies ex x st X = {x};

scheme NonEmptyFinite
 { X()->non empty set, A()->non empty finite Subset of X(), P[set] } :
P[A()]
provided
 for x being Element of X() st x in A() holds P[{x}] and
 for x being Element of X(), B being non empty finite Subset of X()
  st x in A() & B c= A() & not x in B & P[B] holds P[B \/ {x}];

scheme NonTrivialFinite
 { X()->non trivial set, A()->non trivial finite Subset of X(), P[set] } :
   P[A()]
provided
 for x,y being Element of X() st x in A() & y in A() & x <> y
  holds P[{x,y}] and
 for x being Element of X(), B being non trivial finite Subset of X()
  st x in A() & B c= A() & not x in B & P[B] holds P[B \/ {x}];

:: sets of cardinality 2

theorem :: CHAIN_1:6
 Card X = 2 iff
 ex x,y st x in X & y in X & x <> y & for z st z in X holds z = x or z = y;

:: cardinality of symmetric difference

definition
 let X,Y be finite set;
 cluster X \+\ Y -> finite;
end;

theorem :: CHAIN_1:7
 (m is even iff n is even) iff m + n is even;

theorem :: CHAIN_1:8
 for X,Y being finite set st X misses Y holds
  (card X is even iff card Y is even) iff card(X \/ Y) is even;

theorem :: CHAIN_1:9
 for X,Y being finite set holds
  (card X is even iff card Y is even) iff card(X \+\ Y) is even;

:: elements of REAL d as functions to REAL

definition let n;
 redefine func REAL n means
:: CHAIN_1:def 4
  for x holds x in it iff x is Function of Seg n,REAL;
end;

 reserve l,r,l',r',l'',r'',x,x',l1,r1,l2,r2 for Element of REAL d;
 reserve Gi for non trivial finite Subset of REAL;
 reserve li,ri,li',ri',xi,xi' for Real;

definition let d,x,i;
 redefine func x.i -> Real;
end;

begin :: gratings, cells, chains, cycles

:: gratings

definition let d;
 mode Grating of d -> Function of Seg d,bool REAL means
:: CHAIN_1:def 5
  for i holds it.i is non trivial finite;
end;

 reserve G for Grating of d;

definition let d,G,i;
 redefine func G.i -> non trivial finite Subset of REAL;
end;

theorem :: CHAIN_1:10
 x in product G iff for i holds x.i in G.i;

theorem :: CHAIN_1:11
 product G is finite;

:: gaps

theorem :: CHAIN_1:12
 for X being non empty finite Subset of REAL holds
  ex ri st ri in X & for xi st xi in X holds ri >= xi;

theorem :: CHAIN_1:13
 for X being non empty finite Subset of REAL holds
  ex li st li in X & for xi st xi in X holds li <= xi;

theorem :: CHAIN_1:14
 ex li,ri st li in Gi & ri in Gi &
  li < ri & for xi st xi in Gi holds not (li < xi & xi < ri);

theorem :: CHAIN_1:15
   ex li,ri st li in Gi & ri in Gi &
  ri < li & for xi st xi in Gi holds not (xi < ri or li < xi);

definition let Gi;
 mode Gap of Gi -> Element of [:REAL,REAL:] means
:: CHAIN_1:def 6
  ex li,ri st it = [li,ri] & li in Gi & ri in Gi &
   ((li < ri & for xi st xi in Gi holds not (li < xi & xi < ri)) or
    (ri < li & for xi st xi in Gi holds not (li < xi or xi < ri)));
end;

theorem :: CHAIN_1:16
 [li,ri] is Gap of Gi iff
  li in Gi & ri in Gi &
   ((li < ri & for xi st xi in Gi holds not (li < xi & xi < ri)) or
    (ri < li & for xi st xi in Gi holds not (li < xi or xi < ri)));

theorem :: CHAIN_1:17
   Gi = {li,ri} implies
  ([li',ri'] is Gap of Gi iff li' = li & ri' = ri or li' = ri & ri' = li);

theorem :: CHAIN_1:18
 xi in Gi implies ex ri st [xi,ri] is Gap of Gi;

theorem :: CHAIN_1:19
 xi in Gi implies ex li st [li,xi] is Gap of Gi;

theorem :: CHAIN_1:20
 [li,ri] is Gap of Gi & [li,ri'] is Gap of Gi implies ri = ri';

theorem :: CHAIN_1:21
 [li,ri] is Gap of Gi & [li',ri] is Gap of Gi implies li = li';

theorem :: CHAIN_1:22
 ri < li & [li,ri] is Gap of Gi & ri' < li' & [li',ri'] is Gap of Gi implies
  li = li' & ri = ri';

:: cells, chains

definition let d,l,r;
 func cell(l,r) -> non empty Subset of REAL d equals
:: CHAIN_1:def 7
  { x : (for i holds l.i <= x.i & x.i <= r.i) or
    (ex i st r.i < l.i & (x.i <= r.i or l.i <= x.i)) };
end;

theorem :: CHAIN_1:23
 x in cell(l,r) iff
  ((for i holds l.i <= x.i & x.i <= r.i) or
   (ex i st r.i < l.i & (x.i <= r.i or l.i <= x.i)));

theorem :: CHAIN_1:24
 (for i holds l.i <= r.i) implies
  (x in cell(l,r) iff for i holds l.i <= x.i & x.i <= r.i);

theorem :: CHAIN_1:25
 (ex i st r.i < l.i) implies
  (x in cell(l,r) iff ex i st r.i < l.i & (x.i <= r.i or l.i <= x.i));

theorem :: CHAIN_1:26
 l in cell(l,r) & r in cell(l,r);

theorem :: CHAIN_1:27
 cell(x,x) = {x};

theorem :: CHAIN_1:28
 (for i holds l'.i <= r'.i) implies
  (cell(l,r) c= cell(l',r') iff
    for i holds l'.i <= l.i & l.i <= r.i & r.i <= r'.i);

theorem :: CHAIN_1:29
 (for i holds r.i < l.i) implies
  (cell(l,r) c= cell(l',r') iff
    for i holds r.i <= r'.i & r'.i < l'.i & l'.i <= l.i);

theorem :: CHAIN_1:30
 (for i holds l.i <= r.i) & (for i holds r'.i < l'.i) implies
  (cell(l,r) c= cell(l',r') iff
    ex i st r.i <= r'.i or l'.i <= l.i);

theorem :: CHAIN_1:31
 (for i holds l.i <= r.i) or (for i holds l.i > r.i) implies
  (cell(l,r) = cell(l',r') iff l = l' & r = r');

definition
 let d,G,k;
 assume
  k <= d;
 func cells(k,G) -> finite non empty Subset of bool(REAL d) equals
:: CHAIN_1:def 8
  { cell(l,r) : ((ex X being Subset of Seg d st card X = k &
        for i holds (i in X & l.i < r.i & [l.i,r.i] is Gap of G.i) or
         (not i in X & l.i = r.i & l.i in G.i)) or
      (k = d & for i holds r.i < l.i & [l.i,r.i] is Gap of G.i)) };
end;

theorem :: CHAIN_1:32
 k <= d implies
 for A being Subset of REAL d holds
  A in cells(k,G) iff
  ex l,r st A = cell(l,r) &
   ((ex X being Subset of Seg d st card X = k &
      for i holds (i in X & l.i < r.i & [l.i,r.i] is Gap of G.i) or
       (not i in X & l.i = r.i & l.i in G.i)) or
    (k = d & for i holds r.i < l.i & [l.i,r.i] is Gap of G.i));

theorem :: CHAIN_1:33
 k <= d implies
 (cell(l,r) in cells(k,G) iff
   ((ex X being Subset of Seg d st card X = k &
      for i holds (i in X & l.i < r.i & [l.i,r.i] is Gap of G.i) or
       (not i in X & l.i = r.i & l.i in G.i)) or
    (k = d & for i holds r.i < l.i & [l.i,r.i] is Gap of G.i)));

theorem :: CHAIN_1:34
 k <= d & cell(l,r) in cells(k,G) implies
  (for i holds (l.i < r.i & [l.i,r.i] is Gap of G.i) or
    (l.i = r.i & l.i in G.i)) or
  (for i holds r.i < l.i & [l.i,r.i] is Gap of G.i);

theorem :: CHAIN_1:35
 k <= d & cell(l,r) in cells(k,G) implies
  for i holds l.i in G.i & r.i in G.i;

theorem :: CHAIN_1:36
   k <= d & cell(l,r) in cells(k,G) implies
  (for i holds l.i <= r.i) or (for i holds r.i < l.i);

theorem :: CHAIN_1:37
 for A being Subset of REAL d holds
  A in cells(0,G) iff ex x st A = cell(x,x) & for i holds x.i in G.i;

theorem :: CHAIN_1:38
 cell(l,r) in cells(0,G) iff l = r & for i holds l.i in G.i;

theorem :: CHAIN_1:39
 for A being Subset of REAL d holds
  A in cells(d,G) iff
  ex l,r st A = cell(l,r) & (for i holds [l.i,r.i] is Gap of G.i) &
   ((for i holds l.i < r.i) or (for i holds r.i < l.i));

theorem :: CHAIN_1:40
 cell(l,r) in cells(d,G) iff
  (for i holds [l.i,r.i] is Gap of G.i) &
   ((for i holds l.i < r.i) or (for i holds r.i < l.i));

theorem :: CHAIN_1:41
 d = d' + 1 implies
 for A being Subset of REAL d holds
  A in cells(d',G) iff
  ex l,r,i0 st A = cell(l,r) & l.i0 = r.i0 & l.i0 in G.i0 &
    for i st i <> i0 holds l.i < r.i & [l.i,r.i] is Gap of G.i;

theorem :: CHAIN_1:42
   d = d' + 1 implies
 (cell(l,r) in cells(d',G) iff
  ex i0 st l.i0 = r.i0 & l.i0 in G.i0 &
    for i st i <> i0 holds l.i < r.i & [l.i,r.i] is Gap of G.i);

theorem :: CHAIN_1:43
 for A being Subset of REAL d holds
  A in cells(1,G) iff
  ex l,r,i0 st A = cell(l,r) &
   (l.i0 < r.i0 or d = 1 & r.i0 < l.i0) & [l.i0,r.i0] is Gap of G.i0 &
   for i st i <> i0 holds l.i = r.i & l.i in G.i;

theorem :: CHAIN_1:44
   cell(l,r) in cells(1,G) iff
  ex i0 st (l.i0 < r.i0 or d = 1 & r.i0 < l.i0) & [l.i0,r.i0] is Gap of G.i0
&
   for i st i <> i0 holds l.i = r.i & l.i in G.i;

theorem :: CHAIN_1:45
 k <= d & k' <= d & cell(l,r) in cells(k,G) & cell(l',r') in cells(k',G) &
  cell(l,r) c= cell(l',r') implies
 for i holds (l.i = l'.i & r.i = r'.i) or
  (l.i = l'.i & r.i = l'.i) or (l.i = r'.i & r.i = r'.i) or
  (l.i <= r.i & r'.i < l'.i & r'.i <= l.i & r.i <= l'.i);

theorem :: CHAIN_1:46
 k < k' & k' <= d & cell(l,r) in cells(k,G) & cell(l',r') in cells(k',G) &
  cell(l,r) c= cell(l',r') implies
 ex i st (l.i = l'.i & r.i = l'.i) or (l.i = r'.i & r.i = r'.i);

theorem :: CHAIN_1:47
 for X,X' being Subset of Seg d st cell(l,r) c= cell(l',r') &
  (for i holds (i in X & l.i < r.i & [l.i,r.i] is Gap of G.i) or
     (not i in X & l.i = r.i & l.i in G.i)) &
  (for i holds (i in X' & l'.i < r'.i & [l'.i,r'.i] is Gap of G.i) or
     (not i in X' & l'.i = r'.i & l'.i in G.i))
 holds X c= X' &
  (for i st i in X or not i in X' holds l.i = l'.i & r.i = r'.i) &
  (for i st not i in X & i in X' holds
    (l.i = l'.i & r.i = l'.i) or (l.i = r'.i & r.i = r'.i));

definition
 let d,G,k;
 mode Cell of k,G is Element of cells(k,G);
end;

definition
 let d,G,k;
 mode Chain of k,G is Subset of cells(k,G);
end;

definition
 let d,G,k;
 func 0_(k,G) -> Chain of k,G equals
:: CHAIN_1:def 9
  {};
end;

definition
 let d,G;
 func Omega(G) -> Chain of d,G equals
:: CHAIN_1:def 10
  cells(d,G);
end;

definition
 let d,G,k;
 let C1,C2 be Chain of k,G;
 redefine func C1 \+\ C2 -> Chain of k,G;
 synonym C1 + C2;
end;

definition
 let d,G;
 func infinite-cell(G) -> Cell of d,G means
:: CHAIN_1:def 11
  ex l,r st it = cell(l,r) & for i holds r.i < l.i & [l.i,r.i] is Gap of G.i;
end;

theorem :: CHAIN_1:48
 cell(l,r) is Cell of d,G implies
  (cell(l,r) = infinite-cell(G) iff for i holds r.i < l.i);

theorem :: CHAIN_1:49
 cell(l,r) = infinite-cell(G) iff
  for i holds r.i < l.i & [l.i,r.i] is Gap of G.i;

scheme ChainInd
  { d()->non zero Nat, G()->Grating of d(), k()->Nat, C()->Chain of k(),G(),
    P[set] } : P[C()]
provided
 P[0_(k(),G())] and
 for A being Cell of k(),G() st A in C() holds P[{A}] and
 for C1,C2 being Chain of k(),G() st C1 c= C() & C2 c= C() &
  P[C1] & P[C2] holds P[C1 + C2];

:: the boundary operator

definition
 let d,G,k;
 let A be Cell of k,G;
 func star A -> Chain of (k + 1),G equals
:: CHAIN_1:def 12
  { B where B is Cell of (k + 1),G : A c= B };
end;

theorem :: CHAIN_1:50
 for A being Cell of k,G, B being Cell of (k + 1),G holds
  B in star A iff A c= B;

definition
 let d,G,k;
 let C be Chain of (k + 1),G;
 func del C -> Chain of k,G equals
:: CHAIN_1:def 13
  { A where A is Cell of k,G : k + 1 <= d & card(star A /\ C) is odd };
 synonym .C;  :: \cdot
end;

definition
 let d,G,k;
 let C be Chain of (k + 1),G, C' be Chain of k,G;
 pred C' bounds C means
:: CHAIN_1:def 14
    C' = del C;
end;

theorem :: CHAIN_1:51
 for A being Cell of k,G, C being Chain of (k + 1),G holds
  A in del C iff k + 1 <= d & card(star A /\ C) is odd;

theorem :: CHAIN_1:52
 k + 1 > d implies for C being Chain of (k + 1),G holds del C = 0_(k,G);

theorem :: CHAIN_1:53
 k + 1 <= d implies
 for A being Cell of k,G, B being Cell of (k + 1),G holds
  A in del {B} iff A c= B;

:: lemmas

theorem :: CHAIN_1:54
 d = d' + 1 implies
 for A being Cell of d',G holds card(star A) = 2;

theorem :: CHAIN_1:55
 for G being Grating of d, B being Cell of (0 + 1),G holds
  card(del {B}) = 2;

:: theorems

theorem :: CHAIN_1:56
   Omega(G) = 0_(d,G)` & 0_(d,G) = (Omega(G))`;

theorem :: CHAIN_1:57
 for C being Chain of k,G holds C + 0_(k,G) = C;

theorem :: CHAIN_1:58
 for C being Chain of k,G holds C + C = 0_(k,G);

theorem :: CHAIN_1:59
 for C being Chain of d,G holds C` = C + Omega(G);

theorem :: CHAIN_1:60
 del 0_(k + 1,G) = 0_(k,G);

theorem :: CHAIN_1:61
 for G being Grating of d' + 1 holds del Omega(G) = 0_(d',G);

theorem :: CHAIN_1:62
 for C1,C2 being Chain of (k + 1),G holds del(C1 + C2) = del C1 + del C2;

theorem :: CHAIN_1:63
 for G being Grating of d' + 1, C being Chain of (d' + 1),G holds
  del C` = del C;

theorem :: CHAIN_1:64
 for C being Chain of (k + 1 + 1),G holds
  del (del C) = 0_(k,G);

:: cycles

definition
 let d,G,k;
 mode Cycle of k,G -> Chain of k,G means
:: CHAIN_1:def 15
  (k = 0 & card it is even) or
  (ex k' st k = k' + 1 & ex C being Chain of (k' + 1),G st C = it &
    del C = 0_(k',G));
end;

theorem :: CHAIN_1:65
 for C being Chain of (k + 1),G holds
  C is Cycle of (k + 1),G iff del C = 0_(k,G);

theorem :: CHAIN_1:66
   k > d implies for C being Chain of k,G holds C is Cycle of k,G;

theorem :: CHAIN_1:67
 for C being Chain of 0,G holds
  C is Cycle of 0,G iff card C is even;

definition
 let d,G,k;
 let C be Cycle of (k + 1),G;
 redefine func del C equals
:: CHAIN_1:def 16
    0_(k,G);
end;

definition
 let d,G,k;
 redefine func 0_(k,G) -> Cycle of k,G;
end;

definition
 let d,G;
 redefine func Omega(G) -> Cycle of d,G;
end;

definition
 let d,G,k;
 let C1,C2 be Cycle of k,G;
 redefine func C1 \+\ C2 -> Cycle of k,G;
 synonym C1 + C2;
end;

theorem :: CHAIN_1:68
   for C being Cycle of d,G holds C` is Cycle of d,G;

definition
 let d,G,k;
 let C be Chain of (k + 1),G;
 redefine func del C -> Cycle of k,G;
end;

begin :: groups and homomorphisms

definition
 let d,G,k;
 func Chains(k,G) -> strict AbGroup means
:: CHAIN_1:def 17
  (the carrier of it = bool(cells(k,G))) &
  (0.it = 0_(k,G)) &
  (for A,B being Element of it, A',B' being Chain of k,G
    st A = A' & B = B' holds A + B = A' + B');
end;

definition let d,G,k;
 mode GrChain of k,G is Element of Chains(k,G);
end;

theorem :: CHAIN_1:69
  for x being set holds x is Chain of k,G iff x is GrChain of k,G;

definition
 let d,G,k;
 func del(k,G) -> Homomorphism of Chains(k + 1,G),Chains(k,G) means
:: CHAIN_1:def 18
    for A being Element of Chains(k + 1,G), A' being Chain of (k + 1),G
   st A = A' holds it.A = del A';
end;

Back to top