Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix iterators for free inverse semigroups (issue #536) and some new methods for free inverse semigroups #545

Merged
merged 5 commits into from
Oct 1, 2018

Conversation

james-d-mitchell
Copy link
Collaborator

@james-d-mitchell james-d-mitchell commented Sep 28, 2018

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:

w_1 w_1 ^ -1 w_2 w_2 ^ -1 ... w_k w_k ^ -1 u

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:

  1. Fixed (I think) the iterator code, then realised it doesn't work.
  2. Commented the iterator code out, in case it can be fixed later.
  3. Added methods for Random, <, and, ChooseHashFunction for free
    inverse semigroups and their elements.
  4. Make FreeInverseSemigroups belong to IsEnumerableSemigroupRep
  5. Tweaked the doc and comments slightly.
  6. Add some missing HasIsFinite and not IsFinite to Green's classes.
  7. FreeInverseSemigroups know they are infinite now.
  8. Do some other minor cleaning up.

James Mitchell added 2 commits September 28, 2018 18:03
This commit 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:
w_1 w_1 ^ -1 w_2 w_2 ^ -1 ... w_k w_k ^ -1 u 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 commit, I have:

1. Fixed (I think) the iterator code, then realised it doesn't work.
2. Commented the iterator code out, in case it can be fixed later.
3. Added methods for Random, \<, and, ChooseHashFunction for free
   inverse semigroups and their elements.
4. Tweaked the doc and comments slightly.
5. Add some missing HasIsFinite and not IsFinite to Green's classes.
6. FreeInverseSemigroups know they are infinite now.
@james-d-mitchell james-d-mitchell added 3.* bug-fix A label for PRs that fix a bug. labels Sep 28, 2018
@james-d-mitchell
Copy link
Collaborator Author

@wilfwilson please review when you have a moment

@wilfwilson wilfwilson changed the title Fix issue 536 Fix iterators for free inverse semigroups (issue #536) and some new methods for free inverse semigroups Oct 1, 2018
Copy link
Collaborator

@wilfwilson wilfwilson left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good.

@wilfwilson wilfwilson merged commit 9378dee into semigroups:stable-3.0 Oct 1, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug-fix A label for PRs that fix a bug.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants