Article FF_SIEC, MML version 4.99.1005

:: FF_SIEC:funcnot 1 => FF_SIEC:func 1
definition
  let a1, a2 be set;
  assume a1 misses a2;
  func PTempty_f_net(A1,A2) -> strict Petri Net equals
    Net(#a1,a2,{}#);
end;

:: FF_SIEC:def 4
theorem
for b1, b2 being set
      st b1 misses b2
   holds PTempty_f_net(b1,b2) = Net(#b1,b2,{}#);

:: FF_SIEC:funcnot 2 => FF_SIEC:func 2
definition
  let a1 be set;
  func Tempty_f_net A1 -> strict Petri Net equals
    PTempty_f_net(a1,{});
end;

:: FF_SIEC:def 5
theorem
for b1 being set holds
   Tempty_f_net b1 = PTempty_f_net(b1,{});

:: FF_SIEC:funcnot 3 => FF_SIEC:func 3
definition
  let a1 be set;
  func Pempty_f_net A1 -> strict Petri Net equals
    PTempty_f_net({},a1);
end;

:: FF_SIEC:def 6
theorem
for b1 being set holds
   Pempty_f_net b1 = PTempty_f_net({},b1);

:: FF_SIEC:funcnot 4 => FF_SIEC:func 4
definition
  let a1 be set;
  func Tsingle_f_net A1 -> strict Petri Net equals
    PTempty_f_net({},{a1});
end;

:: FF_SIEC:def 7
theorem
for b1 being set holds
   Tsingle_f_net b1 = PTempty_f_net({},{b1});

:: FF_SIEC:funcnot 5 => FF_SIEC:func 5
definition
  let a1 be set;
  func Psingle_f_net A1 -> strict Petri Net equals
    PTempty_f_net({a1},{});
end;

:: FF_SIEC:def 8
theorem
for b1 being set holds
   Psingle_f_net b1 = PTempty_f_net({b1},{});

:: FF_SIEC:funcnot 6 => FF_SIEC:func 6
definition
  func empty_f_net -> strict Petri Net equals
    PTempty_f_net({},{});
end;

:: FF_SIEC:def 9
theorem
empty_f_net = PTempty_f_net({},{});

:: FF_SIEC:th 2
theorem
for b1, b2 being set
      st b1 misses b2
   holds the Places of PTempty_f_net(b1,b2) = b1 & the Transitions of PTempty_f_net(b1,b2) = b2 & the Flow of PTempty_f_net(b1,b2) = {};

:: FF_SIEC:th 3
theorem
for b1 being set holds
   the Places of Tempty_f_net b1 = b1 & the Transitions of Tempty_f_net b1 = {} & the Flow of Tempty_f_net b1 = {};

:: FF_SIEC:th 4
theorem
for b1 being set holds
   the Places of Pempty_f_net b1 = {} & the Transitions of Pempty_f_net b1 = b1 & the Flow of Pempty_f_net b1 = {};

:: FF_SIEC:th 5
theorem
for b1 being set holds
   the Places of Tsingle_f_net b1 = {} & the Transitions of Tsingle_f_net b1 = {b1} & the Flow of Tsingle_f_net b1 = {};

:: FF_SIEC:th 6
theorem
for b1 being set holds
   the Places of Psingle_f_net b1 = {b1} & the Transitions of Psingle_f_net b1 = {} & the Flow of Psingle_f_net b1 = {};

:: FF_SIEC:th 7
theorem
the Places of empty_f_net = {} & the Transitions of empty_f_net = {} & the Flow of empty_f_net = {};

:: FF_SIEC:th 11
theorem
for b1, b2 being set
for b3 being Petri Net holds
   ([b1,b2] in the Flow of b3 & b1 in the Transitions of b3 implies not b1 in the Places of b3 & not b2 in the Transitions of b3 & b2 in the Places of b3) &
    ([b1,b2] in the Flow of b3 & b2 in the Transitions of b3 implies not b2 in the Places of b3 & not b1 in the Transitions of b3 & b1 in the Places of b3) &
    ([b1,b2] in the Flow of b3 & b1 in the Places of b3 implies not b2 in the Places of b3 & not b1 in the Transitions of b3 & b2 in the Transitions of b3) &
    ([b1,b2] in the Flow of b3 & b2 in the Places of b3 implies not b1 in the Places of b3 & not b2 in the Transitions of b3 & b1 in the Transitions of b3);

:: FF_SIEC:th 13
theorem
for b1 being Petri Net holds
   the Flow of b1 c= [:Elements b1,Elements b1:] &
    (the Flow of b1) ~ c= [:Elements b1,Elements b1:];

:: FF_SIEC:th 14
theorem
for b1 being Petri Net holds
   proj2 ((the Flow of b1) | the Transitions of b1) c= the Places of b1 &
    proj2 ((the Flow of b1) ~ | the Transitions of b1) c= the Places of b1 &
    proj2 ((the Flow of b1) | the Places of b1) c= the Transitions of b1 &
    proj2 ((the Flow of b1) ~ | the Places of b1) c= the Transitions of b1 &
    proj2 id the Transitions of b1 c= the Transitions of b1 &
    proj1 id the Transitions of b1 c= the Transitions of b1 &
    proj2 id the Places of b1 c= the Places of b1 &
    proj1 id the Places of b1 c= the Places of b1;

:: FF_SIEC:th 15
theorem
for b1 being Petri Net holds
   proj2 ((the Flow of b1) | the Transitions of b1) misses proj1 ((the Flow of b1) | the Transitions of b1) &
    proj2 ((the Flow of b1) | the Transitions of b1) misses proj1 ((the Flow of b1) ~ | the Transitions of b1) &
    proj2 ((the Flow of b1) | the Transitions of b1) misses proj1 id the Transitions of b1 &
    proj2 ((the Flow of b1) ~ | the Transitions of b1) misses proj1 ((the Flow of b1) | the Transitions of b1) &
    proj2 ((the Flow of b1) ~ | the Transitions of b1) misses proj1 ((the Flow of b1) ~ | the Transitions of b1) &
    proj2 ((the Flow of b1) ~ | the Transitions of b1) misses proj1 id the Transitions of b1 &
    proj1 ((the Flow of b1) | the Transitions of b1) misses proj2 ((the Flow of b1) | the Transitions of b1) &
    proj1 ((the Flow of b1) | the Transitions of b1) misses proj2 ((the Flow of b1) ~ | the Transitions of b1) &
    proj1 ((the Flow of b1) | the Transitions of b1) misses proj2 id the Places of b1 &
    proj1 ((the Flow of b1) ~ | the Transitions of b1) misses proj2 ((the Flow of b1) | the Transitions of b1) &
    proj1 ((the Flow of b1) ~ | the Transitions of b1) misses proj2 ((the Flow of b1) ~ | the Transitions of b1) &
    proj1 ((the Flow of b1) ~ | the Transitions of b1) misses proj2 id the Places of b1 &
    proj2 ((the Flow of b1) | the Places of b1) misses proj1 ((the Flow of b1) | the Places of b1) &
    proj2 ((the Flow of b1) | the Places of b1) misses proj1 ((the Flow of b1) ~ | the Places of b1) &
    proj2 ((the Flow of b1) | the Places of b1) misses proj1 id the Places of b1 &
    proj2 ((the Flow of b1) ~ | the Places of b1) misses proj1 ((the Flow of b1) | the Places of b1) &
    proj2 ((the Flow of b1) ~ | the Places of b1) misses proj1 ((the Flow of b1) ~ | the Places of b1) &
    proj2 ((the Flow of b1) ~ | the Places of b1) misses proj1 id the Places of b1 &
    proj1 ((the Flow of b1) | the Places of b1) misses proj2 ((the Flow of b1) | the Places of b1) &
    proj1 ((the Flow of b1) | the Places of b1) misses proj2 ((the Flow of b1) ~ | the Places of b1) &
    proj1 ((the Flow of b1) | the Places of b1) misses proj2 id the Transitions of b1 &
    proj1 ((the Flow of b1) ~ | the Places of b1) misses proj2 ((the Flow of b1) | the Places of b1) &
    proj1 ((the Flow of b1) ~ | the Places of b1) misses proj2 ((the Flow of b1) ~ | the Places of b1) &
    proj1 ((the Flow of b1) ~ | the Places of b1) misses proj2 id the Transitions of b1;

:: FF_SIEC:th 16
theorem
for b1 being Petri Net holds
   ((the Flow of b1) | the Transitions of b1) * ((the Flow of b1) | the Transitions of b1) = {} &
    ((the Flow of b1) ~ | the Transitions of b1) * ((the Flow of b1) ~ | the Transitions of b1) = {} &
    ((the Flow of b1) | the Transitions of b1) * ((the Flow of b1) ~ | the Transitions of b1) = {} &
    ((the Flow of b1) ~ | the Transitions of b1) * ((the Flow of b1) | the Transitions of b1) = {} &
    ((the Flow of b1) | the Places of b1) * ((the Flow of b1) | the Places of b1) = {} &
    ((the Flow of b1) ~ | the Places of b1) * ((the Flow of b1) ~ | the Places of b1) = {} &
    ((the Flow of b1) | the Places of b1) * ((the Flow of b1) ~ | the Places of b1) = {} &
    ((the Flow of b1) ~ | the Places of b1) * ((the Flow of b1) | the Places of b1) = {};

:: FF_SIEC:th 17
theorem
for b1 being Petri Net holds
   ((the Flow of b1) | the Transitions of b1) * id the Places of b1 = (the Flow of b1) | the Transitions of b1 &
    ((the Flow of b1) ~ | the Transitions of b1) * id the Places of b1 = (the Flow of b1) ~ | the Transitions of b1 &
    (id the Transitions of b1) * ((the Flow of b1) | the Transitions of b1) = (the Flow of b1) | the Transitions of b1 &
    (id the Transitions of b1) * ((the Flow of b1) ~ | the Transitions of b1) = (the Flow of b1) ~ | the Transitions of b1 &
    ((the Flow of b1) | the Places of b1) * id the Transitions of b1 = (the Flow of b1) | the Places of b1 &
    ((the Flow of b1) ~ | the Places of b1) * id the Transitions of b1 = (the Flow of b1) ~ | the Places of b1 &
    (id the Places of b1) * ((the Flow of b1) | the Places of b1) = (the Flow of b1) | the Places of b1 &
    (id the Places of b1) * ((the Flow of b1) ~ | the Places of b1) = (the Flow of b1) ~ | the Places of b1 &
    ((the Flow of b1) | the Places of b1) * id the Transitions of b1 = (the Flow of b1) | the Places of b1 &
    ((the Flow of b1) ~ | the Places of b1) * id the Transitions of b1 = (the Flow of b1) ~ | the Places of b1 &
    (id the Transitions of b1) * ((the Flow of b1) | the Places of b1) = {} &
    (id the Transitions of b1) * ((the Flow of b1) ~ | the Places of b1) = {} &
    ((the Flow of b1) | the Places of b1) * id the Places of b1 = {} &
    ((the Flow of b1) ~ | the Places of b1) * id the Places of b1 = {} &
    (id the Places of b1) * ((the Flow of b1) | the Transitions of b1) = {} &
    (id the Places of b1) * ((the Flow of b1) ~ | the Transitions of b1) = {} &
    ((the Flow of b1) | the Transitions of b1) * id the Transitions of b1 = {} &
    ((the Flow of b1) ~ | the Transitions of b1) * id the Transitions of b1 = {};

:: FF_SIEC:th 18
theorem
for b1 being Petri Net holds
   (the Flow of b1) ~ | the Transitions of b1 misses id Elements b1 &
    (the Flow of b1) | the Transitions of b1 misses id Elements b1 &
    (the Flow of b1) ~ | the Places of b1 misses id Elements b1 &
    (the Flow of b1) | the Places of b1 misses id Elements b1;

:: FF_SIEC:th 19
theorem
for b1 being Petri Net holds
   (((the Flow of b1) ~ | the Transitions of b1) \/ id the Places of b1) \ id Elements b1 = (the Flow of b1) ~ | the Transitions of b1 &
    (((the Flow of b1) | the Transitions of b1) \/ id the Places of b1) \ id Elements b1 = (the Flow of b1) | the Transitions of b1 &
    (((the Flow of b1) ~ | the Places of b1) \/ id the Places of b1) \ id Elements b1 = (the Flow of b1) ~ | the Places of b1 &
    (((the Flow of b1) | the Places of b1) \/ id the Places of b1) \ id Elements b1 = (the Flow of b1) | the Places of b1 &
    (((the Flow of b1) ~ | the Places of b1) \/ id the Transitions of b1) \ id Elements b1 = (the Flow of b1) ~ | the Places of b1 &
    (((the Flow of b1) | the Places of b1) \/ id the Transitions of b1) \ id Elements b1 = (the Flow of b1) | the Places of b1 &
    (((the Flow of b1) ~ | the Transitions of b1) \/ id the Transitions of b1) \ id Elements b1 = (the Flow of b1) ~ | the Transitions of b1 &
    (((the Flow of b1) | the Transitions of b1) \/ id the Transitions of b1) \ id Elements b1 = (the Flow of b1) | the Transitions of b1;

:: FF_SIEC:th 20
theorem
for b1 being Petri Net holds
   ((the Flow of b1) | the Places of b1) ~ = (the Flow of b1) ~ | the Transitions of b1 &
    ((the Flow of b1) | the Transitions of b1) ~ = (the Flow of b1) ~ | the Places of b1;

:: FF_SIEC:th 21
theorem
for b1 being Petri Net holds
   ((the Flow of b1) | the Places of b1) \/ ((the Flow of b1) | the Transitions of b1) = the Flow of b1 &
    ((the Flow of b1) | the Transitions of b1) \/ ((the Flow of b1) | the Places of b1) = the Flow of b1 &
    ((the Flow of b1) | the Places of b1) ~ \/ (((the Flow of b1) | the Transitions of b1) ~) = (the Flow of b1) ~ &
    ((the Flow of b1) | the Transitions of b1) ~ \/ (((the Flow of b1) | the Places of b1) ~) = (the Flow of b1) ~;

:: FF_SIEC:funcnot 7 => FF_SIEC:func 7
definition
  let a1 be Petri Net;
  func f_enter A1 -> Relation-like set equals
    ((the Flow of a1) ~ | the Transitions of a1) \/ id the Places of a1;
end;

:: FF_SIEC:def 10
theorem
for b1 being Petri Net holds
   f_enter b1 = ((the Flow of b1) ~ | the Transitions of b1) \/ id the Places of b1;

:: FF_SIEC:funcnot 8 => FF_SIEC:func 8
definition
  let a1 be Petri Net;
  func f_exit A1 -> Relation-like set equals
    ((the Flow of a1) | the Transitions of a1) \/ id the Places of a1;
end;

:: FF_SIEC:def 11
theorem
for b1 being Petri Net holds
   f_exit b1 = ((the Flow of b1) | the Transitions of b1) \/ id the Places of b1;

:: FF_SIEC:th 22
theorem
for b1 being Petri Net holds
   f_exit b1 c= [:Elements b1,Elements b1:] &
    f_enter b1 c= [:Elements b1,Elements b1:];

:: FF_SIEC:th 23
theorem
for b1 being Petri Net holds
   proj1 f_exit b1 c= Elements b1 & proj2 f_exit b1 c= Elements b1 & proj1 f_enter b1 c= Elements b1 & proj2 f_enter b1 c= Elements b1;

:: FF_SIEC:th 24
theorem
for b1 being Petri Net holds
   (f_exit b1) * f_exit b1 = f_exit b1 & (f_exit b1) * f_enter b1 = f_exit b1 & (f_enter b1) * f_enter b1 = f_enter b1 & (f_enter b1) * f_exit b1 = f_enter b1;

:: FF_SIEC:th 25
theorem
for b1 being Petri Net holds
   (f_exit b1) * ((f_exit b1) \ id Elements b1) = {} &
    (f_enter b1) * ((f_enter b1) \ id Elements b1) = {};

:: FF_SIEC:funcnot 9 => FF_SIEC:func 9
definition
  let a1 be Petri Net;
  func f_prox A1 -> Relation-like set equals
    (((the Flow of a1) | the Places of a1) \/ ((the Flow of a1) ~ | the Places of a1)) \/ id the Places of a1;
end;

:: FF_SIEC:def 12
theorem
for b1 being Petri Net holds
   f_prox b1 = (((the Flow of b1) | the Places of b1) \/ ((the Flow of b1) ~ | the Places of b1)) \/ id the Places of b1;

:: FF_SIEC:funcnot 10 => FF_SIEC:func 10
definition
  let a1 be Petri Net;
  func f_flow A1 -> Relation-like set equals
    (the Flow of a1) \/ id Elements a1;
end;

:: FF_SIEC:def 13
theorem
for b1 being Petri Net holds
   f_flow b1 = (the Flow of b1) \/ id Elements b1;

:: FF_SIEC:th 26
theorem
for b1 being Petri Net holds
   (f_prox b1) * f_prox b1 = f_prox b1 &
    ((f_prox b1) \ id Elements b1) * f_prox b1 = {} &
    ((f_prox b1) \/ ((f_prox b1) ~)) \/ id Elements b1 = (f_flow b1) \/ ((f_flow b1) ~);

:: FF_SIEC:funcnot 11 => FF_SIEC:func 11
definition
  let a1 be Petri Net;
  func f_places A1 -> set equals
    the Places of a1;
end;

:: FF_SIEC:def 14
theorem
for b1 being Petri Net holds
   f_places b1 = the Places of b1;

:: FF_SIEC:funcnot 12 => FF_SIEC:func 12
definition
  let a1 be Petri Net;
  func f_transitions A1 -> set equals
    the Transitions of a1;
end;

:: FF_SIEC:def 15
theorem
for b1 being Petri Net holds
   f_transitions b1 = the Transitions of b1;

:: FF_SIEC:funcnot 13 => FF_SIEC:func 13
definition
  let a1 be Petri Net;
  func f_pre A1 -> Relation-like set equals
    (the Flow of a1) | the Transitions of a1;
end;

:: FF_SIEC:def 16
theorem
for b1 being Petri Net holds
   f_pre b1 = (the Flow of b1) | the Transitions of b1;

:: FF_SIEC:funcnot 14 => FF_SIEC:func 14
definition
  let a1 be Petri Net;
  func f_post A1 -> Relation-like set equals
    (the Flow of a1) ~ | the Transitions of a1;
end;

:: FF_SIEC:def 17
theorem
for b1 being Petri Net holds
   f_post b1 = (the Flow of b1) ~ | the Transitions of b1;

:: FF_SIEC:th 27
theorem
for b1 being Petri Net holds
   f_pre b1 c= [:f_transitions b1,f_places b1:] &
    f_post b1 c= [:f_transitions b1,f_places b1:];

:: FF_SIEC:th 29
theorem
for b1 being Petri Net holds
   f_prox b1 c= [:Elements b1,Elements b1:] &
    f_flow b1 c= [:Elements b1,Elements b1:];

:: FF_SIEC:funcnot 15 => FF_SIEC:func 15
definition
  let a1 be Petri Net;
  func f_entrance A1 -> Relation-like set equals
    ((the Flow of a1) ~ | the Places of a1) \/ id the Transitions of a1;
end;

:: FF_SIEC:def 18
theorem
for b1 being Petri Net holds
   f_entrance b1 = ((the Flow of b1) ~ | the Places of b1) \/ id the Transitions of b1;

:: FF_SIEC:funcnot 16 => FF_SIEC:func 16
definition
  let a1 be Petri Net;
  func f_escape A1 -> Relation-like set equals
    ((the Flow of a1) | the Places of a1) \/ id the Transitions of a1;
end;

:: FF_SIEC:def 19
theorem
for b1 being Petri Net holds
   f_escape b1 = ((the Flow of b1) | the Places of b1) \/ id the Transitions of b1;

:: FF_SIEC:th 30
theorem
for b1 being Petri Net holds
   f_escape b1 c= [:Elements b1,Elements b1:] &
    f_entrance b1 c= [:Elements b1,Elements b1:];

:: FF_SIEC:th 31
theorem
for b1 being Petri Net holds
   proj1 f_escape b1 c= Elements b1 & proj2 f_escape b1 c= Elements b1 & proj1 f_entrance b1 c= Elements b1 & proj2 f_entrance b1 c= Elements b1;

:: FF_SIEC:th 32
theorem
for b1 being Petri Net holds
   (f_escape b1) * f_escape b1 = f_escape b1 & (f_escape b1) * f_entrance b1 = f_escape b1 & (f_entrance b1) * f_entrance b1 = f_entrance b1 & (f_entrance b1) * f_escape b1 = f_entrance b1;

:: FF_SIEC:th 33
theorem
for b1 being Petri Net holds
   (f_escape b1) * ((f_escape b1) \ id Elements b1) = {} &
    (f_entrance b1) * ((f_entrance b1) \ id Elements b1) = {};

:: FF_SIEC:funcnot 17 => FF_SIEC:func 10
notation
  let a1 be Petri Net;
  synonym f_circulation a1 for f_flow a1;
end;

:: FF_SIEC:funcnot 18 => FF_SIEC:func 17
definition
  let a1 be Petri Net;
  func f_adjac A1 -> Relation-like set equals
    (((the Flow of a1) | the Transitions of a1) \/ ((the Flow of a1) ~ | the Transitions of a1)) \/ id the Transitions of a1;
end;

:: FF_SIEC:def 20
theorem
for b1 being Petri Net holds
   f_adjac b1 = (((the Flow of b1) | the Transitions of b1) \/ ((the Flow of b1) ~ | the Transitions of b1)) \/ id the Transitions of b1;

:: FF_SIEC:funcnot 19 => FF_SIEC:func 10
notation
  let a1 be Petri Net;
  synonym f_circulation a1 for f_flow a1;
end;

:: FF_SIEC:th 34
theorem
for b1 being Petri Net holds
   (f_adjac b1) * f_adjac b1 = f_adjac b1 &
    ((f_adjac b1) \ id Elements b1) * f_adjac b1 = {} &
    ((f_adjac b1) \/ ((f_adjac b1) ~)) \/ id Elements b1 = (f_flow b1) \/ ((f_flow b1) ~);