A Petri net is an abstract, formal model of information flow in systems, particularly in those in which events can occur concurrently and where some form of synchronization or ordering is required. Petri nets are a graphical and mathematical modeling language used to describe how information flows in a distributed system. They were developed by Carl Adam Petri in 1962. A Petri net is a graph built using two different types of nodes: places and transitions. Places are connected to transitions via directed arcs and vice versa, but nodes of the same type can never be connected directly. Running a Petri net becomes more complicated if multiple transitions are connected to a single place. In this case, the evolution of the network is no longer deterministic; if have one token in the place, every transition will be enabled. If fire any of the transitions, the token will be consumed, invalidating the remaining, previously enabled transitions.