Currently, the "rule" (i.e., population protocol) must be specified as a dict or CRN (so bounded states) or a Python function implementing the transition function. If the latter, the state_enumeration function is called to enumerate all states and convert them to integers, so that also requires bounded states.
But in principle this is not necessary. For both the sequential and multibatch simulators (though this would be more straightforward for sequential), we could detect when an interaction/batch has found a new state and then enumerate more states to represent as integers. I'm not sure exactly how this would work, but one idea would be to implement state_enumeration as a generator with the yield statement that would generate an infinite number of states, and whenever we see we've encountered new unknown states, we iterate state_enumeration until we've found them, and then go back to simulating.
Currently, the "
rule" (i.e., population protocol) must be specified as a dict or CRN (so bounded states) or a Python function implementing the transition function. If the latter, thestate_enumerationfunction is called to enumerate all states and convert them to integers, so that also requires bounded states.But in principle this is not necessary. For both the sequential and multibatch simulators (though this would be more straightforward for sequential), we could detect when an interaction/batch has found a new state and then enumerate more states to represent as integers. I'm not sure exactly how this would work, but one idea would be to implement
state_enumerationas a generator with theyieldstatement that would generate an infinite number of states, and whenever we see we've encountered new unknown states, we iteratestate_enumerationuntil we've found them, and then go back to simulating.