You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Currently, it is up to an activation (and the completed constraint's default max_age) to figure out, that a completed constraint's spike does not cause the activation of the desired follow-up spike.
This should be registered by CausalGroup: if an activation fails to produce the spikes it promised, and there are no other activations in the CausalGroup that could produce the same spike for the same cause, Activations which depend on the forgone spikes will be notified via Activation.effect_not_caused(effect, causal_group) where effect is a Signal.
Successively, the activation searches it's conjuncts for signals of type effect. If a match was found, the activation will reject all spikes from causal_group for the affected conjunct.
This also plays into the behavior of a pressured activation:
It only has to use it's death_clock to reject fully-fulfilled causal signal subsets.
If it is only holding on to completion signals, then it can rely on effect_not_caused to trigger it's auto-elimination.
Therefore, it is concluded:
§1) Auto-elimination can be partially determined by effect_not_caused. Activations will release spikes naturally, if their cause-effect assumptions are not being fulfilled.
§2) The activation's pressure 💥 ↔ 🕙 death_clock mechanism is only needed to end acquisitions of Fully-fulfilled Conjunct Causal Signal Subsets (FFCCSS). If the activation is pressured because it is waiting for completions, Pressure becomes an observation rather than a cause for action. Activations must reject FFCCSS for pressured causal groups after a given amount of time. Therefore, the death_clock mechanism requires the following new/amended APIs:
Constraint.fullfilled_causal_groups(): Retrieve the causal groups, for which there are FFCCSS. If the return value intersects with the activation's pressuring_causal_groups, the activation's death_clock will be started. This is checked both in Activation.pressure() and in Activation.acquire().
Constraint.dereference(spike, causal_groups): This API will be changed, such that it will only reject spikes from causal_groups if they are part of a FFCCSS. Note: It should be ok to leave pressuring_causal_groups unchanged, even if the causal group may not be referenced anymore after dereference.
§3) The maximum age of a completion signal may safely bet set to ∞
§4) Context.lowest_upper_bound_eta() may be removed.
§5) It should be considered, whether adding a wait=<t> parameter to Signal constraints may be worth the effort. This parameter would replace a hard-coded death clock value for CCSS.
§6) [known] The acquisition of a spike by an activation always resets the death_clock
§7) [known] FFCCSS must not be rejected, if they are part of a fully-fulfilled conjunction.
The text was updated successfully, but these errors were encountered:
Currently, it is up to an activation (and the completed constraint's default max_age) to figure out, that a completed constraint's spike does not cause the activation of the desired follow-up spike.
This should be registered by CausalGroup: if an activation fails to produce the spikes it promised, and there are no other activations in the CausalGroup that could produce the same spike for the same cause, Activations which depend on the forgone spikes will be notified via
Activation.effect_not_caused(effect, causal_group)
where effect is a Signal.Successively, the activation searches it's conjuncts for signals of type
effect
. If a match was found, the activation will reject all spikes fromcausal_group
for the affected conjunct.This also plays into the behavior of a pressured activation:
Therefore, it is concluded:
effect_not_caused
. Activations will release spikes naturally, if their cause-effect assumptions are not being fulfilled.pressure 💥
↔🕙 death_clock
mechanism is only needed to end acquisitions of Fully-fulfilled Conjunct Causal Signal Subsets (FFCCSS). If the activation is pressured because it is waiting for completions, Pressure becomes an observation rather than a cause for action. Activations must reject FFCCSS for pressured causal groups after a given amount of time. Therefore, the death_clock mechanism requires the following new/amended APIs:Constraint.fullfilled_causal_groups()
: Retrieve the causal groups, for which there are FFCCSS. If the return value intersects with the activation'spressuring_causal_groups
, the activation'sdeath_clock
will be started. This is checked both inActivation.pressure()
and inActivation.acquire()
.Constraint.dereference(spike, causal_groups)
: This API will be changed, such that it will only reject spikes from causal_groups if they are part of a FFCCSS. Note: It should be ok to leavepressuring_causal_groups
unchanged, even if the causal group may not be referenced anymore afterdereference
.Context.lowest_upper_bound_eta()
may be removed.wait=<t>
parameter to Signal constraints may be worth the effort. This parameter would replace a hard-coded death clock value for CCSS.The text was updated successfully, but these errors were encountered: