# To do¶

As part of its analysis pylint will highlight places in flipper where work is flagged as `TODO: #)`

.
These numbers roughly correspond to:

- Major feature.
- Minor feature.
- Performance.
- Miscellaneous, usually writing up proofs of correctness.

Note that many of these features have been implemented in curver.

Within the flipper kernel:

Check we can completely handle disconnected surfaces

Fix lamination.splitting_sequence by extending collapse

Rescale invariant lamination such that weight is in [1, lamination)

Extend symboliccomputation_dummy to work in all cases

Faster Matrix.kernel

Associate a number field to a Lamination

Be able to (half) twist along all curves

Recheck ALL number theory bounds

Add function to convert Twister surface files to flipper.EquippedTriangulations

Implement full conjugacy problem solution. Here is the outline of how this could be done:

Find a reducing curve whenever we discover the mapping class is reducible:

- If h^k(gamma) = gamma then probably need to be able to compute boundary N(alpha cup beta)
- If the invariant train track is not filling then probably need to be able to pull curves back to S this need to be able to pull curves back through collapse_trivial_weight

Implement crushing along an arbitary multicurve, this may require an implementation of Agol–Hass–Thurston

Compute twist invariant - this may involve finding dual curves (efficiently)

Compute conjugacy invariant for periodic mapping classes:

- Implement action of mapping class on multiarcs
- Find invariant multiarc

Strengthen pA conjugacy solution to the permutation conjugacy problem

Implement solution to graph isomorphism for partition graphs

Within the flipper application:

- Undo and redo
- Autosave session
- Fix keyboard shortcuts on mac
- Have weighted brush for painting laminations (in a given field?)
- Switch lamination drawing method on update
- Show warning when automatically adding peripheral components
- Show vertices as filled / unfilled
- Add ability to export a python script - exporting invariant laminations could be hard
- Need to be able to handle loading disconnected surfaces

Within the flipper documentation:

- Document bad cases for default symbolic libarary
- Redo installation / testing instructions
- Autogenerate docs / README

Within the flipper tests:

- Add more tests, including tests for every module
- Convert all tests to unittest that can be run under py.test