예제 #1
0
def test_bin_and_flipped_reordered():
    ssyt_list = ssyt_triangle.get_ssyt_matrix(4)
    bin_tri_reordered = ssyt_triangle.get_bin3_tri_reordered()

    ssyt_omega_list = [
        util.get_absolute_array(ssyt_triangle.flip_matrix_to_omega(m))
        for m in ssyt_list
    ]

    bin_omega_list = [
        util.get_absolute_array(binary_comb.get_omega_for_cliff(b))
        for b in bin_tri_reordered
    ]

    count = 0
    diff_count = 0
    for s, b in zip(ssyt_omega_list, bin_omega_list):
        if not s == b:
            if not (s == comb_bin(b)):
                print("FAILED!!!!!!!!!!")
                print('>>>>>>>>>>> count=', count)
                print('binary')
                util.print_array(b)
                print('flipped ssyt x')
                util.print_array(s)
                diff_count += 1
                print('*******combed binary')
                util.print_array(comb_bin(b))
        count += 1

    print('diff count ', diff_count)
예제 #2
0
def test_bin_and_flipped(size):
    ssyt_list = ssyt_triangle.get_ssyt_matrix(size + 1)
    bin_tri_list = binary_triangle.get_binary_triangle(size)

    bin_tri_list = [[row for row in reversed(tri)] for tri in bin_tri_list]

    ssyt_omega_list = [
        util.get_absolute_array(ssyt_triangle.flip_matrix_to_omega(m))
        for m in ssyt_list
    ]

    bin_omega_list = [
        util.get_absolute_array(binary_comb.get_omega_for_cliff(b))
        for b in bin_tri_list
    ]

    ssyt_map = dict()

    count = 0

    for b in bin_omega_list:
        #print('processing', b)
        out = comb_bin(b)
        key = str(out)

        if not out in ssyt_omega_list:
            print('FAILED: no match for binary', b, 'with image', out)
        elif key in ssyt_map:
            ssyt_map[key] = ssyt_map[key] + [
                b,
            ]
            print('DUPLICATE', out, 'mapped to by', ssyt_map[key])
        else:
            ssyt_map[key] = [
                b,
            ]

    for s in ssyt_omega_list:
        if str(s) not in ssyt_map:
            print('MISSING SSYT', s)

    print(len(ssyt_map))

    for key in ssyt_map:
        if len(ssyt_map[key]) > 1 or not key == str(ssyt_map[key][0]):
            print('ssyt', key, 'binary', ssyt_map[key])
예제 #3
0
def write_bin_and_flipped_ssyt():
    ssyt_list = get_ssyt_matrix(4)

    ssyt_omega_list = [ absolute_triangle(flip_matrix_to_omega(m)) for m in ssyt_list ]

    bin_omega_list = [ absolute_triangle(binary_comb.get_omega_for_cliff(b)) for b in bin_tri_reordered ]



    count = 0
    diff_count = 0
    for s,b in zip(ssyt_omega_list, bin_omega_list):
        if not s == b:
            print('>>>>>>>>>>> count=', count)
            print('binary')
            util.print_array(b)
            print('flipped ssyt')
            util.print_array(s)
            diff_count+=1
        count+=1



    print('diff count ', diff_count)
예제 #4
0
def write_bin_layers(bin_list, layer_list, suffix):

    sst_list = bss.build_stacks(len(bin_list[0]))


    lines = util.get_tex_header()

    num = -1
    for bin_tri, layer_tri in zip(bin_list, layer_list):

        num += 1

        if True:

            # need to invert this mapping!
            xinv = [[1 - a for a in row] for row in bin_tri]

            omega_before = binary_comb.get_omega_for_cliff(xinv)
            B, D = binary_comb.comb(xinv)
            omega = binary_comb.get_omega(B, D)

            print(layer_tri)
            size = len(layer_tri)



            binlayer_list = [ binary_for_layer(row, size) for row in layer_tri ]

            #binlayer_list = [ [row for row in reversed(tri)]  for tri in binlayer_list]



            #### this implementation rotates the triangle!!!!

            print('binary:', bin_tri)
            for x in binlayer_list:
                print('\t', x)

            rot_bin_tri = util.rotate_triangle(bin_tri)



            rot_bin_tri = [row for row in reversed(rot_bin_tri)]

#            if rot_bin_tri in sst_list:
            if True:


                lines.append('\\subsubsection*{Triangle Number ' + str(num) + '}')
                lines.append('')



                lines.append('\\begin{tikzpicture}[scale=.5]')

                lines.append('\\node at (0,' + str(3  * size + 1) + ') {')
                lines.append(util.to_tex_ytableau([ row for row in reversed(rot_bin_tri)]))
                lines.append('};')


                lines.append('\\begin{scope}[shift={(0,' + str(3  * size/ 2) + ')}]')
                lines.append(util.omega_to_tangle(invert_bin_to_omega(rot_bin_tri)))
                lines.append('\\end{scope}')

                lines.append('\\begin{scope}[shift={(0,0)}]')
                lines.append(util.omega_to_tangle(invert_bin_to_combed_omega(rot_bin_tri)))
                lines.append('\\end{scope}')



                for count,bl in enumerate(binlayer_list):




                    lines.append('\\node at (' + str( (count +1) * 3/2 * size ) + ',' + str(3  * size +1) + ') {')
                    lines.append(util.to_tex_ytableau([row for row in reversed(bl)]))
                    lines.append('};')

                    lines.append('\\begin{scope}[shift={(' + str((count + 1) * 3/2 * size) + ',' + str(3  * size/ 2) + ')}]')
                    lines.append(util.omega_to_tangle(invert_bin_to_omega(bl)))
                    lines.append('\\end{scope}')


                    lines.append('\\begin{scope}[shift={(' + str((count + 1) * 3/2 * size) + ',0)}]')
                    lines.append(util.omega_to_tangle(invert_bin_to_combed_omega(bl)))
                    lines.append('\\end{scope}')

                lines.append('\\end{tikzpicture}')
                lines.append('')
                lines.append('\medskip')


    lines = lines + util.get_tex_footer()





    file_name = '/Users/abeverid/PycharmProjects/asm/data/sst_layer_' + suffix + str(size) + '.tex'


    print('writing to', file_name)

    out_file = open(file_name, 'w')

    out_file.writelines(["%s\n" % item for item in lines])
