Trace inner product tests: TESTS: The trace inner product is commutative:: sage: set_random_seed() sage: J = random_eja() sage: x = J.random_element(); y = J.random_element() sage: x.trace_inner_product(y) == y.trace_inner_product(x) True The trace inner product is bilinear:: sage: set_random_seed() sage: J = random_eja() sage: x = J.random_element() sage: y = J.random_element() sage: z = J.random_element() sage: a = QQ.random_element(); sage: actual = (a*(x+z)).trace_inner_product(y) sage: expected = a*x.trace_inner_product(y) + a*z.trace_inner_product(y) sage: actual == expected True sage: actual = x.trace_inner_product(a*(y+z)) sage: expected = a*x.trace_inner_product(y) + a*x.trace_inner_product(z) sage: actual == expected True The trace inner product is associative:: sage: pass The trace inner product satisfies the compatibility condition in the definition of a Euclidean Jordan algebra: sage: set_random_seed() sage: J = random_eja() sage: x = J.random_element() sage: y = J.random_element() sage: z = J.random_element() sage: (x*y).trace_inner_product(z) == y.trace_inner_product(x*z) True