-
Notifications
You must be signed in to change notification settings - Fork 51
Token Deduplication #349
Copy link
Copy link
Open
Labels
c++Requires C++ implementationRequires C++ implementationevolutionModifies code for running the evolution of the modelModifies code for running the evolution of the modelfeatureNew functionality, or change in existing functionalityNew functionality, or change in existing functionalityhelp wantedExtra attention is neededExtra attention is neededresearchIntroduces new ideas about the structure of the models themselvesIntroduces new ideas about the structure of the models themselves
Milestone
Metadata
Metadata
Assignees
Labels
c++Requires C++ implementationRequires C++ implementationevolutionModifies code for running the evolution of the modelModifies code for running the evolution of the modelfeatureNew functionality, or change in existing functionalityNew functionality, or change in existing functionalityhelp wantedExtra attention is neededExtra attention is neededresearchIntroduces new ideas about the structure of the models themselvesIntroduces new ideas about the structure of the models themselves
The problem
One difference between multihistories as implemented in SetReplace and the
MultiwaySystemis thatMultiwaySystemidentifies isomorphic states and merges them into one in properties such as"StatesList". We need to be able to do that here as well.Discussion
A naive approach would be to perform isomorphism tests on entire states, however, that is not practical for even moderately large states. The better solution may be to perform an isomorphism locally.
As an example, consider a set of expressions that is matched to two different events thus producing two local branches. We can evolve these branches for some time, and then notice that the states (set of edges) they generated after some number of steps are identical up to the renaming of new atoms created during that evolution. In this case, we can identify expressions that appear in these states. This would be similar to what the
MultiwaySystemdoes with identifying complete states, but for sub-evolution instead of entire evolutions.It is also interesting to think about how it relates to caching parts of evolution, and what happens if isomorphic sets of expressions appear in different parts of the evolution.
Goals
At the very least, we should be able to reproduce the
"StatesList"of theMultiwaySystemwith identified isomorphic states. We should also have an option to specify the max number of steps to which such identification should be attempted.