- def __classcall__(cls, field, mult_table, names='e', category=None):
- fda = super(FiniteDimensionalEuclideanJordanAlgebra, cls)
- return fda.__classcall_private__(cls,
- field,
- mult_table,
- names,
- category)
+ def __classcall_private__(cls,
+ field,
+ mult_table,
+ names='e',
+ assume_associative=False,
+ category=None,
+ rank=None):
+ n = len(mult_table)
+ mult_table = [b.base_extend(field) for b in mult_table]
+ for b in mult_table:
+ b.set_immutable()
+ if not (is_Matrix(b) and b.dimensions() == (n, n)):
+ raise ValueError("input is not a multiplication table")
+ if not (b.is_symmetric()):
+ # Euclidean jordan algebras are commutative, so left/right
+ # multiplication is the same.
+ raise ValueError("multiplication table must be symmetric")
+ mult_table = tuple(mult_table)
+
+ cat = MagmaticAlgebras(field).FiniteDimensional().WithBasis()
+ cat.or_subcategory(category)
+ if assume_associative:
+ cat = cat.Associative()
+
+ names = normalize_names(n, names)