Askey-Wilson Algebras

AUTHORS:

  • Travis Scrimshaw (2018-08): initial version

class sage.algebras.askey_wilson.AlgebraMorphism(domain, on_generators, position=0, codomain=None, category=None)[source]

Bases: ModuleMorphismByLinearity

An algebra morphism of the Askey-Wilson algebra defined by the images of the generators.

class sage.algebras.askey_wilson.AskeyWilsonAlgebra(R, q)[source]

Bases: CombinatorialFreeModule

The (universal) Askey-Wilson algebra.

Let \(R\) be a commutative ring. The universal Askey-Wilson algebra is an associative unital algebra \(\Delta_q\) over \(R[q,q^-1]\) given by the generators \(A, B, C, \alpha, \beta, \gamma\) that satisfy the following relations:

\[\begin{split}\begin{aligned} (q-q^{-1}) \alpha &= (q^2-q^{-2}) A + qBC - q^{-1}CB, \\ (q-q^{-1}) \beta &= (q^2-q^{-2}) B + qCA - q^{-1}AC, \\ (q-q^{-1}) \gamma &= (q^2-q^{-2}) C + qAB - q^{-1}BA. \end{aligned}\end{split}\]

The universal Askey-Wilson contains a Casimir element \(\Omega\), and the elements \(\alpha\), \(\beta\), \(\gamma\), \(\Omega\) generate the center of \(\Delta_q\), which is isomorphic to the polynomial ring \((R[q,q^-1])[\alpha,\beta,\gamma,\Omega]\) (assuming \(q\) is not a root of unity). Furthermore, the relations imply that \(\Delta_q\) has a basis given by monomials \(A^i B^j C^k \alpha^r \beta^s \gamma^t\), where \(i, j, k, r, s, t \in \ZZ_{\geq 0}\).

The universal Askey-Wilson algebra also admits a faithful action of \(PSL_2(\ZZ)\) given by the automorphisms \(\rho\) (permutation_automorphism()):

\[A \mapsto B \mapsto C \mapsto A, \qquad \alpha \mapsto \beta \mapsto \gamma \mapsto \alpha.\]

and \(\sigma\) (reflection_automorphism()):

\[A \mapsto B \mapsto A, C \mapsto C + \frac{AB - BA}{q-q^{-1}}, \qquad \alpha \mapsto \beta \mapsto \alpha, \gamma \mapsto \gamma.\]

Note that \(\rho^3 = \sigma^2 = 1\) and

\[\sigma(C) = C - q AB - (1+q^2) C + q \gamma = C - q AB - q^2 C + q \gamma.\]

