3.3-1 one arc, two equal roots
   arcs=[(0, 1)] roots=(0, 0) sets=[[0, 1], [0, 1]] convex=[True, True]
   {'PC_E': False, 'ARB_E': False, 'ARB_E_naive': False, 'LOC': False, 'PC_W': False, 'ARB_W': False, 'ARB_W_naive': False, 'LOC_w': False, 'PC_F': False, 'ARB_F': False}
3.3-2 two parallel arcs
   arcs=[(0, 1), (0, 1)] roots=(0, 0) sets=[[0, 1], [0, 1]] convex=[True, True]
   {'PC_E': True, 'ARB_E': True, 'ARB_E_naive': True, 'LOC': True, 'PC_W': True, 'ARB_W': True, 'ARB_W_naive': True, 'LOC_w': True, 'PC_F': False, 'ARB_F': False}
3.3-3 path through the other root
   arcs=[(0, 1), (1, 2)] roots=(0, 1) sets=[[0, 1, 2], [1, 2]] convex=[True, True]
   {'PC_E': False, 'ARB_E': False, 'ARB_E_naive': False, 'LOC': False, 'PC_W': False, 'ARB_W': False, 'ARB_W_naive': False, 'LOC_w': False, 'PC_F': False, 'ARB_F': False}
3.3-4 with arc r1 -> v
   arcs=[(0, 1), (1, 2), (0, 2)] roots=(0, 1) sets=[[0, 1, 2], [1, 2]] convex=[True, True]
   {'PC_E': True, 'ARB_E': True, 'ARB_E_naive': True, 'LOC': True, 'PC_W': True, 'ARB_W': True, 'ARB_W_naive': True, 'LOC_w': True, 'PC_F': True, 'ARB_F': True}
3.3-5 cut vertex x
   arcs=[(0, 2), (1, 2), (2, 3)] roots=(0, 1) sets=[[0, 2, 3], [1, 2, 3]] convex=[True, True]
   {'PC_E': False, 'ARB_E': False, 'ARB_E_naive': False, 'LOC': False, 'PC_W': False, 'ARB_W': False, 'ARB_W_naive': False, 'LOC_w': False, 'PC_F': False, 'ARB_F': False}
N1 non-convex: PC yes, ARB no
   arcs=[(0, 2), (0, 1), (1, 2)] roots=(0, 0) sets=[[0, 2], [0, 2]] convex=[False, False]
   {'PC_E': True, 'ARB_E': False, 'ARB_E_naive': False, 'LOC': False, 'PC_W': True, 'ARB_W': False, 'ARB_W_naive': False, 'LOC_w': False, 'PC_F': False, 'ARB_F': False}
N2 non-convex: LOC yes, PC no, ARB no
   arcs=[(0, 2), (1, 2), (2, 3), (3, 4), (2, 4)] roots=(0, 1) sets=[[0, 2, 3, 4], [1, 2, 4]] convex=[True, False]
   {'PC_E': False, 'ARB_E': False, 'ARB_E_naive': False, 'LOC': True, 'PC_W': False, 'ARB_W': False, 'ARB_W_naive': False, 'LOC_w': True, 'PC_F': False, 'ARB_F': False}
M1 weak yes / strong no
   arcs=[(0, 1), (1, 2), (1, 2)] roots=(0, 1) sets=[[0, 1, 2], [1, 2]] convex=[True, True]
   {'PC_E': False, 'ARB_E': False, 'ARB_E_naive': False, 'LOC': False, 'PC_W': True, 'ARB_W': True, 'ARB_W_naive': True, 'LOC_w': True, 'PC_F': False, 'ARB_F': False}
T1 two sets {r} with the same root
   arcs=[] roots=(0, 0) sets=[[0], [0]] convex=[True, True]
   {'PC_E': True, 'ARB_E': True, 'ARB_E_naive': True, 'LOC': True, 'PC_W': True, 'ARB_W': True, 'ARB_W_naive': True, 'LOC_w': True, 'PC_F': False, 'ARB_F': False}
T2 root of U2 inside U1
   arcs=[(0, 1)] roots=(0, 1) sets=[[0, 1], [1]] convex=[True, True]
   {'PC_E': True, 'ARB_E': True, 'ARB_E_naive': True, 'LOC': True, 'PC_W': True, 'ARB_W': True, 'ARB_W_naive': True, 'LOC_w': True, 'PC_F': True, 'ARB_F': True}
T3 unreachable vertex in the set
   arcs=[(1, 2)] roots=(0,) sets=[[0, 2]] convex=[True]
   {'PC_E': False, 'ARB_E': False, 'ARB_E_naive': False, 'LOC': False, 'PC_W': False, 'ARB_W': False, 'ARB_W_naive': False, 'LOC_w': False, 'PC_F': False, 'ARB_F': False}
sanity: all assertions passed
