def __init__(self, R, n, q=None): """ TESTS:: sage: HeckeAlgebraSymmetricGroupT(QQ, 3) Hecke algebra of the symmetric group of order 3 on the T basis over Univariate Polynomial Ring in q over Rational Field :: sage: HeckeAlgebraSymmetricGroupT(QQ, 3, q=1) Hecke algebra of the symmetric group of order 3 with q=1 on the T basis over Rational Field """ self.n = n self._basis_keys = permutation.Permutations(n) self._name = "Hecke algebra of the symmetric group of order %s"%self.n self._one = permutation.Permutation(range(1,n+1)) if q is None: q = PolynomialRing(R, 'q').gen() R = q.parent() else: if q not in R: raise ValueError, "q must be in R (= %s)"%R self._name += " with q=%s"%q self._q = q CombinatorialAlgebra.__init__(self, R) # _repr_ customization: output the basis element indexed by [1,2,3] as [1,2,3] self.print_options(prefix="")
def ubs(f): r""" Given a sextic form `f`, return a dictionary of the invariants of Mestre, p 317 [M]_. `f` may be homogeneous in two variables or inhomogeneous in one. EXAMPLES:: sage: from sage.schemes.hyperelliptic_curves.invariants import ubs sage: x = QQ['x'].0 sage: ubs(x^6 + 1) {'A': 2, 'C': -2/9, 'B': 2/3, 'D': 0, 'f': x^6 + h^6, 'i': 2*x^2*h^2, 'Delta': -2/3*x^2*h^2, 'y1': 0, 'y3': 0, 'y2': 0} sage: R.<u, v> = QQ[] sage: ubs(u^6 + v^6) {'A': 2, 'C': -2/9, 'B': 2/3, 'D': 0, 'f': u^6 + v^6, 'i': 2*u^2*v^2, 'Delta': -2/3*u^2*v^2, 'y1': 0, 'y3': 0, 'y2': 0} sage: R.<t> = GF(31)[] sage: ubs(t^6 + 2*t^5 + t^2 + 3*t + 1) {'A': 0, 'C': -15, 'B': -12, 'D': -15, 'f': t^6 + 2*t^5*h + t^2*h^4 + 3*t*h^5 + h^6, 'i': -4*t^4 + 10*t^3*h + 2*t^2*h^2 - 9*t*h^3 - 7*h^4, 'Delta': -10*t^4 + 12*t^3*h + 7*t^2*h^2 - 5*t*h^3 + 2*h^4, 'y1': 4*t^2 - 10*t*h - 13*h^2, 'y3': 4*t^2 - 4*t*h - 9*h^2, 'y2': 6*t^2 - 4*t*h + 2*h^2} """ ub = Ueberschiebung if f.parent().ngens() == 1: f = PolynomialRing(f.parent().base_ring(), 1, f.parent().variable_name())(f) x1, x2 = f.homogenize().parent().gens() f = sum([f[i] * x1**i * x2**(6 - i) for i in range(7)]) U = {} U['f'] = f U['i'] = ub(f, f, 4) U['Delta'] = ub(U['i'], U['i'], 2) U['y1'] = ub(f, U['i'], 4) U['y2'] = ub(U['i'], U['y1'], 2) U['y3'] = ub(U['i'], U['y2'], 2) U['A'] = ub(f, f, 6) U['B'] = ub(U['i'], U['i'], 4) U['C'] = ub(U['i'], U['Delta'], 4) U['D'] = ub(U['y3'], U['y1'], 2) return U
def ubs(f): r""" Given a sextic form `f`, return a dictionary of the invariants of Mestre, p 317 [M]_. `f` may be homogeneous in two variables or inhomogeneous in one. EXAMPLES:: sage: from sage.schemes.hyperelliptic_curves.invariants import ubs sage: x = QQ['x'].0 sage: ubs(x^6 + 1) {'A': 2, 'C': -2/9, 'B': 2/3, 'D': 0, 'f': x^6 + h^6, 'i': 2*x^2*h^2, 'Delta': -2/3*x^2*h^2, 'y1': 0, 'y3': 0, 'y2': 0} sage: R.<u, v> = QQ[] sage: ubs(u^6 + v^6) {'A': 2, 'C': -2/9, 'B': 2/3, 'D': 0, 'f': u^6 + v^6, 'i': 2*u^2*v^2, 'Delta': -2/3*u^2*v^2, 'y1': 0, 'y3': 0, 'y2': 0} sage: R.<t> = GF(31)[] sage: ubs(t^6 + 2*t^5 + t^2 + 3*t + 1) {'A': 0, 'C': -15, 'B': -12, 'D': -15, 'f': t^6 + 2*t^5*h + t^2*h^4 + 3*t*h^5 + h^6, 'i': -4*t^4 + 10*t^3*h + 2*t^2*h^2 - 9*t*h^3 - 7*h^4, 'Delta': -10*t^4 + 12*t^3*h + 7*t^2*h^2 - 5*t*h^3 + 2*h^4, 'y1': 4*t^2 - 10*t*h - 13*h^2, 'y3': 4*t^2 - 4*t*h - 9*h^2, 'y2': 6*t^2 - 4*t*h + 2*h^2} """ ub = Ueberschiebung if f.parent().ngens() == 1: f = PolynomialRing(f.parent().base_ring(), 1, f.parent().variable_name())(f) x1, x2 = f.homogenize().parent().gens() f = sum([ f[i]*x1**i*x2**(6-i) for i in range(7) ]) U = {} U['f'] = f U['i'] = ub(f, f, 4) U['Delta'] = ub(U['i'], U['i'], 2) U['y1'] = ub(f, U['i'], 4) U['y2'] = ub(U['i'], U['y1'], 2) U['y3'] = ub(U['i'], U['y2'], 2) U['A'] = ub(f, f, 6) U['B'] = ub(U['i'], U['i'], 4) U['C'] = ub(U['i'], U['Delta'], 4) U['D'] = ub(U['y3'], U['y1'], 2) return U