]> gitweb.michael.orlitzky.com - sage.d.git/commitdiff
mjo/clan/clan.py: new method _test_left_symmetry()
authorMichael Orlitzky <michael@orlitzky.com>
Fri, 10 Apr 2026 11:48:39 +0000 (07:48 -0400)
committerMichael Orlitzky <michael@orlitzky.com>
Fri, 10 Apr 2026 11:48:39 +0000 (07:48 -0400)
The first of three tests for the clan axioms.

mjo/clan/clan.py

index 56ada41ffbf30ec6fc1f6a33abdafc0ebfbace15..bff8684db8a582373baa5b83df5a342dcf3fed06 100644 (file)
@@ -121,3 +121,34 @@ class Clan(CombinatorialFreeModule):
 
         """
         return self._mt[i][j]
+
+    def _test_left_symmetry(self):
+        r"""
+        Check the left-symmetry axiom of this clan.
+
+        SETUP::
+
+            sage: from mjo.clan.random import random_clan
+
+        EXAMPLES::
+
+            sage: C = random_clan()        # long time
+            sage: C._test_left_symmetry()  # long time
+            True
+
+        """
+        def check(x,y):
+            actual = x.leftreg()*y.leftreg() - y.leftreg()*x.leftreg()
+            expected = (x*y - y*x).leftreg()
+            return (actual == expected)
+
+        # Check the basis...
+        b = self.basis()
+        result = all( check(b[i], b[j]) for j in b.keys() for i in b.keys() )
+
+        # And some random elements for good measure
+        xs = ( self.random_element() for _ in range(10) )
+        ys = ( self.random_element() for _ in range(10) )
+        result |= all( check(x, y) for x in xs for y in ys )
+
+        return result