Article E_SIEC, MML version 4.99.1005

:: E_SIEC:structnot 1 => E_SIEC:struct 1
definition
  struct(1-sorted) G_Net(#
    carrier -> set,
    entrance -> Relation-like set,
    escape -> Relation-like set
  #);
end;

:: E_SIEC:attrnot 1 => E_SIEC:attr 1
definition
  let a1 be G_Net;
  attr a1 is strict;
end;

:: E_SIEC:exreg 1
registration
  cluster strict G_Net;
end;

:: E_SIEC:aggrnot 1 => E_SIEC:aggr 1
definition
  let a1 be set;
  let a2, a3 be Relation-like set;
  aggr G_Net(#a1,a2,a3#) -> strict G_Net;
end;

:: E_SIEC:selnot 1 => E_SIEC:sel 1
definition
  let a1 be G_Net;
  sel the entrance of a1 -> Relation-like set;
end;

:: E_SIEC:selnot 2 => E_SIEC:sel 2
definition
  let a1 be G_Net;
  sel the escape of a1 -> Relation-like set;
end;

:: E_SIEC:attrnot 2 => E_SIEC:attr 2
definition
  let a1 be G_Net;
  attr a1 is GG means
    the entrance of a1 c= [:the carrier of a1,the carrier of a1:] &
     the escape of a1 c= [:the carrier of a1,the carrier of a1:] &
     (the entrance of a1) * the entrance of a1 = the entrance of a1 &
     (the entrance of a1) * the escape of a1 = the entrance of a1 &
     (the escape of a1) * the escape of a1 = the escape of a1 &
     (the escape of a1) * the entrance of a1 = the escape of a1;
end;

:: E_SIEC:dfs 1
definiens
  let a1 be G_Net;
To prove
     a1 is GG
it is sufficient to prove
  thus the entrance of a1 c= [:the carrier of a1,the carrier of a1:] &
     the escape of a1 c= [:the carrier of a1,the carrier of a1:] &
     (the entrance of a1) * the entrance of a1 = the entrance of a1 &
     (the entrance of a1) * the escape of a1 = the entrance of a1 &
     (the escape of a1) * the escape of a1 = the escape of a1 &
     (the escape of a1) * the entrance of a1 = the escape of a1;

:: E_SIEC:def 2
theorem
for b1 being G_Net holds
      b1 is GG
   iff
      the entrance of b1 c= [:the carrier of b1,the carrier of b1:] &
       the escape of b1 c= [:the carrier of b1,the carrier of b1:] &
       (the entrance of b1) * the entrance of b1 = the entrance of b1 &
       (the entrance of b1) * the escape of b1 = the entrance of b1 &
       (the escape of b1) * the escape of b1 = the escape of b1 &
       (the escape of b1) * the entrance of b1 = the escape of b1;

:: E_SIEC:exreg 2
registration
  cluster GG G_Net;
end;

:: E_SIEC:modenot 1
definition
  mode gg_net is GG G_Net;
end;

:: E_SIEC:attrnot 3 => E_SIEC:attr 3
definition
  let a1 be G_Net;
  attr a1 is EE means
    (the entrance of a1) * ((the entrance of a1) \ id the carrier of a1) = {} &
     (the escape of a1) * ((the escape of a1) \ id the carrier of a1) = {};
end;

:: E_SIEC:dfs 2
definiens
  let a1 be G_Net;
To prove
     a1 is EE
it is sufficient to prove
  thus (the entrance of a1) * ((the entrance of a1) \ id the carrier of a1) = {} &
     (the escape of a1) * ((the escape of a1) \ id the carrier of a1) = {};

:: E_SIEC:def 3
theorem
for b1 being G_Net holds
      b1 is EE
   iff
      (the entrance of b1) * ((the entrance of b1) \ id the carrier of b1) = {} &
       (the escape of b1) * ((the escape of b1) \ id the carrier of b1) = {};

:: E_SIEC:exreg 3
registration
  cluster EE G_Net;
end;

:: E_SIEC:exreg 4
registration
  cluster strict GG EE G_Net;
end;

:: E_SIEC:modenot 2
definition
  mode e_net is GG EE G_Net;
end;

:: E_SIEC:th 1
theorem
for b1 being set
for b2, b3 being Relation-like set holds
   G_Net(#b1,b2,b3#) is GG EE G_Net
iff
   b2 c= [:b1,b1:] & b3 c= [:b1,b1:] & b2 * b2 = b2 & b2 * b3 = b2 & b3 * b3 = b3 & b3 * b2 = b3 & b2 * (b2 \ id b1) = {} & b3 * (b3 \ id b1) = {};

:: E_SIEC:th 2
theorem
for b1 being set holds
   G_Net(#b1,{},{}#) is GG EE G_Net;

:: E_SIEC:th 3
theorem
for b1 being set holds
   G_Net(#b1,id b1,id b1#) is GG EE G_Net;

:: E_SIEC:th 4
theorem
G_Net(#{},{},{}#) is GG EE G_Net;

:: E_SIEC:th 8
theorem
for b1, b2 being set holds
G_Net(#b1,id (b1 \ b2),id (b1 \ b2)#) is GG EE G_Net;

:: E_SIEC:funcnot 1 => E_SIEC:func 1
definition
  func empty_e_net -> strict GG EE G_Net equals
    G_Net(#{},{},{}#);
end;

:: E_SIEC:def 4
theorem
empty_e_net = G_Net(#{},{},{}#);

:: E_SIEC:funcnot 2 => E_SIEC:func 2
definition
  let a1 be set;
  func Tempty_e_net A1 -> strict GG EE G_Net equals
    G_Net(#a1,id a1,id a1#);
end;

:: E_SIEC:def 5
theorem
for b1 being set holds
   Tempty_e_net b1 = G_Net(#b1,id b1,id b1#);

:: E_SIEC:funcnot 3 => E_SIEC:func 3
definition
  let a1 be set;
  func Pempty_e_net A1 -> strict GG EE G_Net equals
    G_Net(#a1,{},{}#);
end;

:: E_SIEC:def 6
theorem
for b1 being set holds
   Pempty_e_net b1 = G_Net(#b1,{},{}#);

:: E_SIEC:th 11
theorem
for b1 being set holds
   the carrier of Tempty_e_net b1 = b1 & the entrance of Tempty_e_net b1 = id b1 & the escape of Tempty_e_net b1 = id b1;

:: E_SIEC:th 12
theorem
for b1 being set holds
   the carrier of Pempty_e_net b1 = b1 & the entrance of Pempty_e_net b1 = {} & the escape of Pempty_e_net b1 = {};

:: E_SIEC:funcnot 4 => E_SIEC:func 4
definition
  let a1 be set;
  func Psingle_e_net A1 -> strict GG EE G_Net equals
    G_Net(#{a1},id {a1},id {a1}#);
end;

:: E_SIEC:def 7
theorem
for b1 being set holds
   Psingle_e_net b1 = G_Net(#{b1},id {b1},id {b1}#);

:: E_SIEC:funcnot 5 => E_SIEC:func 5
definition
  let a1 be set;
  func Tsingle_e_net A1 -> strict GG EE G_Net equals
    G_Net(#{a1},{},{}#);
end;

:: E_SIEC:def 8
theorem
for b1 being set holds
   Tsingle_e_net b1 = G_Net(#{b1},{},{}#);

:: E_SIEC:th 13
theorem
for b1 being set holds
   the carrier of Psingle_e_net b1 = {b1} &
    the entrance of Psingle_e_net b1 = id {b1} &
    the escape of Psingle_e_net b1 = id {b1};

:: E_SIEC:th 14
theorem
for b1 being set holds
   the carrier of Tsingle_e_net b1 = {b1} & the entrance of Tsingle_e_net b1 = {} & the escape of Tsingle_e_net b1 = {};

:: E_SIEC:th 15
theorem
for b1, b2 being set holds
G_Net(#b1 \/ b2,id b1,id b1#) is GG EE G_Net;

:: E_SIEC:funcnot 6 => E_SIEC:func 6
definition
  let a1, a2 be set;
  func PTempty_e_net(A1,A2) -> strict GG EE G_Net equals
    G_Net(#a1 \/ a2,id a1,id a1#);
end;

:: E_SIEC:def 9
theorem
for b1, b2 being set holds
PTempty_e_net(b1,b2) = G_Net(#b1 \/ b2,id b1,id b1#);

:: E_SIEC:th 16
theorem
for b1 being GG EE G_Net holds
   (the entrance of b1) \ id proj1 the entrance of b1 = (the entrance of b1) \ id the carrier of b1 &
    (the escape of b1) \ id proj1 the escape of b1 = (the escape of b1) \ id the carrier of b1 &
    (the entrance of b1) \ id proj2 the entrance of b1 = (the entrance of b1) \ id the carrier of b1 &
    (the escape of b1) \ id proj2 the escape of b1 = (the escape of b1) \ id the carrier of b1;

:: E_SIEC:th 17
theorem
for b1 being GG EE G_Net holds
   CL the entrance of b1 = CL the escape of b1;

:: E_SIEC:th 18
theorem
for b1 being GG EE G_Net holds
   proj2 the entrance of b1 = proj2 CL the entrance of b1 &
    proj2 the entrance of b1 = proj1 CL the entrance of b1 &
    proj2 the escape of b1 = proj2 CL the escape of b1 &
    proj2 the escape of b1 = proj1 CL the escape of b1 &
    proj2 the entrance of b1 = proj2 the escape of b1;

:: E_SIEC:th 19
theorem
for b1 being GG EE G_Net holds
   proj1 the entrance of b1 c= the carrier of b1 & proj2 the entrance of b1 c= the carrier of b1 & proj1 the escape of b1 c= the carrier of b1 & proj2 the escape of b1 c= the carrier of b1;

:: E_SIEC:th 20
theorem
for b1 being GG EE G_Net holds
   (the entrance of b1) * ((the escape of b1) \ id the carrier of b1) = {} &
    (the escape of b1) * ((the entrance of b1) \ id the carrier of b1) = {};

:: E_SIEC:th 21
theorem
for b1 being GG EE G_Net holds
   ((the entrance of b1) \ id the carrier of b1) * ((the entrance of b1) \ id the carrier of b1) = {} &
    ((the escape of b1) \ id the carrier of b1) * ((the escape of b1) \ id the carrier of b1) = {} &
    ((the entrance of b1) \ id the carrier of b1) * ((the escape of b1) \ id the carrier of b1) = {} &
    ((the escape of b1) \ id the carrier of b1) * ((the entrance of b1) \ id the carrier of b1) = {};

:: E_SIEC:funcnot 7 => E_SIEC:func 7
definition
  let a1 be GG EE G_Net;
  func e_Places A1 -> set equals
    proj2 the entrance of a1;
end;

:: E_SIEC:def 10
theorem
for b1 being GG EE G_Net holds
   e_Places b1 = proj2 the entrance of b1;

:: E_SIEC:funcnot 8 => E_SIEC:func 8
definition
  let a1 be GG EE G_Net;
  func e_Transitions A1 -> set equals
    (the carrier of a1) \ e_Places a1;
end;

:: E_SIEC:def 11
theorem
for b1 being GG EE G_Net holds
   e_Transitions b1 = (the carrier of b1) \ e_Places b1;

:: E_SIEC:th 23
theorem
for b1, b2 being set
for b3 being GG EE G_Net
      st ([b1,b2] in the entrance of b3 or [b1,b2] in the escape of b3) &
         b1 <> b2
   holds b1 in e_Transitions b3 & b2 in e_Places b3;

:: E_SIEC:th 24
theorem
for b1 being GG EE G_Net holds
   (the entrance of b1) \ id the carrier of b1 c= [:e_Transitions b1,e_Places b1:] &
    (the escape of b1) \ id the carrier of b1 c= [:e_Transitions b1,e_Places b1:];

:: E_SIEC:funcnot 9 => E_SIEC:func 9
definition
  let a1 be GG EE G_Net;
  func e_Flow A1 -> Relation-like set equals
    ((the entrance of a1) ~ \/ the escape of a1) \ id the carrier of a1;
end;

:: E_SIEC:def 12
theorem
for b1 being GG EE G_Net holds
   e_Flow b1 = ((the entrance of b1) ~ \/ the escape of b1) \ id the carrier of b1;

:: E_SIEC:th 25
theorem
for b1 being GG EE G_Net holds
   e_Flow b1 c= [:e_Places b1,e_Transitions b1:] \/ [:e_Transitions b1,e_Places b1:];

:: E_SIEC:funcnot 10 => E_SIEC:func 7
notation
  let a1 be GG EE G_Net;
  synonym e_places a1 for e_Places a1;
end;

:: E_SIEC:funcnot 11 => E_SIEC:func 8
notation
  let a1 be GG EE G_Net;
  synonym e_transitions a1 for e_Transitions a1;
end;

:: E_SIEC:funcnot 12 => E_SIEC:func 10
definition
  let a1 be GG EE G_Net;
  func e_pre A1 -> Relation-like set equals
    (the entrance of a1) \ id the carrier of a1;
end;

:: E_SIEC:def 15
theorem
for b1 being GG EE G_Net holds
   e_pre b1 = (the entrance of b1) \ id the carrier of b1;

:: E_SIEC:funcnot 13 => E_SIEC:func 11
definition
  let a1 be GG EE G_Net;
  func e_post A1 -> Relation-like set equals
    (the escape of a1) \ id the carrier of a1;
end;

:: E_SIEC:def 16
theorem
for b1 being GG EE G_Net holds
   e_post b1 = (the escape of b1) \ id the carrier of b1;

:: E_SIEC:th 28
theorem
for b1 being GG EE G_Net holds
   e_pre b1 c= [:e_Transitions b1,e_Places b1:] &
    e_post b1 c= [:e_Transitions b1,e_Places b1:];

:: E_SIEC:funcnot 14 => E_SIEC:func 12
definition
  let a1 be GG EE G_Net;
  func e_shore A1 -> set equals
    the carrier of a1;
end;

:: E_SIEC:def 17
theorem
for b1 being GG EE G_Net holds
   e_shore b1 = the carrier of b1;

:: E_SIEC:funcnot 15 => E_SIEC:func 13
definition
  let a1 be GG EE G_Net;
  func e_prox A1 -> Relation-like set equals
    ((the entrance of a1) \/ the escape of a1) ~;
end;

:: E_SIEC:def 18
theorem
for b1 being GG EE G_Net holds
   e_prox b1 = ((the entrance of b1) \/ the escape of b1) ~;

:: E_SIEC:funcnot 16 => E_SIEC:func 14
definition
  let a1 be GG EE G_Net;
  func e_flow A1 -> Relation-like set equals
    ((the entrance of a1) ~ \/ the escape of a1) \/ id the carrier of a1;
end;

:: E_SIEC:def 19
theorem
for b1 being GG EE G_Net holds
   e_flow b1 = ((the entrance of b1) ~ \/ the escape of b1) \/ id the carrier of b1;

:: E_SIEC:th 29
theorem
for b1 being GG EE G_Net holds
   e_prox b1 c= [:e_shore b1,e_shore b1:] &
    e_flow b1 c= [:e_shore b1,e_shore b1:];

:: E_SIEC:th 30
theorem
for b1 being GG EE G_Net holds
   (e_prox b1) * e_prox b1 = e_prox b1 &
    ((e_prox b1) \ id e_shore b1) * e_prox b1 = {} &
    ((e_prox b1) \/ ((e_prox b1) ~)) \/ id e_shore b1 = (e_flow b1) \/ ((e_flow b1) ~);

:: E_SIEC:th 31
theorem
for b1 being GG EE G_Net holds
   (id ((the carrier of b1) \ proj2 the escape of b1)) * ((the escape of b1) \ id the carrier of b1) = (the escape of b1) \ id the carrier of b1 &
    (id ((the carrier of b1) \ proj2 the entrance of b1)) * ((the entrance of b1) \ id the carrier of b1) = (the entrance of b1) \ id the carrier of b1;

:: E_SIEC:th 32
theorem
for b1 being GG EE G_Net holds
   ((the escape of b1) \ id the carrier of b1) * ((the escape of b1) \ id the carrier of b1) = {} &
    ((the entrance of b1) \ id the carrier of b1) * ((the entrance of b1) \ id the carrier of b1) = {} &
    ((the escape of b1) \ id the carrier of b1) * ((the entrance of b1) \ id the carrier of b1) = {} &
    ((the entrance of b1) \ id the carrier of b1) * ((the escape of b1) \ id the carrier of b1) = {};

:: E_SIEC:th 33
theorem
for b1 being GG EE G_Net holds
   ((the escape of b1) \ id the carrier of b1) ~ * (((the escape of b1) \ id the carrier of b1) ~) = {} &
    ((the entrance of b1) \ id the carrier of b1) ~ * (((the entrance of b1) \ id the carrier of b1) ~) = {};

:: E_SIEC:th 34
theorem
for b1 being GG EE G_Net holds
   ((the escape of b1) \ id the carrier of b1) ~ * ((id ((the carrier of b1) \ proj2 the escape of b1)) ~) = ((the escape of b1) \ id the carrier of b1) ~ &
    ((the entrance of b1) \ id the carrier of b1) ~ * ((id ((the carrier of b1) \ proj2 the entrance of b1)) ~) = ((the entrance of b1) \ id the carrier of b1) ~;

:: E_SIEC:th 35
theorem
for b1 being GG EE G_Net holds
   ((the escape of b1) \ id the carrier of b1) * id ((the carrier of b1) \ proj2 the escape of b1) = {} &
    ((the entrance of b1) \ id the carrier of b1) * id ((the carrier of b1) \ proj2 the entrance of b1) = {};

:: E_SIEC:th 36
theorem
for b1 being GG EE G_Net holds
   (id ((the carrier of b1) \ proj2 the escape of b1)) * (((the escape of b1) \ id the carrier of b1) ~) = {} &
    (id ((the carrier of b1) \ proj2 the entrance of b1)) * (((the entrance of b1) \ id the carrier of b1) ~) = {};

:: E_SIEC:funcnot 17 => E_SIEC:func 12
notation
  let a1 be GG EE G_Net;
  synonym e_support a1 for e_shore a1;
end;

:: E_SIEC:funcnot 18 => E_SIEC:func 15
definition
  let a1 be GG EE G_Net;
  func e_entrance A1 -> Relation-like set equals
    ((the escape of a1) \ id the carrier of a1) ~ \/ id ((the carrier of a1) \ proj2 the escape of a1);
end;

:: E_SIEC:def 21
theorem
for b1 being GG EE G_Net holds
   e_entrance b1 = ((the escape of b1) \ id the carrier of b1) ~ \/ id ((the carrier of b1) \ proj2 the escape of b1);

:: E_SIEC:funcnot 19 => E_SIEC:func 16
definition
  let a1 be GG EE G_Net;
  func e_escape A1 -> Relation-like set equals
    ((the entrance of a1) \ id the carrier of a1) ~ \/ id ((the carrier of a1) \ proj2 the entrance of a1);
end;

:: E_SIEC:def 22
theorem
for b1 being GG EE G_Net holds
   e_escape b1 = ((the entrance of b1) \ id the carrier of b1) ~ \/ id ((the carrier of b1) \ proj2 the entrance of b1);

:: E_SIEC:th 37
theorem
for b1 being GG EE G_Net holds
   (e_entrance b1) * e_entrance b1 = e_entrance b1 & (e_entrance b1) * e_escape b1 = e_entrance b1 & (e_escape b1) * e_entrance b1 = e_escape b1 & (e_escape b1) * e_escape b1 = e_escape b1;

:: E_SIEC:th 38
theorem
for b1 being GG EE G_Net holds
   (e_entrance b1) * ((e_entrance b1) \ id e_shore b1) = {} &
    (e_escape b1) * ((e_escape b1) \ id e_shore b1) = {};

:: E_SIEC:funcnot 20 => E_SIEC:func 12
notation
  let a1 be GG EE G_Net;
  synonym e_stanchion a1 for e_shore a1;
end;

:: E_SIEC:funcnot 21 => E_SIEC:func 14
notation
  let a1 be GG EE G_Net;
  synonym e_circulation a1 for e_flow a1;
end;

:: E_SIEC:funcnot 22 => E_SIEC:func 17
definition
  let a1 be GG EE G_Net;
  func e_adjac A1 -> Relation-like set equals
    (((the entrance of a1) \/ the escape of a1) \ id the carrier of a1) \/ id ((the carrier of a1) \ proj2 the entrance of a1);
end;

:: E_SIEC:def 24
theorem
for b1 being GG EE G_Net holds
   e_adjac b1 = (((the entrance of b1) \/ the escape of b1) \ id the carrier of b1) \/ id ((the carrier of b1) \ proj2 the entrance of b1);

:: E_SIEC:funcnot 23 => E_SIEC:func 14
notation
  let a1 be GG EE G_Net;
  synonym e_circulation a1 for e_flow a1;
end;

:: E_SIEC:th 39
theorem
for b1 being GG EE G_Net holds
   e_adjac b1 c= [:e_shore b1,e_shore b1:] &
    e_flow b1 c= [:e_shore b1,e_shore b1:];

:: E_SIEC:th 40
theorem
for b1 being GG EE G_Net holds
   (e_adjac b1) * e_adjac b1 = e_adjac b1 &
    ((e_adjac b1) \ id e_shore b1) * e_adjac b1 = {} &
    ((e_adjac b1) \/ ((e_adjac b1) ~)) \/ id e_shore b1 = (e_flow b1) \/ ((e_flow b1) ~);

:: E_SIEC:funcnot 24 => E_SIEC:func 7
notation
  let a1 be GG EE G_Net;
  synonym s_transitions a1 for e_Places a1;
end;

:: E_SIEC:funcnot 25 => E_SIEC:func 8
notation
  let a1 be GG EE G_Net;
  synonym s_places a1 for e_Transitions a1;
end;

:: E_SIEC:funcnot 26 => E_SIEC:func 12
notation
  let a1 be GG EE G_Net;
  synonym s_carrier a1 for e_shore a1;
end;

:: E_SIEC:funcnot 27 => E_SIEC:func 15
notation
  let a1 be GG EE G_Net;
  synonym s_enter a1 for e_entrance a1;
end;

:: E_SIEC:funcnot 28 => E_SIEC:func 16
notation
  let a1 be GG EE G_Net;
  synonym s_exit a1 for e_escape a1;
end;

:: E_SIEC:funcnot 29 => E_SIEC:func 17
notation
  let a1 be GG EE G_Net;
  synonym s_prox a1 for e_adjac a1;
end;

:: E_SIEC:th 41
theorem
for b1 being GG EE G_Net holds
   ((the entrance of b1) \ id the carrier of b1) ~ c= [:e_Places b1,e_Transitions b1:] &
    ((the escape of b1) \ id the carrier of b1) ~ c= [:e_Places b1,e_Transitions b1:];

:: E_SIEC:funcnot 30 => E_SIEC:func 18
definition
  let a1 be G_Net;
  func s_pre A1 -> Relation-like set equals
    ((the escape of a1) \ id the carrier of a1) ~;
end;

:: E_SIEC:def 25
theorem
for b1 being G_Net holds
   s_pre b1 = ((the escape of b1) \ id the carrier of b1) ~;

:: E_SIEC:funcnot 31 => E_SIEC:func 19
definition
  let a1 be G_Net;
  func s_post A1 -> Relation-like set equals
    ((the entrance of a1) \ id the carrier of a1) ~;
end;

:: E_SIEC:def 26
theorem
for b1 being G_Net holds
   s_post b1 = ((the entrance of b1) \ id the carrier of b1) ~;

:: E_SIEC:th 42
theorem
for b1 being GG EE G_Net holds
   s_post b1 c= [:e_Places b1,e_Transitions b1:] &
    s_pre b1 c= [:e_Places b1,e_Transitions b1:];