Article PNPROC_1, MML version 4.99.1005

:: PNPROC_1:th 1
theorem
for b1 being Element of NAT
for b2 being set
      st 0 < b1
   holds {[b1,b2]} is Relation-like Function-like FinSubsequence-like set;

:: PNPROC_1:th 2
theorem
for b1 being Relation-like Function-like FinSubsequence-like set holds
      b1 = {}
   iff
      Seq b1 = {};

:: PNPROC_1:th 3
theorem
for b1 being Element of NAT
for b2 being set
for b3 being Relation-like Function-like FinSubsequence-like set
      st b3 = {[b1,b2]}
   holds Seq b3 = <*b2*>;

:: PNPROC_1:condreg 1
registration
  cluster Relation-like Function-like FinSubsequence-like -> finite (set);
end;

:: PNPROC_1:th 4
theorem
for b1 being set
for b2 being Relation-like Function-like FinSubsequence-like set
      st Seq b2 = <*b1*>
   holds ex b3 being Element of NAT st
      b2 = {[b3,b1]};

:: PNPROC_1:th 5
theorem
for b1, b2, b3, b4 being set
      st {[b1,b2],[b3,b4]} is Relation-like Function-like FinSequence-like set &
         (b1 = 1 & b3 = 1 implies b2 <> b4) &
         (b1 = 1 implies b3 <> 2)
   holds b1 = 2 & b3 = 1;

:: PNPROC_1:th 6
theorem
for b1, b2 being set holds
<*b1,b2*> = {[1,b1],[2,b2]};

:: PNPROC_1:th 7
theorem
for b1 being Relation-like Function-like FinSubsequence-like set holds
   Card b1 = len Seq b1;

:: PNPROC_1:th 8
theorem
for b1, b2 being Relation-like set
      st proj1 b1 misses proj1 b2
   holds b1 misses b2;

:: PNPROC_1:th 9
theorem
for b1, b2 being set
for b3, b4 being Relation-like set
      st b1 misses b2
   holds b3 | b1 misses b4 | b2;

:: PNPROC_1:th 10
theorem
for b1, b2, b3 being Relation-like Function-like set
      st b1 c= b3 & b2 c= b3 & b1 misses b2
   holds proj1 b1 misses proj1 b2;

