Article PETRI, MML version 4.99.1005

:: PETRI:modenot 1 => PETRI:mode 1
definition
  let a1, a2 be non empty set;
  let a3 be non empty Relation of a1,a2;
  redefine mode Element of a3 -> Element of [:a1,a2:];
end;

:: PETRI:structnot 1 => PETRI:struct 1
definition
  struct() PT_net_Str(#
    Places -> non empty set,
    Transitions -> non empty set,
    S-T_Arcs -> non empty Relation of the Places of it,the Transitions of it,
    T-S_Arcs -> non empty Relation of the Transitions of it,the Places of it
  #);
end;

:: PETRI:attrnot 1 => PETRI:attr 1
definition
  let a1 be PT_net_Str;
  attr a1 is strict;
end;

:: PETRI:exreg 1
registration
  cluster strict PT_net_Str;
end;

:: PETRI:aggrnot 1 => PETRI:aggr 1
definition
  let a1, a2 be non empty set;
  let a3 be non empty Relation of a1,a2;
  let a4 be non empty Relation of a2,a1;
  aggr PT_net_Str(#a1,a2,a3,a4#) -> strict PT_net_Str;
end;

:: PETRI:selnot 1 => PETRI:sel 1
definition
  let a1 be PT_net_Str;
  sel the Places of a1 -> non empty set;
end;

:: PETRI:selnot 2 => PETRI:sel 2
definition
  let a1 be PT_net_Str;
  sel the Transitions of a1 -> non empty set;
end;

:: PETRI:selnot 3 => PETRI:sel 3
definition
  let a1 be PT_net_Str;
  sel the S-T_Arcs of a1 -> non empty Relation of the Places of a1,the Transitions of a1;
end;

:: PETRI:selnot 4 => PETRI:sel 4
definition
  let a1 be PT_net_Str;
  sel the T-S_Arcs of a1 -> non empty Relation of the Transitions of a1,the Places of a1;
end;

:: PETRI:modenot 2
definition
  let a1 be PT_net_Str;
  mode place of a1 is Element of the Places of a1;
end;

:: PETRI:modenot 3
definition
  let a1 be PT_net_Str;
  mode places of a1 is Element of the Places of a1;
end;

:: PETRI:modenot 4
definition
  let a1 be PT_net_Str;
  mode transition of a1 is Element of the Transitions of a1;
end;

:: PETRI:modenot 5
definition
  let a1 be PT_net_Str;
  mode transitions of a1 is Element of the Transitions of a1;
end;

:: PETRI:modenot 6
definition
  let a1 be PT_net_Str;
  mode S-T_arc of a1 is Element of the S-T_Arcs of a1;
end;

:: PETRI:modenot 7
definition
  let a1 be PT_net_Str;
  mode T-S_arc of a1 is Element of the T-S_Arcs of a1;
end;

:: PETRI:funcnot 1 => PETRI:func 1
definition
  let a1 be PT_net_Str;
  let a2 be Element of the S-T_Arcs of a1;
  redefine func a2 `1 -> Element of the Places of a1;
end;

:: PETRI:funcnot 2 => PETRI:func 2
definition
  let a1 be PT_net_Str;
  let a2 be Element of the S-T_Arcs of a1;
  redefine func a2 `2 -> Element of the Transitions of a1;
end;

:: PETRI:funcnot 3 => PETRI:func 3
definition
  let a1 be PT_net_Str;
  let a2 be Element of the T-S_Arcs of a1;
  redefine func a2 `1 -> Element of the Transitions of a1;
end;

:: PETRI:funcnot 4 => PETRI:func 4
definition
  let a1 be PT_net_Str;
  let a2 be Element of the T-S_Arcs of a1;
  redefine func a2 `2 -> Element of the Places of a1;
end;

:: PETRI:funcnot 5 => PETRI:func 5
definition
  let a1 be PT_net_Str;
  let a2 be Element of bool the Places of a1;
  func *' A2 -> Element of bool the Transitions of a1 equals
    {b1 where b1 is Element of the Transitions of a1: ex b2 being Element of the T-S_Arcs of a1 st
       ex b3 being Element of the Places of a1 st
          b3 in a2 & b2 = [b1,b3]};
end;

:: PETRI:def 1
theorem
for b1 being PT_net_Str
for b2 being Element of bool the Places of b1 holds
   *' b2 = {b3 where b3 is Element of the Transitions of b1: ex b4 being Element of the T-S_Arcs of b1 st
      ex b5 being Element of the Places of b1 st
         b5 in b2 & b4 = [b3,b5]};

:: PETRI:funcnot 6 => PETRI:func 6
definition
  let a1 be PT_net_Str;
  let a2 be Element of bool the Places of a1;
  func A2 *' -> Element of bool the Transitions of a1 equals
    {b1 where b1 is Element of the Transitions of a1: ex b2 being Element of the S-T_Arcs of a1 st
       ex b3 being Element of the Places of a1 st
          b3 in a2 & b2 = [b3,b1]};
end;

:: PETRI:def 2
theorem
for b1 being PT_net_Str
for b2 being Element of bool the Places of b1 holds
   b2 *' = {b3 where b3 is Element of the Transitions of b1: ex b4 being Element of the S-T_Arcs of b1 st
      ex b5 being Element of the Places of b1 st
         b5 in b2 & b4 = [b5,b3]};

