You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Currently, only some rings / ℚ-algebras are implemented e.g. number fields, quaternion, octonion, split octonion, matrix algebra. It would be desirable to allow more algebras to be represented in code.
Proposed Solution
We can implement a generic FiniteDimensionalAlgebra (which would also be a ring if it's associative):
each element is an element of a n-dimensional vector space over a base ring R (such as ℚ).
A multiplication table is defined — essentially it suffices to have a 3-dimensional array t[i, j, k] of size n × n × n, with multiplication defined by e_i ⋅ e_j = ∑_k t[i, j, k] e_k
methods such as is_commutative, is_associative, is_alternative etc. can be implemented, this can be checked in finite time using bilinearity of the product
Of course, typically multiplication has complexity only O(n^2) (e.g. when the product of two basis elements is another basis element), or Õ(n) (e.g. for number fields where product is just polynomial reduced modulo another polynomial, although for small degree the gain is not worth the overhead implementing FFT). Tensor rank decomposition might be helpful here.
With this structure, it would be possible to implement further things like tensor product of two rings — note that tensor product of two number fields over ℚ is often not a number field.
Alternatives Considered
N/A
Additional Information
No response
Is there an existing issue for this?
I have searched the existing issues for a bug report that matches the one I want to file, without success.
The text was updated successfully, but these errors were encountered:
Problem Description
Currently, only some rings / ℚ-algebras are implemented e.g. number fields, quaternion, octonion, split octonion, matrix algebra. It would be desirable to allow more algebras to be represented in code.
Proposed Solution
We can implement a generic
FiniteDimensionalAlgebra
(which would also be a ring if it's associative):t[i, j, k]
of sizen × n × n
, with multiplication defined bye_i ⋅ e_j = ∑_k t[i, j, k] e_k
is_commutative
,is_associative
,is_alternative
etc. can be implemented, this can be checked in finite time using bilinearity of the producthttps://en.wikipedia.org/wiki/Algebra_over_a_field#Generalization:_algebra_over_a_ring
Of course, typically multiplication has complexity only O(n^2) (e.g. when the product of two basis elements is another basis element), or Õ(n) (e.g. for number fields where product is just polynomial reduced modulo another polynomial, although for small degree the gain is not worth the overhead implementing FFT). Tensor rank decomposition might be helpful here.
With this structure, it would be possible to implement further things like tensor product of two rings — note that tensor product of two number fields over ℚ is often not a number field.
Alternatives Considered
N/A
Additional Information
No response
Is there an existing issue for this?
The text was updated successfully, but these errors were encountered: