[mercury-users] Re: coloured petri nets
Ralph Becket
rbeck at microsoft.com
Fri Sep 7 00:57:43 AEST 2001
> From: Peter Ross [mailto:peter.ross at miscrit.be]
> Sent: 06 September 2001 15:08
>
> I want to implement coloured petri nets in Mercury using as much as
> possible Mercurys type system to provide type safety.
>
> See
>
> http://www.daimi.aau.dk/~kjensen/papers_books/rec_papers_books.html
This looks like a suitable application for stores since places can
only hold tokens of a particular type and transitions can only
convert tokens of one type into tokens of another type; coloured
Petri nets are well typed.
Sketching the required types I came up with...
% A place can accept new tokens and pass and
% tokens it posesses on to one or more transitions.
%
:- type place(T, S)
---> place(
tokens :: queue(T),
transitions :: list(transition_ref(T, S))
).
:- type place_ref(T, S) == mutvar(place(T, S), S).
% A transition processes a token and passes it
% on to one or more places.
%
:- type transition(T, S)
---> some [U] transition(
fn :: func(T) = U,
places :: list(place_ref(U, S))
).
:- type transition_ref(T, S) == mutvar(transition(T, S), S).
Unless you have a version of the compiler with the standard-funcs-
in-ground-insts-are-okay patch, you'll have to find some alternative
for the fn field of the transition type.
- Ralph
--------------------------------------------------------------------------
mercury-users mailing list
post: mercury-users at cs.mu.oz.au
administrative address: owner-mercury-users at cs.mu.oz.au
unsubscribe: Address: mercury-users-request at cs.mu.oz.au Message: unsubscribe
subscribe: Address: mercury-users-request at cs.mu.oz.au Message: subscribe
--------------------------------------------------------------------------
More information about the users
mailing list