uncross_distinguishers#
- tangles.uncross_distinguishers(search: TangleSweep, sys_ord: SetSeparationSystemOrderFunc, agreement: int) tuple[ndarray, ndarray] #
Uncross the efficient distinguishers of tangles of at least the specified agreement value.
This is done by adding in suitable corners to the separation system and the tangle search tree. The corners we chose are corners of lower order than one of the previous efficient distinguishers which also distinguish the tangles distinguished by that distinguisher. Thus the previous efficient distinguisher is replaced by the new, more nested, corner.
For this to work we need to have two requirements:
the order function must be submodular and injective, otherwise there might not exist a corner to better efficiently distinguish tangles in the uncrossing step.
the agreement function must be such that no tangle contains an empty star: a triple of oriented separations such that the tangle contains two of those oriented separations but also the inverse of their infimum.
Parameters#
- searchTangleSweep
The search object we use to manage the tangle search.
- sys_ordSetSeparationSystemOrderFunc
todo: dont use sys ord
- agreementint
The minimum agreement value for tangles who’s efficient distinguishers we attempt to uncross.
Returns#
- efficient_distinguisher_levelsnp.ndarray
The levels, in the tangle search tree, at which the efficient distinguishers appear.
- efficient_distinguisher_idsnp.ndarray
The separation ids of the efficient distinguishers, sorted by order, the same way as the levels.