:: Cell Petri Net Concepts
:: by Mitsuru Jitsukawa, Pauline N. Kawamoto, Yasunari Shidama,
:: and Yatsuka Nakamura
::
:: Received October 14, 2008
:: Copyright (c) 2008-2016 Association of Mizar Users
:: (Stowarzyszenie Uzytkownikow Mizara, Bialystok, Poland).
:: This code can be distributed under the GNU General Public Licence
:: version 3.0 or later, or the Creative Commons Attribution-ShareAlike
:: License version 3.0 or later, subject to the binding interpretation
:: detailed in file COPYING.interpretation.
:: See COPYING.GPL and COPYING.CC-BY-SA for the full text of these
:: licenses, or see http://www.gnu.org/licenses/gpl.html and
:: http://creativecommons.org/licenses/by-sa/3.0/.
environ
vocabularies PETRI, FUNCT_1, XBOOLE_0, TARSKI, SUBSET_1, FUNCT_2, RELAT_1,
FUNCOP_1, FUNCT_4, FINSET_1, SETFAM_1, ZFMISC_1, PARTFUN1, ARYTM_3,
CARD_1, PETRI_2, STRUCT_0;
notations TARSKI, XBOOLE_0, ENUMSET1, SUBSET_1, ZFMISC_1, SETFAM_1, RELAT_1,
RELSET_1, DOMAIN_1, PETRI, FUNCT_1, PARTFUN1, FUNCT_2, FUNCT_4, RELSET_2,
FINSET_1, FUNCOP_1, ORDINAL1, CARD_1, PARTIT_2, STRUCT_0;
constructors RELSET_1, DOMAIN_1, PETRI, RELSET_2, FUNCT_4, PARTIT_2, FUNCOP_1;
registrations SUBSET_1, RELAT_1, PARTFUN1, RELSET_1, XBOOLE_0, FUNCT_2,
FINSET_1, STRUCT_0, FUNCT_1, PETRI, ZFMISC_1;
requirements SUBSET, BOOLE;
begin :: Preliminaries: thin cylinder, locus
definition
let A be non empty set, B be set;
let Bo be set, yo be Function of Bo,A;
assume
Bo c= B;
func cylinder0(A,B,Bo,yo) -> non empty Subset of Funcs(B,A) equals
:: PETRI_2:def 1
{ y where y is Function of B,A : y|Bo = yo };
end;
definition
let A be non empty set, B be set;
mode thin_cylinder of A,B -> non empty Subset of Funcs(B,A) means
:: PETRI_2:def 2
ex
Bo being Subset of B,yo being Function of Bo,A st Bo is finite & it = cylinder0
(A,B,Bo,yo);
end;
theorem :: PETRI_2:1
for A be non empty set, B be set, D be thin_cylinder of A,B holds
ex Bo being Subset of B,yo being Function of Bo,A st Bo is finite & D = { y
where y is Function of B,A : y|Bo = yo };
theorem :: PETRI_2:2
for A1,A2 be non empty set, B be set, D1 be thin_cylinder of A1,B st
A1 c= A2 ex D2 be thin_cylinder of A2,B st D1 c= D2;
definition
let A be non empty set, B be set;
func thin_cylinders(A,B) -> non empty Subset-Family of Funcs(B,A) equals
:: PETRI_2:def 3
{D
where D is Subset of Funcs(B,A) : D is thin_cylinder of A,B};
end;
theorem :: PETRI_2:3
for A be non trivial set, B be set, Bo1 be set, yo1 being
Function of Bo1,A, Bo2 be set, yo2 being Function of Bo2,A st Bo1 c= B & Bo2 c=
B & cylinder0(A,B,Bo1,yo1) = cylinder0(A,B,Bo2,yo2) holds Bo1=Bo2 & yo1=yo2;
theorem :: PETRI_2:4
for A1,A2 be non empty set, B1,B2 be set st A1 c= A2 & B1 c= B2
ex F be Function of thin_cylinders(A1,B1), thin_cylinders(A2,B2) st for x be
set st x in thin_cylinders(A1,B1) ex Bo being Subset of B1, yo1 being Function
of Bo,A1, yo2 being Function of Bo,A2 st Bo is finite & yo1=yo2 & x=cylinder0(
A1,B1,Bo,yo1) & F.x=cylinder0(A2,B2,Bo,yo2);
theorem :: PETRI_2:5
for A1,A2 be non empty set, B1,B2 be set ex G be Function of
thin_cylinders(A2,B2), thin_cylinders(A1,B1) st for x be set st x in
thin_cylinders(A2,B2) ex Bo2 being Subset of B2,Bo1 being Subset of B1, yo1
being Function of Bo1,A1, yo2 being Function of Bo2,A2 st Bo1 is finite & Bo2
is finite & Bo1=B1 /\ Bo2 /\ (yo2"A1) & yo1=yo2 | Bo1 & x= cylinder0(A2,B2,Bo2,
yo2) & G.x =cylinder0(A1,B1,Bo1,yo1);
definition
let A1,A2 be non trivial set, B1,B2 be set;
assume that
A1 c= A2 and
B1 c= B2;
func Extcylinders(A1,B1,A2,B2) -> Function of thin_cylinders(A1,B1),
thin_cylinders(A2,B2) means
:: PETRI_2:def 4
for x be set st x in thin_cylinders(A1,B1) ex Bo
being Subset of B1, yo1 being Function of Bo,A1, yo2 being Function of Bo,A2 st
Bo is finite & yo1=yo2 & x=cylinder0(A1,B1,Bo,yo1) & it.x=cylinder0(A2,B2,Bo,
yo2);
end;
definition
let A1 be non empty set, A2 be non trivial set, B1,B2 be set;
func Ristcylinders(A1,B1,A2,B2) -> Function of thin_cylinders(A2,B2),
thin_cylinders(A1,B1) means
:: PETRI_2:def 5
for x be set st x in thin_cylinders(A2,B2) ex Bo2
being Subset of B2,Bo1 being Subset of B1, yo1 being Function of Bo1,A1, yo2
being Function of Bo2,A2 st Bo1 is finite & Bo2 is finite & Bo1=B1 /\ Bo2 /\ (
yo2"A1) & yo1=yo2 | Bo1 & x = cylinder0(A2,B2,Bo2,yo2) & it.x =cylinder0(A1,B1,
Bo1,yo1);
end;
definition
let A be non trivial set,B be set;
let D be thin_cylinder of A,B;
func loc(D) -> finite Subset of B means
:: PETRI_2:def 6
ex Bo being Subset of B,yo being
Function of Bo,A st Bo is finite & D = { y where y is Function of B,A : y|Bo =
yo } & it = Bo;
end;
begin :: Colored Petri nets
definition
let A1,A2 be non trivial set, B1,B2 be set;
let C1,C2 be non trivial set, D1,D2 be set;
let F be Function of thin_cylinders(A1,B1), thin_cylinders(C1,D1);
func CylinderFunc(A1,B1,A2,B2,C1,D1,C2,D2,F) -> Function of thin_cylinders(
A2,B2), thin_cylinders(C2,D2) equals
:: PETRI_2:def 7
Extcylinders(C1,D1,C2,D2)*F*Ristcylinders(
A1,B1,A2,B2);
end;
definition
struct (PT_net_Str) Colored_PT_net_Str (# carrier, carrier' ->
set, S-T_Arcs -> Relation of the carrier,the carrier', T-S_Arcs ->
Relation of the carrier', the carrier, ColoredSet -> non empty
finite set, firing-rule -> Function #);
end;
definition
func TrivialColoredPetriNet -> Colored_PT_net_Str equals
:: PETRI_2:def 8
Colored_PT_net_Str (# {{}}, {{}}, [#]({{}},{{}}), [#]({{}},
{{}}), {{}}, {} #);
end;
registration
cluster TrivialColoredPetriNet
-> with_S-T_arc with_T-S_arc non empty non void;
end;
registration
cluster non empty non void with_S-T_arc with_T-S_arc for Colored_PT_net_Str;
end;
definition
mode Colored_Petri_net
is non empty non void with_S-T_arc with_T-S_arc Colored_PT_net_Str;
end;
definition
let CPNT be Colored_Petri_net;
let t0 be transition of CPNT;
attr t0 is outbound means
:: PETRI_2:def 9
{t0}*' = {};
end;
definition
let CPNT1 be Colored_Petri_net;
func Outbds(CPNT1) -> Subset of the carrier' of CPNT1 equals
:: PETRI_2:def 10
{x where x
is transition of CPNT1 : x is outbound };
end;
definition
let CPNT be Colored_Petri_net;
attr CPNT is Colored-PT-net-like means
:: PETRI_2:def 11
dom (the firing-rule of CPNT)
c= (the carrier' of CPNT) \ Outbds(CPNT) & for t being transition of CPNT st
t in dom (the firing-rule of CPNT) holds ex CS be non empty Subset of the
ColoredSet of CPNT, I be Subset of *'{t}, O be Subset of {t}*' st (the
firing-rule of CPNT ).t is Function of thin_cylinders(CS,I), thin_cylinders(CS,
O);
end;
theorem :: PETRI_2:6
for CPNT be Colored_Petri_net, t being transition of CPNT st CPNT is
Colored-PT-net-like & t in dom (the firing-rule of CPNT) holds ex CS be non
empty Subset of the ColoredSet of CPNT, I be Subset of *'{t}, O be Subset of {t
}*' st (the firing-rule of CPNT ).t is Function of thin_cylinders(CS,I),
thin_cylinders(CS,O);
theorem :: PETRI_2:7
for CPNT1,CPNT2 be Colored_Petri_net, t1 be transition of CPNT1,
t2 be transition of CPNT2 st the carrier of CPNT1 c= the carrier of CPNT2
& the
S-T_Arcs of CPNT1 c= the S-T_Arcs of CPNT2 & the T-S_Arcs of CPNT1 c= the
T-S_Arcs of CPNT2 & t1=t2 holds *'{t1} c= *'{t2} & {t1}*' c= {t2}*';
registration
cluster strict Colored-PT-net-like for Colored_Petri_net;
end;
definition
mode Colored-PT-net is Colored-PT-net-like Colored_Petri_net;
end;
begin :: Outbound transitions of CPNT
definition
let CPNT1, CPNT2 be Colored_Petri_net;
pred CPNT1 misses CPNT2 means
:: PETRI_2:def 12
(the carrier of CPNT1) /\ (the carrier
of CPNT2 ) = {} & (the carrier' of CPNT1) /\ (the carrier' of CPNT2) = {};
symmetry;
end;
begin :: Connecting mapping for CPNT1,CPNT2
definition
let CPNT1 be Colored_Petri_net;
let CPNT2 be Colored_Petri_net;
mode connecting-mapping of CPNT1,CPNT2 -> set means
:: PETRI_2:def 13
ex O12 be Function of
Outbds(CPNT1), the carrier of CPNT2, O21 be Function of Outbds(CPNT2), the
carrier of CPNT1 st it=[O12,O21];
end;
begin :: Connecting firing rule for CPNT1,CPNT2
definition
let CPNT1, CPNT2 be Colored-PT-net;
let O be connecting-mapping of CPNT1,CPNT2;
mode connecting-firing-rule of CPNT1,CPNT2,O -> set means
:: PETRI_2:def 14
ex q12,q21 be
Function, O12 be Function of Outbds(CPNT1), the carrier of CPNT2, O21 be
Function of Outbds(CPNT2), the carrier of CPNT1 st O=[O12,O21] &
dom q12=Outbds(
CPNT1) & dom q21=Outbds(CPNT2) & ( for t01 be transition of CPNT1 st t01 is
outbound holds q12.t01 is Function of thin_cylinders ( the ColoredSet of CPNT1,
*'{t01}), thin_cylinders ( the ColoredSet of CPNT1, Im(O12,t01) ) ) & ( for t02
be transition of CPNT2 st t02 is outbound holds q21.t02 is Function of
thin_cylinders (the ColoredSet of CPNT2, *'{t02}), thin_cylinders (the
ColoredSet of CPNT2, Im(O21,t02) ) ) & it=[q12,q21];
end;
begin :: Synthesis of CPNT1,CPNT2
definition
let CPNT1, CPNT2 be Colored-PT-net;
let O be connecting-mapping of CPNT1,CPNT2;
let q be connecting-firing-rule of CPNT1,CPNT2,O;
assume
CPNT1 misses CPNT2;
func synthesis(CPNT1, CPNT2,O,q) -> strict Colored-PT-net means
:: PETRI_2:def 15
ex q12,q21
be Function, O12 be Function of Outbds(CPNT1), the carrier of CPNT2, O21 be
Function of Outbds(CPNT2), the carrier of CPNT1 st O=[O12,O21] &
dom q12=Outbds(
CPNT1) & dom q21=Outbds(CPNT2) & ( for t01 be transition of CPNT1 st t01 is
outbound holds q12.t01 is Function of thin_cylinders ( the ColoredSet of CPNT1,
*'{t01}), thin_cylinders ( the ColoredSet of CPNT1, Im(O12,t01) ) ) & ( for t02
be transition of CPNT2 st t02 is outbound holds q21.t02 is Function of
thin_cylinders ( the ColoredSet of CPNT2, *'{t02}), thin_cylinders ( the
ColoredSet of CPNT2, Im(O21,t02) ) ) & q=[q12,q21] & the carrier of it = (the
carrier of CPNT1) \/ (the carrier of CPNT2) & the carrier' of it = (the
carrier' of CPNT1) \/ (the carrier' of CPNT2) & the S-T_Arcs of it = (the
S-T_Arcs of CPNT1) \/ (the S-T_Arcs of CPNT2) & the T-S_Arcs of it = (the
T-S_Arcs of CPNT1) \/ (the T-S_Arcs of CPNT2) \/ O12 \/ O21 & the ColoredSet of
it = (the ColoredSet of CPNT1) \/ (the ColoredSet of CPNT2) & the firing-rule
of it = (the firing-rule of CPNT1) +* (the firing-rule of CPNT2) +* q12 +* q21;
end;