sleyzerzon / soar

Automatically exported from code.google.com/p/soar
1 stars 0 forks source link

provide fine-grained control over GDS like chunking #55

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
(I briefly discussed this with Laird, and he asked me to file this.)

Sometimes the most expedient or efficient way to do something in a substate
requires a brief period of inconsistency with a superstate. Unfortunately,
the GDS doesn't allow this to ever happen.

However, we could add the ability to selectively disable the GDS, similar
to how chunking can be selectively disabled. There are two changes in
particular that I'm thinking of:

1) Add a flag similar to "quiescence t" (e.g., "consistency t"). If a rule
tests this flag, then it will not trigger the GDS.

2) Add a RHS function equivalent to "dont-learn <s>" (e.g., "disable-gds
<s>"). If this function is called with a state id as an argument, then the
GDS will not be triggered on that state.

These options allow engineers to precisely control the GDS -- the GDS will
still work by default, but in cases where users specifically want to allow
an inconsistency, they can be explicit about their intentions via one of
these methods (they're self-documenting!). (Of course, some people will end
up creating code that does this stuff everywhere, but I don't think we
should get too hung up on potential abuses). This seems like a balance that
may encourage more people to use substates (at the very least, they know
there is always a quick fix when they are working under a deadline, and it
may lead to less awkward code in some cases).

Original issue reported on code.google.com by marin...@gmail.com on 20 Oct 2009 at 12:54