[erlang-questions] Petri nets

Jörgen Brandt brandjoe@REDACTED
Wed Jul 6 17:16:48 CEST 2016

Dear all,

recently I was curious about programming with Petri nets. I have the
impression that concurrent nature of Petri nets would be extremely
useful for many types of applications.

Also, with the gen_fsm and the gen_statem being part of Erlang's
standard library the idea of implementing application models in terms
of behaviours filling in the missing callback functions while
abstracting away the brittle parts concurrency and communication would
have a strong appeal. Imho, Petri nets can be defined in exactly the
same way.

This idea has also been discussed in a mailing list entry by Claus
Reinke [1] who happens to have written a paper about implementing
Petri nets in Haskell [2] in which he observes that functional
languages are well suited for implementing Petri nets and points out
Erlang as a potential candidate also with regard to concurrency aspects.

In addition, I stumbled over a compelling blog post which motivates
the use of Petri nets for application design in the context of
telecommunication applications [3]. The author goes on to presents his
Petri net programming library in C# and even has proposed a gen_pn
behaviour for Erlang [4].

However, the aforementioned gen_pn library has not been touched for
six years and the email from Claus Reinke has been sitting in the
Erlang mailing list archives for 13 years (unanswered).

My question is, in your opinion, is the idea of using Petri nets as a
programming model in Erlang just a bad idea? Or has the right library
just not been conceived to date? Do you use Petri nets to sketch out
an application's behavior but then translate it to a different model
prior to implementation? How can a telecommunication-focused
programming ecosystem have avoided Petri nets for such a long time
while readily absorbing ever more flavors of state machines?

That said, I would be very glad to receive your feedback on a Petri
net library I recently came up with. So you have something to base
your criticism on (;

[1] http://erlang.org/pipermail/erlang-questions/2003-November/010704.html
[2] http://community.haskell.org/~claus/publications/HCPN.html
[3] https://aabs.wordpress.com/2010/03/10/programming-with-petri-nets/
[4] https://github.com/aabs/gen_pn

More information about the erlang-questions mailing list