Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Mark `ActorJoin` dependent with `target_`
authorMaxwell Pirtle <maxwellpirtle@gmail.com>
Fri, 5 May 2023 06:53:47 +0000 (08:53 +0200)
committerMaxwell Pirtle <maxwellpirtle@gmail.com>
Fri, 12 May 2023 13:58:22 +0000 (15:58 +0200)
The `ActorJoin` transition was previously
labeled as independent with all other
transitions, including those of the actor
upon which the join acted. However, this
assumption was faulty: the join action is
instead dependent with ANY transition executed
by the actor joined upon, as the action
BECOMES enabled only as soon as the last action
run by the actor is executed.

src/mc/transition/TransitionActorJoin.cpp

index c6e1533..41eb681 100644 (file)
@@ -27,7 +27,13 @@ std::string ActorJoinTransition::to_string(bool verbose) const
 }
 bool ActorJoinTransition::depends(const Transition* other) const
 {
-  // Joining is indep with any other transitions:
+  // Joining is dependent with any transition whose
+  // actor is that of the `other` action. , Join i
+  if (other->aid_ == target_) {
+    return true;
+  }
+
+  // Otherwise, joining is indep with any other transitions:
   // - It is only enabled once the target ends, and after this point it's enabled no matter what
   // - Other joins don't affect it, and it does not impact on the enabledness of any other transition
   return false;