Skip to content

Commit 3e06400

Browse files
committed
Initial commit of fix for #37108
1 parent 3dd953c commit 3e06400

File tree

1 file changed

+21
-2
lines changed

1 file changed

+21
-2
lines changed

src/sage/algebras/exterior_algebra_groebner.pyx

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -477,13 +477,32 @@ cdef class GroebnerStrategy:
477477
0
478478
sage: I._groebner_strategy.reduce(E.zero())
479479
0
480+
481+
Check #37108 is fixed::
482+
483+
sage: E = ExteriorAlgebra(QQ, 6)
484+
....: E.inject_variables(verbose=False)
485+
....: gens = [-e0*e1*e2 + e0*e1*e5 - e0*e2*e3 - e0*e3*e5 + e1*e2*e3 + e1*e3*e5,
486+
....: e1*e2 - e1*e5 + e2*e5,
487+
....: e0*e2 - e0*e4 + e2*e4,
488+
....: e3*e4 - e3*e5 + e4*e5,
489+
....: e0*e1 - e0*e3 + e1*e3]
490+
....: I = E.ideal(gens)
491+
....: S = E.quo(I)
492+
....: I.reduce(e1*e3*e4*e5)
493+
0
480494
"""
481495
if not f:
482496
return f
483497
# Make a copy to mutate
484498
f = type(f)(f._parent, copy(f._monomial_coefficients))
485-
for g in self.groebner_basis:
486-
self.reduce_single(f, g)
499+
was_reduced = True
500+
while was_reduced:
501+
was_reduced = False
502+
for g in self.groebner_basis:
503+
was_reduced = self.reduce_single(f, g)
504+
if was_reduced:
505+
break
487506
return f
488507

489508
cdef bint reduce_single(self, CliffordAlgebraElement f, CliffordAlgebraElement g) except -1:

0 commit comments

Comments
 (0)