Skip to content

Simplicity test#11

Open
Oscfon wants to merge 17 commits into
flatsurf:masterfrom
Oscfon:master
Open

Simplicity test#11
Oscfon wants to merge 17 commits into
flatsurf:masterfrom
Oscfon:master

Conversation

@Oscfon

@Oscfon Oscfon commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

No description provided.

@videlec

videlec commented Apr 24, 2026

Copy link
Copy Markdown
Contributor

For walks on an OrientedMap, I think it would make sense to have a class Walk. The version of your code at commit 80ed422 introduces a class Walk for quad systems only (in quad_system.py) which has an additional _geodesic attributes.

The advantage of a well named class Walk is that we could then have Walk.geodesic_representative, Walk.self_intersection, Walk.has_simple_lift, etc A little drawback is that concatenation or accessing edges will be slower. But we could make the class so that the underlying data structure of the half-edge list is easily accessed (as we do with OrientedMap._vp).

To construct a walk, the entry point should just be OrientedMap.walk(self, ...).

@videlec

videlec commented Apr 26, 2026

Copy link
Copy Markdown
Contributor

Your function tree_contraction would better be a class that would return a morphism between the original OrientedMap and the one you obtain by doing some tree/co-tree contraction. A morphism is convenient to pass around objects on the OrientedMap (vertex, edge, walks, homotopy classe, homology classes, etc). In this particular case, you just want morphisms that contracts/deletes edges.

@videlec

videlec commented Apr 26, 2026

Copy link
Copy Markdown
Contributor

You should not use function names that start with test_ for anything but tests.

@videlec

videlec commented Apr 30, 2026

Copy link
Copy Markdown
Contributor

At #10, I introduced a word.pyx to implement at C level some operations on words (including free group elements). The underlying data structure is a Python array.

@videlec videlec mentioned this pull request Apr 30, 2026
@videlec

videlec commented May 4, 2026

Copy link
Copy Markdown
Contributor

In #10 I finished the implementation of geometric intersection for OrientedMap with a single vertex and all faces punctured. It is currently in a separate file geometric_intersection.py but will hopefully be a method of Walk in the future. In order to handle the general case, I need to be able to

  • have a way to contract a spanning tree and a co-forest (in the punctured case)
  • implement reducing triangulations (for closed surfaces)

To me, it seems that we should do in order

  1. merge the one-vertex-all-face-punctured geometric intersection Geometric Intersection #10
  2. discuss the general interface for "map reductions" and adapt Simplicity test #11
  3. merge Simplicity test #11
  4. do geometric intersection in all cases.

What do you think?

@Oscfon

Oscfon commented May 4, 2026

Copy link
Copy Markdown
Contributor Author

There is already some works to contract spanning tree and co-tree in #11. We may adapt it.
I agree that it would be nice to have a common interface for all map reductions (Quadsystems and reducing triangulations).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants