40 lines
1.8 KiB
Python
40 lines
1.8 KiB
Python
def quaternion_group_action_matrices(F, space, list_of_group_elements, basis):
|
|
n = len(list_of_group_elements)
|
|
d = len(space)
|
|
A = [matrix(F, d, d) for i in range(n)]
|
|
for i, g in enumerate(list_of_group_elements):
|
|
for j, omega in enumerate(space):
|
|
omega1 = omega.group_action(g)
|
|
v1 = omega1.coordinates(basis = basis)
|
|
A[i][:, j] = vector(v1)
|
|
return A
|
|
|
|
def quaternion_group_action_matrices_holo(AS, basis=0, threshold=10):
|
|
n = AS.height
|
|
generators = QuaternionGroup().gens()
|
|
if basis == 0:
|
|
basis = AS.holomorphic_differentials_basis(threshold=threshold)
|
|
F = AS.base_ring
|
|
return quaternion_group_action_matrices(F, basis, generators, basis = basis)
|
|
|
|
quaternion_cover.group_action_matrices_holo = quaternion_group_action_matrices_holo
|
|
|
|
def quaternion_group_action_matrices_dR(AS, threshold=8):
|
|
n = AS.height
|
|
generators = QuaternionGroup().gens()
|
|
holo_basis = AS.holomorphic_differentials_basis(threshold = threshold)
|
|
str_basis = AS.cohomology_of_structure_sheaf_basis(holo_basis = holo_basis, threshold = threshold)
|
|
dr_basis = AS.de_rham_basis(holo_basis = holo_basis, cohomology_basis = str_basis, threshold=threshold)
|
|
F = AS.base_ring
|
|
basis = [holo_basis, str_basis, dr_basis]
|
|
return quaternion_group_action_matrices(F, basis[2], generators, basis = basis)
|
|
|
|
quaternion_cover.group_action_matrices_dR = quaternion_group_action_matrices_dR
|
|
|
|
def quaternion_group_action_matrices_log_holo(AS):
|
|
n = AS.height
|
|
generators = QuaternionGroup().gens()
|
|
F = AS.base_ring
|
|
return quaternion_group_action_matrices(F, AS.at_most_poles_forms(1), generators, basis = AS.at_most_poles_forms(1))
|
|
|
|
quaternion_cover.group_action_matrices_log_holo = quaternion_group_action_matrices_log_holo |