Article POLYFORM, MML version 4.99.1005

:: POLYFORM:th 1
theorem
for b1, b2, b3 being set
      st (ex b4, b5 being set st
            b4 <> b5 & b1 = {b4,b5}) &
         b2 in b1 &
         b3 in b1 &
         b2 <> b3
   holds b1 = {b2,b3};

:: POLYFORM:th 2
theorem
for b1 being Relation-like Function-like set
      st b1 is one-to-one
   holds Card proj1 b1 = Card proj2 b1;

:: POLYFORM:th 3
theorem
for b1 being integer set
      st 1 <= b1
   holds b1 is natural set;

:: POLYFORM:funcnot 1 => POLYFORM:func 1
definition
  let a1 be integer set;
  let a2 be natural set;
  redefine func a1 * a2 -> Element of INT;
  commutativity;
::  for a1 being integer set
::  for a2 being natural set holds
::     a1 * a2 = a2 * a1;
end;

:: POLYFORM:th 4
theorem
1 is odd;

:: POLYFORM:th 5
theorem
2 is even;

:: POLYFORM:th 6
theorem
3 is odd;

:: POLYFORM:th 7
theorem
4 is even;

:: POLYFORM:th 8
theorem
for b1 being natural set
      st b1 is even
   holds (- 1) |^ b1 = 1;

:: POLYFORM:th 9
theorem
for b1 being natural set
      st b1 is odd
   holds (- 1) |^ b1 = - 1;

:: POLYFORM:th 10
theorem
for b1 being natural set holds
   (- 1) |^ b1 is integer set;

:: POLYFORM:funcnot 2 => POLYFORM:func 2
definition
  let a1 be integer set;
  let a2 be natural set;
  redefine func a1 |^ a2 -> Element of INT;
end;

:: POLYFORM:th 11
theorem
for b1, b2, b3 being Relation-like Function-like FinSequence-like set holds
len (b1 ^ b2) <= len (b1 ^ (b2 ^ b3));

:: POLYFORM:th 12
theorem
for b1 being natural set holds
   1 < b1 + 2;

:: POLYFORM:th 13
theorem
(- 1) |^ 2 = 1;

:: POLYFORM:th 14
theorem
for b1 being natural set holds
   (- 1) |^ b1 = (- 1) |^ (b1 + 2);

:: POLYFORM:funcreg 1
registration
  let a1 be FinSequence of INT;
  let a2 be natural set;
  cluster a1 . a2 -> integer;
end;

:: POLYFORM:th 15
theorem
for b1, b2, b3 being FinSequence of INT
      st 0 < len b3 &
         len b1 = len b3 &
         len b2 = len b3 &
         (for b4 being natural set
               st 1 <= b4 & b4 <= len b3
            holds b3 . b4 = (b1 . b4) + (b2 . b4)) &
         (for b4 being natural set
               st 1 <= b4 & b4 < len b3
            holds b2 . b4 = - (b1 . (b4 + 1)))
   holds Sum b3 = (b1 . 1) + (b2 . len b3);

:: POLYFORM:th 16
theorem
for b1, b2, b3 being Relation-like Function-like FinSequence-like set holds
len ((b1 ^ b2) ^ b3) = ((len b1) + len b2) + len b3;

:: POLYFORM:th 17
theorem
for b1 being set
for b2, b3 being Relation-like Function-like FinSequence-like set holds
((<*b1*> ^ b2) ^ b3) . 1 = b1;

:: POLYFORM:th 18
theorem
for b1 being set
for b2, b3 being Relation-like Function-like FinSequence-like set holds
((b2 ^ b3) ^ <*b1*>) . (((len b2) + len b3) + 1) = b1;

:: POLYFORM:th 19
theorem
for b1, b2, b3 being Relation-like Function-like FinSequence-like set
for b4 being natural set
      st len b1 < b4 & b4 <= len (b1 ^ b2)
   holds ((b1 ^ b2) ^ b3) . b4 = b2 . (b4 - len b1);

:: POLYFORM:funcnot 3 => POLYFORM:func 3
definition
  let a1 be integer set;
  redefine func <*a1*> -> FinSequence of INT;
end;

:: POLYFORM:funcnot 4 => POLYFORM:func 4
definition
  let a1, a2 be integer set;
  redefine func <*a1, a2*> -> FinSequence of INT;
end;

:: POLYFORM:funcnot 5 => POLYFORM:func 5
definition
  let a1, a2, a3 be integer set;
  redefine func <*a1, a2, a3*> -> FinSequence of INT;
end;

:: POLYFORM:funcnot 6 => POLYFORM:func 6
definition
  let a1, a2 be FinSequence of INT;
  redefine func a1 ^ a2 -> FinSequence of INT;
end;

:: POLYFORM:th 20
theorem
for b1, b2 being FinSequence of INT holds
Sum (b1 ^ b2) = (Sum b1) + Sum b2;

:: POLYFORM:th 21
theorem
for b1 being integer set
for b2 being FinSequence of INT holds
   Sum (<*b1*> ^ b2) = b1 + Sum b2;

:: POLYFORM:th 22
theorem
for b1, b2, b3 being FinSequence of INT holds
Sum ((b1 ^ b2) ^ b3) = ((Sum b1) + Sum b2) + Sum b3;

:: POLYFORM:th 23
theorem
for b1 being Element of the carrier of Z_2 holds
   Sum <*b1*> = b1;

