Fix iterators for free inverse semigroups (issue #536) and some new methods for free inverse semigroups #545
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.
I think that this resolves Issue #536.
This PR removes the previous iterator code for free inverse semigroups. The code did not function as it was intended. If I understand it correctly it was attempting to enumerate canonical forms for elements of the free inverse semigroup, which are words of the form:
where w_1, w_2, ..., w_k, u are words in the free group with the same number of generators as the free inverse semigroup. The previous approach (when fixed) essentially iterated through all such expressions. Unfortunately, distinct expressions of the above form do not yield distinct elements of the free inverse semigroup. In fact, of the first 10,000 values iterated through, there were only 119 distinct elements.
In this PR, I have:
inverse semigroups and their elements.
FreeInverseSemigroup
s belong toIsEnumerableSemigroupRep