From 05cf816bdc93a0ecbd0bf41f5d17449656f9cc53 Mon Sep 17 00:00:00 2001 From: Michael Orlitzky Date: Fri, 10 Apr 2026 09:38:27 -0400 Subject: [PATCH] mjo/clan/normal_decomposition_element.py: test a claim from my paper In the off-diagonal components of the r^th row, Ishi orthogonality == 0 is equivalent to x*y == 0. --- mjo/clan/normal_decomposition_element.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/mjo/clan/normal_decomposition_element.py b/mjo/clan/normal_decomposition_element.py index b577109..b36ce86 100644 --- a/mjo/clan/normal_decomposition_element.py +++ b/mjo/clan/normal_decomposition_element.py @@ -9,6 +9,30 @@ class NormalDecompositionElement(ClanElement): Ishi convention with the components (i,j) being ordered lexicographically and then within each component the basis elements (i,j,k) ordered arbitrarily. + + SETUP:: + + sage: from mjo.clan.random import random_clan + + TESTS: + + In my "Automorphisms of hyperbolic polynomials" paper, I claim + that the following inner product is zero if and only if the clan + product itself is zero:: + + sage: C = random_clan(nontrivial=True) + sage: while C.rank() < 2: + ....: # need rank >= 2 for the off-diagonal to exist + ....: C = random_clan(nontrivial=True) + sage: r = C.rank() - 1 + sage: j = ZZ.random_element(r) + sage: xs = ( C.random_element().elt(r,j) for _ in range(10) ) + sage: ys = ( C.random_element().elt(r,j) for _ in range(10) ) + sage: all( x.inner_product(y).is_zero() == (x*y).is_zero() + ....: for x in xs + ....: for y in ys ) + True + """ def tr(self): -- 2.53.0