Module: sage.algebras.quaternion_algebra
Quaternion algebras
Author: David Kohel, 2005-09
TESTS:
sage: A = QuaternionAlgebra(QQ, -1,-1, names=list('ijk'))
sage: A == loads(dumps(A))
True
sage: i, j, k = A.gens()
sage: i == loads(dumps(i))
True
Module-level Functions
| K, a, b, [names=['i', 'j', 'k']], [denom=1]) |
INPUT:
K -- field
a -- element of K
b -- element of K
names -- list of three strings
denom -- (optional, default 1)
sage: A.<i,j,k> = QuaternionAlgebra(QQ, -1,-1) sage: i^2 -1 sage: j^2 -1 sage: i*j k sage: j*i -k sage: (i + j + k)^2 -3 sage: A.ramified_primes() [2]
| D1, D2, T, [names=['i', 'j', 'k']], [M=2]) |
The integers
,
and
must all be even or all odd, and
,
and
must each be the discriminant of some
quadratic order, i.e. nonsquare integers = 0, 1 (mod 4).
INPUT:
D1 -- Integer
D2 -- Integer
T -- Integer
M -- Integer (default: 2)
OUTPUT:
A quaternion algebra.
sage: A = QuaternionAlgebraWithDiscriminants(-7,-47,1, names=('i','j','k'))
sage: print A
Quaternion algebra with generators (i, j, k) over Rational Field
sage: i, j, k = A.gens()
sage: i**2
-2 + i
sage: j**2
-12 + j
sage: k**2
-24 + k
sage: i.minimal_polynomial('x')
x^2 - x + 2
sage: j.minimal_polynomial('x')
x^2 - x + 12
| K, gram, [names=i,j,k]) |
INPUT:
K -- base field
gram -- the Gram matrix
names -- names of the three generators.
sage: A.<i,j,k> = QuaternionAlgebra(QQ, -1,-1) sage: g = A.gram_matrix(); g [2 0 0 0] [0 2 0 0] [0 0 2 0] [0 0 0 2] sage: K.<i,j,k> = QuaternionAlgebraWithGramMatrix(QQ, g); K Quaternion algebra with generators (i, j, k) over Rational Field
sage: R.<i,j,k> = QuaternionAlgebraWithGramMatrix(QQ, diagonal_matrix([8]*4)) sage: i^2, j^2, k^2 (-4, -4, -4)
| K, norms, traces, [names=i,j,k]) |
| K, a, b, [names=ijk]) |
| D) |
| a, b) |
| D1, D2, T) |
| x) |
Class: QuaternionAlgebra_faster
Special Functions: __call__
Class: QuaternionAlgebra_generic
| self, K, [basis_traces=None], [ramified_primes=None]) |
Functions: basis,
discriminant,
gen,
gram_matrix,
inner_product_matrix,
is_commutative,
is_division_algebra,
is_exact,
is_field,
is_finite,
is_integral_domain,
is_noetherian,
order,
ramified_primes,
random_element,
vector_space
| self) |
| self, i) |
| self) |
| self) |
sage: Q.<i,j,k> = QuaternionAlgebra(QQ, -3,-7) sage: Q.is_commutative() False
| self) |
At the moment, this is implemented only for finite fields.
sage: Q.<i,j,k> = QuaternionAlgebra(GF(5), -3, -7) sage: Q.is_division_algebra() False
| self) |
sage: Q.<i,j,k> = QuaternionAlgebra(QQ, -3, -7) sage: Q.is_exact() True sage: Q.<i,j,k> = QuaternionAlgebra(Qp(7), -3, -7) sage: Q.is_exact() False
| self) |
sage: Q.<i,j,k> = QuaternionAlgebra(QQ, -3, -7) sage: Q.is_field() False
| self) |
sage: Q.<i,j,k> = QuaternionAlgebra(QQ, -3, -7) sage: Q.is_finite() False sage: Q.<i,j,k> = QuaternionAlgebra(GF(5), -3, -7) sage: Q.is_finite() True
| self) |
sage: Q.<i,j,k> = QuaternionAlgebra(QQ, -3, -7) sage: Q.is_integral_domain() False
| self) |
sage: Q.<i,j,k> = QuaternionAlgebra(QQ, -3, -7) sage: Q.is_noetherian() True
| self) |
sage: Q.<i,j,k> = QuaternionAlgebra(QQ, -3, -7) sage: Q.order() +Infinity sage: Q.<i,j,k> = QuaternionAlgebra(GF(5), -3, -7) sage: Q.order() 20
Special Functions: __call__,
__repr__