From 06ec686a1f9fb24938db45cc63cdcfaced0c269a Mon Sep 17 00:00:00 2001 From: Michael Orlitzky Date: Mon, 16 Feb 2026 18:36:24 -0500 Subject: [PATCH] mjo/clan/unital_clan.py: add hand computations for the Vinberg clan --- mjo/clan/unital_clan.py | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/mjo/clan/unital_clan.py b/mjo/clan/unital_clan.py index 6269183..3bc8b5d 100644 --- a/mjo/clan/unital_clan.py +++ b/mjo/clan/unital_clan.py @@ -618,6 +618,41 @@ class VinbergClan(NormalDecomposition): ....: if not i in [j,k] ) True + The multiplication in this clan (verified by hand) is as + follows):: + + sage: C = VinbergClan() + sage: x = C.random_element() + sage: y = C.random_element() + sage: z = x*y + sage: x = x.to_vector() + sage: y = y.to_vector() + sage: z = z.to_vector() + sage: z[0] == x[0]*y[0] + True + sage: z[1] == y[1]*(x[0] + x[2])/QQ(2) + y[0]*x[1] + True + sage: z[2] == 2*x[1]*y[1] + x[2]*y[2] + True + sage: z[3] == y[3]*(x[0] + x[4])/QQ(2) + y[0]*x[3] + True + sage: z[4] == 2*x[3]*y[3] + x[4]*y[4] + True + + The Ishi inner product in this clan (verified by hand) is as + follows:: + + sage: C = VinbergClan() + sage: x = C.random_element() + sage: y = C.random_element() + sage: actual = x.inner_product(y) + sage: x = x.to_vector() + sage: y = y.to_vector() + sage: expected = ( x[0]*y[0] + x[2]*y[2] + x[4]*y[4] + + ....: 2*x[1]*y[1] + 2*x[3]*y[3] ) / QQ(2) + sage: actual == expected + True + """ def _unlift(self, pair): A,B = pair -- 2.51.0