-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Rule[e] collisions #19
Comments
You are making a good case here that there should be separate In any case, there is still a tradeoff, which in this case is to replace one thing that is not exactly right but useful and what you want in most cases by 3 different things. This remembers me the "Worst is Better" debate. |
This "Worse is Better"? The author's response in Is Worse Really Better? ends with an interesting paragraph (ref. 6 on that Wikipedia article). If you feel this is an area where correctness can be compromised in favor of simplicity, this GH issue will document this behavior, so we can close this and move on. |
Yes, this is the correct reference. Note that this behavior is already documented, although the potential for name clashes could be emphasized:
What's your opinion here? Would you rather have the three measures I mentioned earlier? Note that this is not strictly speaking a correctness issue. The current behavior is well documented and the implementation does what it promises. The only thing that could be argued is that it is error-inducing. |
My opinion is that an object's name should not be allowed to be confused for its type: "rule name" is only a property of rule-type steps. Outside of rule applications, the rule-name measure is undefined behavior, and should therefore return a null or some other marker of missing-value. Consider a query:
Did the user mean to match only nameless steps of type If the desire for overloading
This would allow the unambiguous query:
Of course, since "event" means one thing in KaTools-land and another in KaTie-land2, I'm suggesting naming with Footnotes
|
This makes sense. Another point of view is that a trace is morally a sequence of rule applications and Regarding using the name |
Using special strings for special cases is a fair approach; since KaSim currently does not allow those as rule names, nor will it generate similar as derived rule names (e.g. The "ignore steps that are not rule applications" becomes:
I agree that having "event" mean different things in different tools is detrimental to new users trying to approach the ecosystem. That is a larger discussion we will have to revisit if & when KaTie is merged into the KaTools repo. |
When rules use names like
_pert_
or_init_
, which are valid KaSim identifiers, it becomes ambiguous if an entry in KaTie's output is due to a special non-event step, or an event from one of those rules.For a concrete example, see the test in the (just added) branch https://github.com/jonathan-laurent/KaTie/tree/rule_special_string_collision
Model:
Query:
KaTie output:
It is unclear of some KaSim bug triggered a second round of init steps. It is also unclear if the 2nd or 3rd rows are due to a rule application or a perturbation.
Checking the
trace-summary.json
:The summary does not have the information to clarify what happened.
The long summary,
trace-summary-long.json
is a tad more informative, showing that the secondinit
is likely a rule, since it contains atests
block:Diving into a (prettier-formated) raw trace shows:
Which reveals the steps were of types init, rule, pert, rule.
It seems to me that asking the "rule name" of an occurrence that's not an event, is ill-defined and should return a NULL. Besides that, I would suggest adding a measure that returns the step type (i.e. one of the contents of the json's /dict/step array of
["Subs","Rule","Pert","Init","Obs","Dummy"]
). This would allow type-safe filtering of initial conditions.The text was updated successfully, but these errors were encountered: