Closure algorithms delete information from LambdaOrb
Methods installed for ClosureInverseSemigroupOrMonoidNC "remove everything related to strongly connected components". That information needs to be recomputed after a Closure* algorithm is called.
See here.
@ssiccha Thanks, but what is the issue? Do you expect some different behaviour? Given that the strongly connected components etc can change when more generators are added, it is necessary to either delete the old data structures, or recompute them using the old data in ClosureInverseSemigroupOrMonoidNC. Please elaborate!
@james-d-mitchell Yes, off the top of my hat I think the already computed information could (in theory) just be updated. For inverse semigroups of partial permutations, adding a new partial permutation can have consequences like:
- two strongly connected components (SCC) are merged into one
- the schützenberger group associated to a representative of an SCC can grow
Are the other information also updateable in principle?
@ssiccha Yes, you are correct. I guess I thought this was relatively cheap to recompute, and somewhat complicated to implement the merging of SCC's etc, and so didn't bother with this before.
One possible issue is that the data might be only partially known at the point in ClosureInverseSemigroupOrMonoidNC where it is deleted. I don't immediately see what could usefully be recovered if the data is not completely known.