:: PETRI:th 1
theorem
for b1 being PT_net_Str
for b2 being Element of bool the Places of b1 holds
   *' b2 = {b3 `1 where b3 is Element of the T-S_Arcs of b1: b3 `2 in b2};

:: PETRI:th 2
theorem
for b1 being PT_net_Str
for b2 being Element of bool the Places of b1
for b3 being set holds
      b3 in *' b2
   iff
      ex b4 being Element of the T-S_Arcs of b1 st
         ex b5 being Element of the Places of b1 st
            b5 in b2 & b4 = [b3,b5];

:: PETRI:th 3
theorem
for b1 being PT_net_Str
for b2 being Element of bool the Places of b1 holds
   b2 *' = {b3 `2 where b3 is Element of the S-T_Arcs of b1: b3 `1 in b2};

:: PETRI:th 4
theorem
for b1 being PT_net_Str
for b2 being Element of bool the Places of b1
for b3 being set holds
      b3 in b2 *'
   iff
      ex b4 being Element of the S-T_Arcs of b1 st
         ex b5 being Element of the Places of b1 st
            b5 in b2 & b4 = [b5,b3];

:: PETRI:funcnot 7 => PETRI:func 7
definition
  let a1 be PT_net_Str;
  let a2 be Element of bool the Transitions of a1;
  func *' A2 -> Element of bool the Places of a1 equals
    {b1 where b1 is Element of the Places of a1: ex b2 being Element of the S-T_Arcs of a1 st
       ex b3 being Element of the Transitions of a1 st
          b3 in a2 & b2 = [b1,b3]};
end;

:: PETRI:def 3
theorem
for b1 being PT_net_Str
for b2 being Element of bool the Transitions of b1 holds
   *' b2 = {b3 where b3 is Element of the Places of b1: ex b4 being Element of the S-T_Arcs of b1 st
      ex b5 being Element of the Transitions of b1 st
         b5 in b2 & b4 = [b3,b5]};

:: PETRI:funcnot 8 => PETRI:func 8
definition
  let a1 be PT_net_Str;
  let a2 be Element of bool the Transitions of a1;
  func A2 *' -> Element of bool the Places of a1 equals
    {b1 where b1 is Element of the Places of a1: ex b2 being Element of the T-S_Arcs of a1 st
       ex b3 being Element of the Transitions of a1 st
          b3 in a2 & b2 = [b3,b1]};
end;

:: PETRI:def 4
theorem
for b1 being PT_net_Str
for b2 being Element of bool the Transitions of b1 holds
   b2 *' = {b3 where b3 is Element of the Places of b1: ex b4 being Element of the T-S_Arcs of b1 st
      ex b5 being Element of the Transitions of b1 st
         b5 in b2 & b4 = [b5,b3]};

:: PETRI:th 5
theorem
for b1 being PT_net_Str
for b2 being Element of bool the Transitions of b1 holds
   *' b2 = {b3 `1 where b3 is Element of the S-T_Arcs of b1: b3 `2 in b2};

:: PETRI:th 6
theorem
for b1 being PT_net_Str
for b2 being Element of bool the Transitions of b1
for b3 being set holds
      b3 in *' b2
   iff
      ex b4 being Element of the S-T_Arcs of b1 st
         ex b5 being Element of the Transitions of b1 st
            b5 in b2 & b4 = [b3,b5];

:: PETRI:th 7
theorem
for b1 being PT_net_Str
for b2 being Element of bool the Transitions of b1 holds
   b2 *' = {b3 `2 where b3 is Element of the T-S_Arcs of b1: b3 `1 in b2};

:: PETRI:th 8
theorem
for b1 being PT_net_Str
for b2 being Element of bool the Transitions of b1
for b3 being set holds
      b3 in b2 *'
   iff
      ex b4 being Element of the T-S_Arcs of b1 st
         ex b5 being Element of the Transitions of b1 st
            b5 in b2 & b4 = [b5,b3];

:: PETRI:th 9
theorem
for b1 being PT_net_Str holds
   *' {} the Places of b1 = {};

