Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add ODPOR extension computation (lines 4-6)
authorMaxwell Pirtle <maxwellpirtle@gmail.com>
Fri, 12 May 2023 11:19:50 +0000 (13:19 +0200)
committerMaxwell Pirtle <maxwellpirtle@gmail.com>
Tue, 16 May 2023 07:51:21 +0000 (09:51 +0200)
commit04b710673e7f793c0cb96ef8e10c0ab9723c583b
tree14912ade1dc192b3cae200f079437bd9d991d912
parentecccd1691488e7e0644dcf321822c428839e35be
Add ODPOR extension computation (lines 4-6)

ODPOR asks us to compute, for each reversible
race in the current maximal execution `E`,
whether some subsequence `v` of events
extending a prefix `E'` of `E` should be
inserted into a wakeup tree.

There's a few subtle details that should
be noted in this computation. ODPOR asks
us to compute `notdep(e, E)`, which means
possibly looking at events that occur
*after* `e'` and THEN adding `proc(e')`.
The subtlety lies in the fact that the
actual transition associated with `e'`
must be added AFTER all of the others.
We got lucky with SDPOR since next_E_p
was already in the last position and
thus required no special treatment. With
ODPOR, we have to be more careful.

Even more subtle is the observation that
any events in `notdep(e, E)` can neither
affect the enabledness of `e'` nor can
`e'` affect the enabledness of any of
those events, or else if they do
affect the enabledness of `e'` they
will necessarily be contained "between"
`e` and `e'`
src/mc/api/State.cpp
src/mc/api/State.hpp
src/mc/explo/DFSExplorer.cpp
src/mc/explo/odpor/Execution.cpp
src/mc/explo/odpor/Execution.hpp