Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Aug 10 2021 05:06
    siddhartha-gadgil opened #99
  • Aug 10 2021 04:50
    siddhartha-gadgil closed #94
  • Aug 10 2021 04:49
    siddhartha-gadgil closed #96
  • Aug 07 2021 03:43

    siddhartha-gadgil on master

    helpers for timing (compare)

  • Aug 06 2021 05:19

    siddhartha-gadgil on master

    "require" correction slight refactoring (compare)

  • Aug 05 2021 05:22

    siddhartha-gadgil on master

    helpers for curves being pants … (compare)

  • Aug 05 2021 02:47

    siddhartha-gadgil on master

    figures for pants length 2 (compare)

  • Aug 04 2021 10:33

    siddhartha-gadgil on master

    reduced laziness to run in REPL (compare)

  • Aug 04 2021 09:50

    siddhartha-gadgil on master

    segment lengths 1 and 2 bound (compare)

  • Aug 04 2021 05:26

    siddhartha-gadgil on master

    parallel normal path enumeration (compare)

  • Aug 03 2021 10:41

    siddhartha-gadgil on master

    margulis constant corrected (compare)

  • Jul 16 2021 06:40

    siddhartha-gadgil on master

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

  • Jul 16 2021 06:40
    siddhartha-gadgil closed #98
  • Jul 16 2021 06:38
    shabarishch opened #98
  • Jul 16 2021 05:21
    siddhartha-gadgil closed #97
  • Jul 16 2021 05:21

    siddhartha-gadgil on master

    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
    siddhartha-gadgil commented #96
  • Jul 05 2021 10:52

    siddhartha-gadgil on master

    speedup by memoizing hash (compare)

  • Jul 05 2021 10:16
    siddhartha-gadgil commented #94
