def test_sl2_init_error_index_0(): with pytest.raises(Exception): my_layers.SL2Element(False, (3, 1, 1)) with pytest.raises(Exception): my_layers.SL2Element(False, (-1, 1, 1)) with pytest.raises(Exception): my_layers.SL2Element(False, (1.5, ))
def test_sl2_init_error_index_s(): with pytest.raises(Exception): my_layers.SL2Element(False, (1, 0)) with pytest.raises(Exception): my_layers.SL2Element(False, (1, 2, 1)) with pytest.raises(Exception): my_layers.SL2Element(False, (2, 1, 2, 5))
def test_cayley_class(): cayley = my_layers.CayleyGraph(5) assert cayley.graph.vertex_list.keys() == my_layers.SL2Element.cayley_ball( 5).vertex_list.keys() a = my_layers.SL2Element(False, (0, 1)) assert cayley.dist[a] == a.distortion([1, 1]) b = my_layers.SL2Element(False, (1, )) assert cayley.dist[b] == b.distortion([1, 1])
def test_mult_r(): identity = my_layers.SL2Element(False, ()) r = my_layers.SL2Element(False, (1, )) a = my_layers.SL2Element(False, (2, 1)) b = my_layers.SL2Element(False, (2, 1, 1)) c = my_layers.SL2Element(False, (2, 1, 2)) assert identity.times_r() == r assert a.times_r() == b assert b.times_r() == c
def test_distortion(): a = my_layers.SL2Element(False, (0, 1)) assert a.distortion([2, 2]) == (1, 1) b = my_layers.SL2Element(False, (1, )) assert b.distortion([2, 2]) == (2, 1) c = a for i in range(10): c = a * c assert c.distortion([2, 2]) == (1, 1)
def test_count_only_s(): a = my_layers.SL2Element(True, (1, 1, 1)) b = my_layers.SL2Element(True, (1, 1, 1, 1)) c = my_layers.SL2Element(False, (2, 1, 2)) d = my_layers.SL2Element(True, (2, )) assert a.word_length(len_fun='r') == 2 assert b.word_length(len_fun='r') == 2 assert c.word_length(len_fun='r') == 4 assert d.word_length(len_fun='r') == 2
def test_inv(): a = my_layers.SL2Element(False, (0, 1)) assert a.inv() == a b = my_layers.SL2Element(True, (1, )) assert b.inv() == my_layers.SL2Element(True, (2, )) c = my_layers.SL2Element(True, (1, 1, 2, 1)) assert c.inv() == my_layers.SL2Element(True, (0, 1, 1, 1, 2)) d = my_layers.SL2Element(False, (1, 1, 2, 1, 1)) assert d.inv() == my_layers.SL2Element(False, (2, 1, 1, 1, 2))
def test_mult_s(): identity = my_layers.SL2Element(False, ()) neg_identity = my_layers.SL2Element(True, ()) s = my_layers.SL2Element(False, (0, 1)) a = my_layers.SL2Element(False, (2, )) b = my_layers.SL2Element(False, (2, 1)) c = my_layers.SL2Element(True, (2, )) assert identity.times_s() == s assert a.times_s() == b assert b.times_s() == c assert s.times_s() == neg_identity
def test_mult4(): a = my_layers.SL2Element(False, (2, 1, 2)) b = my_layers.SL2Element(False, (1, )) c = my_layers.SL2Element(False, (0, 1)) assert a * b == a.times_r() assert a * c == a.times_s()
def test_mult2(): a = my_layers.SL2Element(False, (2, 1, 1, 1)) b = my_layers.SL2Element(False, (2, 1, 1)) assert a * b == my_layers.SL2Element(False, (2, 1, 1, 1, 2, 1, 1))
def test_shift(): a = my_layers.SL2Element(False, (0, 1)) assert a.shift((2, 2)) == (1, 0)
def test_matrix_inv(): a = my_layers.SL2Element(False, (0, 1)) for i, j in product(range(2), range(2)): assert a.inv_matrix()[i, j] == torch.tensor([[0, -1], [1, 0]], dtype=torch.int)[i, j]
def test_sl2_cayley_ball(): for i in range(10): assert my_layers.SL2Element.cayley_ball(i) assert my_layers.SL2Element.cayley_ball(1).num_vertices == 6 assert my_layers.SL2Element.cayley_ball(2).num_vertices == 12 assert my_layers.SL2Element.cayley_ball(3).num_vertices == 20 set_o_elements = { my_layers.SL2Element(False, ()), my_layers.SL2Element(False, (1, )), my_layers.SL2Element(False, (0, 1)), my_layers.SL2Element(False, (2, )), my_layers.SL2Element(False, (1, 1)), my_layers.SL2Element(False, (0, 1, 1)), my_layers.SL2Element(True, ()), my_layers.SL2Element(True, (1, )), my_layers.SL2Element(True, (0, 1)), my_layers.SL2Element(True, (2, )), my_layers.SL2Element(True, (1, 1)), my_layers.SL2Element(True, (0, 1, 1)) } assert set(my_layers.SL2Element.cayley_ball( 2).vertex_list.keys()) == set_o_elements
def test_sl2_element_equality(): x = my_layers.SL2Element(False, (2, 1)) y = my_layers.SL2Element(False, (2, )) z = y.times_s() assert x != y assert x == z