Closed daneelsan closed 3 years ago
You are right. By the way, the compilation fails on Windows because of
maxDestroyerEvents_ == std::numeric_limits<int64_t>::max()
. I switched it tomaxDestroyerEvents_ == static_cast<uint64_t>(std::numeric_limits<int64_t>::max())
and it still complaints that theres a type mismatch. How would you fix this?Ignore this. Apparently I didn't push my changes.
Changes
"MaxDestroyerEvents"
(per expression) toWolframModel
as a step specification:Comments
This works as follows: The causal graph keeps track of how many destroyer events each expression has (
expressionsIDsToDestroyerEventsCount_
). During evolution, we check if the destroyer event count of an expression (causalGraph_.destroyerEventsCount(expressionID)
) exceeds the maximum allowed (maxDestroyerEvents_
), and if it does, we eliminate that expression and matches related to that expression from the matcher.Missing tests, both for C++ and WL.
Missing documentation.
Examples
"MaxDestroyerEvents"
is not a stopping condition, but behaves similar to an event selection function:This is also supported for
"EventSelectionFunction" -> None
:"MaxDestroyerEvent" -> 1
, for any"EventSelectionFunction"
, behaves effectively as a singleway system:This change is