This project is my Ph.D. thesis and I worked on it under the supervision of Stefan Haar and Franck Pommereau, and with a collaboration of Cédric Gaucherel to discuss topics in ecology. My Ph.D. started on the 1st of October 2020 and finished on the 14th of December 2023.

EcoSystem Causal Analysis Using PEtri Net Unfoldings (ESCAPE) brings together the causal analysis of discrete processes via Petri Net unfolding, and the reasoning about interactions in ecological systems under a network perspective. The project aimed for prediction, causal explanation, and control of system models, via the development of partial order unfolding methods that have arisen in fault diagnosis, attractor analysis, and control, giving a full sight of the causal relations that determine these processes.

I have released a software called Ecofolder that allows the representation of Petri nets and their corresponding unfoldings for ecosytems and any other type of systems in nature. Ecofolder enables the search of minimally doomed configurations (mindoo-confs), meaning a point where removing the last event added to the firing sequence, you are free: the system may avoid an undesired reachable set of states. Note that if the empty set (∅) is a mindoo-confs, then every configuration is doomed, and thus ∅ is the unique mindoo-confs. Here below I present a net to model a termite colony (right) based on a rule system (left, Gaucherel & Pommereau, 2019).

Rp: termites reproductives, the queen, the king, the eggs and the nymphs.

Wk: termites workers, all termites able to work.

Sd: termites soldiers.

Te: termitomyces are fungi grown by termites.

Fg: fungal gardens are chambers in the termite mound set by growing fungi.

Ec: egg chambers are built in the mound to serve as a nursery.

Wd: wood is used by termites to build their mound and to grow fungi.

Ac: ant competitors that may attack the colony.

I computed the set of minimally doomed configurations for this example starting from the following initial marking: ac+, ec-, fg-, rp-, sd-, te-, wd-, wk+ and the undesired marking: ac+,ec-,fg-,rp-,sd-,te-,wd-,wk- (colony's collapse).

Prefix has 68 events, including cut-offs

Unchallenged events {'(pi0,e40)', '(pi0,e39)'}

prefix_d DiGraph with 67 nodes and 153 edges

minFO: 6it [00:00, 96.34it/s]

00m00s [MINDOO 1]        set() []

Marking:  ('wk+_1', 'sd-', 'wd-', 'ac+', 'rp-', 'ec-', 'te-', 'fg-', 'wk+_2', 'wk+_3')

   free checks: 2

00m00s [MINDOO 2]        {'r8', 'r3', 'r5', 'r7', 'r6'} ['(pi0,e1)', '(pi0,e4)', '(pi0,e7)', '(pi0,e12)', '(pi0,e13)']

Marking:  ('wk-_1', 'sd-', 'wd-', 'ac+', 'rp-', 'ec-', 'te-', 'fg-', 'wk-_2')

   free checks: 5

00m00s [MINDOO 3]        {'r6'} ['(pi0,e2)']

Marking:  ('wk-_1', 'sd-', 'wd-', 'ac+', 'rp-', 'ec-', 'te-', 'fg-', 'wk-_2')

   free checks: 8

00m00s [MINDOO 4]        {'r8', 'r3', 'r5', 'r7', 'r9'} ['(pi0,e1)', '(pi0,e4)', '(pi0,e8)', '(pi0,e14)', '(pi0,e56)']

Marking:  ('wk-_1', 'sd-', 'wd-', 'ac+', 'rp-', 'ec-', 'te-', 'fg-', 'wk-_2')

   free checks: 12

total free checks: 13

This result shows no alternative fates to the undesired one because ∅ is a part of mindoo-confs.