Improve Symbolic Object Hashing to Include Metadata and Symtype #670
+26
−11
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This pull request enhances the hashing of symbolic objects to incorporate metadata and symtype. This addresses potential hash collisions between mathematically equivalent expressions with differing metadata or symtypes, which helps #658.
To maintain compatibility with the existing ordering of symbolic objects, which relies on the original hash function, the original implementation has been preserved as
hash2
.The data structures for
Add
andMul
utilizeDict
. However, becauseDict
internally usesBase.hash
for key placement, this change introduces some ordering differences, leading to failures in several existing tests. Further investigation and potential mitigation strategies for these test failures are needed as mentioned in #667. This PR opens the discussion for how to best address these ordering issues while benefiting from the improved hash incorporating metadata and symtype.