File tree Expand file tree Collapse file tree 1 file changed +21
-2
lines changed Expand file tree Collapse file tree 1 file changed +21
-2
lines changed Original file line number Diff line number Diff line change @@ -477,13 +477,32 @@ cdef class GroebnerStrategy:
477
477
0
478
478
sage: I._groebner_strategy.reduce(E.zero())
479
479
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
480
494
"""
481
495
if not f:
482
496
return f
483
497
# Make a copy to mutate
484
498
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
487
506
return f
488
507
489
508
cdef bint reduce_single(self , CliffordAlgebraElement f, CliffordAlgebraElement g) except - 1 :
You can’t perform that action at this time.
0 commit comments