:: PETRI:th 10
theorem
for b1 being PT_net_Str holds
   ({} the Places of b1) *' = {};

:: PETRI:th 11
theorem
for b1 being PT_net_Str holds
   *' {} the Transitions of b1 = {};

:: PETRI:th 12
theorem
for b1 being PT_net_Str holds
   ({} the Transitions of b1) *' = {};

:: PETRI:attrnot 2 => PETRI:attr 2
definition
  let a1 be PT_net_Str;
  let a2 be Element of bool the Places of a1;
  attr a2 is Deadlock-like means
    *' a2 is Element of bool (a2 *');
end;

:: PETRI:dfs 5
definiens
  let a1 be PT_net_Str;
  let a2 be Element of bool the Places of a1;
To prove
     a2 is Deadlock-like
it is sufficient to prove
  thus *' a2 is Element of bool (a2 *');

:: PETRI:def 5
theorem
for b1 being PT_net_Str
for b2 being Element of bool the Places of b1 holds
      b2 is Deadlock-like(b1)
   iff
      *' b2 is Element of bool (b2 *');

:: PETRI:attrnot 3 => PETRI:attr 3
definition
  let a1 be PT_net_Str;
  attr a1 is With_Deadlocks means
    ex b1 being Element of bool the Places of a1 st
       b1 is Deadlock-like(a1);
end;

:: PETRI:dfs 6
definiens
  let a1 be PT_net_Str;
To prove
     a1 is With_Deadlocks
it is sufficient to prove
  thus ex b1 being Element of bool the Places of a1 st
       b1 is Deadlock-like(a1);

:: PETRI:def 6
theorem
for b1 being PT_net_Str holds
      b1 is With_Deadlocks
   iff
      ex b2 being Element of bool the Places of b1 st
         b2 is Deadlock-like(b1);

:: PETRI:exreg 2
registration
  cluster With_Deadlocks PT_net_Str;
end;

:: PETRI:attrnot 4 => PETRI:attr 4
definition
  let a1 be PT_net_Str;
  let a2 be Element of bool the Places of a1;
  attr a2 is Trap-like means
    a2 *' is Element of bool *' a2;
end;

:: PETRI:dfs 7
definiens
  let a1 be PT_net_Str;
  let a2 be Element of bool the Places of a1;
To prove
     a2 is Trap-like
it is sufficient to prove
  thus a2 *' is Element of bool *' a2;

:: PETRI:def 7
theorem
for b1 being PT_net_Str
for b2 being Element of bool the Places of b1 holds
      b2 is Trap-like(b1)
   iff
      b2 *' is Element of bool *' b2;

:: PETRI:attrnot 5 => PETRI:attr 5
definition
  let a1 be PT_net_Str;
  attr a1 is With_Traps means
    ex b1 being Element of bool the Places of a1 st
       b1 is Trap-like(a1);
end;

:: PETRI:dfs 8
definiens
  let a1 be PT_net_Str;
To prove
     a1 is With_Traps
it is sufficient to prove
  thus ex b1 being Element of bool the Places of a1 st
       b1 is Trap-like(a1);

:: PETRI:def 8
theorem
for b1 being PT_net_Str holds
      b1 is With_Traps
   iff
      ex b2 being Element of bool the Places of b1 st
         b2 is Trap-like(b1);

:: PETRI:exreg 3
registration
  cluster With_Traps PT_net_Str;
end;

:: PETRI:funcnot 9 => PETRI:func 9
definition
  let a1, a2 be non empty set;
  let a3 be non empty Relation of a1,a2;
  redefine func a3 ~ -> non empty Relation of a2,a1;
  involutiveness;
::  for a1, a2 being non empty set
::  for a3 being non empty Relation of a1,a2 holds
::     a3 ~ ~ = a3;
end;