The Askey-Wilson \(AW_q(a,b,c)\) algebra is a specialization of the universal Askey-Wilson algebra by \(\alpha = a\), beta = b`, \(\gamma = c\), where \(a,b,c \in R\). \(AW_q(a,b,c)\) was first introduced by [Zhedanov1991] to describe the Askey-Wilson polynomials. The Askey-Wilson algebra has a central extension of \(\Delta_q\).

INPUT:

  • R – a commutative ring

  • q – (optional) the parameter \(q\); must be invertible in R

If q is not specified, then R is taken to be the base ring of a Laurent polynomial ring with variable \(q\). Otherwise the element q must be an element of R.

Note

No check is performed to ensure q is not a root of unity, which may lead to violations of the results in [Terwilliger2011].

EXAMPLES:

We create the universal Askey-Wilson algebra and check the defining relations:

sage: AW = algebras.AskeyWilson(QQ)
sage: AW.inject_variables()
Defining A, B, C, a, b, g
sage: q = AW.q()
sage: (q^2-q^-2)*A + q*B*C - q^-1*C*B == (q-q^-1)*a
True
sage: (q^2-q^-2)*B + q*C*A - q^-1*A*C == (q-q^-1)*b
True
sage: (q^2-q^-2)*C + q*A*B - q^-1*B*A == (q-q^-1)*g
True
>>> from sage.all import *
>>> AW = algebras.AskeyWilson(QQ)
>>> AW.inject_variables()
Defining A, B, C, a, b, g
>>> q = AW.q()
>>> (q**Integer(2)-q**-Integer(2))*A + q*B*C - q**-Integer(1)*C*B == (q-q**-Integer(1))*a
True
>>> (q**Integer(2)-q**-Integer(2))*B + q*C*A - q**-Integer(1)*A*C == (q-q**-Integer(1))*b
True
>>> (q**Integer(2)-q**-Integer(2))*C + q*A*B - q**-Integer(1)*B*A == (q-q**-Integer(1))*g
True

Next, we perform some computations:

sage: C * A
(q^-2)*A*C + (q^-3-q)*B - (q^-2-1)*b
sage: B^2 * g^2 * A
q^4*A*B^2*g^2 - (q^-1-q^7)*B*C*g^2 + (1-q^4)*B*g^3
 + (1-2*q^4+q^8)*A*g^2 - (q-q^3-q^5+q^7)*a*g^2
sage: (B^3 - A) * (C^2 + q*A*B)
q^7*A*B^4 + B^3*C^2 - (q^2-q^14)*B^3*C + (q-q^7)*B^3*g - q*A^2*B
 + (3*q^3-4*q^7+q^19)*A*B^2 - A*C^2 - (1-q^6-q^8+q^14)*B^2*a
 - (q^-2-3*q^6+3*q^14-q^22)*B*C
 + (q^-1+q-3*q^3-q^5+2*q^7-q^9+q^13+q^15-q^19)*B*g
 + (2*q^-1-6*q^3+5*q^7-2*q^19+q^23)*A
 - (2-2*q^2-4*q^4+4*q^6+q^8-q^10+q^12-q^14+q^16-q^18-q^20+q^22)*a
>>> from sage.all import *
>>> C * A
(q^-2)*A*C + (q^-3-q)*B - (q^-2-1)*b
>>> B**Integer(2) * g**Integer(2) * A
q^4*A*B^2*g^2 - (q^-1-q^7)*B*C*g^2 + (1-q^4)*B*g^3
 + (1-2*q^4+q^8)*A*g^2 - (q-q^3-q^5+q^7)*a*g^2
>>> (B**Integer(3) - A) * (C**Integer(2) + q*A*B)
q^7*A*B^4 + B^3*C^2 - (q^2-q^14)*B^3*C + (q-q^7)*B^3*g - q*A^2*B
 + (3*q^3-4*q^7+q^19)*A*B^2 - A*C^2 - (1-q^6-q^8+q^14)*B^2*a
 - (q^-2-3*q^6+3*q^14-q^22)*B*C
 + (q^-1+q-3*q^3-q^5+2*q^7-q^9+q^13+q^15-q^19)*B*g
 + (2*q^-1-6*q^3+5*q^7-2*q^19+q^23)*A
 - (2-2*q^2-4*q^4+4*q^6+q^8-q^10+q^12-q^14+q^16-q^18-q^20+q^22)*a

We check the elements \(\alpha\), \(\beta\), and \(\gamma\) are in the center:

sage: all(x * gen == gen * x for gen in AW.algebra_generators() for x in [a,b,g])
True
>>> from sage.all import *
>>> all(x * gen == gen * x for gen in AW.algebra_generators() for x in [a,b,g])
True

We verify that the Casimir element is in the center:

sage: Omega = AW.casimir_element()
sage: all(x * Omega == Omega * x for x in [A,B,C])
True

sage: x = AW.an_element()
sage: O2 = Omega^2
sage: x * O2 == O2 * x
True
>>> from sage.all import *
>>> Omega = AW.casimir_element()
>>> all(x * Omega == Omega * x for x in [A,B,C])
True

>>> x = AW.an_element()
>>> O2 = Omega**Integer(2)
>>> x * O2 == O2 * x
True

We prove Lemma 2.1 in [Terwilliger2011]:

sage: (q^2-q^-2) * C == (q-q^-1) * g - (q*A*B - q^-1*B*A)
True
sage: (q-q^-1) * (q^2-q^-2) * a == (B^2*A - (q^2+q^-2)*B*A*B + A*B^2
....:                               + (q^2-q^-2)^2*A + (q-q^-1)^2*B*g)
True
sage: (q-q^-1) * (q^2-q^-2) * b == (A^2*B - (q^2+q^-2)*A*B*A + B*A^2
....:                               + (q^2-q^-2)^2*B + (q-q^-1)^2*A*g)
True
>>> from sage.all import *
>>> (q**Integer(2)-q**-Integer(2)) * C == (q-q**-Integer(1)) * g - (q*A*B - q**-Integer(1)*B*A)
True
>>> (q-q**-Integer(1)) * (q**Integer(2)-q**-Integer(2)) * a == (B**Integer(2)*A - (q**Integer(2)+q**-Integer(2))*B*A*B + A*B**Integer(2)
...                               + (q**Integer(2)-q**-Integer(2))**Integer(2)*A + (q-q**-Integer(1))**Integer(2)*B*g)
True
>>> (q-q**-Integer(1)) * (q**Integer(2)-q**-Integer(2)) * b == (A**Integer(2)*B - (q**Integer(2)+q**-Integer(2))*A*B*A + B*A**Integer(2)
...                               + (q**Integer(2)-q**-Integer(2))**Integer(2)*B + (q-q**-Integer(1))**Integer(2)*A*g)
True

We prove Theorem 2.2 in [Terwilliger2011]:

sage: q3 = q^-2 + 1 + q^2
sage: A^3*B - q3*A^2*B*A + q3*A*B*A^2 - B*A^3 == -(q^2-q^-2)^2 * (A*B - B*A)
True
sage: B^3*A - q3*B^2*A*B + q3*B*A*B^2 - A*B^3 == -(q^2-q^-2)^2 * (B*A - A*B)
True
sage: (A^2*B^2 - B^2*A^2 + (q^2+q^-2)*(B*A*B*A-A*B*A*B)
....:  == -(q^1-q^-1)^2 * (A*B - B*A) * g)
True
>>> from sage.all import *
>>> q3 = q**-Integer(2) + Integer(1) + q**Integer(2)
>>> A**Integer(3)*B - q3*A**Integer(2)*B*A + q3*A*B*A**Integer(2) - B*A**Integer(3) == -(q**Integer(2)-q**-Integer(2))**Integer(2) * (A*B - B*A)
True
>>> B**Integer(3)*A - q3*B**Integer(2)*A*B + q3*B*A*B**Integer(2) - A*B**Integer(3) == -(q**Integer(2)-q**-Integer(2))**Integer(2) * (B*A - A*B)
True
>>> (A**Integer(2)*B**Integer(2) - B**Integer(2)*A**Integer(2) + (q**Integer(2)+q**-Integer(2))*(B*A*B*A-A*B*A*B)
...  == -(q**Integer(1)-q**-Integer(1))**Integer(2) * (A*B - B*A) * g)
True

We construct an Askey-Wilson algebra over \(\GF{5}\) at \(q=2\):

sage: AW = algebras.AskeyWilson(GF(5), q=2)
sage: A,B,C,a,b,g = AW.algebra_generators()
sage: q = AW.q()
sage: Omega = AW.casimir_element()

sage: B * A
4*A*B + 2*g
sage: C * A
4*A*C + 2*b
sage: C * B
4*B*C + 2*a
sage: Omega^2
A^2*B^2*C^2 + A^3*B*C + A*B^3*C + A*B*C^3 + A^4 + 4*A^3*a
 + 2*A^2*B^2 + A^2*B*b + 2*A^2*C^2 + 4*A^2*C*g + 4*A^2*a^2
 + 4*A*B^2*a + 4*A*C^2*a + B^4 + B^3*b + 2*B^2*C^2 + 4*B^2*C*g
 + 4*B^2*b^2 + B*C^2*b + C^4 + 4*C^3*g + 4*C^2*g^2 + 2*a*b*g

sage: (q^2-q^-2)*A + q*B*C - q^-1*C*B == (q-q^-1)*a
True
sage: (q^2-q^-2)*B + q*C*A - q^-1*A*C == (q-q^-1)*b
True
sage: (q^2-q^-2)*C + q*A*B - q^-1*B*A == (q-q^-1)*g
True
sage: all(x * Omega == Omega * x for x in [A,B,C])
True
>>> from sage.all import *
>>> AW = algebras.AskeyWilson(GF(Integer(5)), q=Integer(2))
>>> A,B,C,a,b,g = AW.algebra_generators()
>>> q = AW.q()
>>> Omega = AW.casimir_element()

>>> B * A
4*A*B + 2*g
>>> C * A
4*A*C + 2*b
>>> C * B
4*B*C + 2*a
>>> Omega**Integer(2)
A^2*B^2*C^2 + A^3*B*C + A*B^3*C + A*B*C^3 + A^4 + 4*A^3*a
 + 2*A^2*B^2 + A^2*B*b + 2*A^2*C^2 + 4*A^2*C*g + 4*A^2*a^2
 + 4*A*B^2*a + 4*A*C^2*a + B^4 + B^3*b + 2*B^2*C^2 + 4*B^2*C*g
 + 4*B^2*b^2 + B*C^2*b + C^4 + 4*C^3*g + 4*C^2*g^2 + 2*a*b*g

>>> (q**Integer(2)-q**-Integer(2))*A + q*B*C - q**-Integer(1)*C*B == (q-q**-Integer(1))*a
True
>>> (q**Integer(2)-q**-Integer(2))*B + q*C*A - q**-Integer(1)*A*C == (q-q**-Integer(1))*b
True
>>> (q**Integer(2)-q**-Integer(2))*C + q*A*B - q**-Integer(1)*B*A == (q-q**-Integer(1))*g
True
>>> all(x * Omega == Omega * x for x in [A,B,C])
True

REFERENCES:

algebra_generators()[source]

Return the algebra generators of self.

EXAMPLES:

sage: AW = algebras.AskeyWilson(QQ)
sage: G = AW.algebra_generators()
sage: G['A']
A
sage: G['a']
a
sage: list(G)
[A, B, C, a, b, g]
>>> from sage.all import *
>>> AW = algebras.AskeyWilson(QQ)
>>> G = AW.algebra_generators()
>>> G['A']
A
>>> G['a']
a
>>> list(G)
[A, B, C, a, b, g]
an_element()[source]

Return an element of self.

EXAMPLES:

sage: AW = algebras.AskeyWilson(QQ)
sage: AW.an_element()
(q^-3+3+2*q+q^2)*a*b*g^3 + q*A*C^2*b + 3*q^2*B*a^2*g + A
>>> from sage.all import *
>>> AW = algebras.AskeyWilson(QQ)
>>> AW.an_element()
(q^-3+3+2*q+q^2)*a*b*g^3 + q*A*C^2*b + 3*q^2*B*a^2*g + A
casimir_element()[source]

Return the Casimir element of self.

The Casimir element of the Askey-Wilson algebra \(\Delta_q\) is

\[\Omega = q ABC + q^2 A^2 + q^{-2} B^2 + q^2 C^2 - q A\alpha - q^{-1} B\beta - q C\gamma.\]

The center \(Z(\Delta_q)\) is generated by \(\alpha\), \(\beta\), \(\gamma\), and \(\Omega\).

EXAMPLES:

sage: AW = algebras.AskeyWilson(QQ)
sage: AW.casimir_element()
q*A*B*C + q^2*A^2 - q*A*a + (q^-2)*B^2 - (q^-1)*B*b + q^2*C^2 - q*C*g
>>> from sage.all import *
>>> AW = algebras.AskeyWilson(QQ)
>>> AW.casimir_element()
q*A*B*C + q^2*A^2 - q*A*a + (q^-2)*B^2 - (q^-1)*B*b + q^2*C^2 - q*C*g

We check that the Casimir element is in the center:

sage: Omega = AW.casimir_element()
sage: all(Omega * gen == gen * Omega for gen in AW.algebra_generators())
True
>>> from sage.all import *
>>> Omega = AW.casimir_element()
>>> all(Omega * gen == gen * Omega for gen in AW.algebra_generators())
True
gens()[source]

Return the generators of self.

EXAMPLES:

sage: AW = algebras.AskeyWilson(QQ)
sage: AW.gens()
(A, B, C, a, b, g)
>>> from sage.all import *
>>> AW = algebras.AskeyWilson(QQ)
>>> AW.gens()
(A, B, C, a, b, g)
loop_representation()[source]

Return the map \(\pi\) from self to \(2 \times 2\) matrices over \(R[\lambda,\lambda^{-1}]\), where \(F\) is the fraction field of the base ring of self.

Let \(AW\) be the Askey-Wilson algebra over \(R\), and let \(F\) be the fraction field of \(R\). Let \(M\) be the space of \(2 \times 2\) matrices over \(F[\lambda, \lambda^{-1}]\). Consider the following elements of \(M\):

\[\begin{split}\mathcal{A} = \begin{pmatrix} \lambda & 1 - \lambda^{-1} \\ 0 & \lambda^{-1} \end{pmatrix}, \qquad \mathcal{B} = \begin{pmatrix} \lambda^{-1} & 0 \\ \lambda - 1 & \lambda \end{pmatrix}, \qquad \mathcal{C} = \begin{pmatrix} 1 & \lambda - 1 \\ 1 - \lambda^{-1} & \lambda + \lambda^{-1} - 1 \end{pmatrix}.\end{split}\]

From Lemma 3.11 of [Terwilliger2011], we define a representation \(\pi: AW \to M\) by

\[A \mapsto q \mathcal{A} + q^{-1} \mathcal{A}^{-1}, \qquad B \mapsto q \mathcal{B} + q^{-1} \mathcal{B}^{-1}, \qquad C \mapsto q \mathcal{C} + q^{-1} \mathcal{C}^{-1},\]
\[\alpha, \beta, \gamma \mapsto \nu I,\]

where \(\nu = (q^2 + q^-2)(\lambda + \lambda^{-1}) + (\lambda + \lambda^{-1})^2\).

We call this representation the loop representation as it is a representation using the loop group \(SL_2(F[\lambda,\lambda^{-1}])\).

EXAMPLES:

sage: AW = algebras.AskeyWilson(QQ)
sage: q = AW.q()
sage: pi = AW.loop_representation()
sage: A,B,C,a,b,g = [pi(gen) for gen in AW.algebra_generators()]
sage: A
[                1/q*lambda^-1 + q*lambda ((-q^2 + 1)/q)*lambda^-1 + ((q^2 - 1)/q)]
[                                       0                 q*lambda^-1 + 1/q*lambda]
sage: B
[             q*lambda^-1 + 1/q*lambda                                     0]
[((-q^2 + 1)/q) + ((q^2 - 1)/q)*lambda              1/q*lambda^-1 + q*lambda]
sage: C
[1/q*lambda^-1 + ((q^2 - 1)/q) + 1/q*lambda      ((q^2 - 1)/q) + ((-q^2 + 1)/q)*lambda]
[  ((q^2 - 1)/q)*lambda^-1 + ((-q^2 + 1)/q)    q*lambda^-1 + ((-q^2 + 1)/q) + q*lambda]
sage: a
[lambda^-2 + ((q^4 + 1)/q^2)*lambda^-1 + 2 + ((q^4 + 1)/q^2)*lambda + lambda^2                                                                             0]
[                                                                            0 lambda^-2 + ((q^4 + 1)/q^2)*lambda^-1 + 2 + ((q^4 + 1)/q^2)*lambda + lambda^2]
sage: a == b
True
sage: a == g
True

sage: AW.an_element()
(q^-3+3+2*q+q^2)*a*b*g^3 + q*A*C^2*b + 3*q^2*B*a^2*g + A
sage: x = pi(AW.an_element())
sage: y = (q^-3+3+2*q+q^2)*a*b*g^3 + q*A*C^2*b + 3*q^2*B*a^2*g + A
sage: x == y
True
>>> from sage.all import *
>>> AW = algebras.AskeyWilson(QQ)
>>> q = AW.q()
>>> pi = AW.loop_representation()
>>> A,B,C,a,b,g = [pi(gen) for gen in AW.algebra_generators()]
>>> A
[                1/q*lambda^-1 + q*lambda ((-q^2 + 1)/q)*lambda^-1 + ((q^2 - 1)/q)]
[                                       0                 q*lambda^-1 + 1/q*lambda]
>>> B
[             q*lambda^-1 + 1/q*lambda                                     0]
[((-q^2 + 1)/q) + ((q^2 - 1)/q)*lambda              1/q*lambda^-1 + q*lambda]
>>> C
[1/q*lambda^-1 + ((q^2 - 1)/q) + 1/q*lambda      ((q^2 - 1)/q) + ((-q^2 + 1)/q)*lambda]
[  ((q^2 - 1)/q)*lambda^-1 + ((-q^2 + 1)/q)    q*lambda^-1 + ((-q^2 + 1)/q) + q*lambda]
>>> a
[lambda^-2 + ((q^4 + 1)/q^2)*lambda^-1 + 2 + ((q^4 + 1)/q^2)*lambda + lambda^2                                                                             0]
[                                                                            0 lambda^-2 + ((q^4 + 1)/q^2)*lambda^-1 + 2 + ((q^4 + 1)/q^2)*lambda + lambda^2]
>>> a == b
True
>>> a == g
True

>>> AW.an_element()
(q^-3+3+2*q+q^2)*a*b*g^3 + q*A*C^2*b + 3*q^2*B*a^2*g + A
>>> x = pi(AW.an_element())
>>> y = (q**-Integer(3)+Integer(3)+Integer(2)*q+q**Integer(2))*a*b*g**Integer(3) + q*A*C**Integer(2)*b + Integer(3)*q**Integer(2)*B*a**Integer(2)*g + A
>>> x == y
True

We check the defining relations of the Askey-Wilson algebra:

sage: A + (q*B*C - q^-1*C*B) / (q^2 - q^-2) == a / (q + q^-1)
True
sage: B + (q*C*A - q^-1*A*C) / (q^2 - q^-2) == b / (q + q^-1)
True
sage: C + (q*A*B - q^-1*B*A) / (q^2 - q^-2) == g / (q + q^-1)
True
>>> from sage.all import *
>>> A + (q*B*C - q**-Integer(1)*C*B) / (q**Integer(2) - q**-Integer(2)) == a / (q + q**-Integer(1))
True
>>> B + (q*C*A - q**-Integer(1)*A*C) / (q**Integer(2) - q**-Integer(2)) == b / (q + q**-Integer(1))
True
>>> C + (q*A*B - q**-Integer(1)*B*A) / (q**Integer(2) - q**-Integer(2)) == g / (q + q**-Integer(1))
True

We check Lemma 3.12 in [Terwilliger2011]:

sage: M = pi.codomain()
sage: la = M.base_ring().gen()
sage: p = M([[0,-1],[1,1]])
sage: s = M([[0,1],[la,0]])
sage: rho = AW.rho()
sage: sigma = AW.sigma()
sage: all(p*pi(gen)*~p == pi(rho(gen)) for gen in AW.algebra_generators())
True
sage: all(s*pi(gen)*~s == pi(sigma(gen)) for gen in AW.algebra_generators())
True
>>> from sage.all import *
>>> M = pi.codomain()
>>> la = M.base_ring().gen()
>>> p = M([[Integer(0),-Integer(1)],[Integer(1),Integer(1)]])
>>> s = M([[Integer(0),Integer(1)],[la,Integer(0)]])
>>> rho = AW.rho()
>>> sigma = AW.sigma()
>>> all(p*pi(gen)*~p == pi(rho(gen)) for gen in AW.algebra_generators())
True
>>> all(s*pi(gen)*~s == pi(sigma(gen)) for gen in AW.algebra_generators())
True
one_basis()[source]

Return the index of the basis element \(1\) of self.

EXAMPLES:

sage: AW = algebras.AskeyWilson(QQ)
sage: AW.one_basis()
(0, 0, 0, 0, 0, 0)
>>> from sage.all import *
>>> AW = algebras.AskeyWilson(QQ)
>>> AW.one_basis()
(0, 0, 0, 0, 0, 0)
permutation_automorphism()[source]

Return the permutation automorphism \(\rho\) of self.

We define the automorphism \(\rho\) by

\[A \mapsto B \mapsto C \mapsto A, \qquad \alpha \mapsto \beta \mapsto \gamma \mapsto \alpha.\]

EXAMPLES:

sage: AW = algebras.AskeyWilson(QQ)
sage: rho = AW.permutation_automorphism()
sage: [rho(gen) for gen in AW.algebra_generators()]
[B, C, A, b, g, a]

sage: AW.an_element()
(q^-3+3+2*q+q^2)*a*b*g^3 + q*A*C^2*b + 3*q^2*B*a^2*g + A
sage: rho(AW.an_element())
(q^-3+3+2*q+q^2)*a^3*b*g + q^5*A^2*B*g + 3*q^2*C*a*b^2
 - (q^-2-q^6)*A*C*g + (q-q^5)*A*g^2 - (q^-3-2*q+q^5)*B*g
 + (q^-2-1-q^2+q^4)*b*g + B

sage: r3 = rho * rho * rho
sage: [r3(gen) for gen in AW.algebra_generators()]
[A, B, C, a, b, g]
sage: r3(AW.an_element()) == AW.an_element()
True
>>> from sage.all import *
>>> AW = algebras.AskeyWilson(QQ)
>>> rho = AW.permutation_automorphism()
>>> [rho(gen) for gen in AW.algebra_generators()]
[B, C, A, b, g, a]

>>> AW.an_element()
(q^-3+3+2*q+q^2)*a*b*g^3 + q*A*C^2*b + 3*q^2*B*a^2*g + A
>>> rho(AW.an_element())
(q^-3+3+2*q+q^2)*a^3*b*g + q^5*A^2*B*g + 3*q^2*C*a*b^2
 - (q^-2-q^6)*A*C*g + (q-q^5)*A*g^2 - (q^-3-2*q+q^5)*B*g
 + (q^-2-1-q^2+q^4)*b*g + B

>>> r3 = rho * rho * rho
>>> [r3(gen) for gen in AW.algebra_generators()]
[A, B, C, a, b, g]
>>> r3(AW.an_element()) == AW.an_element()
True
pi()[source]

Return the map \(\pi\) from self to \(2 \times 2\) matrices over \(R[\lambda,\lambda^{-1}]\), where \(F\) is the fraction field of the base ring of self.

Let \(AW\) be the Askey-Wilson algebra over \(R\), and let \(F\) be the fraction field of \(R\). Let \(M\) be the space of \(2 \times 2\) matrices over \(F[\lambda, \lambda^{-1}]\). Consider the following elements of \(M\):

\[\begin{split}\mathcal{A} = \begin{pmatrix} \lambda & 1 - \lambda^{-1} \\ 0 & \lambda^{-1} \end{pmatrix}, \qquad \mathcal{B} = \begin{pmatrix} \lambda^{-1} & 0 \\ \lambda - 1 & \lambda \end{pmatrix}, \qquad \mathcal{C} = \begin{pmatrix} 1 & \lambda - 1 \\ 1 - \lambda^{-1} & \lambda + \lambda^{-1} - 1 \end{pmatrix}.\end{split}\]

From Lemma 3.11 of [Terwilliger2011], we define a representation \(\pi: AW \to M\) by

\[A \mapsto q \mathcal{A} + q^{-1} \mathcal{A}^{-1}, \qquad B \mapsto q \mathcal{B} + q^{-1} \mathcal{B}^{-1}, \qquad C \mapsto q \mathcal{C} + q^{-1} \mathcal{C}^{-1},\]
\[\alpha, \beta, \gamma \mapsto \nu I,\]

where \(\nu = (q^2 + q^-2)(\lambda + \lambda^{-1}) + (\lambda + \lambda^{-1})^2\).

We call this representation the loop representation as it is a representation using the loop group \(SL_2(F[\lambda,\lambda^{-1}])\).

EXAMPLES:

sage: AW = algebras.AskeyWilson(QQ)
sage: q = AW.q()
sage: pi = AW.loop_representation()
sage: A,B,C,a,b,g = [pi(gen) for gen in AW.algebra_generators()]
sage: A
[                1/q*lambda^-1 + q*lambda ((-q^2 + 1)/q)*lambda^-1 + ((q^2 - 1)/q)]
[                                       0                 q*lambda^-1 + 1/q*lambda]
sage: B
[             q*lambda^-1 + 1/q*lambda                                     0]
[((-q^2 + 1)/q) + ((q^2 - 1)/q)*lambda              1/q*lambda^-1 + q*lambda]
sage: C
[1/q*lambda^-1 + ((q^2 - 1)/q) + 1/q*lambda      ((q^2 - 1)/q) + ((-q^2 + 1)/q)*lambda]
[  ((q^2 - 1)/q)*lambda^-1 + ((-q^2 + 1)/q)    q*lambda^-1 + ((-q^2 + 1)/q) + q*lambda]
sage: a
[lambda^-2 + ((q^4 + 1)/q^2)*lambda^-1 + 2 + ((q^4 + 1)/q^2)*lambda + lambda^2                                                                             0]
[                                                                            0 lambda^-2 + ((q^4 + 1)/q^2)*lambda^-1 + 2 + ((q^4 + 1)/q^2)*lambda + lambda^2]
sage: a == b
True
sage: a == g
True

sage: AW.an_element()
(q^-3+3+2*q+q^2)*a*b*g^3 + q*A*C^2*b + 3*q^2*B*a^2*g + A
sage: x = pi(AW.an_element())
sage: y = (q^-3+3+2*q+q^2)*a*b*g^3 + q*A*C^2*b + 3*q^2*B*a^2*g + A
sage: x == y
True
>>> from sage.all import *
>>> AW = algebras.AskeyWilson(QQ)
>>> q = AW.q()
>>> pi = AW.loop_representation()
>>> A,B,C,a,b,g = [pi(gen) for gen in AW.algebra_generators()]
>>> A
[                1/q*lambda^-1 + q*lambda ((-q^2 + 1)/q)*lambda^-1 + ((q^2 - 1)/q)]
[                                       0                 q*lambda^-1 + 1/q*lambda]
>>> B
[             q*lambda^-1 + 1/q*lambda                                     0]
[((-q^2 + 1)/q) + ((q^2 - 1)/q)*lambda              1/q*lambda^-1 + q*lambda]
>>> C
[1/q*lambda^-1 + ((q^2 - 1)/q) + 1/q*lambda      ((q^2 - 1)/q) + ((-q^2 + 1)/q)*lambda]
[  ((q^2 - 1)/q)*lambda^-1 + ((-q^2 + 1)/q)    q*lambda^-1 + ((-q^2 + 1)/q) + q*lambda]
>>> a
[lambda^-2 + ((q^4 + 1)/q^2)*lambda^-1 + 2 + ((q^4 + 1)/q^2)*lambda + lambda^2                                                                             0]
[                                                                            0 lambda^-2 + ((q^4 + 1)/q^2)*lambda^-1 + 2 + ((q^4 + 1)/q^2)*lambda + lambda^2]
>>> a == b
True
>>> a == g
True

>>> AW.an_element()
(q^-3+3+2*q+q^2)*a*b*g^3 + q*A*C^2*b + 3*q^2*B*a^2*g + A
>>> x = pi(AW.an_element())
>>> y = (q**-Integer(3)+Integer(3)+Integer(2)*q+q**Integer(2))*a*b*g**Integer(3) + q*A*C**Integer(2)*b + Integer(3)*q**Integer(2)*B*a**Integer(2)*g + A
>>> x == y
True

We check the defining relations of the Askey-Wilson algebra:

sage: A + (q*B*C - q^-1*C*B) / (q^2 - q^-2) == a / (q + q^-1)
True
sage: B + (q*C*A - q^-1*A*C) / (q^2 - q^-2) == b / (q + q^-1)
True
sage: C + (q*A*B - q^-1*B*A) / (q^2 - q^-2) == g / (q + q^-1)
True
>>> from sage.all import *
>>> A + (q*B*C - q**-Integer(1)*C*B) / (q**Integer(2) - q**-Integer(2)) == a / (q + q**-Integer(1))
True
>>> B + (q*C*A - q**-Integer(1)*A*C) / (q**Integer(2) - q**-Integer(2)) == b / (q + q**-Integer(1))
True
>>> C + (q*A*B - q**-Integer(1)*B*A) / (q**Integer(2) - q**-Integer(2)) == g / (q + q**-Integer(1))
True

We check Lemma 3.12 in [Terwilliger2011]:

sage: M = pi.codomain()
sage: la = M.base_ring().gen()
sage: p = M([[0,-1],[1,1]])
sage: s = M([[0,1],[la,0]])
sage: rho = AW.rho()
sage: sigma = AW.sigma()
sage: all(p*pi(gen)*~p == pi(rho(gen)) for gen in AW.algebra_generators())
True
sage: all(s*pi(gen)*~s == pi(sigma(gen)) for gen in AW.algebra_generators())
True
>>> from sage.all import *
>>> M = pi.codomain()
>>> la = M.base_ring().gen()
>>> p = M([[Integer(0),-Integer(1)],[Integer(1),Integer(1)]])
>>> s = M([[Integer(0),Integer(1)],[la,Integer(0)]])
>>> rho = AW.rho()
>>> sigma = AW.sigma()
>>> all(p*pi(gen)*~p == pi(rho(gen)) for gen in AW.algebra_generators())
True
>>> all(s*pi(gen)*~s == pi(sigma(gen)) for gen in AW.algebra_generators())
True
product_on_basis(x, y)[source]

Return the product of the basis elements indexed by x and y.

INPUT:

  • x, y – tuple of length 6

EXAMPLES:

sage: AW = algebras.AskeyWilson(QQ)
sage: AW.product_on_basis((0,0,0,0,0,0), (3,5,2,0,12,3))
A^3*B^5*C^2*b^12*g^3
sage: AW.product_on_basis((0,0,0,5,3,5), (3,5,2,0,12,3))
A^3*B^5*C^2*a^5*b^15*g^8
sage: AW.product_on_basis((7,0,0,5,3,5), (0,5,2,0,12,3))
A^7*B^5*C^2*a^5*b^15*g^8
sage: AW.product_on_basis((7,3,0,5,3,5), (0,2,2,0,12,3))
A^7*B^5*C^2*a^5*b^15*g^8
sage: AW.product_on_basis((0,1,0,5,3,5), (2,0,0,0,5,3))
q^4*A^2*B*a^5*b^8*g^8 - (q^-3-q^5)*A*C*a^5*b^8*g^8
 + (1-q^4)*A*a^5*b^8*g^9 - (q^-4-2+q^4)*B*a^5*b^8*g^8
 + (q^-3-q^-1-q+q^3)*a^5*b^9*g^8
sage: AW.product_on_basis((0,2,1,0,2,0), (1,1,0,2,1,0))
q^4*A*B^3*C*a^2*b^3 - (q^5-q^9)*A^2*B^2*a^2*b^3
 + (q^2-q^4)*A*B^2*a^3*b^3 + (q^-3-q)*B^4*a^2*b^3
 - (q^-2-1)*B^3*a^2*b^4 - (q-q^9)*B^2*C^2*a^2*b^3
 + (1-q^4)*B^2*C*a^2*b^3*g + (q^-4+2-5*q^4+2*q^12)*A*B*C*a^2*b^3
 - (q^-1+q-2*q^3-2*q^5+q^7+q^9)*A*B*a^2*b^3*g
 - (q^-3-q^3-2*q^5+q^7+q^9)*B*C*a^3*b^3
 + (q^-2-1-q^2+q^4)*B*a^3*b^3*g
 - (q^-3-2*q+2*q^9-q^13)*A^2*a^2*b^3
 + (2*q^-2-2-3*q^2+3*q^4+q^10-q^12)*A*a^3*b^3
 + (q^-7-2*q^-3+2*q^5-q^9)*B^2*a^2*b^3
 - (q^-6-q^-4-q^-2+1-q^2+q^4+q^6-q^8)*B*a^2*b^4
 - (q^-7-q^-3-2*q+2*q^5+q^9-q^13)*C^2*a^2*b^3
 + (q^-6-3-2*q^2+5*q^4-q^8+q^10-q^12)*C*a^2*b^3*g
 - (q^-1-2*q+2*q^5-q^7)*a^4*b^3
 - (q^-3-q^-1-2*q+2*q^3+q^5-q^7)*a^2*b^3*g^2
>>> from sage.all import *
>>> AW = algebras.AskeyWilson(QQ)
>>> AW.product_on_basis((Integer(0),Integer(0),Integer(0),Integer(0),Integer(0),Integer(0)), (Integer(3),Integer(5),Integer(2),Integer(0),Integer(12),Integer(3)))
A^3*B^5*C^2*b^12*g^3
>>> AW.product_on_basis((Integer(0),Integer(0),Integer(0),Integer(5),Integer(3),Integer(5)), (Integer(3),Integer(5),Integer(2),Integer(0),Integer(12),Integer(3)))
A^3*B^5*C^2*a^5*b^15*g^8
>>> AW.product_on_basis((Integer(7),Integer(0),Integer(0),Integer(5),Integer(3),Integer(5)), (Integer(0),Integer(5),Integer(2),Integer(0),Integer(12),Integer(3)))
A^7*B^5*C^2*a^5*b^15*g^8
>>> AW.product_on_basis((Integer(7),Integer(3),Integer(0),Integer(5),Integer(3),Integer(5)), (Integer(0),Integer(2),Integer(2),Integer(0),Integer(12),Integer(3)))
A^7*B^5*C^2*a^5*b^15*g^8
>>> AW.product_on_basis((Integer(0),Integer(1),Integer(0),Integer(5),Integer(3),Integer(5)), (Integer(2),Integer(0),Integer(0),Integer(0),Integer(5),Integer(3)))
q^4*A^2*B*a^5*b^8*g^8 - (q^-3-q^5)*A*C*a^5*b^8*g^8
 + (1-q^4)*A*a^5*b^8*g^9 - (q^-4-2+q^4)*B*a^5*b^8*g^8
 + (q^-3-q^-1-q+q^3)*a^5*b^9*g^8
>>> AW.product_on_basis((Integer(0),Integer(2),Integer(1),Integer(0),Integer(2),Integer(0)), (Integer(1),Integer(1),Integer(0),Integer(2),Integer(1),Integer(0)))
q^4*A*B^3*C*a^2*b^3 - (q^5-q^9)*A^2*B^2*a^2*b^3
 + (q^2-q^4)*A*B^2*a^3*b^3 + (q^-3-q)*B^4*a^2*b^3
 - (q^-2-1)*B^3*a^2*b^4 - (q-q^9)*B^2*C^2*a^2*b^3
 + (1-q^4)*B^2*C*a^2*b^3*g + (q^-4+2-5*q^4+2*q^12)*A*B*C*a^2*b^3
 - (q^-1+q-2*q^3-2*q^5+q^7+q^9)*A*B*a^2*b^3*g
 - (q^-3-q^3-2*q^5+q^7+q^9)*B*C*a^3*b^3
 + (q^-2-1-q^2+q^4)*B*a^3*b^3*g
 - (q^-3-2*q+2*q^9-q^13)*A^2*a^2*b^3
 + (2*q^-2-2-3*q^2+3*q^4+q^10-q^12)*A*a^3*b^3
 + (q^-7-2*q^-3+2*q^5-q^9)*B^2*a^2*b^3
 - (q^-6-q^-4-q^-2+1-q^2+q^4+q^6-q^8)*B*a^2*b^4
 - (q^-7-q^-3-2*q+2*q^5+q^9-q^13)*C^2*a^2*b^3
 + (q^-6-3-2*q^2+5*q^4-q^8+q^10-q^12)*C*a^2*b^3*g
 - (q^-1-2*q+2*q^5-q^7)*a^4*b^3
 - (q^-3-q^-1-2*q+2*q^3+q^5-q^7)*a^2*b^3*g^2
q()[source]

Return the parameter \(q\) of self.

EXAMPLES:

sage: AW = algebras.AskeyWilson(QQ)
sage: q = AW.q()
sage: q
q
sage: q.parent()
Univariate Laurent Polynomial Ring in q over Rational Field
>>> from sage.all import *
>>> AW = algebras.AskeyWilson(QQ)
>>> q = AW.q()
>>> q
q
>>> q.parent()
Univariate Laurent Polynomial Ring in q over Rational Field
reflection_automorphism()[source]

Return the reflection automorphism \(\sigma\) of self.

We define the automorphism \(\sigma\) by

\[A \mapsto B \mapsto A, \qquad C \mapsto C + \frac{AB - BA}{q-q^{-1}} = C - qAB - (1+q^2) C + q \gamma,\]
\[\alpha \mapsto \beta \mapsto \alpha, \gamma \mapsto \gamma.\]

EXAMPLES:

sage: AW = algebras.AskeyWilson(QQ)
sage: sigma = AW.reflection_automorphism()
sage: [sigma(gen) for gen in AW.algebra_generators()]
[B, A, -q*A*B - q^2*C + q*g, b, a, g]

sage: AW.an_element()
(q^-3+3+2*q+q^2)*a*b*g^3 + q*A*C^2*b + 3*q^2*B*a^2*g + A
sage: sigma(AW.an_element())
q^9*A^2*B^3*a + (q^10+q^14)*A*B^2*C*a - (q^7+q^9)*A*B^2*a*g
 + (q^-3+3+2*q+q^2)*a*b*g^3 + (q-3*q^9+q^13+q^17)*A^2*B*a
 - (q^2-q^6-q^8+q^14)*A*B*a^2 + 3*q^2*A*b^2*g + (q^5-q^9)*B^3*a
 - (q^6-q^8)*B^2*a*b + q^13*B*C^2*a - 2*q^10*B*C*a*g + q^7*B*a*g^2
 + (q^2-2*q^10+q^18)*A*C*a - (q-q^7-2*q^9+2*q^11-q^15+q^17)*A*a*g
 - (q^3-q^7-q^9+q^13)*C*a^2 + (q^2-q^6-2*q^8+2*q^10)*a^2*g
 + (q-3*q^5+3*q^9-q^13)*B*a - (q^2-q^4-2*q^6+2*q^8+q^10-q^12)*a*b + B

sage: s2 = sigma * sigma
sage: [s2(gen) for gen in AW.algebra_generators()]
[A, B, C, a, b, g]
sage: s2(AW.an_element()) == AW.an_element()
True
>>> from sage.all import *
>>> AW = algebras.AskeyWilson(QQ)
>>> sigma = AW.reflection_automorphism()
>>> [sigma(gen) for gen in AW.algebra_generators()]
[B, A, -q*A*B - q^2*C + q*g, b, a, g]

>>> AW.an_element()
(q^-3+3+2*q+q^2)*a*b*g^3 + q*A*C^2*b + 3*q^2*B*a^2*g + A
>>> sigma(AW.an_element())
q^9*A^2*B^3*a + (q^10+q^14)*A*B^2*C*a - (q^7+q^9)*A*B^2*a*g
 + (q^-3+3+2*q+q^2)*a*b*g^3 + (q-3*q^9+q^13+q^17)*A^2*B*a
 - (q^2-q^6-q^8+q^14)*A*B*a^2 + 3*q^2*A*b^2*g + (q^5-q^9)*B^3*a
 - (q^6-q^8)*B^2*a*b + q^13*B*C^2*a - 2*q^10*B*C*a*g + q^7*B*a*g^2
 + (q^2-2*q^10+q^18)*A*C*a - (q-q^7-2*q^9+2*q^11-q^15+q^17)*A*a*g
 - (q^3-q^7-q^9+q^13)*C*a^2 + (q^2-q^6-2*q^8+2*q^10)*a^2*g
 + (q-3*q^5+3*q^9-q^13)*B*a - (q^2-q^4-2*q^6+2*q^8+q^10-q^12)*a*b + B

>>> s2 = sigma * sigma
>>> [s2(gen) for gen in AW.algebra_generators()]
[A, B, C, a, b, g]
>>> s2(AW.an_element()) == AW.an_element()
True
rho()[source]

Return the permutation automorphism \(\rho\) of self.

We define the automorphism \(\rho\) by

\[A \mapsto B \mapsto C \mapsto A, \qquad \alpha \mapsto \beta \mapsto \gamma \mapsto \alpha.\]

EXAMPLES:

sage: AW = algebras.AskeyWilson(QQ)
sage: rho = AW.permutation_automorphism()
sage: [rho(gen) for gen in AW.algebra_generators()]
[B, C, A, b, g, a]

sage: AW.an_element()
(q^-3+3+2*q+q^2)*a*b*g^3 + q*A*C^2*b + 3*q^2*B*a^2*g + A
sage: rho(AW.an_element())
(q^-3+3+2*q+q^2)*a^3*b*g + q^5*A^2*B*g + 3*q^2*C*a*b^2
 - (q^-2-q^6)*A*C*g + (q-q^5)*A*g^2 - (q^-3-2*q+q^5)*B*g
 + (q^-2-1-q^2+q^4)*b*g + B

sage: r3 = rho * rho * rho
sage: [r3(gen) for gen in AW.algebra_generators()]
[A, B, C, a, b, g]
sage: r3(AW.an_element()) == AW.an_element()
True
>>> from sage.all import *
>>> AW = algebras.AskeyWilson(QQ)
>>> rho = AW.permutation_automorphism()
>>> [rho(gen) for gen in AW.algebra_generators()]
[B, C, A, b, g, a]

>>> AW.an_element()
(q^-3+3+2*q+q^2)*a*b*g^3 + q*A*C^2*b + 3*q^2*B*a^2*g + A
>>> rho(AW.an_element())
(q^-3+3+2*q+q^2)*a^3*b*g + q^5*A^2*B*g + 3*q^2*C*a*b^2
 - (q^-2-q^6)*A*C*g + (q-q^5)*A*g^2 - (q^-3-2*q+q^5)*B*g
 + (q^-2-1-q^2+q^4)*b*g + B

>>> r3 = rho * rho * rho
>>> [r3(gen) for gen in AW.algebra_generators()]
[A, B, C, a, b, g]
>>> r3(AW.an_element()) == AW.an_element()
True
sigma()[source]

Return the reflection automorphism \(\sigma\) of self.

We define the automorphism \(\sigma\) by

\[A \mapsto B \mapsto A, \qquad C \mapsto C + \frac{AB - BA}{q-q^{-1}} = C - qAB - (1+q^2) C + q \gamma,\]
\[\alpha \mapsto \beta \mapsto \alpha, \gamma \mapsto \gamma.\]

EXAMPLES:

sage: AW = algebras.AskeyWilson(QQ)
sage: sigma = AW.reflection_automorphism()
sage: [sigma(gen) for gen in AW.algebra_generators()]
[B, A, -q*A*B - q^2*C + q*g, b, a, g]

sage: AW.an_element()
(q^-3+3+2*q+q^2)*a*b*g^3 + q*A*C^2*b + 3*q^2*B*a^2*g + A
sage: sigma(AW.an_element())
q^9*A^2*B^3*a + (q^10+q^14)*A*B^2*C*a - (q^7+q^9)*A*B^2*a*g
 + (q^-3+3+2*q+q^2)*a*b*g^3 + (q-3*q^9+q^13+q^17)*A^2*B*a
 - (q^2-q^6-q^8+q^14)*A*B*a^2 + 3*q^2*A*b^2*g + (q^5-q^9)*B^3*a
 - (q^6-q^8)*B^2*a*b + q^13*B*C^2*a - 2*q^10*B*C*a*g + q^7*B*a*g^2
 + (q^2-2*q^10+q^18)*A*C*a - (q-q^7-2*q^9+2*q^11-q^15+q^17)*A*a*g
 - (q^3-q^7-q^9+q^13)*C*a^2 + (q^2-q^6-2*q^8+2*q^10)*a^2*g
 + (q-3*q^5+3*q^9-q^13)*B*a - (q^2-q^4-2*q^6+2*q^8+q^10-q^12)*a*b + B

sage: s2 = sigma * sigma
sage: [s2(gen) for gen in AW.algebra_generators()]
[A, B, C, a, b, g]
sage: s2(AW.an_element()) == AW.an_element()
True
>>> from sage.all import *
>>> AW = algebras.AskeyWilson(QQ)
>>> sigma = AW.reflection_automorphism()
>>> [sigma(gen) for gen in AW.algebra_generators()]
[B, A, -q*A*B - q^2*C + q*g, b, a, g]

>>> AW.an_element()
(q^-3+3+2*q+q^2)*a*b*g^3 + q*A*C^2*b + 3*q^2*B*a^2*g + A
>>> sigma(AW.an_element())
q^9*A^2*B^3*a + (q^10+q^14)*A*B^2*C*a - (q^7+q^9)*A*B^2*a*g
 + (q^-3+3+2*q+q^2)*a*b*g^3 + (q-3*q^9+q^13+q^17)*A^2*B*a
 - (q^2-q^6-q^8+q^14)*A*B*a^2 + 3*q^2*A*b^2*g + (q^5-q^9)*B^3*a
 - (q^6-q^8)*B^2*a*b + q^13*B*C^2*a - 2*q^10*B*C*a*g + q^7*B*a*g^2
 + (q^2-2*q^10+q^18)*A*C*a - (q-q^7-2*q^9+2*q^11-q^15+q^17)*A*a*g
 - (q^3-q^7-q^9+q^13)*C*a^2 + (q^2-q^6-2*q^8+2*q^10)*a^2*g
 + (q-3*q^5+3*q^9-q^13)*B*a - (q^2-q^4-2*q^6+2*q^8+q^10-q^12)*a*b + B

>>> s2 = sigma * sigma
>>> [s2(gen) for gen in AW.algebra_generators()]
[A, B, C, a, b, g]
>>> s2(AW.an_element()) == AW.an_element()
True
some_elements()[source]

Return some elements of self.

EXAMPLES:

sage: AW = algebras.AskeyWilson(QQ)
sage: AW.some_elements()
(A, B, C, a, b, g, 1,
 (q^-3+3+2*q+q^2)*a*b*g^3 + q*A*C^2*b + 3*q^2*B*a^2*g + A,
 q*A*B*C + q^2*A^2 - q*A*a + (q^-2)*B^2 - (q^-1)*B*b + q^2*C^2 - q*C*g)
>>> from sage.all import *
>>> AW = algebras.AskeyWilson(QQ)
>>> AW.some_elements()
(A, B, C, a, b, g, 1,
 (q^-3+3+2*q+q^2)*a*b*g^3 + q*A*C^2*b + 3*q^2*B*a^2*g + A,
 q*A*B*C + q^2*A^2 - q*A*a + (q^-2)*B^2 - (q^-1)*B*b + q^2*C^2 - q*C*g)