:: PNPROC_1:th 11
theorem
for b1 being set
for b2 being Relation-like set holds
   b1 | b2 c= b2 | (b2 " b1);

:: PNPROC_1:th 12
theorem
for b1 being set
for b2 being Relation-like Function-like set holds
   b1 | b2 = b2 | (b2 " b1);

:: PNPROC_1:modenot 1 => PNPROC_1:mode 1
definition
  let a1 be set;
  mode marking of A1 -> Relation-like Function-like set means
    proj1 it = a1 & proj2 it c= NAT;
end;

:: PNPROC_1:dfs 1
definiens
  let a1 be set;
  let a2 be Relation-like Function-like set;
To prove
     a2 is marking of a1
it is sufficient to prove
  thus proj1 a2 = a1 & proj2 a2 c= NAT;

:: PNPROC_1:def 1
theorem
for b1 being set
for b2 being Relation-like Function-like set holds
      b2 is marking of b1
   iff
      proj1 b2 = b1 & proj2 b2 c= NAT;

:: PNPROC_1:modenot 2 => PNPROC_1:mode 2
definition
  let a1 be set;
  redefine mode marking of a1 -> Function-like quasi_total Relation of a1,NAT;
end;

:: PNPROC_1:funcnot 1 => FUNCT_1:func 1
notation
  let a1 be set;
  let a2 be marking of a1;
  let a3 be set;
  synonym a2 multitude_of a3 for a1 . a2;
end;

:: PNPROC_1:sch 1
scheme PNPROC_1:sch 1
{F1 -> set,
  F2 -> Element of NAT}:
ex b1 being marking of F1() st
   for b2 being set
         st b2 in F1()
      holds b1 . b2 = F2(b2)


:: PNPROC_1:prednot 1 => PNPROC_1:pred 1
definition
  let a1 be set;
  let a2, a3 be marking of a1;
  redefine pred A2 = A3 means
    for b1 being set
          st b1 in a1
       holds a2 . b1 = a3 . b1;
  symmetry;
::  for a1 being set
::  for a2, a3 being marking of a1
::        st a2 = a3
::     holds a3 = a2;
  reflexivity;
::  for a1 being set
::  for a2 being marking of a1 holds
::     a2 = a2;
end;

:: PNPROC_1:dfs 2
definiens
  let a1 be set;
  let a2, a3 be marking of a1;
To prove
     a2 = a3
it is sufficient to prove
  thus for b1 being set
          st b1 in a1
       holds a2 . b1 = a3 . b1;

:: PNPROC_1:def 2
theorem
for b1 being set
for b2, b3 being marking of b1 holds
   b2 = b3
iff
   for b4 being set
         st b4 in b1
      holds b2 . b4 = b3 . b4;

:: PNPROC_1:funcnot 2 => PNPROC_1:func 1
definition
  let a1 be set;
  func {$} A1 -> marking of a1 equals
    a1 --> 0;
end;

:: PNPROC_1:def 3
theorem
for b1 being set holds
   {$} b1 = b1 --> 0;

:: PNPROC_1:prednot 2 => PNPROC_1:pred 2
definition
  let a1 be set;
  let a2, a3 be marking of a1;
  pred A2 c= A3 means
    for b1 being set
          st b1 in a1
       holds a2 . b1 <= a3 . b1;
  reflexivity;
::  for a1 being set
::  for a2 being marking of a1 holds
::     a2 c= a2;
end;

:: PNPROC_1:dfs 4
definiens
  let a1 be set;
  let a2, a3 be marking of a1;
To prove
     a2 c= a3
it is sufficient to prove
  thus for b1 being set
          st b1 in a1
       holds a2 . b1 <= a3 . b1;

:: PNPROC_1:def 4
theorem
for b1 being set
for b2, b3 being marking of b1 holds
   b2 c= b3
iff
   for b4 being set
         st b4 in b1
      holds b2 . b4 <= b3 . b4;

:: PNPROC_1:th 13
theorem
for b1 being set
for b2 being marking of b1 holds
   {$} b1 c= b2;

:: PNPROC_1:th 14
theorem
for b1 being set
for b2, b3, b4 being marking of b1
      st b2 c= b3 & b3 c= b4
   holds b2 c= b4;

:: PNPROC_1:funcnot 3 => PNPROC_1:func 2
definition
  let a1 be set;
  let a2, a3 be marking of a1;
  redefine func A2 + A3 -> marking of a1 means
    for b1 being set
          st b1 in a1
       holds it . b1 = (a2 . b1) + (a3 . b1);
  commutativity;
::  for a1 being set
::  for a2, a3 being marking of a1 holds
::  a2 + a3 = a3 + a2;
end;

:: PNPROC_1:def 5
theorem
for b1 being set
for b2, b3, b4 being marking of b1 holds
   b4 = b2 + b3
iff
   for b5 being set
         st b5 in b1
      holds b4 . b5 = (b2 . b5) + (b3 . b5);

:: PNPROC_1:th 15
theorem
for b1 being set
for b2 being marking of b1 holds
   b2 + {$} b1 = b2;

:: PNPROC_1:funcnot 4 => PNPROC_1:func 3
definition
  let a1 be set;
  let a2, a3 be marking of a1;
  assume a3 c= a2;
  func A2 - A3 -> marking of a1 means
    for b1 being set
          st b1 in a1
       holds it . b1 = (a2 . b1) - (a3 . b1);
end;

:: PNPROC_1:def 6
theorem
for b1 being set
for b2, b3 being marking of b1
   st b3 c= b2
for b4 being marking of b1 holds
      b4 = b2 - b3
   iff
      for b5 being set
            st b5 in b1
         holds b4 . b5 = (b2 . b5) - (b3 . b5);

:: PNPROC_1:th 16
theorem
for b1 being set
for b2, b3 being marking of b1 holds
b2 c= b2 + b3;

:: PNPROC_1:th 17
theorem
for b1 being set
for b2 being marking of b1 holds
   b2 - {$} b1 = b2;

:: PNPROC_1:th 18
theorem
for b1 being set
for b2, b3, b4 being marking of b1
      st b2 c= b3 & b3 c= b4
   holds b4 - b3 c= b4 - b2;

:: PNPROC_1:th 19
theorem
for b1 being set
for b2, b3 being marking of b1 holds
(b2 + b3) - b3 = b2;

:: PNPROC_1:th 20
theorem
for b1 being set
for b2, b3, b4 being marking of b1
      st b2 c= b3 & b3 c= b4
   holds b3 - b2 c= b4 - b2;

:: PNPROC_1:th 21
theorem
for b1 being set
for b2, b3, b4 being marking of b1
      st b2 c= b3
   holds (b3 + b4) - b2 = (b3 - b2) + b4;

:: PNPROC_1:th 22
theorem
for b1 being set
for b2, b3 being marking of b1
      st b2 c= b3 & b3 c= b2
   holds b2 = b3;

:: PNPROC_1:th 23
theorem
for b1 being set
for b2, b3, b4 being marking of b1 holds
(b2 + b3) + b4 = b2 + (b3 + b4);

:: PNPROC_1:th 24
theorem
for b1 being set
for b2, b3, b4, b5 being marking of b1
      st b2 c= b3 & b4 c= b5
   holds b2 + b4 c= b3 + b5;

:: PNPROC_1:th 25
theorem
for b1 being set
for b2, b3 being marking of b1
      st b2 c= b3
   holds b3 - b2 c= b3;

:: PNPROC_1:th 26
theorem
for b1 being set
for b2, b3, b4, b5 being marking of b1
      st b2 c= b3 & b4 c= b5 & b5 c= b2
   holds b2 - b5 c= b3 - b4;

:: PNPROC_1:th 27
theorem
for b1 being set
for b2, b3 being marking of b1
      st b2 c= b3
   holds b3 = (b3 - b2) + b2;

:: PNPROC_1:th 28
theorem
for b1 being set
for b2, b3 being marking of b1 holds
(b2 + b3) - b2 = b3;

:: PNPROC_1:th 29
theorem
for b1 being set
for b2, b3, b4 being marking of b1
      st b2 + b3 c= b4
   holds (b4 - b2) - b3 = b4 - (b2 + b3);

:: PNPROC_1:th 30
theorem
for b1 being set
for b2, b3, b4 being marking of b1
      st b2 c= b3 & b3 c= b4
   holds b4 - (b3 - b2) = (b4 - b3) + b2;

:: PNPROC_1:th 31
theorem
for b1 being set
for b2 being marking of b1 holds
   b2 in Funcs(b1,NAT);

:: PNPROC_1:th 32
theorem
for b1, b2 being set
      st b1 in Funcs(b2,NAT)
   holds b1 is marking of b2;

:: PNPROC_1:modenot 3 => PNPROC_1:mode 3
definition
  let a1 be set;
  mode transition of A1 means
    ex b1, b2 being marking of a1 st
       it = [b1,b2];
end;

:: PNPROC_1:dfs 7
definiens
  let a1, a2 be set;
To prove
     a2 is transition of a1
it is sufficient to prove
  thus ex b1, b2 being marking of a1 st
       a2 = [b1,b2];

:: PNPROC_1:def 7
theorem
for b1, b2 being set holds
   b2 is transition of b1
iff
   ex b3, b4 being marking of b1 st
      b2 = [b3,b4];

:: PNPROC_1:funcnot 5 => MCART_1:func 1
notation
  let a1 be set;
  let a2 be transition of a1;
  synonym Pre a2 for a1 `1;
end;

:: PNPROC_1:funcnot 6 => MCART_1:func 2
notation
  let a1 be set;
  let a2 be transition of a1;
  synonym Post a2 for a1 `2;
end;

:: PNPROC_1:funcnot 7 => PNPROC_1:func 4
definition
  let a1 be set;
  let a2 be transition of a1;
  redefine func Pre a2 -> marking of a1;
end;

:: PNPROC_1:funcnot 8 => PNPROC_1:func 5
definition
  let a1 be set;
  let a2 be transition of a1;
  redefine func Post a2 -> marking of a1;
end;

:: PNPROC_1:funcnot 9 => PNPROC_1:func 6
definition
  let a1 be set;
  let a2 be marking of a1;
  let a3 be transition of a1;
  func fire(A3,A2) -> marking of a1 equals
    (a2 - Pre a3) + Post a3
    if Pre a3 c= a2
    otherwise a2;
end;

:: PNPROC_1:def 8
theorem
for b1 being set
for b2 being marking of b1
for b3 being transition of b1 holds
   (Pre b3 c= b2 implies fire(b3,b2) = (b2 - Pre b3) + Post b3) &
    (Pre b3 c= b2 or fire(b3,b2) = b2);

:: PNPROC_1:th 33
theorem
for b1 being set
for b2 being marking of b1
for b3, b4 being transition of b1
      st (Pre b3) + Pre b4 c= b2
   holds fire(b4,fire(b3,b2)) = (((b2 - Pre b3) - Pre b4) + Post b3) + Post b4;

:: PNPROC_1:funcnot 10 => PNPROC_1:func 7
definition
  let a1 be set;
  let a2 be transition of a1;
  func fire A2 -> Relation-like Function-like set means
    proj1 it = Funcs(a1,NAT) &
     (for b1 being marking of a1 holds
        it . b1 = fire(a2,b1));
end;

:: PNPROC_1:def 9
theorem
for b1 being set
for b2 being transition of b1
for b3 being Relation-like Function-like set holds
      b3 = fire b2
   iff
      proj1 b3 = Funcs(b1,NAT) &
       (for b4 being marking of b1 holds
          b3 . b4 = fire(b2,b4));

:: PNPROC_1:th 34
theorem
for b1 being set
for b2 being transition of b1 holds
   proj2 fire b2 c= Funcs(b1,NAT);

:: PNPROC_1:th 35
theorem
for b1 being set
for b2 being marking of b1
for b3, b4 being transition of b1 holds
fire(b3,fire(b4,b2)) = ((fire b4) * fire b3) . b2;

:: PNPROC_1:modenot 4 => PNPROC_1:mode 4
definition
  let a1 be set;
  mode Petri_net of A1 -> non empty set means
    for b1 being set
          st b1 in it
       holds b1 is transition of a1;
end;

:: PNPROC_1:dfs 10
definiens
  let a1 be set;
  let a2 be non empty set;
To prove
     a2 is Petri_net of a1
it is sufficient to prove
  thus for b1 being set
          st b1 in a2
       holds b1 is transition of a1;

:: PNPROC_1:def 10
theorem
for b1 being set
for b2 being non empty set holds
      b2 is Petri_net of b1
   iff
      for b3 being set
            st b3 in b2
         holds b3 is transition of b1;

:: PNPROC_1:modenot 5 => PNPROC_1:mode 5
definition
  let a1 be set;
  let a2 be Petri_net of a1;
  redefine mode Element of a2 -> transition of a1;
end;

:: PNPROC_1:modenot 6
definition
  let a1 be set;
  let a2 be Petri_net of a1;
  mode firing-sequence of a2 is Element of a2 *;
end;

:: PNPROC_1:funcnot 11 => PNPROC_1:func 8
definition
  let a1 be set;
  let a2 be Petri_net of a1;
  let a3 be Element of a2 *;
  func fire A3 -> Relation-like Function-like set means
    ex b1 being Relation-like Function-like Function-yielding FinSequence-like set st
       it = compose(b1,Funcs(a1,NAT)) &
        len b1 = len a3 &
        (for b2 being Element of NAT
              st b2 in dom a3
           holds b1 . b2 = fire (a3 /. b2));
end;

:: PNPROC_1:def 11
theorem
for b1 being set
for b2 being Petri_net of b1
for b3 being Element of b2 *
for b4 being Relation-like Function-like set holds
      b4 = fire b3
   iff
      ex b5 being Relation-like Function-like Function-yielding FinSequence-like set st
         b4 = compose(b5,Funcs(b1,NAT)) &
          len b5 = len b3 &
          (for b6 being Element of NAT
                st b6 in dom b3
             holds b5 . b6 = fire (b3 /. b6));

:: PNPROC_1:th 36
theorem
for b1 being set
for b2 being Petri_net of b1 holds
   fire <*> b2 = id Funcs(b1,NAT);

:: PNPROC_1:th 37
theorem
for b1 being set
for b2 being Petri_net of b1
for b3 being Element of b2 holds
   fire <*b3*> = fire b3;

:: PNPROC_1:th 38
theorem
for b1 being set
for b2 being Petri_net of b1
for b3 being Element of b2 holds
   (id Funcs(b1,NAT)) * fire b3 = fire b3;

:: PNPROC_1:th 39
theorem
for b1 being set
for b2 being Petri_net of b1
for b3, b4 being Element of b2 holds
fire <*b3,b4*> = (fire b3) * fire b4;

:: PNPROC_1:th 40
theorem
for b1 being set
for b2 being Petri_net of b1
for b3 being Element of b2 * holds
   proj1 fire b3 = Funcs(b1,NAT) & proj2 fire b3 c= Funcs(b1,NAT);

:: PNPROC_1:th 41
theorem
for b1 being set
for b2 being Petri_net of b1
for b3, b4 being Element of b2 * holds
fire (b3 ^ b4) = (fire b3) * fire b4;

:: PNPROC_1:th 42
theorem
for b1 being set
for b2 being Petri_net of b1
for b3 being Element of b2
for b4 being Element of b2 * holds
   fire (b4 ^ <*b3*>) = (fire b4) * fire b3;

:: PNPROC_1:funcnot 12 => PNPROC_1:func 9
definition
  let a1 be set;
  let a2 be Petri_net of a1;
  let a3 be Element of a2 *;
  let a4 be marking of a1;
  func fire(A3,A4) -> marking of a1 equals
    (fire a3) . a4;
end;

:: PNPROC_1:def 12
theorem
for b1 being set
for b2 being Petri_net of b1
for b3 being Element of b2 *
for b4 being marking of b1 holds
   fire(b3,b4) = (fire b3) . b4;

:: PNPROC_1:modenot 7
definition
  let a1 be set;
  let a2 be Petri_net of a1;
  mode process of a2 is Element of bool (a2 *);
end;

:: PNPROC_1:condreg 2
registration
  cluster Relation-like Function-like FinSequence-like -> FinSubsequence-like (set);
end;

:: PNPROC_1:funcnot 13 => PNPROC_1:func 10
definition
  let a1 be set;
  let a2 be Petri_net of a1;
  let a3, a4 be Element of bool (a2 *);
  func A3 before A4 -> Element of bool (a2 *) equals
    {b1 ^ b2 where b1 is Element of a2 *, b2 is Element of a2 *: b1 in a3 & b2 in a4};
end;

:: PNPROC_1:def 13
theorem
for b1 being set
for b2 being Petri_net of b1
for b3, b4 being Element of bool (b2 *) holds
b3 before b4 = {b5 ^ b6 where b5 is Element of b2 *, b6 is Element of b2 *: b5 in b3 & b6 in b4};

:: PNPROC_1:funcreg 1
registration
  let a1 be set;
  let a2 be Petri_net of a1;
  let a3, a4 be non empty Element of bool (a2 *);
  cluster a3 before a4 -> non empty;
end;

:: PNPROC_1:th 43
theorem
for b1 being set
for b2 being Petri_net of b1
for b3, b4, b5 being Element of bool (b2 *) holds
(b3 \/ b4) before b5 = (b3 before b5) \/ (b4 before b5);

:: PNPROC_1:th 44
theorem
for b1 being set
for b2 being Petri_net of b1
for b3, b4, b5 being Element of bool (b2 *) holds
b3 before (b4 \/ b5) = (b3 before b4) \/ (b3 before b5);

:: PNPROC_1:th 45
theorem
for b1 being set
for b2 being Petri_net of b1
for b3, b4 being Element of b2 * holds
{b3} before {b4} = {b3 ^ b4};

:: PNPROC_1:th 46
theorem
for b1 being set
for b2 being Petri_net of b1
for b3, b4, b5 being Element of b2 * holds
{b3,b4} before {b5} = {b3 ^ b5,b4 ^ b5};

:: PNPROC_1:th 47
theorem
for b1 being set
for b2 being Petri_net of b1
for b3, b4, b5 being Element of b2 * holds
{b3} before {b4,b5} = {b3 ^ b4,b3 ^ b5};

:: PNPROC_1:funcnot 14 => PNPROC_1:func 11
definition
  let a1 be set;
  let a2 be Petri_net of a1;
  let a3, a4 be Element of bool (a2 *);
  func A3 concur A4 -> Element of bool (a2 *) equals
    {b1 where b1 is Element of a2 *: ex b2, b3 being Relation-like Function-like FinSubsequence-like set st
       b1 = b2 \/ b3 & b2 misses b3 & Seq b2 in a3 & Seq b3 in a4};
  commutativity;
::  for a1 being set
::  for a2 being Petri_net of a1
::  for a3, a4 being Element of bool (a2 *) holds
::  a3 concur a4 = a4 concur a3;
end;

:: PNPROC_1:def 14
theorem
for b1 being set
for b2 being Petri_net of b1
for b3, b4 being Element of bool (b2 *) holds
b3 concur b4 = {b5 where b5 is Element of b2 *: ex b6, b7 being Relation-like Function-like FinSubsequence-like set st
   b5 = b6 \/ b7 & b6 misses b7 & Seq b6 in b3 & Seq b7 in b4};

:: PNPROC_1:th 48
theorem
for b1 being set
for b2 being Petri_net of b1
for b3, b4, b5 being Element of bool (b2 *) holds
(b3 \/ b4) concur b5 = (b3 concur b5) \/ (b4 concur b5);

:: PNPROC_1:th 49
theorem
for b1 being set
for b2 being Petri_net of b1
for b3, b4 being Element of b2 holds
{<*b3*>} concur {<*b4*>} = {<*b3,b4*>,<*b4,b3*>};

:: PNPROC_1:th 50
theorem
for b1 being set
for b2 being Petri_net of b1
for b3, b4, b5 being Element of b2 holds
{<*b3*>,<*b4*>} concur {<*b5*>} = {<*b3,b5*>,<*b4,b5*>,<*b5,b3*>,<*b5,b4*>};

:: PNPROC_1:th 51
theorem
for b1 being set
for b2 being Petri_net of b1
for b3, b4, b5 being Element of bool (b2 *) holds
(b3 before b4) before b5 = b3 before (b4 before b5);

:: PNPROC_1:funcnot 15 => PNPROC_1:func 12
definition
  let a1 be Relation-like Function-like FinSubsequence-like set;
  let a2 be Element of NAT;
  func A2 Shift A1 -> Relation-like Function-like FinSubsequence-like set means
    proj1 it = {a2 + b1 where b1 is Element of NAT: b1 in proj1 a1} &
     (for b1 being natural set
           st b1 in proj1 a1
        holds it . (a2 + b1) = a1 . b1);
end;

:: PNPROC_1:def 15
theorem
for b1 being Relation-like Function-like FinSubsequence-like set
for b2 being Element of NAT
for b3 being Relation-like Function-like FinSubsequence-like set holds
      b3 = b2 Shift b1
   iff
      proj1 b3 = {b2 + b4 where b4 is Element of NAT: b4 in proj1 b1} &
       (for b4 being natural set
             st b4 in proj1 b1
          holds b3 . (b2 + b4) = b1 . b4);

:: PNPROC_1:th 52
theorem
for b1 being Relation-like Function-like FinSubsequence-like set holds
   0 Shift b1 = b1;

:: PNPROC_1:th 53
theorem
for b1, b2 being Element of NAT
for b3 being Relation-like Function-like FinSubsequence-like set holds
   (b1 + b2) Shift b3 = b1 Shift (b2 Shift b3);

:: PNPROC_1:th 54
theorem
for b1 being Element of NAT
for b2 being Relation-like Function-like FinSequence-like set
      st b2 <> {}
   holds proj1 (b1 Shift b2) = {b3 where b3 is Element of NAT: b1 + 1 <= b3 & b3 <= b1 + len b2};

:: PNPROC_1:th 55
theorem
for b1 being Element of NAT
for b2 being Relation-like Function-like FinSubsequence-like set holds
      b2 = {}
   iff
      b1 Shift b2 = {};

:: PNPROC_1:th 56
theorem
for b1 being Element of NAT
for b2 being Relation-like Function-like FinSubsequence-like set holds
   ex b3 being Relation-like Function-like FinSubsequence-like set st
      proj1 b3 = proj1 b2 &
       proj2 b3 = proj1 (b1 Shift b2) &
       (for b4 being Element of NAT
             st b4 in proj1 b2
          holds b3 . b4 = b1 + b4) &
       b3 is one-to-one;

:: PNPROC_1:th 57
theorem
for b1 being Element of NAT
for b2 being Relation-like Function-like FinSubsequence-like set holds
   Card b2 = Card (b1 Shift b2);

:: PNPROC_1:th 58
theorem
for b1 being Element of NAT
for b2 being Relation-like Function-like FinSequence-like set holds
   dom b2 = dom Seq (b1 Shift b2);

:: PNPROC_1:th 59
theorem
for b1, b2 being Element of NAT
for b3 being Relation-like Function-like FinSequence-like set
      st b1 in dom b3
   holds (Sgm proj1 (b2 Shift b3)) . b1 = b2 + b1;

:: PNPROC_1:th 60
theorem
for b1, b2 being Element of NAT
for b3 being Relation-like Function-like FinSequence-like set
      st b1 in dom b3
   holds (Seq (b2 Shift b3)) . b1 = b3 . b1;

:: PNPROC_1:th 61
theorem
for b1 being Element of NAT
for b2 being Relation-like Function-like FinSequence-like set holds
   Seq (b1 Shift b2) = b2;

:: PNPROC_1:th 62
theorem
for b1, b2 being Relation-like Function-like FinSequence-like set holds
proj1 (b1 \/ ((len b1) Shift b2)) = Seg ((len b1) + len b2);

:: PNPROC_1:th 63
theorem
for b1 being Element of NAT
for b2 being Relation-like Function-like FinSequence-like set
for b3 being Relation-like Function-like FinSubsequence-like set
      st len b2 <= b1
   holds dom b2 misses proj1 (b1 Shift b3);

:: PNPROC_1:th 64
theorem
for b1, b2 being Relation-like Function-like FinSequence-like set holds
b1 ^ b2 = b1 \/ ((len b1) Shift b2);

:: PNPROC_1:th 65
theorem
for b1 being Element of NAT
for b2 being Relation-like Function-like FinSequence-like set
for b3 being Relation-like Function-like FinSubsequence-like set
      st len b2 <= b1
   holds b2 misses b1 Shift b3;

:: PNPROC_1:th 66
theorem
for b1 being set
for b2 being Petri_net of b1
for b3, b4, b5 being Element of bool (b2 *) holds
(b3 concur b4) concur b5 = b3 concur (b4 concur b5);

:: PNPROC_1:th 67
theorem
for b1 being set
for b2 being Petri_net of b1
for b3, b4 being Element of bool (b2 *) holds
b3 before b4 c= b3 concur b4;

:: PNPROC_1:th 68
theorem
for b1 being set
for b2 being Petri_net of b1
for b3, b4, b5, b6 being Element of bool (b2 *)
      st b3 c= b4 & b5 c= b6
   holds b3 before b5 c= b4 before b6;

:: PNPROC_1:th 69
theorem
for b1 being set
for b2 being Petri_net of b1
for b3, b4, b5, b6 being Element of bool (b2 *)
      st b3 c= b4 & b5 c= b6
   holds b3 concur b5 c= b4 concur b6;

:: PNPROC_1:th 70
theorem
for b1 being Element of NAT
for b2, b3 being Relation-like Function-like FinSubsequence-like set
      st b3 c= b2
   holds b1 Shift b3 c= b1 Shift b2;

:: PNPROC_1:th 71
theorem
for b1, b2 being Relation-like Function-like FinSequence-like set holds
(len b1) Shift b2 c= b1 ^ b2;

:: PNPROC_1:th 72
theorem
for b1 being Element of NAT
for b2, b3 being Relation-like Function-like FinSubsequence-like set
      st proj1 b2 misses proj1 b3
   holds proj1 (b1 Shift b2) misses proj1 (b1 Shift b3);

:: PNPROC_1:th 73
theorem
for b1 being Element of NAT
for b2, b3, b4 being Relation-like Function-like FinSubsequence-like set
      st b2 = b3 \/ b4 & b3 misses b4
   holds (b1 Shift b3) \/ (b1 Shift b4) = b1 Shift b2;

:: PNPROC_1:th 74
theorem
for b1 being Element of NAT
for b2 being Relation-like Function-like FinSubsequence-like set holds
   dom Seq b2 = dom Seq (b1 Shift b2);

:: PNPROC_1:th 75
theorem
for b1, b2 being Element of NAT
for b3 being Relation-like Function-like FinSubsequence-like set
      st b1 in dom Seq b3
   holds ex b4 being Element of NAT st
      b4 = (Sgm proj1 b3) . b1 &
       (Sgm proj1 (b2 Shift b3)) . b1 = b2 + b4;

:: PNPROC_1:th 76
theorem
for b1, b2 being Element of NAT
for b3 being Relation-like Function-like FinSubsequence-like set
      st b1 in dom Seq b3
   holds (Seq (b2 Shift b3)) . b1 = (Seq b3) . b1;

:: PNPROC_1:th 77
theorem
for b1 being Element of NAT
for b2 being Relation-like Function-like FinSubsequence-like set holds
   Seq b2 = Seq (b1 Shift b2);

:: PNPROC_1:th 78
theorem
for b1, b2 being Element of NAT
for b3 being Relation-like Function-like FinSubsequence-like set
      st proj1 b3 c= Seg b1
   holds proj1 (b2 Shift b3) c= Seg (b2 + b1);

:: PNPROC_1:th 79
theorem
for b1 being Relation-like Function-like FinSequence-like set
for b2, b3 being Relation-like Function-like FinSubsequence-like set
      st b2 c= b1
   holds ex b4 being Relation-like Function-like FinSubsequence-like set st
      b4 = b2 \/ ((len b1) Shift b3);

:: PNPROC_1:th 80
theorem
for b1, b2 being Relation-like Function-like FinSequence-like set
for b3, b4 being Relation-like Function-like FinSubsequence-like set
      st b3 c= b1 & b4 c= b2
   holds ex b5 being Relation-like Function-like FinSubsequence-like set st
      b5 = b3 \/ ((len b1) Shift b4) &
       dom Seq b5 = Seg ((len Seq b3) + len Seq b4);

:: PNPROC_1:th 81
theorem
for b1, b2 being Relation-like Function-like FinSequence-like set
for b3, b4 being Relation-like Function-like FinSubsequence-like set
      st b3 c= b1 & b4 c= b2
   holds ex b5 being Relation-like Function-like FinSubsequence-like set st
      b5 = b3 \/ ((len b1) Shift b4) &
       dom Seq b5 = Seg ((len Seq b3) + len Seq b4) &
       Seq b5 = (Seq b3) \/ ((len Seq b3) Shift Seq b4);

:: PNPROC_1:th 82
theorem
for b1, b2 being Relation-like Function-like FinSequence-like set
for b3, b4 being Relation-like Function-like FinSubsequence-like set
      st b3 c= b1 & b4 c= b2
   holds ex b5 being Relation-like Function-like FinSubsequence-like set st
      b5 = b3 \/ ((len b1) Shift b4) & (Seq b3) ^ Seq b4 = Seq b5;

:: PNPROC_1:th 83
theorem
for b1 being set
for b2 being Petri_net of b1
for b3, b4, b5, b6 being Element of bool (b2 *) holds
(b3 concur b4) before (b5 concur b6) c= (b3 before b5) concur (b4 before b6);

:: PNPROC_1:funcreg 2
registration
  let a1 be set;
  let a2 be Petri_net of a1;
  let a3, a4 be non empty Element of bool (a2 *);
  cluster a3 concur a4 -> non empty;
end;

:: PNPROC_1:funcnot 16 => PNPROC_1:func 13
definition
  let a1 be set;
  let a2 be Petri_net of a1;
  func NeutralProcess A2 -> non empty Element of bool (a2 *) equals
    {<*> a2};
end;

:: PNPROC_1:def 16
theorem
for b1 being set
for b2 being Petri_net of b1 holds
   NeutralProcess b2 = {<*> b2};

:: PNPROC_1:funcnot 17 => PNPROC_1:func 14
definition
  let a1 be set;
  let a2 be Petri_net of a1;
  let a3 be Element of a2;
  func ElementaryProcess A3 -> non empty Element of bool (a2 *) equals
    {<*a3*>};
end;

:: PNPROC_1:def 17
theorem
for b1 being set
for b2 being Petri_net of b1
for b3 being Element of b2 holds
   ElementaryProcess b3 = {<*b3*>};

:: PNPROC_1:th 84
theorem
for b1 being set
for b2 being Petri_net of b1
for b3 being Element of bool (b2 *) holds
   (NeutralProcess b2) before b3 = b3;

:: PNPROC_1:th 85
theorem
for b1 being set
for b2 being Petri_net of b1
for b3 being Element of bool (b2 *) holds
   b3 before NeutralProcess b2 = b3;

:: PNPROC_1:th 86
theorem
for b1 being set
for b2 being Petri_net of b1
for b3 being Element of bool (b2 *) holds
   (NeutralProcess b2) concur b3 = b3;