:: POLYFORM:modenot 1
definition
  let a1, a2 be set;
  mode incidence-matrix of a1,a2 is Element of Funcs([:a1,a2:],{0. Z_2,1. Z_2});
end;

:: POLYFORM:th 24
theorem
for b1, b2 being set holds
[:b1,b2:] --> 1. Z_2 is Element of Funcs([:b1,b2:],{0. Z_2,1. Z_2});

:: POLYFORM:structnot 1 => POLYFORM:struct 1
definition
  struct() PolyhedronStr(#
    PolytopsF -> Relation-like Function-like FinSequence-like FinSequence-yielding set,
    IncidenceF -> Relation-like Function-like FinSequence-like Function-yielding set
  #);
end;

:: POLYFORM:attrnot 1 => POLYFORM:attr 1
definition
  let a1 be PolyhedronStr;
  attr a1 is strict;
end;

:: POLYFORM:exreg 1
registration
  cluster strict PolyhedronStr;
end;

:: POLYFORM:aggrnot 1 => POLYFORM:aggr 1
definition
  let a1 be Relation-like Function-like FinSequence-like FinSequence-yielding set;
  let a2 be Relation-like Function-like FinSequence-like Function-yielding set;
  aggr PolyhedronStr(#a1,a2#) -> strict PolyhedronStr;
end;

:: POLYFORM:selnot 1 => POLYFORM:sel 1
definition
  let a1 be PolyhedronStr;
  sel the PolytopsF of a1 -> Relation-like Function-like FinSequence-like FinSequence-yielding set;
end;

:: POLYFORM:selnot 2 => POLYFORM:sel 2
definition
  let a1 be PolyhedronStr;
  sel the IncidenceF of a1 -> Relation-like Function-like FinSequence-like Function-yielding set;
end;

:: POLYFORM:attrnot 2 => POLYFORM:attr 2
definition
  let a1 be PolyhedronStr;
  attr a1 is polyhedron_1 means
    len the IncidenceF of a1 = (len the PolytopsF of a1) - 1;
end;

:: POLYFORM:dfs 1
definiens
  let a1 be PolyhedronStr;
To prove
     a1 is polyhedron_1
it is sufficient to prove
  thus len the IncidenceF of a1 = (len the PolytopsF of a1) - 1;

:: POLYFORM:def 1
theorem
for b1 being PolyhedronStr holds
      b1 is polyhedron_1
   iff
      len the IncidenceF of b1 = (len the PolytopsF of b1) - 1;

:: POLYFORM:attrnot 3 => POLYFORM:attr 3
definition
  let a1 be PolyhedronStr;
  attr a1 is polyhedron_2 means
    for b1 being natural set
          st 1 <= b1 & b1 < len the PolytopsF of a1
       holds (the IncidenceF of a1) . b1 is Element of Funcs([:proj2 ((the PolytopsF of a1) . b1),proj2 ((the PolytopsF of a1) . (b1 + 1)):],{0. Z_2,1. Z_2});
end;

:: POLYFORM:dfs 2
definiens
  let a1 be PolyhedronStr;
To prove
     a1 is polyhedron_2
it is sufficient to prove
  thus for b1 being natural set
          st 1 <= b1 & b1 < len the PolytopsF of a1
       holds (the IncidenceF of a1) . b1 is Element of Funcs([:proj2 ((the PolytopsF of a1) . b1),proj2 ((the PolytopsF of a1) . (b1 + 1)):],{0. Z_2,1. Z_2});

:: POLYFORM:def 2
theorem
for b1 being PolyhedronStr holds
      b1 is polyhedron_2
   iff
      for b2 being natural set
            st 1 <= b2 & b2 < len the PolytopsF of b1
         holds (the IncidenceF of b1) . b2 is Element of Funcs([:proj2 ((the PolytopsF of b1) . b2),proj2 ((the PolytopsF of b1) . (b2 + 1)):],{0. Z_2,1. Z_2});

:: POLYFORM:attrnot 4 => POLYFORM:attr 4
definition
  let a1 be PolyhedronStr;
  attr a1 is polyhedron_3 means
    for b1 being natural set
          st 1 <= b1 & b1 <= len the PolytopsF of a1
       holds (the PolytopsF of a1) . b1 is not empty & (the PolytopsF of a1) . b1 is one-to-one;
end;

:: POLYFORM:dfs 3
definiens
  let a1 be PolyhedronStr;
To prove
     a1 is polyhedron_3
it is sufficient to prove
  thus for b1 being natural set
          st 1 <= b1 & b1 <= len the PolytopsF of a1
       holds (the PolytopsF of a1) . b1 is not empty & (the PolytopsF of a1) . b1 is one-to-one;

:: POLYFORM:def 3
theorem
for b1 being PolyhedronStr holds
      b1 is polyhedron_3
   iff
      for b2 being natural set
            st 1 <= b2 & b2 <= len the PolytopsF of b1
         holds (the PolytopsF of b1) . b2 is not empty & (the PolytopsF of b1) . b2 is one-to-one;

:: POLYFORM:exreg 2
registration
  cluster polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr;
end;

:: POLYFORM:modenot 2
definition
  mode polyhedron is polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr;
end;

:: POLYFORM:funcnot 7 => POLYFORM:func 7
definition
  let a1 be polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr;
  func dim A1 -> Element of NAT equals
    len the PolytopsF of a1;
end;

:: POLYFORM:def 4
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr holds
   dim b1 = len the PolytopsF of b1;

:: POLYFORM:funcnot 8 => POLYFORM:func 8
definition
  let a1 be polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr;
  let a2 be integer set;
  func A2 -polytopes A1 -> finite set means
    (- 1 <= a2 or it = {}) &
     (a2 = - 1 implies it = {{}}) &
     (- 1 < a2 & a2 < dim a1 implies it = proj2 ((the PolytopsF of a1) . (a2 + 1))) &
     (a2 = dim a1 implies it = {a1}) &
     (a2 <= dim a1 or it = {});
end;

:: POLYFORM:def 5
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set
for b3 being finite set holds
      b3 = b2 -polytopes b1
   iff
      (- 1 <= b2 or b3 = {}) &
       (b2 = - 1 implies b3 = {{}}) &
       (- 1 < b2 & b2 < dim b1 implies b3 = proj2 ((the PolytopsF of b1) . (b2 + 1))) &
       (b2 = dim b1 implies b3 = {b1}) &
       (b2 <= dim b1 or b3 = {});

:: POLYFORM:th 25
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set
      st - 1 < b2 & b2 < dim b1
   holds b2 + 1 is natural set & 1 <= b2 + 1 & b2 + 1 <= dim b1;

:: POLYFORM:th 26
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set holds
      b2 -polytopes b1 is not empty
   iff
      - 1 <= b2 & b2 <= dim b1;

:: POLYFORM:th 27
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set
      st b2 < dim b1
   holds b2 - 1 < dim b1;

:: POLYFORM:funcnot 9 => POLYFORM:func 9
definition
  let a1 be polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr;
  let a2 be integer set;
  func eta(A1,A2) -> Element of Funcs([:(a2 - 1) -polytopes a1,a2 -polytopes a1:],{0. Z_2,1. Z_2}) means
    (0 <= a2 or it = {}) &
     (a2 = 0 implies it = [:{{}},0 -polytopes a1:] --> 1. Z_2) &
     (0 < a2 & a2 < dim a1 implies it = (the IncidenceF of a1) . a2) &
     (a2 = dim a1 implies it = [:((dim a1) - 1) -polytopes a1,{a1}:] --> 1. Z_2) &
     (a2 <= dim a1 or it = {});
end;

:: POLYFORM:def 6
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set
for b3 being Element of Funcs([:(b2 - 1) -polytopes b1,b2 -polytopes b1:],{0. Z_2,1. Z_2}) holds
      b3 = eta(b1,b2)
   iff
      (0 <= b2 or b3 = {}) &
       (b2 = 0 implies b3 = [:{{}},0 -polytopes b1:] --> 1. Z_2) &
       (0 < b2 & b2 < dim b1 implies b3 = (the IncidenceF of b1) . b2) &
       (b2 = dim b1 implies b3 = [:((dim b1) - 1) -polytopes b1,{b1}:] --> 1. Z_2) &
       (b2 <= dim b1 or b3 = {});

:: POLYFORM:funcnot 10 => POLYFORM:func 10
definition
  let a1 be polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr;
  let a2 be integer set;
  func A2 -polytope-seq A1 -> Relation-like Function-like FinSequence-like set means
    (- 1 <= a2 or it = <*> {}) &
     (a2 = - 1 implies it = <*{}*>) &
     (- 1 < a2 & a2 < dim a1 implies it = (the PolytopsF of a1) . (a2 + 1)) &
     (a2 = dim a1 implies it = <*a1*>) &
     (a2 <= dim a1 or it = <*> {});
end;

:: POLYFORM:def 7
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set
for b3 being Relation-like Function-like FinSequence-like set holds
      b3 = b2 -polytope-seq b1
   iff
      (- 1 <= b2 or b3 = <*> {}) &
       (b2 = - 1 implies b3 = <*{}*>) &
       (- 1 < b2 & b2 < dim b1 implies b3 = (the PolytopsF of b1) . (b2 + 1)) &
       (b2 = dim b1 implies b3 = <*b1*>) &
       (b2 <= dim b1 or b3 = <*> {});

:: POLYFORM:funcnot 11 => POLYFORM:func 11
definition
  let a1 be polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr;
  let a2 be integer set;
  func num-polytopes(A1,A2) -> Element of NAT equals
    card (a2 -polytopes a1);
end;

:: POLYFORM:def 8
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set holds
   num-polytopes(b1,b2) = card (b2 -polytopes b1);

:: POLYFORM:funcnot 12 => POLYFORM:func 12
definition
  let a1 be polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr;
  func num-vertices A1 -> Element of NAT equals
    num-polytopes(a1,0);
end;

:: POLYFORM:def 9
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr holds
   num-vertices b1 = num-polytopes(b1,0);

:: POLYFORM:funcnot 13 => POLYFORM:func 13
definition
  let a1 be polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr;
  func num-edges A1 -> Element of NAT equals
    num-polytopes(a1,1);
end;

:: POLYFORM:def 10
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr holds
   num-edges b1 = num-polytopes(b1,1);

:: POLYFORM:funcnot 14 => POLYFORM:func 14
definition
  let a1 be polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr;
  func num-faces A1 -> Element of NAT equals
    num-polytopes(a1,2);
end;

:: POLYFORM:def 11
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr holds
   num-faces b1 = num-polytopes(b1,2);

:: POLYFORM:th 28
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set holds
   dom (b2 -polytope-seq b1) = Seg num-polytopes(b1,b2);

:: POLYFORM:th 29
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set holds
   len (b2 -polytope-seq b1) = num-polytopes(b1,b2);

:: POLYFORM:th 30
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set holds
   proj2 (b2 -polytope-seq b1) = b2 -polytopes b1;

:: POLYFORM:th 31
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr holds
   num-polytopes(b1,- 1) = 1;

:: POLYFORM:th 32
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr holds
   num-polytopes(b1,dim b1) = 1;

:: POLYFORM:funcnot 15 => POLYFORM:func 15
definition
  let a1 be polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr;
  let a2 be integer set;
  let a3 be natural set;
  assume 1 <= a3 & a3 <= num-polytopes(a1,a2) & - 1 <= a2 & a2 <= dim a1;
  func A3 -th-polytope(A1,A2) -> Element of a2 -polytopes a1 equals
    (a2 -polytope-seq a1) . a3;
end;

:: POLYFORM:def 12
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set
for b3 being natural set
      st 1 <= b3 & b3 <= num-polytopes(b1,b2) & - 1 <= b2 & b2 <= dim b1
   holds b3 -th-polytope(b1,b2) = (b2 -polytope-seq b1) . b3;

:: POLYFORM:th 33
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set
   st - 1 <= b2 & b2 <= dim b1
for b3 being Element of b2 -polytopes b1 holds
   ex b4 being natural set st
      b3 = b4 -th-polytope(b1,b2) & 1 <= b4 & b4 <= num-polytopes(b1,b2);

:: POLYFORM:th 34
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set holds
   b2 -polytope-seq b1 is one-to-one;

:: POLYFORM:th 35
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set
   st - 1 <= b2 & b2 <= dim b1
for b3, b4 being natural set
      st 1 <= b4 & b4 <= num-polytopes(b1,b2) & 1 <= b3 & b3 <= num-polytopes(b1,b2) & b4 -th-polytope(b1,b2) = b3 -th-polytope(b1,b2)
   holds b3 = b4;

:: POLYFORM:funcnot 16 => POLYFORM:func 16
definition
  let a1 be polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr;
  let a2 be integer set;
  let a3 be Element of (a2 - 1) -polytopes a1;
  let a4 be Element of a2 -polytopes a1;
  assume 0 <= a2 & a2 <= dim a1;
  func incidence-value(A3,A4) -> Element of the carrier of Z_2 equals
    (eta(a1,a2)) .(a3,a4);
end;

:: POLYFORM:def 13
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set
for b3 being Element of (b2 - 1) -polytopes b1
for b4 being Element of b2 -polytopes b1
      st 0 <= b2 & b2 <= dim b1
   holds incidence-value(b3,b4) = (eta(b1,b2)) .(b3,b4);

:: POLYFORM:funcnot 17 => POLYFORM:func 17
definition
  let a1 be polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr;
  let a2 be integer set;
  func A2 -chain-space A1 -> non empty right_complementable VectSp-like Abelian add-associative right_zeroed finite-dimensional VectSpStr over Z_2 equals
    bspace (a2 -polytopes a1);
end;

:: POLYFORM:def 14
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set holds
   b2 -chain-space b1 = bspace (b2 -polytopes b1);

:: POLYFORM:th 36
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set
for b3 being Element of b2 -polytopes b1 holds
   (0. (b2 -chain-space b1)) @ b3 = 0. Z_2;

:: POLYFORM:th 37
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set holds
   num-polytopes(b1,b2) = dim (b2 -chain-space b1);

:: POLYFORM:funcnot 18 => POLYFORM:func 18
definition
  let a1 be polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr;
  let a2 be integer set;
  func A2 -chains A1 -> non empty finite set equals
    bool (a2 -polytopes a1);
end;

:: POLYFORM:def 15
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set holds
   b2 -chains b1 = bool (b2 -polytopes b1);

:: POLYFORM:funcnot 19 => POLYFORM:func 19
definition
  let a1 be polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr;
  let a2 be integer set;
  let a3 be Element of (a2 - 1) -polytopes a1;
  let a4 be Element of the carrier of a2 -chain-space a1;
  func incidence-sequence(A3,A4) -> FinSequence of the carrier of Z_2 means
    ((a2 - 1) -polytopes a1 is empty implies it = <*> {}) &
     ((a2 - 1) -polytopes a1 is empty or len it = num-polytopes(a1,a2) &
      (for b1 being natural set
            st 1 <= b1 & b1 <= num-polytopes(a1,a2)
         holds it . b1 = (a4 @ (b1 -th-polytope(a1,a2))) * incidence-value(a3,b1 -th-polytope(a1,a2))));
end;

:: POLYFORM:def 16
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set
for b3 being Element of (b2 - 1) -polytopes b1
for b4 being Element of the carrier of b2 -chain-space b1
for b5 being FinSequence of the carrier of Z_2 holds
      b5 = incidence-sequence(b3,b4)
   iff
      ((b2 - 1) -polytopes b1 is empty implies b5 = <*> {}) &
       ((b2 - 1) -polytopes b1 is empty or len b5 = num-polytopes(b1,b2) &
        (for b6 being natural set
              st 1 <= b6 & b6 <= num-polytopes(b1,b2)
           holds b5 . b6 = (b4 @ (b6 -th-polytope(b1,b2))) * incidence-value(b3,b6 -th-polytope(b1,b2))));

:: POLYFORM:th 38
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set
for b3, b4 being Element of the carrier of b2 -chain-space b1
for b5 being Element of b2 -polytopes b1 holds
   (b3 + b4) @ b5 = (b3 @ b5) + (b4 @ b5);

:: POLYFORM:th 39
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set
for b3, b4 being Element of the carrier of b2 -chain-space b1
for b5 being Element of (b2 - 1) -polytopes b1 holds
   incidence-sequence(b5,b3 + b4) = (incidence-sequence(b5,b3)) + incidence-sequence(b5,b4);

:: POLYFORM:th 40
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set
for b3, b4 being Element of the carrier of b2 -chain-space b1
for b5 being Element of (b2 - 1) -polytopes b1 holds
   Sum ((incidence-sequence(b5,b3)) + incidence-sequence(b5,b4)) = (Sum incidence-sequence(b5,b3)) + Sum incidence-sequence(b5,b4);

:: POLYFORM:th 41
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set
for b3, b4 being Element of the carrier of b2 -chain-space b1
for b5 being Element of (b2 - 1) -polytopes b1 holds
   Sum incidence-sequence(b5,b3 + b4) = (Sum incidence-sequence(b5,b3)) + Sum incidence-sequence(b5,b4);

:: POLYFORM:th 42
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set
for b3 being Element of the carrier of b2 -chain-space b1
for b4 being Element of the carrier of Z_2
for b5 being Element of b2 -polytopes b1 holds
   (b4 * b3) @ b5 = b4 * (b3 @ b5);

:: POLYFORM:th 43
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set
for b3 being Element of the carrier of b2 -chain-space b1
for b4 being Element of the carrier of Z_2
for b5 being Element of (b2 - 1) -polytopes b1 holds
   incidence-sequence(b5,b4 * b3) = b4 * incidence-sequence(b5,b3);

:: POLYFORM:th 44
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set
for b3, b4 being Element of the carrier of b2 -chain-space b1 holds
   b3 = b4
iff
   for b5 being Element of b2 -polytopes b1 holds
      b3 @ b5 = b4 @ b5;

:: POLYFORM:th 45
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set
for b3, b4 being Element of the carrier of b2 -chain-space b1 holds
   b3 = b4
iff
   for b5 being Element of b2 -polytopes b1 holds
         b5 in b3
      iff
         b5 in b4;

:: POLYFORM:sch 1
scheme POLYFORM:sch 1
{F1 -> polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr,
  F2 -> integer set}:
ex b1 being Element of bool (F2() -polytopes F1()) st
   for b2 being Element of F2() -polytopes F1() holds
         b2 in b1
      iff
         P1[b2] & b2 in F2() -polytopes F1()


:: POLYFORM:funcnot 20 => POLYFORM:func 20
definition
  let a1 be polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr;
  let a2 be integer set;
  let a3 be Element of the carrier of a2 -chain-space a1;
  func Boundary A3 -> Element of the carrier of (a2 - 1) -chain-space a1 means
    ((a2 - 1) -polytopes a1 is empty implies it = 0. ((a2 - 1) -chain-space a1)) &
     ((a2 - 1) -polytopes a1 is empty or for b1 being Element of (a2 - 1) -polytopes a1 holds
           b1 in it
        iff
           Sum incidence-sequence(b1,a3) = 1. Z_2);
end;

:: POLYFORM:def 17
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set
for b3 being Element of the carrier of b2 -chain-space b1
for b4 being Element of the carrier of (b2 - 1) -chain-space b1 holds
      b4 = Boundary b3
   iff
      ((b2 - 1) -polytopes b1 is empty implies b4 = 0. ((b2 - 1) -chain-space b1)) &
       ((b2 - 1) -polytopes b1 is empty or for b5 being Element of (b2 - 1) -polytopes b1 holds
             b5 in b4
          iff
             Sum incidence-sequence(b5,b3) = 1. Z_2);

:: POLYFORM:th 46
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set
for b3 being Element of the carrier of b2 -chain-space b1
for b4 being Element of (b2 - 1) -polytopes b1 holds
   (Boundary b3) @ b4 = Sum incidence-sequence(b4,b3);

:: POLYFORM:funcnot 21 => POLYFORM:func 21
definition
  let a1 be polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr;
  let a2 be integer set;
  func A2 -boundary A1 -> Function-like quasi_total Relation of the carrier of a2 -chain-space a1,the carrier of (a2 - 1) -chain-space a1 means
    for b1 being Element of the carrier of a2 -chain-space a1 holds
       it . b1 = Boundary b1;
end;

:: POLYFORM:def 18
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set
for b3 being Function-like quasi_total Relation of the carrier of b2 -chain-space b1,the carrier of (b2 - 1) -chain-space b1 holds
      b3 = b2 -boundary b1
   iff
      for b4 being Element of the carrier of b2 -chain-space b1 holds
         b3 . b4 = Boundary b4;

:: POLYFORM:th 47
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set
for b3, b4 being Element of the carrier of b2 -chain-space b1 holds
Boundary (b3 + b4) = (Boundary b3) + Boundary b4;

:: POLYFORM:th 48
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set
for b3 being Element of the carrier of Z_2
for b4 being Element of the carrier of b2 -chain-space b1 holds
   Boundary (b3 * b4) = b3 * Boundary b4;

:: POLYFORM:th 49
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set holds
   b2 -boundary b1 is Function-like quasi_total linear Relation of the carrier of b2 -chain-space b1,the carrier of (b2 - 1) -chain-space b1;

:: POLYFORM:funcnot 22 => POLYFORM:func 22
definition
  let a1 be polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr;
  let a2 be integer set;
  redefine func a2 -boundary a1 -> Function-like quasi_total linear Relation of the carrier of a2 -chain-space a1,the carrier of (a2 - 1) -chain-space a1;
end;

:: POLYFORM:funcnot 23 => POLYFORM:func 23
definition
  let a1 be polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr;
  let a2 be integer set;
  func A2 -circuit-space A1 -> Subspace of a2 -chain-space a1 equals
    ker (a2 -boundary a1);
end;

:: POLYFORM:def 19
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set holds
   b2 -circuit-space b1 = ker (b2 -boundary b1);

:: POLYFORM:funcnot 24 => POLYFORM:func 24
definition
  let a1 be polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr;
  let a2 be integer set;
  func A2 -circuits A1 -> non empty Element of bool (a2 -chains a1) equals
    [#] (a2 -circuit-space a1);
end;

:: POLYFORM:def 20
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set holds
   b2 -circuits b1 = [#] (b2 -circuit-space b1);

:: POLYFORM:funcnot 25 => POLYFORM:func 25
definition
  let a1 be polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr;
  let a2 be integer set;
  func A2 -bounding-chain-space A1 -> Subspace of a2 -chain-space a1 equals
    im ((a2 + 1) -boundary a1);
end;

:: POLYFORM:def 21
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set holds
   b2 -bounding-chain-space b1 = im ((b2 + 1) -boundary b1);

:: POLYFORM:funcnot 26 => POLYFORM:func 26
definition
  let a1 be polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr;
  let a2 be integer set;
  func A2 -bounding-chains A1 -> non empty Element of bool (a2 -chains a1) equals
    [#] (a2 -bounding-chain-space a1);
end;

:: POLYFORM:def 22
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set holds
   b2 -bounding-chains b1 = [#] (b2 -bounding-chain-space b1);

:: POLYFORM:funcnot 27 => POLYFORM:func 27
definition
  let a1 be polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr;
  let a2 be integer set;
  func A2 -bounding-circuit-space A1 -> Subspace of a2 -chain-space a1 equals
    (a2 -bounding-chain-space a1) /\ (a2 -circuit-space a1);
end;

:: POLYFORM:def 23
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set holds
   b2 -bounding-circuit-space b1 = (b2 -bounding-chain-space b1) /\ (b2 -circuit-space b1);

:: POLYFORM:funcnot 28 => POLYFORM:func 28
definition
  let a1 be polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr;
  let a2 be integer set;
  func A2 -bounding-circuits A1 -> non empty Element of bool (a2 -chains a1) equals
    [#] (a2 -bounding-circuit-space a1);
end;

:: POLYFORM:def 24
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set holds
   b2 -bounding-circuits b1 = [#] (b2 -bounding-circuit-space b1);

:: POLYFORM:th 50
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set holds
   dim (b2 -chain-space b1) = (rank (b2 -boundary b1)) + nullity (b2 -boundary b1);

:: POLYFORM:attrnot 5 => POLYFORM:attr 5
definition
  let a1 be polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr;
  attr a1 is simply-connected means
    for b1 being integer set holds
       b1 -circuits a1 = b1 -bounding-chains a1;
end;

:: POLYFORM:dfs 25
definiens
  let a1 be polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr;
To prove
     a1 is simply-connected
it is sufficient to prove
  thus for b1 being integer set holds
       b1 -circuits a1 = b1 -bounding-chains a1;

:: POLYFORM:def 25
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr holds
      b1 is simply-connected
   iff
      for b2 being integer set holds
         b2 -circuits b1 = b2 -bounding-chains b1;

:: POLYFORM:th 51
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr holds
      b1 is simply-connected
   iff
      for b2 being integer set holds
         b2 -circuit-space b1 = b2 -bounding-chain-space b1;

:: POLYFORM:funcnot 29 => POLYFORM:func 29
definition
  let a1 be polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr;
  func alternating-f-vector A1 -> FinSequence of INT means
    len it = (dim a1) + 2 &
     (for b1 being natural set
           st 1 <= b1 & b1 <= (dim a1) + 2
        holds it . b1 = ((- 1) |^ b1) * num-polytopes(a1,b1 - 2));
end;

:: POLYFORM:def 26
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being FinSequence of INT holds
      b2 = alternating-f-vector b1
   iff
      len b2 = (dim b1) + 2 &
       (for b3 being natural set
             st 1 <= b3 & b3 <= (dim b1) + 2
          holds b2 . b3 = ((- 1) |^ b3) * num-polytopes(b1,b3 - 2));

:: POLYFORM:funcnot 30 => POLYFORM:func 30
definition
  let a1 be polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr;
  func alternating-proper-f-vector A1 -> FinSequence of INT means
    len it = dim a1 &
     (for b1 being natural set
           st 1 <= b1 & b1 <= dim a1
        holds it . b1 = ((- 1) |^ (b1 + 1)) * num-polytopes(a1,b1 - 1));
end;

:: POLYFORM:def 27
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being FinSequence of INT holds
      b2 = alternating-proper-f-vector b1
   iff
      len b2 = dim b1 &
       (for b3 being natural set
             st 1 <= b3 & b3 <= dim b1
          holds b2 . b3 = ((- 1) |^ (b3 + 1)) * num-polytopes(b1,b3 - 1));

:: POLYFORM:funcnot 31 => POLYFORM:func 31
definition
  let a1 be polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr;
  func alternating-semi-proper-f-vector A1 -> FinSequence of INT means
    len it = (dim a1) + 1 &
     (for b1 being natural set
           st 1 <= b1 & b1 <= (dim a1) + 1
        holds it . b1 = ((- 1) |^ (b1 + 1)) * num-polytopes(a1,b1 - 1));
end;

:: POLYFORM:def 28
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being FinSequence of INT holds
      b2 = alternating-semi-proper-f-vector b1
   iff
      len b2 = (dim b1) + 1 &
       (for b3 being natural set
             st 1 <= b3 & b3 <= (dim b1) + 1
          holds b2 . b3 = ((- 1) |^ (b3 + 1)) * num-polytopes(b1,b3 - 1));

:: POLYFORM:th 52
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being natural set
      st 1 <= b2 & b2 <= len alternating-proper-f-vector b1
   holds (alternating-proper-f-vector b1) . b2 = (((- 1) |^ (b2 + 1)) * dim ((b2 - 2) -bounding-chain-space b1)) + (((- 1) |^ (b2 + 1)) * dim ((b2 - 1) -circuit-space b1));

:: POLYFORM:attrnot 6 => POLYFORM:attr 6
definition
  let a1 be polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr;
  attr a1 is eulerian means
    Sum alternating-proper-f-vector a1 = 1 + ((- 1) |^ ((dim a1) + 1));
end;

:: POLYFORM:dfs 29
definiens
  let a1 be polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr;
To prove
     a1 is eulerian
it is sufficient to prove
  thus Sum alternating-proper-f-vector a1 = 1 + ((- 1) |^ ((dim a1) + 1));

:: POLYFORM:def 29
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr holds
      b1 is eulerian
   iff
      Sum alternating-proper-f-vector b1 = 1 + ((- 1) |^ ((dim b1) + 1));

:: POLYFORM:th 53
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr holds
   alternating-semi-proper-f-vector b1 = (alternating-proper-f-vector b1) ^ <*(- 1) |^ dim b1*>;

:: POLYFORM:attrnot 7 => POLYFORM:attr 6
definition
  let a1 be polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr;
  attr a1 is eulerian means
    Sum alternating-semi-proper-f-vector a1 = 1;
end;

:: POLYFORM:dfs 30
definiens
  let a1 be polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr;
To prove
     a1 is eulerian
it is sufficient to prove
  thus Sum alternating-semi-proper-f-vector a1 = 1;

:: POLYFORM:def 30
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr holds
      b1 is eulerian
   iff
      Sum alternating-semi-proper-f-vector b1 = 1;

:: POLYFORM:th 54
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr holds
   alternating-f-vector b1 = <*- 1*> ^ alternating-semi-proper-f-vector b1;

:: POLYFORM:attrnot 8 => POLYFORM:attr 6
definition
  let a1 be polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr;
  attr a1 is eulerian means
    Sum alternating-f-vector a1 = 0;
end;

:: POLYFORM:dfs 31
definiens
  let a1 be polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr;
To prove
     a1 is eulerian
it is sufficient to prove
  thus Sum alternating-f-vector a1 = 0;

:: POLYFORM:def 31
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr holds
      b1 is eulerian
   iff
      Sum alternating-f-vector b1 = 0;

:: POLYFORM:th 55
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr holds
   0 -polytopes b1 is not empty;

:: POLYFORM:th 56
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr holds
   Card [#] ((- 1) -chain-space b1) = 2;

:: POLYFORM:th 57
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr holds
   [#] ((- 1) -chain-space b1) = {{},{{}}};

:: POLYFORM:th 58
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set
for b3 being Element of b2 -polytopes b1
for b4 being Element of (b2 - 1) -polytopes b1
      st b2 = 0 & b4 = {}
   holds incidence-value(b4,b3) = 1. Z_2;

:: POLYFORM:th 59
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set
for b3 being Element of b2 -polytopes b1
for b4 being Element of the carrier of b2 -chain-space b1
for b5 being Element of (b2 - 1) -polytopes b1
for b6 being natural set
      st b2 = 0 & b4 = {b3} & b5 = {} & b3 = b6 -th-polytope(b1,b2) & 1 <= b6 & b6 <= num-polytopes(b1,b2)
   holds (incidence-sequence(b5,b4)) . b6 = 1. Z_2;

:: POLYFORM:th 60
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set
for b3 being Element of b2 -polytopes b1
for b4 being Element of (b2 - 1) -polytopes b1
for b5 being Element of the carrier of b2 -chain-space b1
for b6, b7 being natural set
      st b2 = 0 & b5 = {b3} & b3 = b7 -th-polytope(b1,b2) & 1 <= b6 & b6 <= num-polytopes(b1,b2) & 1 <= b7 & b7 <= num-polytopes(b1,b2) & b6 <> b7
   holds (incidence-sequence(b4,b5)) . b6 = 0. Z_2;

:: POLYFORM:th 61
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set
for b3 being Element of b2 -polytopes b1
for b4 being Element of the carrier of b2 -chain-space b1
for b5 being Element of (b2 - 1) -polytopes b1
      st b2 = 0 & b4 = {b3} & b5 = {}
   holds Sum incidence-sequence(b5,b4) = 1. Z_2;

:: POLYFORM:th 62
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being Element of 0 -polytopes b1 holds
   (0 -boundary b1) . {b2} = {{}};

:: POLYFORM:th 63
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being integer set
      st b2 = - 1
   holds dim (b2 -bounding-chain-space b1) = 1;

:: POLYFORM:th 64
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr holds
   Card [#] ((dim b1) -chain-space b1) = 2;

:: POLYFORM:th 65
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr holds
   {b1} is Element of the carrier of (dim b1) -chain-space b1;

:: POLYFORM:th 66
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr holds
   {b1} in [#] ((dim b1) -chain-space b1);

:: POLYFORM:th 67
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr holds
   ((dim b1) - 1) -polytopes b1 is not empty;

:: POLYFORM:funcreg 2
registration
  let a1 be polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr;
  cluster ((dim a1) - 1) -polytopes a1 -> non empty finite;
end;

:: POLYFORM:th 68
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr holds
   [#] ((dim b1) -chain-space b1) = {0. ((dim b1) -chain-space b1),{b1}};

:: POLYFORM:th 69
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being Element of the carrier of (dim b1) -chain-space b1
      st b2 <> 0. ((dim b1) -chain-space b1)
   holds b2 = {b1};

:: POLYFORM:th 70
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2, b3 being Element of the carrier of (dim b1) -chain-space b1
      st b2 <> b3 & b2 <> 0. ((dim b1) -chain-space b1)
   holds b3 = 0. ((dim b1) -chain-space b1);

:: POLYFORM:th 71
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr holds
   (dim b1) -polytope-seq b1 = <*b1*>;

:: POLYFORM:th 72
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr holds
   1 -th-polytope(b1,dim b1) = b1;

:: POLYFORM:th 73
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being Element of the carrier of (dim b1) -chain-space b1
for b3 being Element of (dim b1) -polytopes b1
      st b2 = {b1}
   holds b2 @ b3 = 1. Z_2;

:: POLYFORM:th 74
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being Element of ((dim b1) - 1) -polytopes b1
for b3 being Element of (dim b1) -polytopes b1
      st b3 = b1
   holds incidence-value(b2,b3) = 1. Z_2;

:: POLYFORM:th 75
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being Element of ((dim b1) - 1) -polytopes b1
for b3 being Element of the carrier of (dim b1) -chain-space b1
      st b3 = {b1}
   holds incidence-sequence(b2,b3) = <*1. Z_2*>;

:: POLYFORM:th 76
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being Element of ((dim b1) - 1) -polytopes b1
for b3 being Element of the carrier of (dim b1) -chain-space b1
      st b3 = {b1}
   holds Sum incidence-sequence(b2,b3) = 1. Z_2;

:: POLYFORM:th 77
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr holds
   ((dim b1) -boundary b1) . {b1} = ((dim b1) - 1) -polytopes b1;

:: POLYFORM:th 78
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr holds
   (dim b1) -boundary b1 is one-to-one;

:: POLYFORM:th 79
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr holds
   dim (((dim b1) - 1) -bounding-chain-space b1) = 1;

:: POLYFORM:th 80
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
      st b1 is simply-connected
   holds dim (((dim b1) - 1) -circuit-space b1) = 1;

:: POLYFORM:th 81
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
for b2 being natural set
      st 1 < b2 & b2 < (dim b1) + 2
   holds (alternating-f-vector b1) . b2 = (alternating-proper-f-vector b1) . (b2 - 1);

:: POLYFORM:th 82
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr holds
   alternating-f-vector b1 = (<*- 1*> ^ alternating-proper-f-vector b1) ^ <*(- 1) |^ dim b1*>;

:: POLYFORM:th 83
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
      st dim b1 is odd
   holds Sum alternating-f-vector b1 = (Sum alternating-proper-f-vector b1) - 2;

:: POLYFORM:th 84
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
      st dim b1 is even
   holds Sum alternating-f-vector b1 = Sum alternating-proper-f-vector b1;

:: POLYFORM:th 85
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
      st dim b1 = 1
   holds Sum alternating-proper-f-vector b1 = num-polytopes(b1,0);

:: POLYFORM:th 86
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
      st dim b1 = 2
   holds Sum alternating-proper-f-vector b1 = (num-polytopes(b1,0)) - num-polytopes(b1,1);

:: POLYFORM:th 87
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
      st dim b1 = 3
   holds Sum alternating-proper-f-vector b1 = ((num-polytopes(b1,0)) - num-polytopes(b1,1)) + num-polytopes(b1,2);

:: POLYFORM:th 88
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
      st dim b1 = 0
   holds b1 is eulerian;

:: POLYFORM:th 89
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
      st b1 is simply-connected
   holds b1 is eulerian;

:: POLYFORM:th 90
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
      st b1 is simply-connected & dim b1 = 1
   holds num-vertices b1 = 2;

:: POLYFORM:th 91
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
      st b1 is simply-connected & dim b1 = 2
   holds num-vertices b1 = num-edges b1;

:: POLYFORM:th 92
theorem
for b1 being polyhedron_1 polyhedron_2 polyhedron_3 PolyhedronStr
      st b1 is simply-connected & dim b1 = 3
   holds ((num-vertices b1) - num-edges b1) + num-faces b1 = 2;