Ejemplo n.º 1
0
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, ))
Ejemplo n.º 2
0
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))
Ejemplo n.º 3
0
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])
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
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)
Ejemplo n.º 6
0
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
Ejemplo n.º 7
0
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))
Ejemplo n.º 8
0
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
Ejemplo n.º 9
0
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()
Ejemplo n.º 10
0
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))
Ejemplo n.º 11
0
def test_shift():
    a = my_layers.SL2Element(False, (0, 1))
    assert a.shift((2, 2)) == (1, 0)
Ejemplo n.º 12
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]
Ejemplo n.º 13
0
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
Ejemplo n.º 14
0
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