:: PETRI:funcnot 10 => PETRI:func 10
definition
  let a1 be PT_net_Str;
  func A1 .: -> strict PT_net_Str equals
    PT_net_Str(#the Places of a1,the Transitions of a1,(the T-S_Arcs of a1) ~,(the S-T_Arcs of a1) ~#);
end;

:: PETRI:def 9
theorem
for b1 being PT_net_Str holds
   b1 .: = PT_net_Str(#the Places of b1,the Transitions of b1,(the T-S_Arcs of b1) ~,(the S-T_Arcs of b1) ~#);

:: PETRI:th 13
theorem
for b1 being PT_net_Str holds
   b1 .: .: = PT_net_Str(#the Places of b1,the Transitions of b1,the S-T_Arcs of b1,the T-S_Arcs of b1#);

:: PETRI:th 14
theorem
for b1 being PT_net_Str holds
   the Places of b1 = the Places of b1 .: & the Transitions of b1 = the Transitions of b1 .: & (the S-T_Arcs of b1) ~ = the T-S_Arcs of b1 .: & (the T-S_Arcs of b1) ~ = the S-T_Arcs of b1 .:;

:: PETRI:funcnot 11 => PETRI:func 11
definition
  let a1 be PT_net_Str;
  let a2 be Element of bool the Places of a1;
  func A2 .: -> Element of bool the Places of a1 .: equals
    a2;
end;

:: PETRI:def 10
theorem
for b1 being PT_net_Str
for b2 being Element of bool the Places of b1 holds
   b2 .: = b2;

:: PETRI:funcnot 12 => PETRI:func 12
definition
  let a1 be PT_net_Str;
  let a2 be Element of the Places of a1;
  func A2 .: -> Element of the Places of a1 .: equals
    a2;
end;

:: PETRI:def 11
theorem
for b1 being PT_net_Str
for b2 being Element of the Places of b1 holds
   b2 .: = b2;

:: PETRI:funcnot 13 => PETRI:func 13
definition
  let a1 be PT_net_Str;
  let a2 be Element of bool the Places of a1 .:;
  func .: A2 -> Element of bool the Places of a1 equals
    a2;
end;

:: PETRI:def 12
theorem
for b1 being PT_net_Str
for b2 being Element of bool the Places of b1 .: holds
   .: b2 = b2;

:: PETRI:funcnot 14 => PETRI:func 14
definition
  let a1 be PT_net_Str;
  let a2 be Element of the Places of a1 .:;
  func .: A2 -> Element of the Places of a1 equals
    a2;
end;

:: PETRI:def 13
theorem
for b1 being PT_net_Str
for b2 being Element of the Places of b1 .: holds
   .: b2 = b2;

:: PETRI:funcnot 15 => PETRI:func 15
definition
  let a1 be PT_net_Str;
  let a2 be Element of bool the Transitions of a1;
  func A2 .: -> Element of bool the Transitions of a1 .: equals
    a2;
end;

:: PETRI:def 14
theorem
for b1 being PT_net_Str
for b2 being Element of bool the Transitions of b1 holds
   b2 .: = b2;

:: PETRI:funcnot 16 => PETRI:func 16
definition
  let a1 be PT_net_Str;
  let a2 be Element of the Transitions of a1;
  func A2 .: -> Element of the Transitions of a1 .: equals
    a2;
end;

:: PETRI:def 15
theorem
for b1 being PT_net_Str
for b2 being Element of the Transitions of b1 holds
   b2 .: = b2;

:: PETRI:funcnot 17 => PETRI:func 17
definition
  let a1 be PT_net_Str;
  let a2 be Element of bool the Transitions of a1 .:;
  func .: A2 -> Element of bool the Transitions of a1 equals
    a2;
end;

:: PETRI:def 16
theorem
for b1 being PT_net_Str
for b2 being Element of bool the Transitions of b1 .: holds
   .: b2 = b2;

:: PETRI:funcnot 18 => PETRI:func 18
definition
  let a1 be PT_net_Str;
  let a2 be Element of the Transitions of a1 .:;
  func .: A2 -> Element of the Transitions of a1 equals
    a2;
end;

:: PETRI:def 17
theorem
for b1 being PT_net_Str
for b2 being Element of the Transitions of b1 .: holds
   .: b2 = b2;

:: PETRI:th 15
theorem
for b1 being PT_net_Str
for b2 being Element of bool the Places of b1 holds
   b2 .: *' = *' b2;

:: PETRI:th 16
theorem
for b1 being PT_net_Str
for b2 being Element of bool the Places of b1 holds
   *' (b2 .:) = b2 *';

:: PETRI:th 17
theorem
for b1 being PT_net_Str
for b2 being Element of bool the Places of b1 holds
      b2 is Deadlock-like(b1)
   iff
      b2 .: is Trap-like(b1 .:);

:: PETRI:th 18
theorem
for b1 being PT_net_Str
for b2 being Element of bool the Places of b1 holds
      b2 is Trap-like(b1)
   iff
      b2 .: is Deadlock-like(b1 .:);

:: PETRI:th 19
theorem
for b1 being PT_net_Str
for b2 being Element of the Transitions of b1
for b3 being Element of bool the Places of b1 holds
      b2 in b3 *'
   iff
      *' {b2} meets b3;

:: PETRI:th 20
theorem
for b1 being PT_net_Str
for b2 being Element of the Transitions of b1
for b3 being Element of bool the Places of b1 holds
      b2 in *' b3
   iff
      {b2} *' meets b3;