Hi, just a note: in step (1) you only need to find one normal sphere for each triangulation in LIST, not all. This has a surprisingly good impact on the running time – essentially you can solve a single non-convex optimisation problem (maximise Euler characteristic) to avoid an expensive enumeration of all vertex normal surfaces, and when done the right way this collapses to a polynomial-time search surprisingly often.
(For reference: the full pseudocode for 3-sphere recognition as it looks today is in arXiv:1208.2504, algorithm 3.2, and the optimisation techniques are in arXiv:1211.1079.)

]]>