diff --git a/test_cycle.py b/test_cycle.py
deleted file mode 100644
index e8448e422d1f3592b82a556e118bbfe90c0ea86e..0000000000000000000000000000000000000000
--- a/test_cycle.py
+++ /dev/null
@@ -1,143 +0,0 @@
-from graph_tools.base import *
-from graph_tools.parameters import CircuitDoubleCover, CycleDoubleCover, VertexCount
-from graph_tools.misc import sun
-
-from sage.all import MixedIntegerLinearProgram
-from itertools import permutations
-
-verbose = False
-
-def solve_gadget(g, alt_gadgets, param=CycleDoubleCover(5)):
-  N = g.size()
-
-  P = MixedIntegerLinearProgram(maximization=False)
-  V = P.new_variable(real=True, nonnegative=True)
-  P_dual = MixedIntegerLinearProgram(maximization=True)
-  V_dual = P_dual.new_variable(real=True, nonnegative=True)
-
-  BOUNDARIES = list(param.enumerate_boundaries(N))
-
-  def fake_gadget(b):
-    return FakeGadget(N, [ Boundary(b, 1) ])
-
-  def join(a, b):
-    return Gadget.join([ a, b ], [ ((1, i), (2, i)) for i in range(1,N+1) ], [])
-
-  def gadget_to_multiplicity_vector(gadget):
-    return [
-      join(fake_gadget(b), gadget).eval(param) for b in BOUNDARIES
-    ]
-
-  dual_objective = 0
-  dual_constraints = [0] * len(BOUNDARIES)
-  def gadget_to_constraint(gadget, var):
-    nonlocal dual_objective
-
-    mv = gadget_to_multiplicity_vector(gadget)
-    n = VertexCount.finalize(gadget.eval_gadget(VertexCount))
-
-    P.add_constraint(sum( a * V[b] for a, b in zip(mv, BOUNDARIES) ) >= 2**(n // 2))
-    for i, a in enumerate(mv):
-      dual_constraints[i] += a * V_dual[var]
-    dual_objective += 2**(n // 2) * V_dual[var]
-
-  for i, ag in enumerate(alt_gadgets): gadget_to_constraint(ag, i)
-  P_dual.set_objective(dual_objective)
-
-  mv = gadget_to_multiplicity_vector(g)
-  P.set_objective(sum( a * V[b] for a, b in zip(mv, BOUNDARIES) ))
-
-  for b, const in zip(mv, dual_constraints):
-    P_dual.add_constraint(const <= b)
-
-  ret = (
-    P.solve(), P_dual.solve(),
-    2**(VertexCount.finalize(g.eval_gadget(VertexCount))//2)
-  )
-
-  if verbose:
-    #P_dual.show()
-    for i, v in sorted(P_dual.get_values(V_dual).items()):
-      print('w_%s = %s' % (i, v))
-
-  return ret
-
-
-def friend_boundary(g, param):
-  N = g.size();
-  BOUNDARIES = list(param.enumerate_boundaries(N))
-
-  def test_boundary(b):
-    fg = FakeGadget(N, [ Boundary(b, 1) ])
-    joins = [ ((1, i), (2, i)) for i in range(1,N+1) ]
-    return (b, Gadget.join([ fg, g ], joins, []).eval(param))
-
-  return [ test_boundary(b) for b in BOUNDARIES ]
-
-
-def rot(l, x):
-  return l[x:] + l[:x]
-
-
-G4 = [
-  Gadget.join([CUBIC_VERTEX] * 2, [((1,1), (2,1))], [ (1,2), (1,3), (2,2), (2,3) ]),
-  Gadget.join([CUBIC_VERTEX] * 2, [((1,1), (2,1))], [ (1,2), (2,2), (1,3), (2,3) ]),
-  Gadget.join([CUBIC_VERTEX] * 2, [((1,1), (2,1))], [ (1,2), (2,2), (2,3), (1,3) ]),
-]
-
-G4f = [
-  Gadget.join([FREE_EDGE]*2, [], [ (1,1), (1,2), (2,1), (2,2) ]),
-  Gadget.join([FREE_EDGE]*2, [], [ (1,1), (2,1), (2,2), (1,2) ]),
-  Gadget.join([FREE_EDGE]*2, [], [ (1,1), (2,1), (1,2), (2,2) ]),
-]
-
-G5fp = [
-  Gadget.join([ CUBIC_VERTEX, FREE_EDGE ], [], rot([ (1,1), (1,2), (1,3), (2,1), (2,2) ], i))
-  for i in range(5)
-]
-
-G5t = [
-  Gadget.join([CUBIC_VERTEX] * 3, [((1,1), (2,1)), ((2,2), (3,2))], list(out))
-  for out in permutations([ (1,2), (1,3), (2,3), (3,1), (3,3) ])
-]
-
-G5f = [
-  Gadget.join([ CUBIC_VERTEX, FREE_EDGE ], [], list(out))
-  for out in permutations([ (1,1), (1,2), (1,3), (2,1), (2,2) ])
-]
-
-G5s = [
-  Gadget.join([CUBIC_VERTEX] * 3, [((1,1), (2,1)), ((2,2), (3,2))], rot([ (1,2), (1,3), (2,3), (3,1), (3,3) ], i))
-  for i in range(5)
-]
-
-G6 = [
-  Gadget.join([FREE_EDGE]*3, [], rot([ (1,1), (1,2), (2,1), (2,2), (3,1), (3,2) ], i))
-  for i in range(6)
-]
-
-if __name__ == "__main__":
-  import sys
-  verbose = "-v" in sys.argv
-
-#  print("6-cycle replaced by matchings: %s" % (
-#    solve_gadget(sun(6), G6),))
-
-  print("3-cycle replaced by vertex: %s" % (
-    solve_gadget(sun(3), [ CUBIC_VERTEX ]),))
-  print("4-cycle replaced by all 3 matchings: %s" % (
-    solve_gadget(sun(4), G4f),))
-  print("4-cycle replaced by noncrossing matchings: %s" % (
-    solve_gadget(sun(4), G4f[:2]),))
-  print("5-cycle replaced by a non-crossing cubic vertex and an edge: %s" % (
-    solve_gadget(sun(5), G5fp),))
-  print("5-cycle replaced by a tree: %s" % (
-    solve_gadget(sun(5), G5t),))
-  print("5-cycle replaced by a cubic vertex and an edge: %s" % (
-    solve_gadget(sun(5), G5f),))
-  print("5-cycle replaced by a non-crossing tree: %s" % (
-    solve_gadget(sun(5), G5s),))
-#  l = sorted(friend_boundary(sun(5)), key=lambda x: x[1])
-#  print(len(l))
-#  for x in l: print(x)
-