sage: R.<q>=PolynomialRing(QQ)
sage: s3=(1+q+q^2).sqrt(name='s3')
sage: s4=(1+q+q^2+q^3).sqrt(name='s4')
sage: s3*s4 # this blows up:(
sage: R=PolynomialRing(ZZ,'q')
sage: R2.<s2>=R.extension(x^2-1-q,'s2')
sage: R3.<s3>=R2.extension(x^2-1-q-q^2,'s3')
sage: R4.<s4>=R3.extension(x^2-1-q-q^2-q^3,'s4')
sage: (s2*s3)^2
(q + 1)*s2 + q^2 + 3*q + 2
sage: FractionField(R4)
Cheers,
Andrew
R=LaurentPolynomialRing(IntegerRing(),'q')
q=R.gen()
self._quantum_integer={0:0, 1:1} # dictionary of positive quantum integers
self._quantum_integer_root={0:0, 1:1} # dictionary of square roots of positive quantum integers
qint=1
x=polygen(R)
for k in range(1,shape.size()):
qint+=q**(2*k) # now equal to 1+q^2+...+q^2k = [k+1]_{q^2}
R=R.extension(x**2-qint,'r%d'%(k+1))
self._quantum_integer[k+1]=qint # we remember these because we nee them later
self._quantum_integer_root[k+1]=R.gen()
R=R.extension(x**2+1,'I')
I=R.gen();
F=FractionField_generic(R) # the FractionField is not implemented so we hack
R.__fraction_field=F