예제 #1
0
class PGL2PrincipalRepresentation(Representation):
    def __init__(self, pgl2, k):
        self._pgl2 = pgl2
        self._pf2 = pgl2.get_pf()
        self._action = PGLGroupAction(pgl2)
        self._q = pgl2.q()
        self._base_character = FieldCharacter(self._pgl2.get_field(), k, self._q - 1)

    def apply(self, g) -> np.ndarray:
        result = np.zeros((self.dim(), self.dim()), dtype=complex)
        infinity = self._pf2.infinity()
        g2 = self._pgl2.create([[g.d, g.c], [g.b, g.a]])
        for x in self._action.get_acted_upon_elements():
            x2 = self._pf2.create([x[1], x[0]])
            y2 = self._action.apply(g2, x2)
            y = self._pf2.create([y2[1], y2[0]])
            s = g.a + g.b * x[1]/x[0] if x[0] != 0 else g.b
            if y2 != infinity:
                value = self._base_character.apply(s * s / g.det())
            else:
                if x2 != infinity:
                    value = self._base_character.apply(g.det() / (g.b * g.b))
                else:
                    value = self._base_character.apply(g.d/g.a)

            i = self._action.get_integral_value(x)
            j = self._action.get_integral_value(y)
            result[i, j] = value
        return result

    def dim(self) -> int:
        return self._q+1

    def get_character(self) -> Character:
        return PGL2DiagonalizableCharacter(self._q, self._base_character)

    def __str__(self):
        return 'ρ%s' % str(self._base_character.i)
예제 #2
0
def get_action_average_polynomial(action, conjugation_classes):
    orbit_lengths = find_orbits(action, conjugation_classes)
    return get_average_polynomial(orbit_lengths)


def pop_if_found(dict, key):
    if key in dict:
        dict.pop(key)


qs = [11]

for q in qs:
    print('q = %d' % q)
    group = PGL2(q)
    action = PGLGroupAction(group)
    conjugation_classes = group.get_conjugation_classes()

    sn_average_polynomial = get_action_average_polynomial(
        SNGroupAction(q + 1), get_sn_conjugation_classes(q + 1))

    orbit_lengths = find_orbits(action, conjugation_classes)
    polynomials = get_polynomials(orbit_lengths)
    polynomials2 = np.asarray(polynomials)
    polynomials.append(sn_average_polynomial)
    polynomials3 = np.asarray(polynomials)
    r1 = matrix_rank(polynomials2)
    r2 = matrix_rank(polynomials3)
    poly_number = len(polynomials2)
    print(poly_number, r1, r2)
    print(orbit_lengths)
예제 #3
0
    e3 = pgl.create([
            [one, zero, zero],
            [zero, one, zero],
            [extension_element, one, one]
        ])

    e4 = pgl.create([
            [one, zero, zero],
            [one, one, zero],
            [zero, zero, one]
        ])

    members = {pgl.identity()}
    for k in range(8):
        for x in product([e1, e2, e3, e4], members):
            res = x[0] * x[1]
            members.add(res)
            if len(members) == 360:
                break
    return members


pgl = PGL(3, 4)
action = PGLGroupAction(pgl)
members = a6_in_psl3_4(pgl)
vector_space = action.get_acted_upon_elements()
orbit_elements = [action.apply(g, vector_space[0]) for g in members]
orbit = list(set(orbit_elements))
print(len(orbit))
from projective_sets.pgl2 import PGL2
from utilities.my_polynomial import MyPolynomial
from copy import copy
from itertools import product, combinations, combinations_with_replacement
from operator import mul
from functools import reduce
from math import log
from representations.characters.wedge_character import WedgeCharacter

q = 5

graph = nx.configuration_model((2, ))
graph2 = nx.configuration_model((4, ))

pgl2 = PGL2(q)
action = PGLGroupAction(pgl2)
representation = TransitiveActionUnitaryStandardRepresentation(
    action,
    pgl2.get_pf().infinity())
characters = [
    WedgeCharacter.create_wedge_character(representation, i)
    for i in range(q + 1)
]
conjugation_classes = list(pgl2.get_conjugation_classes().keys())

graph_covering = GraphCovering(graph, representation)
graph_covering2 = GraphCovering(graph2, representation)
graph_labelling = UpToConjugationGraphLabelling(pgl2.get_conjugation_classes(),
                                                pgl2)

예제 #5
0
 def __init__(self, pgl2, k):
     self._pgl2 = pgl2
     self._pf2 = pgl2.get_pf()
     self._action = PGLGroupAction(pgl2)
     self._q = pgl2.q()
     self._base_character = FieldCharacter(self._pgl2.get_field(), k, self._q - 1)