예제 #5
0
def invert_bin_to_omega(bin_tri):
    new_bin = [[1-x for x in row] for row in bin_tri]
    omega = binary_comb.get_omega_for_cliff(new_bin)

    return omega
예제 #6
0
count = 0
for x, y in zip(bin_list, layer_list):
    #print('hi', x, y)

    # for xrow, yrow in zip(reversed(x),y):
    #
    #     print("{:<15}".format(str(xrow)), "{:<15}".format(str(yrow)))
    # print('')

    #print(x)

    xinv = [[1-a for a in row] for row in x]


    omega_before = binary_comb.get_omega_for_cliff(xinv)
    B,D = binary_comb.comb(xinv)
    omega = binary_comb.get_omega(B,D)
    #if  not binary_comb.is_magog(omega_before):

    xx = util.flip_triangle(x)

    if  xx in sst_list: #not binary_comb.is_vless_gog(omega):
        count +=1
        #print(x, omega, y)



        #print(x)

        for xrow, orow, yrow in zip(reversed(xx), omega, y):
예제 #7
0
def compare_to_binary(size):

    file_name = '/Users/abeverid/PycharmProjects/asm/data/ssyt/bin-ssyt' + str(size) + '.tex'

    out_file = open(file_name, 'w')


    lines = ['\\documentclass[12pt]{article}', '\\usepackage{amsmath}', '\\usepackage{ytableau}',
             '\\usepackage{tikz}', '\\begin{document}']

    matrix_list = get_ssyt_matrix(size)
    #triangle_list = binary_triangle.get_binary_triangle_with_subset_order(size-1)
    triangle_list = bin_tri_reordered


    # bin_tri_list

    # matrix_list = [
    #     [[1, 1], [1, 0], [0, 0]],
    #     [[1, 0], [1, 1], [0, 0]],
    #     [[1, 0], [1, 0], [0, 1]],
    #     [[1, 1], [0, 0], [1, 0]],
    #     [[1, 0], [0, 1], [1, 0]],
    #     [[1, 0], [0, 0], [1, 1]],
    #     [[0, 0], [1, 1], [1, 0]],
    #     [[0, 0], [1, 0], [1, 1]]
    # ]
    #
    # triangle_list = [
    #     [[0], [0, 0]],
    #     [[0], [0, 1]],
    #     [[0], [1, 0]],
    #     [[1], [0, 0]],
    #     [[0], [1, 1]],
    #     [[1], [0, 1]],
    #     [[1], [1, 0]],
    #     [[1], [1, 1]]
    # ]


    count = -1
    for t,m in zip(triangle_list, matrix_list):
        count = count+1
        size = len(triangle_list[0])
        t_B, t_D = binary_comb.comb(t)
        t_cliff_omega = binary_comb.get_omega_for_cliff(t)
        t_combed_omega = binary_comb.get_omega(t_B, t_D)

        m_B, m_D = matrix_to_BD(m)
        m_omega = binary_comb.get_omega(m_B,m_D)

        t_invert = [ [ 1 -x for x in row ] for row in reversed(t)]

        #print(t, t_invert)


        lines.append('\\begin{tikzpicture}[scale=.5]')

        lines.append('\\node at (0,' + str(size/2) + ') {')
        lines.append(util.to_tex_ytableau(t_invert))
        lines.append('};')

        lines.append('\\begin{scope}[shift={(' + str(1 * size -1) + ',1)}]')
        lines.append(binary_comb.to_tangle2(t_cliff_omega))
        lines.append('\\end{scope}')

        lines.append('\\begin{scope}[shift={(' + str(2.5*size -1) + ',1)}]')
        lines.append(binary_comb.to_tangle2(t_combed_omega))
        lines.append('\\end{scope}')

        lines.append('\\node at (' +  str(4 * size) + ',' + str(size/2) + ') {')
        lines.append(util.to_tex_ytableau(util.flip_triangle2(matrix_to_ssyt(m))))
        lines.append('};')


        lines.append('\\node at (' +  str(5.5 * size) + ',' + str(size/2) + ') {')
        lines.append(util.to_tex_ytableau(m))
        lines.append('};')




        lines.append('\\begin{scope}[shift={( ' + str(6.5 * size) + ',0)}]')
        lines.append(binary_comb.to_tangle(m_omega))
        lines.append('\\end{scope}')

        lines.append('\\node at (' + str(7.5 * size) + ',0) {' + str(count) + '};')

        lines.append('\\end{tikzpicture}')
        lines.append('')

    lines.append('\\end{document}')

    out_file.writelines(["%s\n" % item for item in lines])