## Where communities thrive

• Join over 1.5M+ people
• Join over 100K+ communities
• Free without limits
##### Activity
• Aug 10 2021 05:06
• Aug 10 2021 04:50
• Aug 10 2021 04:49
• Aug 07 2021 03:43

helpers for timing (compare)

• Aug 06 2021 05:19

"require" correction slight refactoring (compare)

• Aug 05 2021 05:22

helpers for curves being pants … (compare)

• Aug 05 2021 02:47

figures for pants length 2 (compare)

• Aug 04 2021 10:33

reduced laziness to run in REPL (compare)

• Aug 04 2021 09:50

segment lengths 1 and 2 bound (compare)

• Aug 04 2021 05:26

parallel normal path enumeration (compare)

• Aug 03 2021 10:41

margulis constant corrected (compare)

• Jul 16 2021 06:40

Updates to function shortPathsD… Merge pull request #98 from sha… (compare)

• Jul 16 2021 06:40
• Jul 16 2021 06:38
shabarishch opened #98
• Jul 16 2021 05:21
• Jul 16 2021 05:21

introducing compact types More compact types Merge pull request #97 from sha… (compare)

• Jul 16 2021 05:16
shabarishch opened #97
• Jul 05 2021 10:55
• Jul 05 2021 10:52

speedup by memoizing hash (compare)

• Jul 05 2021 10:16
@Chinmaya-Kausik can you clarify and narrow the error - do you mean the problem is hanging, presumably an infinite loop, or giving the wrong answer, and what minimal triggers this, and make an issue with this.
Chinmaya Kausik
@Chinmaya-Kausik
Oh okay, yes I can specify what is going wrong. The "why" is what I'm having trouble with.
So the loop "a1!" in genus2 does not canonicize correctly.
I'm trying to trace the algorithm by hand right now.
Make an issue first. That way we can all work on it.
Thanks. But can you add another comment for "does not canonicalize correctly" clarifying this - e.g. when we canonicalize we obtain ... which is incorrect (we expect ...).
Chinmaya Kausik
@Chinmaya-Kausik
What we expect, I will work out and add soon.
Chinmaya Kausik
@Chinmaya-Kausik
Oh this seems to be a theoretical issue. That doubt I once had about how canonicising at one basepoint make it non-canonical at the other seems to follow.
Chinmaya Kausik
@Chinmaya-Kausik
I'm not entirely sure yet (haven't double checked so far), but this is my current guess.
Chinmaya Kausik
@Chinmaya-Kausik

What we expect, I will work out and add soon.

Okay, I think I've double checked and the issue seems to hold, so we should not expect any answer from this algorithm. There is a much more involved algorithm in a paper by Lazarus and Rivaud, but I never tried to read it.

Chinmaya Kausik
@Chinmaya-Kausik
The error raised is still odd ("can't shift rightwards"), but if this loop is a counterexample to the algorithm's correctness at a theoretical level, it's probably not worth exploring.
@Chinmaya-Kausik Are you saying that we get into an infinite loop when we try to make things canonical?
If so, we should explore further by creating a LazyList of iterations.
However, you seem to suggest that the wrong answer is returned, which will not happen in an infinite loop unless @anotherArka put a safeguard for this situation which halts and gives an error or wrong answer.
If I remember correctly, "can't shift rightwards" is an error that occurs as we wind around a vertex, and should not occur on a closed surface.
Chinmaya Kausik
@Chinmaya-Kausik

However, you seem to suggest that the wrong answer is returned, which will not happen in an infinite loop unless @anotherArka put a safeguard for this situation which halts and gives an error or wrong answer.

It turns out that I coded in this algorithm and I actually just make it terminate after loopLength + 2 iterations.

@Chinmaya-Kausik Are you saying that we get into an infinite loop when we try to make things canonical?

When attempting to do this by hand, that is what seems to happen, yes.

I take it the issue is for canonical fixing basepoints.
That is, when we make stuff canonical as paths, it fails to be canonical at the basepoint
And making it canonical at basepoint causes the whole process to loop.
If this is the case, we should check the paper if canonical as paths is enough.
At least if that is what they claim.
Chinmaya Kausik
@Chinmaya-Kausik

And making it canonical at basepoint causes the whole process to loop.

Yes, that's exactly what seems to happen here.

If this is the case, we should check the paper if canonical as paths is enough.

I'll take a look

And making it canonical at basepoint causes the whole process to loop.

Yes, that's exactly what seems to happen here.

To clarify - there are only two (adjacent) edges and two vertices and a right turn on the basepoint is a left turn on the other vertex and a left on the basepoint is a right on the other vertex.

That is a good example - simple enough that one can see what is happening. The only question is whether intersection numbers are correct when we take canonical as paths
Arka Ghosh
@anotherArka
What if in the cases where canonicising does not end, we create a list of loops it generates and stop when it generates one loop twice. Then take the intersection number between all such possible pairs of loops then take the minimum of them. Will it be same as the GIN?
Chinmaya Kausik
@Chinmaya-Kausik

That is a good example - simple enough that one can see what is happening. The only question is whether intersection numbers are correct when we take canonical as paths

I checked Erickson and Whittlesey's definition of canonical forms - they seem to require that the cyclic sequence of turns is canonical, so that the curve is canonical as a loop.

What if in the cases where canonicising does not end, we create a list of loops it generates and stop when it generates one loop twice. Then take the intersection number between all such possible pairs of loops then take the minimum of them. Will it be same as the GIN?

Yes, such details I'm not sure of - I don't know if the proofs themselves allow for things to work out. Also, a bigger issue is that the algorithm they describe sounds very similar to ours (to me it seems that it's merely a different way of organizing what we are doing), and they seem to claim that it works.

Chinmaya Kausik
@Chinmaya-Kausik
I should clarify - by "they" in the latest message I mean Erickson and Whittlesey
It seems we should carefully look at canonical in the sense of Erikson and Whittesley. At least the canonical form should exist
Chinmaya Kausik
@Chinmaya-Kausik
I took a look and it seems that our case is one of the (non-+) * cases with s = 0.
Chinmaya Kausik
@Chinmaya-Kausik
Their notation (in terms of turn cycles) and pictures are slightly ambiguous about what happens when s = 0, but even if one were to just plug in the numbers, x+2 is actually a right turn in our case.
It's funny that they just assumed that x+2 != -1 mod (degree)
Chinmaya Kausik
@Chinmaya-Kausik
Oh nvm - I see that x = -3 is a separate case
Chinmaya Kausik
@Chinmaya-Kausik
I still don't see how that's canonical when s= 0, t= 0
If I'm not wrong, there are only two geodesics representing "a1!" and both are non-canonical.
Perhaps we should just replace the curve by its inverse.
If only special ones fail to be non- canonical, one may always work
After all, we do have to pass to primitive curves in a similar way
Chinmaya Kausik
@Chinmaya-Kausik
It turns out that while checking things by hand, I had missed a case by ignoring the possibility of conjugation in free homotopies. The curve "4 to basepoint to 1" on the octagon diagram, representing the loop "b1!a1!b1" based at "4=1" is a canonical curve representing "a1!"
But I'm not sure how one would reach this curve by the algorithm we had discussed in class and implemented
Chinmaya Kausik
@Chinmaya-Kausik
Ah I think I see at least part of the issue. If two edges on a curve are in two quadrilaterals, then there are two ways to shift rightwards.
shabarishch
@shabarishch
Are you active here, @siddhartha-gadgil ?
Just signed in. Wanted to test Latex: $x^2 + 2$
Or is it $x^2 + 2$
Just enabled: try $x^2 + 1$ and $x^3 + y$