Siddhartha Gadgil
@siddhartha-gadgil
for these we need to take the leftmost, not rightmost curve (since the key property of no bigons only works with consistent orientation and left/right;
and then we can have the "same" crossing, i.e. for the same lifts up to homotopy in the universal cover, as giving a positive double path/point and a negative one.
So more complicated criteria are needed to avoid such double counting.
Arka Ghosh
@anotherArka
Has anyone started working on the DD sets? I want to do some part of it.
Siddhartha Gadgil
@siddhartha-gadgil
@anotherArka I have not. The first step is calculating Δ\Delta and the spokes.
Arka Ghosh
@anotherArka
By Δ\Delta do you mean the region bounded by cRc_R and cL1c_L^{-1}?
Siddhartha Gadgil
@siddhartha-gadgil
Yes.
Arka Ghosh
@anotherArka
So one needs to calculate the leftmost canonical path first?
Siddhartha Gadgil
@siddhartha-gadgil
That's right, but that is simply using inverse.
It is the region between them that needs to be determined.
Arka Ghosh
@anotherArka
Ok
Arka Ghosh
@anotherArka
I have started working on crossings. Is anyon else working on it?
Arka Ghosh
@anotherArka
Got this warning
[warn] /media/arkaghosh/Important5/ARKA/10th sem/Computer assisted topology and geometry/Superficial/superficial/src/main/scala/superficial/EdgePath.scala:725:34: method - in trait SetOps is deprecated (since 2.13.0): Use &- with an explicit collection argument instead of - with varargs [warn] val edgeVect = (quad.edges - (e1, e1.flip, e2, e2.flip)).toVector [warn] ^ [warn] one warning found [info] Done compiling.
Is it important?
Siddhartha Gadgil
@siddhartha-gadgil
Not important, but it would be good if you can switch to a non-deprecated method. Or I can do this if it is not clear to you what you do.
Arka Ghosh
@anotherArka
I dont know what deprecated means in this context. It's better if you do this.
Siddhartha Gadgil
@siddhartha-gadgil
Sure.
Deprecated means that it is recommended that you do not use this, and it will be removed in a future version.
Siddhartha Gadgil
@siddhartha-gadgil
Fixed.
Arka Ghosh
@anotherArka
Oh ok. Thanks
Arka Ghosh
@anotherArka
I have the following thought. Is it right?
The region Δ\Delta is the region bounded by cLc_L and cRc_R which are the leftmost and rightmost canonical geodesic. If we start right canonisation starting from cLc_L we will reach cRc_R. Also, the edges traversd during the canonisation is exactly the edges in Δ\Delta.
If it is true then I think it gives us a possible way to calculate Δ\Delta and the Spokes
Siddhartha Gadgil
@siddhartha-gadgil
The region Δ\Delta is the region bounded by cRc_R and cLc_L. I am not sure of the traversed path statement, but in any case it is cleaner to just deduce it from the two boundary curves.
Namely, the paths cLc_L and cRc_R can be decomposed into coinciding segments and segments that are boundaries of stairs.
One can make a structure for a stair, and such a decomposition. Then define a recursively defined function computing this.
Siddhartha Gadgil
@siddhartha-gadgil
If the curves cLc_L and cRc_R start with a non-trivial coinciding segment, we find a maximal one and then recurse.
Otherwise we find the first staircase, which is bounded by the segments of the curves cLc_L and cRc_R between the initial point and the second point where they agree. Again we recurse.
Arka Ghosh
@anotherArka
I think the traversed path statement should follow as the region Δ\Delta is an annulus and if any of the spokes are skipped then the outer and inter boundaries, which are cLc_L and cRc_R can not be homotopic. But, maybe I am oversimplifying.
Siddhartha Gadgil
@siddhartha-gadgil
But is there anything gained by that?
Arka Ghosh
@anotherArka
It can give a possible method to calculate Δ\Delta. But your algorithm is simpler I think.
Arka Ghosh
@anotherArka
While pattern matching in scala, is there a way to assert that certain patterns are unreachable.
Siddhartha Gadgil
@siddhartha-gadgil
For what reason?
I mean, why do you want to show this. Is it to avoid compiler warnings?
Arka Ghosh
@anotherArka
Compiler warnings is an issue but I was curious in general.
Arka Ghosh
@anotherArka

Also, currently I am writing a method to separate into matching and non-matching edges. This will help in building the staircases. After that it remains to add faces to get the actual staircases. For that I have the following thought, tell me if this is ok -

Say we have a non-matching pair (a,b)(a,b) from two paths, where aa is part of the leftmost geodesic cLc_L and bb is part of the rightmost geodesic cRc_R then b.a1b.a^{-1} is the boundary of a staircase SS. Also each face of the staircase should contain at least two edges from b.a1b.a^{-1}.

Siddhartha Gadgil
@siddhartha-gadgil
Yes, that is correct.
You have to decide which kind of staircase it is, and then the spokes just join vertices with index differinb by 1
Arka Ghosh
@anotherArka

Compiler warnings is an issue but I was curious in general.

Anything about this?

Siddhartha Gadgil
@siddhartha-gadgil
The compiler is reasonably smart about this, but can only work with type information. If the missed case is based on object level, there is no way you can tell the compiler.
The practice I follow is have a match for the missed case and throw an exception with information of why that match should never have been reached (helps in debugging, but also serves as documentation)
Chinmaya Kausik
@Chinmaya-Kausik
Okay, to get to examples - would writing out the ones you mentioned in the email the first time we worked on GIN be good, Prof. Gadgil?
Arka Ghosh
@anotherArka
Do note that I have only written the code for primitive curves.
Siddhartha Gadgil
@siddhartha-gadgil

I do not remember what I wote. But some things to try are:

  • Various pairs of intersections of generators $\alpha_i$ and $\beta_j$ and also their slef-intersections.
  • Self-intersections of $\alpha_1\alpha_2$ and $\alpha_1\bar{\alpha_2}$ to check one is 0 and the other is not.
  • Generate families such as $\alpha_1\beta_1^n$ and look for intersection numbers of pairs in these.
  • Intersection number of the commutator $[alpha_1, \beta_1]$ with $\alpha_1\alpha_2$.

By the way, @Chinmaya-Kausik please address me here by my Gitter handle to maximize the chance I am alerted.

Copying the above with double dollars.
I do not remember what I wote. But some things to try are:

  • Various pairs of intersections of generators αi\alpha_i and βj\beta_j and also their slef-intersections.
  • Self-intersections of α1α2\alpha_1\alpha_2 and α1α2ˉ\alpha_1\bar{\alpha_2} to check one is 0 and the other is not.
  • Generate families such as α1β1n\alpha_1\beta_1^n and look for intersection numbers of pairs in these.
  • Intersection number of the commutator [alpha1,β1][alpha_1, \beta_1] with α1α2\alpha_1\alpha_2.

By the way, @Chinmaya-Kausik please address me here by my Gitter handle to maximize the chance I am alerted.

Chinmaya Kausik
@Chinmaya-Kausik
In that case @anotherArka will you have the time to implement the code for non-primitive loops too? I'll write some examples but the tests obviously won't compile without that.
I'll do some primitive ones right now, of course.
Arka Ghosh
@anotherArka
I will try to do it. But I have a presentation tomorrow so I can't gurantee.
Chinmaya Kausik
@Chinmaya-Kausik
Oh definitely, no problem. I'll do the primitive ones for now.
Arka Ghosh
@anotherArka
I have uploaded a code to break a loop into primitive loops. I think the logic is correct but the code can be optimized slightly.
Unfortunately my laptop is out of charge and it's stormy outside so I can't charge it.