]> gitweb.michael.orlitzky.com - sage.d.git/commitdiff
mjo/clan/normal_decomposition_element.py: test a claim from my paper
authorMichael Orlitzky <michael@orlitzky.com>
Fri, 10 Apr 2026 13:38:27 +0000 (09:38 -0400)
committerMichael Orlitzky <michael@orlitzky.com>
Fri, 10 Apr 2026 13:38:27 +0000 (09:38 -0400)
In the off-diagonal components of the r^th row, Ishi orthogonality
<x,y> == 0 is equivalent to x*y == 0.

mjo/clan/normal_decomposition_element.py

index b577109ee5a90a0cfaf6979ca203fbbaf0068c19..b36ce863285a69dc618621158ed55340e4d8f87f 100644 (file)
@@ -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):